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

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

/ {
	model = "Tegra Note 7";
	compatible = "nvidia,tn7", "nvidia,tegra114";

	chosen {
		/* TN7's bootloader's arguments need to be overridden */
		bootargs = "console=ttyS0,115200n8 console=tty1 gpt fbcon=rotate:2";
		/* TN7's bootloader will place initrd at this address */
		linux,initrd-start = <0x82000000>;
		linux,initrd-end = <0x82800000>;
	};

	aliases {
		serial0 = &uartd;
	};

	firmware {
		trusted-foundations {
			compatible = "tlm,trusted-foundations";
			tlm,version-major = <2>;
			tlm,version-minor = <8>;
		};
	};

	memory@80000000 {
		/* memory >= 0x37e00000 is reserved for firmware usage */
		reg = <0x80000000 0x37e00000>;
	};

	host1x@50000000 {
		dsi@54300000 {
			status = "okay";

			avdd-dsi-csi-supply = <&vdd_1v2_ap>;

			panel@0 {
				compatible = "lg,ld070wx3-sl01";
				reg = <0>;

				power-supply = <&vdd_lcd>;
				backlight = <&backlight>;
			};
		};
	};

	serial@70006300 {
		/delete-property/ dmas;
		/delete-property/ dma-names;
		status = "okay";
	};

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

	i2c@7000d000 {
		status = "okay";
		clock-frequency = <400000>;

		palmas: pmic@58 {
			compatible = "ti,tps65913", "ti,palmas";
			reg = <0x58>;
			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;

			#interrupt-cells = <2>;
			interrupt-controller;

			ti,system-power-controller;

			palmas_gpio: gpio {
				compatible = "ti,palmas-gpio";
				gpio-controller;
				#gpio-cells = <2>;
			};

			pmic {
				compatible = "ti,tps65913-pmic", "ti,palmas-pmic";

				ldoln-in-supply = <&vdd_smps10_out2>;

				regulators {
					smps123 {
						regulator-name = "vd-cpu";
						regulator-min-microvolt = <1000000>;
						regulator-max-microvolt = <1000000>;
						regulator-always-on;
						regulator-boot-on;
					};

					smps45 {
						regulator-name = "vd-soc";
						regulator-min-microvolt = <1100000>;
						regulator-max-microvolt = <1100000>;
						regulator-always-on;
						regulator-boot-on;
					};

					smps6 {
						regulator-name = "va-lcd-hv";
						regulator-min-microvolt = <3000000>;
						regulator-max-microvolt = <3000000>;
						regulator-always-on;
						regulator-boot-on;
					};

					smps7 {
						regulator-name = "vd-ddr";
						regulator-min-microvolt = <1350000>;
						regulator-max-microvolt = <1350000>;
						regulator-always-on;
						regulator-boot-on;
					};

					vdd_1v8: smps8 {
						regulator-name = "vs-pmu-1v8";
						regulator-min-microvolt = <1800000>;
						regulator-max-microvolt = <1800000>;
						regulator-always-on;
						regulator-boot-on;
					};

					vdd_2v9_sys: smps9 {
						regulator-name = "vs-sys-2v9";
						regulator-min-microvolt = <2900000>;
						regulator-max-microvolt = <2900000>;
						regulator-always-on;
						regulator-boot-on;
					};

					vdd_smps10_out1: smps10_out1 {
						regulator-name = "vd-smps10-out1";
						regulator-min-microvolt = <5000000>;
						regulator-max-microvolt = <5000000>;
						regulator-always-on;
						regulator-boot-on;
					};

					vdd_smps10_out2: smps10_out2 {
						regulator-name = "vd-smps10-out2";
						regulator-min-microvolt = <5000000>;
						regulator-max-microvolt = <5000000>;
						regulator-always-on;
						regulator-boot-on;
					};

					ldo1 {
						regulator-name = "va-pllx";
						regulator-min-microvolt = <1050000>;
						regulator-max-microvolt = <1050000>;
						regulator-always-on;
						regulator-boot-on;
					};

					vdd_1v2_ap: ldo2 {
						regulator-name = "va-ap-1v2";
						regulator-min-microvolt = <1200000>;
						regulator-max-microvolt = <1200000>;
						regulator-always-on;
						regulator-boot-on;
					};

					ldo3 {
						regulator-name = "vd-fuse";
						regulator-min-microvolt = <1800000>;
						regulator-max-microvolt = <1800000>;
						regulator-always-on;
						regulator-boot-on;
					};

					ldo4 {
						regulator-name = "vd-ts-hv";
						regulator-min-microvolt = <3200000>;
						regulator-max-microvolt = <3200000>;
						regulator-always-on;
						regulator-boot-on;
					};

					ldo5 {
						regulator-name = "va-cam2-hv";
						regulator-min-microvolt = <2700000>;
						regulator-max-microvolt = <2700000>;
					};

					ldo6 {
						regulator-name = "va-sns-hv";
						regulator-min-microvolt = <2850000>;
						regulator-max-microvolt = <2850000>;
					};

					ldo7 {
						regulator-name = "va-cam1-hv";
						regulator-min-microvolt = <2700000>;
						regulator-max-microvolt = <2700000>;
					};

					ldo8 {
						regulator-name = "va-ap-rtc";
						regulator-min-microvolt = <1100000>;
						regulator-max-microvolt = <1100000>;
						ti,enable-ldo8-tracking;
						regulator-always-on;
						regulator-boot-on;
					};

					ldo9 {
						regulator-name = "vi-sdcard";
						regulator-min-microvolt = <2900000>;
						regulator-max-microvolt = <2900000>;
					};

					ldousb {
						regulator-name = "avdd-usb";
						regulator-min-microvolt = <3300000>;
						regulator-max-microvolt = <3300000>;
						regulator-always-on;
						regulator-boot-on;
					};

					ldoln {
						regulator-name = "va-hdmi";
						regulator-min-microvolt = <3300000>;
						regulator-max-microvolt = <3300000>;
					};
				};
			};

			rtc {
				compatible = "ti,palmas-rtc";
				interrupt-parent = <&palmas>;
				interrupts = <8 0>;
			};

		};
	};

	pmc@7000e400 {
		nvidia,invert-interrupt;
	};

	/* eMMC */
	mmc@78000600 {
		status = "okay";
		bus-width = <8>;
		non-removable;
	};

	usb@7d000000 {
		status = "okay";
	};

	usb-phy@7d000000 {
		status = "okay";
		nvidia,xcvr-setup = <7>;
		nvidia,xcvr-lsfslew = <2>;
		nvidia,xcvr-lsrslew = <2>;
		interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
		/* Should be changed to "otg" once we have vbus_supply */
		/* As of now, USB devices need to be powered externally */
		dr_mode = "host";
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 1 40000>;

		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;

		power-supply = <&lcd_bl_en>;
	};

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

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

		key-power {
			label = "Power";
			gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
			wakeup-source;
		};

		key-volume-down {
			label = "Volume Down";
			gpios = <&gpio TEGRA_GPIO(Q, 2) GPIO_ACTIVE_LOW>;
			linux,code = <KEY_VOLUMEDOWN>;
		};

		key-volume-up {
			label = "Volume Up";
			gpios = <&gpio TEGRA_GPIO(R, 2) GPIO_ACTIVE_LOW>;
			linux,code = <KEY_VOLUMEUP>;
		};
	};

	/* FIXME: output of BQ24192 */
	vs_sys: regulator-vs {
		compatible = "regulator-fixed";
		regulator-name = "VS_SYS";
		regulator-min-microvolt = <4200000>;
		regulator-max-microvolt = <4200000>;
		regulator-always-on;
		regulator-boot-on;
	};

	lcd_bl_en: regulator-lcden {
		compatible = "regulator-fixed";
		regulator-name = "VDD_LCD_BL";
		regulator-min-microvolt = <16500000>;
		regulator-max-microvolt = <16500000>;
		gpio = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
		enable-active-high;
		vin-supply = <&vs_sys>;
		regulator-boot-on;
	};

	vdd_lcd: regulator-lcd {
		compatible = "regulator-fixed";
		regulator-name = "VD_LCD_1V8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		gpio = <&palmas_gpio 4 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		vin-supply = <&vdd_1v8>;
		regulator-boot-on;
	};
};
