/*
 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
/dts-v1/;

/include/ "am33xx.dtsi"

/ {
	model = "TI AM335x EVM";
	compatible = "ti,am335x-evm", "ti,am33xx";

	cpus {
		cpu@0 {
			cpu0-supply = <&vdd1_reg>;
		};
	};

	memory {
		device_type = "memory";
		reg = <0x80000000 0x10000000>; /* 256 MB */
	};

	am33xx_pinmux: pinmux@44e10800 {
		pinctrl-names = "default";
		pinctrl-0 = <&matrix_keypad_s0 &volume_keys_s0>;

		matrix_keypad_s0: matrix_keypad_s0 {
			pinctrl-single,pins = <
				0x54 0x7	/* gpmc_a5.gpio1_21, OUTPUT | MODE7 */
				0x58 0x7	/* gpmc_a6.gpio1_22, OUTPUT | MODE7 */
				0x64 0x27	/* gpmc_a9.gpio1_25, INPUT | MODE7 */
				0x68 0x27	/* gpmc_a10.gpio1_26, INPUT | MODE7 */
				0x6c 0x27	/* gpmc_a11.gpio1_27, INPUT | MODE7 */
			>;
		};

		volume_keys_s0: volume_keys_s0 {
			pinctrl-single,pins = <
				0x150 0x27	/* spi0_sclk.gpio0_2, INPUT | MODE7 */
				0x154 0x27	/* spi0_d0.gpio0_3, INPUT | MODE7 */
			>;
		};
	};

	ocp {
		uart1: serial@44e09000 {
			status = "okay";
		};

		i2c0: i2c@44e0b000 {
			status = "okay";
			clock-frequency = <400000>;

			tps: tps@2d {
				reg = <0x2d>;
			};
		};

		i2c1: i2c@4802a000 {
			status = "okay";
			clock-frequency = <100000>;

			lis331dlh: lis331dlh@18 {
				compatible = "st,lis331dlh", "st,lis3lv02d";
				reg = <0x18>;
				Vdd-supply = <&lis3_reg>;
				Vdd_IO-supply = <&lis3_reg>;

				st,click-single-x;
				st,click-single-y;
				st,click-single-z;
				st,click-thresh-x = <10>;
				st,click-thresh-y = <10>;
				st,click-thresh-z = <10>;
				st,irq1-click;
				st,irq2-click;
				st,wakeup-x-lo;
				st,wakeup-x-hi;
				st,wakeup-y-lo;
				st,wakeup-y-hi;
				st,wakeup-z-lo;
				st,wakeup-z-hi;
				st,min-limit-x = <120>;
				st,min-limit-y = <120>;
				st,min-limit-z = <140>;
				st,max-limit-x = <550>;
				st,max-limit-y = <550>;
				st,max-limit-z = <750>;
			};

			tsl2550: tsl2550@39 {
				compatible = "taos,tsl2550";
				reg = <0x39>;
			};

			tmp275: tmp275@48 {
				compatible = "ti,tmp275";
				reg = <0x48>;
			};
		};
	};

	vbat: fixedregulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "vbat";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-boot-on;
	};

	lis3_reg: fixedregulator@1 {
		compatible = "regulator-fixed";
		regulator-name = "lis3_reg";
		regulator-boot-on;
	};

	matrix_keypad: matrix_keypad@0 {
		compatible = "gpio-matrix-keypad";
		debounce-delay-ms = <5>;
		col-scan-delay-us = <2>;

		row-gpios = <&gpio1 25 0	/* Bank1, pin25 */
			     &gpio1 26 0	/* Bank1, pin26 */
			     &gpio1 27 0>;	/* Bank1, pin27 */

		col-gpios = <&gpio1 21 0	/* Bank1, pin21 */
			     &gpio1 22 0>;	/* Bank1, pin22 */

		linux,keymap = <0x0000008b	/* MENU */
				0x0100009e	/* BACK */
				0x02000069	/* LEFT */
				0x0001006a	/* RIGHT */
				0x0101001c	/* ENTER */
				0x0201006c>;	/* DOWN */
	};

	gpio_keys: volume_keys@0 {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		autorepeat;

		switch@9 {
			label = "volume-up";
			linux,code = <115>;
			gpios = <&gpio0 2 1>;
			gpio-key,wakeup;
		};

		switch@10 {
			label = "volume-down";
			linux,code = <114>;
			gpios = <&gpio0 3 1>;
			gpio-key,wakeup;
		};
	};
};

/include/ "tps65910.dtsi"

&tps {
	vcc1-supply = <&vbat>;
	vcc2-supply = <&vbat>;
	vcc3-supply = <&vbat>;
	vcc4-supply = <&vbat>;
	vcc5-supply = <&vbat>;
	vcc6-supply = <&vbat>;
	vcc7-supply = <&vbat>;
	vccio-supply = <&vbat>;

	regulators {
		vrtc_reg: regulator@0 {
			regulator-always-on;
		};

		vio_reg: regulator@1 {
			regulator-always-on;
		};

		vdd1_reg: regulator@2 {
			/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
			regulator-name = "vdd_mpu";
			regulator-min-microvolt = <912500>;
			regulator-max-microvolt = <1312500>;
			regulator-boot-on;
			regulator-always-on;
		};

		vdd2_reg: regulator@3 {
			/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
			regulator-name = "vdd_core";
			regulator-min-microvolt = <912500>;
			regulator-max-microvolt = <1150000>;
			regulator-boot-on;
			regulator-always-on;
		};

		vdd3_reg: regulator@4 {
			regulator-always-on;
		};

		vdig1_reg: regulator@5 {
			regulator-always-on;
		};

		vdig2_reg: regulator@6 {
			regulator-always-on;
		};

		vpll_reg: regulator@7 {
			regulator-always-on;
		};

		vdac_reg: regulator@8 {
			regulator-always-on;
		};

		vaux1_reg: regulator@9 {
			regulator-always-on;
		};

		vaux2_reg: regulator@10 {
			regulator-always-on;
		};

		vaux33_reg: regulator@11 {
			regulator-always-on;
		};

		vmmc_reg: regulator@12 {
			regulator-always-on;
		};
	};
};

&cpsw_emac0 {
	phy_id = <&davinci_mdio>, <0>;
};

&cpsw_emac1 {
	phy_id = <&davinci_mdio>, <1>;
};
