/*
 * 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 {
		pmx_core: pinmux@1c14120 {
			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
				>;
			};
		};
		serial0: serial@1c42000 {
			status = "okay";
		};
		serial1: serial@1d0c000 {
			status = "okay";
		};
		serial2: serial@1d0d000 {
			status = "okay";
		};
		rtc0: rtc@1c23000 {
			status = "okay";
		};
		i2c0: i2c@1c22000 {
			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@1c21000 {
			status = "okay";
		};
		mmc0: mmc@1c40000 {
			max-frequency = <50000000>;
			bus-width = <4>;
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&mmc0_pins>;
		};
		spi1: spi@1f0e000 {
			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@1e24000 {
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&mdio_pins>;
			bus_freq = <2200000>;
		};
		eth0: ethernet@1e20000 {
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&mii_pins>;
		};
		gpio: gpio@1e26000 {
			status = "okay";
		};
	};
	nand_cs3@62000000 {
		status = "okay";
		pinctrl-names = "default";
		pinctrl-0 = <&nand_cs3_pins>;
	};
	vbat: fixedregulator@0 {
		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>;
};
