// SPDX-License-Identifier: GPL-2.0
/dts-v1/;

#include <dt-bindings/input/input.h>
#include "tegra20-colibri.dtsi"

/ {
	model = "Toradex Colibri T20 on Iris";
	compatible = "toradex,colibri_t20-iris", "toradex,colibri_t20",
		     "nvidia,tegra20";

	aliases {
		rtc0 = "/i2c@7000c000/rtc@68";
		rtc1 = "/i2c@7000d000/pmic@34";
		rtc2 = "/rtc@7000e000";
		serial0 = &uarta;
		serial1 = &uartd;
		serial2 = &uartb;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	host1x@50000000 {
		dc@54200000 {
			rgb {
				status = "okay";
				nvidia,panel = <&panel>;
			};
		};

		hdmi@54280000 {
			status = "okay";
			hdmi-supply = <&reg_5v0>;
		};
	};

	pinmux@70000014 {
		state_default: pinmux {
			bl-on {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			ddc {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			hotplug-detect {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			i2c {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			lcd {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			lm1 {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			mmc {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			mmccd {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			pwm-a-b {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			pwm-c-d {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			ssp {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			uart-a {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			uart-b {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			uart-c {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};

			usbh-pen {
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};
		};
	};

	/* Colibri UART-A */
	serial@70006000 {
		status = "okay";
	};

	/* Colibri UART-C */
	serial@70006040 {
		status = "okay";
	};

	/* Colibri UART-B */
	serial@70006300 {
		status = "okay";
	};

	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>;

		/* M41T0M6 real time clock on carrier board */
		rtc@68 {
			compatible = "st,m41t0";
			reg = <0x68>;
		};
	};

	/* GEN2_I2C: unused */

	/* CAM_I2C (I2C3): unused */

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

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

	usb-phy@c5000000 {
		status = "okay";
		vbus-supply = <&reg_usbc_vbus>;
	};

	/* EHCI instance 2: USB3_DP/N -> USBH_P/N */
	usb@c5008000 {
		status = "okay";
	};

	usb-phy@c5008000 {
		status = "okay";
		vbus-supply = <&reg_usbh_vbus>;
	};

	/* SPI4: Colibri SSP */
	spi@7000da00 {
		status = "okay";
		spi-max-frequency = <25000000>;
	};

	/* SD/MMC */
	sdhci@c8000600 {
		status = "okay";
		bus-width = <4>;
		cd-gpios = <&gpio TEGRA_GPIO(C, 7) GPIO_ACTIVE_LOW>; /* MMCD */
		no-1-8-v;
	};

	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>;
		pwms = <&pwm 0 5000000>; /* PWM<A> */
	};

	gpio-keys {
		compatible = "gpio-keys";

		wakeup {
			label = "SODIMM pin 45 wakeup";
			gpios = <&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_HIGH>;
			linux,code = <KEY_WAKEUP>;
			debounce-interval = <10>;
			wakeup-source;
		};
	};

	panel: panel {
		/*
		 * edt,et057090dhu: EDT 5.7" LCD TFT
		 * edt,et070080dh6: EDT 7.0" LCD TFT
		 */
		compatible = "edt,et057090dhu", "simple-panel";
		backlight = <&backlight>;
		power-supply = <&reg_3v3>;
	};

	reg_3v3: regulator-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	reg_5v0: regulator-5v0 {
		compatible = "regulator-fixed";
		regulator-name = "5V";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};

	reg_usbc_vbus: regulator-usbc-vbus {
		compatible = "regulator-fixed";
		regulator-name = "VCC_USB2";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		vin-supply = <&reg_5v0>;
	};

	/* USBH_PEN resp. USB_P_EN */
	reg_usbh_vbus: regulator-usbh-vbus {
		compatible = "regulator-fixed";
		regulator-name = "VCC_USB1";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
		vin-supply = <&reg_5v0>;
	};
};
