/dts-v1/;

#include "tegra20.dtsi"

/ {
	model = "Toradex Colibri T20";
	compatible = "toradex,colibri_t20", "nvidia,tegra20";

	chosen {
		stdout-path = &uarta;
	};

	aliases {
		i2c0 = "/i2c@7000d000";
		i2c1 = "/i2c@7000c000";
		i2c2 = "/i2c@7000c400";
		mmc0 = "/mmc@c8000600";
		usb0 = "/usb@c5000000";
		usb1 = "/usb@c5004000"; /* On-module only, for ASIX */
		usb2 = "/usb@c5008000";
	};

	host1x@50000000 {
		dc@54200000 {
			rgb {
				status = "okay";
				nvidia,panel = <&lcd_panel>;
				display-timings {
					timing@0 {
						/* VESA VGA */
						clock-frequency = <25175000>;
						hactive = <640>;
						vactive = <480>;
						hback-porch = <48>;
						hfront-porch = <16>;
						hsync-len = <96>;
						vback-porch = <31>;
						vfront-porch = <11>;
						vsync-len = <2>;
					};
				};
			};
		};
	};

	nand-controller@70008000 {
		nvidia,wp-gpios = <&gpio TEGRA_GPIO(S, 0) GPIO_ACTIVE_HIGH>;
		nvidia,width = <8>;
		nvidia,timing = <15 100 25 80 25 10 15 10 100>;

		nand@0 {
			reg = <0>;
			compatible = "nand-flash";
		};
	};

	pwm@7000a000 {
		status = "okay";
	};

	/*
	 * GEN1_I2C: I2C_SDA/SCL on SODIMM pin 194/196 (e.g. RTC on carrier
	 * board)
	 */
	i2c@7000c000 {
		status = "okay";
		clock-frequency = <400000>;
	};

	/* GEN2_I2C: unused */

	/* DDC_CLOCK/DATA on X3 pin 15/16 (e.g. display EDID) */
	i2c@7000c400 {
		status = "okay";
		clock-frequency = <10000>;
	};

	/*
	 * PWR_I2C: power I2C to PMIC and temperature sensor
	 */
	i2c@7000d000 {
		status = "okay";
		clock-frequency = <100000>;
	};

	/* EHCI instance 0: USB1_DP/N -> USBC_P/N */
	usb@c5000000 {
		status = "okay";
		dr_mode = "otg";
	};

	/* EHCI instance 1: ULPI -> USB3340 -> AX88772B */
	usb@c5004000 {
		status = "okay";
		/* ULPI_RESET */
		nvidia,phy-reset-gpio =
				<&gpio TEGRA_GPIO(V, 1) GPIO_ACTIVE_LOW>;
		/* VBUS_LAN */
		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(BB, 1) GPIO_ACTIVE_HIGH>;
	};

	/* EHCI instance 2: USB3_DP/N -> USBH_P/N */
	usb@c5008000 {
		status = "okay";
		/* USBH_PEN */
		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
	};

	mmc@c8000600 {
		status = "okay";
		bus-width = <4>;
		cd-gpios = <&gpio TEGRA_GPIO(C, 7) GPIO_ACTIVE_LOW>;
	};

	backlight: backlight {
		compatible = "pwm-backlight";

		brightness-levels = <255 128 64 32 16 8 4 0>;
		default-brightness-level = <6>;
		/* BL_ON */
		enable-gpios = <&gpio TEGRA_GPIO(T, 4) GPIO_ACTIVE_HIGH>;
		power-supply = <&reg_3v3>;
		/* PWM<A> */
		pwms = <&pwm 0 5000000>;
	};

	clocks {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		clk32k_in: clock@0 {
			compatible = "fixed-clock";
			reg=<0>;
			#clock-cells = <0>;
			clock-frequency = <32768>;
		};
	};

	lcd_panel: panel {
		/*
		 * edt,et057090dhu: EDT 5.7" LCD TFT
		 * edt,et070080dh6: EDT 7.0" LCD TFT
		 */
		compatible = "edt,et057090dhu", "simple-panel";

		backlight = <&backlight>;
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_3v3: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			regulator-name = "+V3.3";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};
	};
};

&uarta {
	status = "okay";
};
