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

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

/ {
	model = "Toradex Colibri T20 on Colibri Evaluation Board";
	compatible = "toradex,colibri_t20-eval-v3", "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>;

		can@0 {
			compatible = "microchip,mcp2515";
			reg = <0>;
			clocks = <&clk16m>;
			interrupt-parent = <&gpio>;
			/* CAN_INT */
			interrupts = <TEGRA_GPIO(A, 0) IRQ_TYPE_EDGE_FALLING>;
			spi-max-frequency = <10000000>;
			vdd-supply = <&reg_3v3>;
			xceiver-supply = <&reg_5v0>;
		};
	};

	/* SD/MMC */
	mmc@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> */
	};

	clk16m: osc3 {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <16000000>;
	};

	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";
		backlight = <&backlight>;
		power-supply = <&reg_3v3>;
	};

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

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

	reg_usbc_vbus: regulator-usbc-vbus {
		compatible = "regulator-fixed";
		regulator-name = "VCC_USB5";
		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_USB[1-4]";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
		vin-supply = <&reg_5v0>;
	};
};
