arm64: tegra: Add support for IGX Orin
authorShubhi Garg <shgarg@nvidia.com>
Mon, 8 May 2023 10:27:33 +0000 (10:27 +0000)
committerThierry Reding <treding@nvidia.com>
Tue, 16 May 2023 10:13:19 +0000 (12:13 +0200)
Add support for the NVIDIA IGX Orin development kit having P3701
module with P3740 carrier board.

Signed-off-by: Shubhi Garg <shgarg@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm64/boot/dts/nvidia/Makefile
arch/arm64/boot/dts/nvidia/tegra234-p3701-0008.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/tegra234-p3740-0002+p3701-0008.dts [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/tegra234-p3740-0002.dtsi [new file with mode: 0644]

index 1406d5d..2ea0058 100644 (file)
@@ -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
diff --git a/arch/arm64/boot/dts/nvidia/tegra234-p3701-0008.dtsi b/arch/arm64/boot/dts/nvidia/tegra234-p3701-0008.dtsi
new file mode 100644 (file)
index 0000000..e468352
--- /dev/null
@@ -0,0 +1,111 @@
+// 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;
+       };
+};
diff --git a/arch/arm64/boot/dts/nvidia/tegra234-p3740-0002+p3701-0008.dts b/arch/arm64/boot/dts/nvidia/tegra234-p3740-0002+p3701-0008.dts
new file mode 100644 (file)
index 0000000..43d797e
--- /dev/null
@@ -0,0 +1,154 @@
+// 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";
+       };
+};
diff --git a/arch/arm64/boot/dts/nvidia/tegra234-p3740-0002.dtsi b/arch/arm64/boot/dts/nvidia/tegra234-p3740-0002.dtsi
new file mode 100644 (file)
index 0000000..c95063b
--- /dev/null
@@ -0,0 +1,137 @@
+// 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";
+               };
+       };
+};