/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 {
		/* memory >= 0x37e00000 is reserved for firmware usage */
		reg = <0x80000000 0x37e00000>;
	};

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

			vdd-supply = <&vdd_1v2_ap>;

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

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

	serial@70006300 {
		status = "okay";
	};

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

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

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

			#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 */
	sdhci@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>;
	};

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

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

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

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

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

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

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

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

		lcd_bl_en: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			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@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			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;
		};
	};
};
