/*
 * 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"
#include <dt-bindings/gpio/gpio.h>

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

	aliases {
		serial0 = &serial0;
		serial1 = &serial1;
		serial2 = &serial2;
		ethernet0 = &eth0;
	};

	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>;
			};
			tca6416: gpio@20 {
				compatible = "ti,tca6416";
				reg = <0x20>;
				gpio-controller;
				#gpio-cells = <2>;
			};
		};
		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>;
				m25p,fast-read;
				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;
		};
	};
};

&vpif {
	pinctrl-names = "default";
	pinctrl-0 = <&vpif_capture_pins>, <&vpif_display_pins>;
	status = "okay";
};
