/*
 * Device Tree for DA850 EVM board
 *
 * 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 as published by the
 * Free Software Foundation, version 2.
 */
/dts-v1/;
#include "da850.dtsi"

/ {
	compatible = "ti,da850-evm", "ti,da850";
	model = "DA850/AM1808/OMAP-L138 EVM";

	soc@1c00000 {
		pmx_core: pinmux@14120 {
			status = "okay";

			mcasp0_pins: pinmux_mcasp0_pins {
				pinctrl-single,bits = <
					/*
					 * AHCLKX, ACLKX, AFSX, AHCLKR, ACLKR,
					 * AFSR, AMUTE
					 */
					0x00 0x11111111 0xffffffff
					/* AXR11, AXR12 */
					0x04 0x00011000 0x000ff000
				>;
			};
			nand_pins: nand_pins {
				pinctrl-single,bits = <
					/* EMA_WAIT[0], EMA_OE, EMA_WE, EMA_CS[4], EMA_CS[3] */
					0x1c 0x10110110  0xf0ff0ff0
					/*
					 * EMA_D[0], EMA_D[1], EMA_D[2],
					 * EMA_D[3], EMA_D[4], EMA_D[5],
					 * EMA_D[6], EMA_D[7]
					 */
					0x24 0x11111111  0xffffffff
					/* EMA_A[1], EMA_A[2] */
					0x30 0x01100000  0x0ff00000
				>;
			};
		};
		serial0: serial@42000 {
			status = "okay";
		};
		serial1: serial@10c000 {
			status = "okay";
		};
		serial2: serial@10d000 {
			status = "okay";
		};
		rtc0: rtc@23000 {
			status = "okay";
		};
		i2c0: i2c@22000 {
			status = "okay";
			clock-frequency = <100000>;
			pinctrl-names = "default";
			pinctrl-0 = <&i2c0_pins>;

			tps: tps@48 {
				reg = <0x48>;
			};
			tlv320aic3106: tlv320aic3106@18 {
				#sound-dai-cells = <0>;
				compatible = "ti,tlv320aic3106";
				reg = <0x18>;
				status = "okay";

				/* Regulators */
				IOVDD-supply = <&vdcdc2_reg>;
				/* Derived from VBAT: Baseboard 3.3V / 1.8V */
				AVDD-supply = <&vbat>;
				DRVDD-supply = <&vbat>;
				DVDD-supply = <&vbat>;
			};

		};
		wdt: wdt@21000 {
			status = "okay";
		};
		mmc0: mmc@40000 {
			max-frequency = <50000000>;
			bus-width = <4>;
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&mmc0_pins>;
		};
		spi1: spi@30e000 {
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&spi1_pins &spi1_cs0_pin>;
			flash: m25p80@0 {
				#address-cells = <1>;
				#size-cells = <1>;
				compatible = "m25p64";
				spi-max-frequency = <30000000>;
				reg = <0>;
				partition@0 {
					label = "U-Boot-SPL";
					reg = <0x00000000 0x00010000>;
					read-only;
				};
				partition@1 {
					label = "U-Boot";
					reg = <0x00010000 0x00080000>;
					read-only;
				};
				partition@2 {
					label = "U-Boot-Env";
					reg = <0x00090000 0x00010000>;
					read-only;
				};
				partition@3 {
					label = "Kernel";
					reg = <0x000a0000 0x00280000>;
				};
				partition@4 {
					label = "Filesystem";
					reg = <0x00320000 0x00400000>;
				};
				partition@5 {
					label = "MAC-Address";
					reg = <0x007f0000 0x00010000>;
					read-only;
				};
			};
		};
		mdio: mdio@224000 {
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&mdio_pins>;
			bus_freq = <2200000>;
		};
		eth0: ethernet@220000 {
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&mii_pins>;
		};
		gpio: gpio@226000 {
			status = "okay";
		};
	};
	vbat: fixedregulator0 {
		compatible = "regulator-fixed";
		regulator-name = "vbat";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-boot-on;
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "DA850/OMAP-L138 EVM";
		simple-audio-card,widgets =
			"Line", "Line In",
			"Line", "Line Out";
		simple-audio-card,routing =
			"LINE1L", "Line In",
			"LINE1R", "Line In",
			"Line Out", "LLOUT",
			"Line Out", "RLOUT";
		simple-audio-card,format = "dsp_b";
		simple-audio-card,bitclock-master = <&link0_codec>;
		simple-audio-card,frame-master = <&link0_codec>;
		simple-audio-card,bitclock-inversion;

		simple-audio-card,cpu {
			sound-dai = <&mcasp0>;
			system-clock-frequency = <24576000>;
		};

		link0_codec: simple-audio-card,codec {
			sound-dai = <&tlv320aic3106>;
			system-clock-frequency = <24576000>;
		};
	};
};

/include/ "tps6507x.dtsi"

&tps {
	vdcdc1_2-supply = <&vbat>;
	vdcdc3-supply = <&vbat>;
	vldo1_2-supply = <&vbat>;

	regulators {
		vdcdc1_reg: regulator@0 {
			regulator-name = "VDCDC1_3.3V";
			regulator-min-microvolt = <3150000>;
			regulator-max-microvolt = <3450000>;
			regulator-always-on;
			regulator-boot-on;
		};

		vdcdc2_reg: regulator@1 {
			regulator-name = "VDCDC2_3.3V";
			regulator-min-microvolt = <1710000>;
			regulator-max-microvolt = <3450000>;
			regulator-always-on;
			regulator-boot-on;
			ti,defdcdc_default = <1>;
		};

		vdcdc3_reg: regulator@2 {
			regulator-name = "VDCDC3_1.2V";
			regulator-min-microvolt = <950000>;
			regulator-max-microvolt = <1350000>;
			regulator-always-on;
			regulator-boot-on;
			ti,defdcdc_default = <1>;
		};

		ldo1_reg: regulator@3 {
			regulator-name = "LDO1_1.8V";
			regulator-min-microvolt = <1710000>;
			regulator-max-microvolt = <1890000>;
			regulator-always-on;
			regulator-boot-on;
		};

		ldo2_reg: regulator@4 {
			regulator-name = "LDO2_1.2V";
			regulator-min-microvolt = <1140000>;
			regulator-max-microvolt = <1320000>;
			regulator-always-on;
			regulator-boot-on;
		};
	};
};

&mcasp0 {
	#sound-dai-cells = <0>;
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&mcasp0_pins>;

	op-mode = <0>;          /* MCASP_IIS_MODE */
	tdm-slots = <2>;
	/* 4 serializer */
	serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
		0 0 0 0
		0 0 0 0
		0 0 0 1
		2 0 0 0
	>;
	tx-num-evt = <32>;
	rx-num-evt = <32>;
};

&edma0 {
	ti,edma-reserved-slot-ranges = <32 50>;
};

&edma1 {
	ti,edma-reserved-slot-ranges = <32 90>;
};

&aemif {
	pinctrl-names = "default";
	pinctrl-0 = <&nand_pins>;
	status = "ok";
	cs3 {
		#address-cells = <2>;
		#size-cells = <1>;
		clock-ranges;
		ranges;

		ti,cs-chipselect = <3>;

		nand@2000000,0 {
			compatible = "ti,davinci-nand";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0 0x02000000 0x02000000
			       1 0x00000000 0x00008000>;

			ti,davinci-chipselect = <1>;
			ti,davinci-mask-ale = <0>;
			ti,davinci-mask-cle = <0>;
			ti,davinci-mask-chipsel = <0>;
			ti,davinci-ecc-mode = "hw";
			ti,davinci-ecc-bits = <4>;
			ti,davinci-nand-use-bbt;
		};
	};
};
