Commit c95711d7 authored by Shubhi Garg's avatar Shubhi Garg Committed by Thierry Reding
Browse files

arm64: tegra: Add support for IGX Orin



Add support for the NVIDIA IGX Orin development kit having P3701
module with P3740 carrier board.

Signed-off-by: default avatarShubhi Garg <shgarg@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 49cbf04c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ DTC_FLAGS_tegra194-p2972-0000 := -@
DTC_FLAGS_tegra194-p3509-0000+p3668-0000 := -@
DTC_FLAGS_tegra194-p3509-0000+p3668-0001 := -@
DTC_FLAGS_tegra234-p3737-0000+p3701-0000 := -@
DTC_FLAGS_tegra234-p3740-0002+p3701-0008 := -@
DTC_FLAGS_tegra234-p3768-0000+p3767-0000 := -@

dtb-$(CONFIG_ARCH_TEGRA_132_SOC) += tegra132-norrin.dtb
@@ -25,4 +26,5 @@ dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p3509-0000+p3668-0000.dtb
dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p3509-0000+p3668-0001.dtb
dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-sim-vdk.dtb
dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3737-0000+p3701-0000.dtb
dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3740-0002+p3701-0008.dtb
dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3768-0000+p3767-0000.dtb
+111 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0

#include "tegra234.dtsi"

/ {
	compatible = "nvidia,p3701-0008", "nvidia,tegra234";

	bus@0 {
		i2c@3160000 {
			status = "okay";

			eeprom@50 {
				compatible = "atmel,24c02";
				reg = <0x50>;
				label = "module";
				vcc-supply = <&vdd_1v8_hs>;
				address-width = <8>;
				pagesize = <8>;
				size = <256>;
				read-only;
			};
		};

		spi@3270000 {
			status = "okay";

			flash@0 {
				compatible = "jedec,spi-nor";
				reg = <0>;
				spi-max-frequency = <102000000>;
				spi-tx-bus-width = <4>;
				spi-rx-bus-width = <4>;
			};
		};

		mmc@3460000 {
			status = "okay";
			bus-width = <8>;
			non-removable;
		};

		i2c@c240000 {
			status = "okay";
		};

		rtc@c2a0000 {
			status = "okay";
		};

		pmc@c360000 {
			nvidia,invert-interrupt;
		};
	};

	bpmp {
		i2c {
			status = "okay";

			thermal-sensor@4c {
				status = "okay";
				reg = <0x4c>;
				vcc-supply = <&vdd_1v8_ao>;
			};
		};

		thermal {
			status = "okay";
		};
	};

	vdd_1v8_ao: regulator-vdd-1v8-ao {
		compatible = "regulator-fixed";
		regulator-name = "VDD_1V8_AO";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
	};

	vdd_1v8_hs: regulator-vdd-1v8-hs {
		compatible = "regulator-fixed";
		regulator-name = "VDD_1V8_HS";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
	};

	vdd_1v8_ls: regulator-vdd-1v8-ls {
		compatible = "regulator-fixed";
		regulator-name = "VDD_1V8_LS";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
	};

	vdd_3v3_ao: regulator-vdd-3v3-ao {
		compatible = "regulator-fixed";
		regulator-name = "vdd-AO-3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	vdd_5v0_sys: regulator-vdd-5v0-sys {
		compatible = "regulator-fixed";
		regulator-name = "VIN_SYS_5V0";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-always-on;
		regulator-boot-on;
	};
};
+154 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;

#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/input/gpio-keys.h>
#include "tegra234-p3701-0008.dtsi"
#include "tegra234-p3740-0002.dtsi"

/ {
	model = "NVIDIA IGX Orin Development Kit";
	compatible = "nvidia,p3740-0002+p3701-0008", "nvidia,p3701-0008", "nvidia,tegra234";

	aliases {
		serial0 = &tcu;
	};

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

	bus@0 {
		host1x@13e00000 {
			nvdec@15480000 {
				status = "okay";
			};
		};

		pcie@140e0000 {
			status = "okay";
			vddio-pex-ctl-supply = <&vdd_1v8_ls>;
			phys = <&p2u_gbe_4>, <&p2u_gbe_5>;
			phy-names = "p2u-0", "p2u-1";
		};

		pcie@14100000 {
			status = "okay";
			vddio-pex-ctl-supply = <&vdd_1v8_ao>;
			phys = <&p2u_hsio_3>;
			phy-names = "p2u-0";
		};

		pcie@14160000 {
			status = "okay";
			vddio-pex-ctl-supply = <&vdd_1v8_ao>;
			phys = <&p2u_hsio_7>, <&p2u_hsio_6>, <&p2u_hsio_5>,
			       <&p2u_hsio_4>;
			phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3";
		};

		pcie@141a0000 {
			status = "okay";
			vddio-pex-ctl-supply = <&vdd_1v8_ls>;
			phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
				<&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
				<&p2u_nvhs_6>, <&p2u_nvhs_7>;
			phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
				    "p2u-5", "p2u-6", "p2u-7";
		};

		pcie@141e0000 {
			status = "okay";
			vddio-pex-ctl-supply = <&vdd_1v8_ls>;
			phys = <&p2u_gbe_0>, <&p2u_gbe_1>;
			phy-names = "p2u-0", "p2u-1";
		};

		aconnect@2900000 {
			status = "okay";
		};

		serial@3100000 {
			compatible = "nvidia,tegra194-hsuart";
			status = "okay";
		};

		i2c@3160000 {
			status = "okay";
		};

		i2c@3180000 {
			status = "okay";
		};

		i2c@3190000 {
			status = "okay";
		};

		i2c@31b0000 {
			status = "okay";
		};

		i2c@31c0000 {
			status = "okay";

		};

		i2c@31e0000 {
			status = "okay";
		};

		spi@3270000 {
			status = "okay";
		};

		hda@3510000 {
			nvidia,model = "NVIDIA IGX HDA";
			status = "okay";
		};

		fuse@3810000 {
			status = "okay";
		};

		i2c@c240000 {
			status = "okay";
		};

		i2c@c250000 {
			status = "okay";
		};
	};

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

		key-force-recovery {
			label = "Force Recovery";
			gpios = <&gpio TEGRA234_MAIN_GPIO(G, 0) GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_KEY>;
			linux,code = <BTN_1>;
		};

		key-power {
			label = "Power";
			gpios = <&gpio_aon TEGRA234_AON_GPIO(EE, 4) GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_KEY>;
			linux,code = <KEY_POWER>;
			wakeup-event-action = <EV_ACT_ASSERTED>;
			wakeup-source;
		};

		key-suspend {
			label = "Suspend";
			gpios = <&gpio TEGRA234_MAIN_GPIO(G, 2) GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_KEY>;
			linux,code = <KEY_SLEEP>;
		};
	};

	serial {
		status = "okay";
	};
};
+137 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0

/ {
	compatible = "nvidia,p3740-0002";

	bus@0 {
		i2c@31c0000 {
			/* carrier board ID EEPROM */
			eeprom@55 {
				compatible = "atmel,24c02";
				reg = <0x55>;

				label = "system";
				vcc-supply = <&vdd_1v8_ls>;
				address-width = <8>;
				pagesize = <8>;
				size = <256>;
				read-only;
			};
		};

		padctl@3520000 {
			vclamp-usb-supply = <&vdd_1v8_ao>;
			avdd-usb-supply = <&vdd_3v3_ao>;
			status = "okay";

			pads {
				usb2 {
					lanes {
						usb2-0 {
							nvidia,function = "xusb";
							status = "okay";
						};

						usb2-1 {
							nvidia,function = "xusb";
							status = "okay";
						};

						usb2-2 {
							nvidia,function = "xusb";
							status = "okay";
						};

						usb2-3 {
							nvidia,function = "xusb";
							status = "okay";
						};
					};
				};

				usb3 {
					lanes {
						usb3-0 {
							nvidia,function = "xusb";
							status = "okay";
						};

						usb3-1 {
							nvidia,function = "xusb";
							status = "okay";
						};

						usb3-2 {
							nvidia,function = "xusb";
							status = "okay";
						};
					};
				};
			};

			ports {
				usb2-0 {
					mode = "otg";
					usb-role-switch;
					status = "okay";
					vbus-supply = <&vdd_5v0_sys>;
				};

				usb2-1 {
					mode = "host";
					status = "okay";
					vbus-supply = <&vdd_5v0_sys>;
				};

				usb2-2 {
					mode = "host";
					status = "okay";
					vbus-supply = <&vdd_5v0_sys>;
				};

				usb2-3 {
					mode = "host";
					status = "okay";
					vbus-supply = <&vdd_5v0_sys>;
				};

				usb3-0 {
					nvidia,usb2-companion = <2>;
					status = "okay";
				};

				usb3-1 {
					nvidia,usb2-companion = <0>;
					status = "okay";
				};

				usb3-2 {
					nvidia,usb2-companion = <1>;
					status = "okay";
				};
			};
		};

		usb@3550000 {
			status = "okay";

			phys = <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
				<&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>;
			phy-names = "usb2-0", "usb3-0";
		};

		usb@3610000 {
			status = "okay";

			phys =	<&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
				<&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
				<&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-2}>,
				<&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-3}>,
				<&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-0}>,
				<&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>,
				<&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-2}>;
			phy-names = "usb2-0", "usb2-1", "usb2-2", "usb2-3",
				"usb3-0", "usb3-1", "usb3-2";
		};
	};
};