linux/arch/arm64/boot/dts/nvidia/tegra234-p3740-0002+p3701-0008.dts

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

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

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

	aliases {
		serial0 = &tcu;
		serial1 = &uarta;
	};

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

	bus@0 {
		aconnect@2900000 {
			ahub@2900800 {
				i2s@2901300 {
					ports {
						port@1 {
							endpoint {
								dai-format = "i2s";
								remote-endpoint = <&rt5640_ep>;
							};
						};
					};
				};

				i2s@2901500 {
					ports {
						port@1 {
							endpoint {
								bitclock-master;
								frame-master;
							};
						};
					};
				};
			};
		};

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

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

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

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

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

		i2c@31c0000 {
			status = "okay";

			rt5640: audio-codec@1c {
				compatible = "realtek,rt5640";
				reg = <0x1c>;
				interrupt-parent = <&gpio>;
				interrupts = <TEGRA234_MAIN_GPIO(F, 3) GPIO_ACTIVE_HIGH>;
				clocks = <&bpmp TEGRA234_CLK_AUD_MCLK>;
				clock-names = "mclk";

				realtek,dmic1-data-pin = <RT5640_DMIC1_DATA_PIN_NONE>;
				realtek,dmic2-data-pin = <RT5640_DMIC2_DATA_PIN_NONE>;
				realtek,jack-detect-source = <RT5640_JD_SRC_HDA_HEADER>;

				sound-name-prefix = "CVB-RT";

				port {
					rt5640_ep: endpoint {
						remote-endpoint = <&i2s4_dap>;
						mclk-fs = <256>;
					};
				};
			};

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

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

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

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

		padctl@3520000 {
			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";
				};

				usb2-1 {
					mode = "host";
					status = "okay";
				};

				usb2-2 {
					mode = "host";
					status = "okay";
				};

				usb2-3 {
					mode = "host";
					status = "okay";
				};

				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";
		};

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

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

		i2c@c250000 {
			status = "okay";

			power-sensor@41 {
				compatible = "ti,ina3221";
				reg = <0x41>;
				#address-cells = <1>;
				#size-cells = <0>;

				input@0 {
					reg = <0x0>;
					label = "CVB_ATX_12V";
					shunt-resistor-micro-ohms = <2000>;
				};

				input@1 {
					reg = <0x1>;
					label = "CVB_ATX_3V3";
					shunt-resistor-micro-ohms = <2000>;
				};

				input@2 {
					reg = <0x2>;
					label = "CVB_ATX_5V";
					shunt-resistor-micro-ohms = <2000>;
				};
			};

			power-sensor@44 {
				compatible = "ti,ina219";
				reg = <0x44>;
				shunt-resistor = <2000>;
			};
		};

		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>;
			vpcie3v3-supply = <&vdd_3v3_wifi>;
			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";
		};
	};

	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";
	};

	sound {
		status = "okay";

		compatible = "nvidia,tegra186-audio-graph-card";

		dais = /* ADMAIF (FE) Ports */
		       <&admaif0_port>, <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
		       <&admaif4_port>, <&admaif5_port>, <&admaif6_port>, <&admaif7_port>,
		       <&admaif8_port>, <&admaif9_port>, <&admaif10_port>, <&admaif11_port>,
		       <&admaif12_port>, <&admaif13_port>, <&admaif14_port>, <&admaif15_port>,
		       <&admaif16_port>, <&admaif17_port>, <&admaif18_port>, <&admaif19_port>,
		       /* XBAR Ports */
		       <&xbar_i2s1_port>, <&xbar_i2s2_port>, <&xbar_i2s4_port>,
		       <&xbar_i2s6_port>, <&xbar_dmic3_port>,
		       <&xbar_sfc1_in_port>, <&xbar_sfc2_in_port>,
		       <&xbar_sfc3_in_port>, <&xbar_sfc4_in_port>,
		       <&xbar_mvc1_in_port>, <&xbar_mvc2_in_port>,
		       <&xbar_amx1_in1_port>, <&xbar_amx1_in2_port>,
		       <&xbar_amx1_in3_port>, <&xbar_amx1_in4_port>,
		       <&xbar_amx2_in1_port>, <&xbar_amx2_in2_port>,
		       <&xbar_amx2_in3_port>, <&xbar_amx2_in4_port>,
		       <&xbar_amx3_in1_port>, <&xbar_amx3_in2_port>,
		       <&xbar_amx3_in3_port>, <&xbar_amx3_in4_port>,
		       <&xbar_amx4_in1_port>, <&xbar_amx4_in2_port>,
		       <&xbar_amx4_in3_port>, <&xbar_amx4_in4_port>,
		       <&xbar_adx1_in_port>, <&xbar_adx2_in_port>,
		       <&xbar_adx3_in_port>, <&xbar_adx4_in_port>,
		       <&xbar_mix_in1_port>, <&xbar_mix_in2_port>,
		       <&xbar_mix_in3_port>, <&xbar_mix_in4_port>,
		       <&xbar_mix_in5_port>, <&xbar_mix_in6_port>,
		       <&xbar_mix_in7_port>, <&xbar_mix_in8_port>,
		       <&xbar_mix_in9_port>, <&xbar_mix_in10_port>,
		       <&xbar_asrc_in1_port>, <&xbar_asrc_in2_port>,
		       <&xbar_asrc_in3_port>, <&xbar_asrc_in4_port>,
		       <&xbar_asrc_in5_port>, <&xbar_asrc_in6_port>,
		       <&xbar_asrc_in7_port>,
		       <&xbar_ope1_in_port>,
		       /* HW accelerators */
		       <&sfc1_out_port>, <&sfc2_out_port>,
		       <&sfc3_out_port>, <&sfc4_out_port>,
		       <&mvc1_out_port>, <&mvc2_out_port>,
		       <&amx1_out_port>, <&amx2_out_port>,
		       <&amx3_out_port>, <&amx4_out_port>,
		       <&adx1_out1_port>, <&adx1_out2_port>,
		       <&adx1_out3_port>, <&adx1_out4_port>,
		       <&adx2_out1_port>, <&adx2_out2_port>,
		       <&adx2_out3_port>, <&adx2_out4_port>,
		       <&adx3_out1_port>, <&adx3_out2_port>,
		       <&adx3_out3_port>, <&adx3_out4_port>,
		       <&adx4_out1_port>, <&adx4_out2_port>,
		       <&adx4_out3_port>, <&adx4_out4_port>,
		       <&mix_out1_port>, <&mix_out2_port>, <&mix_out3_port>,
		       <&mix_out4_port>, <&mix_out5_port>,
		       <&asrc_out1_port>, <&asrc_out2_port>, <&asrc_out3_port>,
		       <&asrc_out4_port>, <&asrc_out5_port>, <&asrc_out6_port>,
		       <&ope1_out_port>,
		       /* BE I/O Ports */
		       <&i2s1_port>, <&i2s2_port>, <&i2s4_port>, <&i2s6_port>,
		       <&dmic3_port>;

		label = "NVIDIA IGX Orin APE";

		widgets = "Microphone",	"CVB-RT MIC Jack",
			  "Microphone",	"CVB-RT MIC",
			  "Headphone",	"CVB-RT HP Jack",
			  "Speaker",	"CVB-RT SPK";

		routing = /* I2S4 <-> RT5640 */
			  "CVB-RT AIF1 Playback",	"I2S4 DAP-Playback",
			  "I2S4 DAP-Capture",		"CVB-RT AIF1 Capture",
			  /* RT5640 codec controls */
			  "CVB-RT HP Jack",		"CVB-RT HPOL",
			  "CVB-RT HP Jack",		"CVB-RT HPOR",
			  "CVB-RT IN1P",		"CVB-RT MIC Jack",
			  "CVB-RT IN2P",		"CVB-RT MIC Jack",
			  "CVB-RT IN2N",		"CVB-RT MIC Jack",
			  "CVB-RT IN3P",		"CVB-RT MIC Jack",
			  "CVB-RT SPK",			"CVB-RT SPOLP",
			  "CVB-RT SPK",			"CVB-RT SPORP",
			  "CVB-RT SPK",			"CVB-RT LOUTL",
			  "CVB-RT SPK",			"CVB-RT LOUTR",
			  "CVB-RT DMIC1",		"CVB-RT MIC",
			  "CVB-RT DMIC2",		"CVB-RT MIC";
	};

	vdd_3v3_dp: regulator-vdd-3v3-dp {
		compatible = "regulator-fixed";
		regulator-name = "VDD_3V3_DP";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&vdd_3v3_sys>;
		gpio = <&gpio TEGRA234_MAIN_GPIO(H, 6) 0>;
		enable-active-high;
		regulator-always-on;
	};

	vdd_3v3_sys: regulator-vdd-3v3-sys {
		compatible = "regulator-fixed";
		regulator-name = "VDD_3V3_SYS";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	vdd_3v3_wifi: regulator-vdd-3v3-wifi {
		compatible = "regulator-fixed";
		regulator-name = "VDD_3V3_WIFI";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio TEGRA234_MAIN_GPIO(G, 3) GPIO_ACTIVE_HIGH>;
		regulator-boot-on;
		enable-active-high;
	};
};