From 63f16420ec8eb771db7535f92db3ca6626f4502e Mon Sep 17 00:00:00 2001 From: Ankur Pawar Date: Thu, 4 Apr 2024 13:22:57 +0000 Subject: [PATCH] t23x: Add Hawk & Owl overlays for P3762 Add following overlays for Hawk+Owl 1xHAWK: tegra234-p3737-camera-p3762-a00-1Hawk-overlay.dtbo 2xHAWK: tegra234-p3737-camera-p3762-a00-2Hawk-overlay.dtbo 3xHAWK+3xOWL: tegra234-p3737-camera-p3762-a00-3Hawk-3Owl-overlay.dtbo 4xHAWK: tegra234-p3737-camera-p3762-a00-4Hawk-overlay.dtbo 4xOWL: tegra234-p3737-camera-p3762-a00-4Owl-overlay.dtbo Bug 4583168 Change-Id: I7d03978628ead5b761668b58e05d6c35553ac52f Signed-off-by: Ankur Pawar Reviewed-on: https://git-master.nvidia.com/r/c/device/hardware/nvidia/t23x-public-dts/+/3109502 (cherry picked from commit e979b90a55d427b30cef5bf8f11847965bdfd2ee) Reviewed-on: https://git-master.nvidia.com/r/c/device/hardware/nvidia/t23x-public-dts/+/3203952 Tested-by: mobile promotions Reviewed-by: mobile promotions --- overlay/Makefile | 5 + overlay/tegra234-camera-p3762-a00.dtsi | 234 +++++++------- ...4-p3737-camera-p3762-a00-1Hawk-overlay.dts | 175 ++++++++++ ...4-p3737-camera-p3762-a00-2Hawk-overlay.dts | 175 ++++++++++ ...37-camera-p3762-a00-3Hawk-3Owl-overlay.dts | 176 +++++++++++ ...4-p3737-camera-p3762-a00-4Hawk-overlay.dts | 175 ++++++++++ ...34-p3737-camera-p3762-a00-4Owl-overlay.dts | 176 +++++++++++ ...egra234-p3737-camera-p3762-a00-overlay.dts | 203 +----------- overlay/tegra234-p3737-camera-p3762-a00.dtsi | 299 ++++++++++++++++++ 9 files changed, 1299 insertions(+), 319 deletions(-) create mode 100644 overlay/tegra234-p3737-camera-p3762-a00-1Hawk-overlay.dts create mode 100644 overlay/tegra234-p3737-camera-p3762-a00-2Hawk-overlay.dts create mode 100644 overlay/tegra234-p3737-camera-p3762-a00-3Hawk-3Owl-overlay.dts create mode 100644 overlay/tegra234-p3737-camera-p3762-a00-4Hawk-overlay.dts create mode 100644 overlay/tegra234-p3737-camera-p3762-a00-4Owl-overlay.dts create mode 100644 overlay/tegra234-p3737-camera-p3762-a00.dtsi diff --git a/overlay/Makefile b/overlay/Makefile index b1e744f..33aaf51 100644 --- a/overlay/Makefile +++ b/overlay/Makefile @@ -58,6 +58,11 @@ dtbo-y += tegra234-p3737-camera-eCAM130A-overlay.dtbo dtbo-y += tegra234-p3737-camera-dual-hawk-ar0234-e3653-overlay.dtbo dtbo-y += tegra234-p3737-camera-imx390-addr-0x21-overlay.dtbo dtbo-y += tegra234-p3737-camera-imx390-overlay.dtbo +dtbo-y += tegra234-p3737-camera-p3762-a00-1Hawk-overlay.dtbo +dtbo-y += tegra234-p3737-camera-p3762-a00-2Hawk-overlay.dtbo +dtbo-y += tegra234-p3737-camera-p3762-a00-3Hawk-3Owl-overlay.dtbo +dtbo-y += tegra234-p3737-camera-p3762-a00-4Hawk-overlay.dtbo +dtbo-y += tegra234-p3737-camera-p3762-a00-4Owl-overlay.dtbo dtbo-y += tegra234-p3767-camera-p3768-imx219-C.dtbo dtbo-y += tegra234-p3767-camera-p3768-imx219-A.dtbo dtbo-y += tegra234-p3767-camera-p3768-imx219-imx477.dtbo diff --git a/overlay/tegra234-camera-p3762-a00.dtsi b/overlay/tegra234-camera-p3762-a00.dtsi index 1efdab3..cee00e9 100644 --- a/overlay/tegra234-camera-p3762-a00.dtsi +++ b/overlay/tegra234-camera-p3762-a00.dtsi @@ -24,89 +24,89 @@ reg = <0>; status = "okay"; ar0234_vi_in0: endpoint { - vc-id = <0>; - port-index = <0>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_out0>; + vc-id = <0>; + port-index = <0>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_out0>; status = "okay"; - }; + }; }; port@1 { reg = <1>; status = "okay"; ar0234_vi_in1: endpoint { - vc-id = <1>; - port-index = <0>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_out1>; + vc-id = <1>; + port-index = <0>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_out1>; status = "okay"; - }; + }; }; port@2 { reg = <2>; status = "okay"; ar0234_vi_in2: endpoint { - vc-id = <0>; - port-index = <1>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_out2>; + vc-id = <0>; + port-index = <1>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_out2>; status = "okay"; - }; + }; }; port@3 { reg = <3>; status = "okay"; ar0234_vi_in3: endpoint { - vc-id = <1>; - port-index = <1>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_out3>; + vc-id = <1>; + port-index = <1>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_out3>; status = "okay"; - }; + }; }; port@4 { reg = <4>; status = "okay"; ar0234_vi_in4: endpoint { - vc-id = <0>; - port-index = <2>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_out4>; + vc-id = <0>; + port-index = <2>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_out4>; status = "okay"; - }; + }; }; port@5 { reg = <5>; status = "okay"; ar0234_vi_in5: endpoint { - vc-id = <1>; - port-index = <2>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_out5>; + vc-id = <1>; + port-index = <2>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_out5>; status = "okay"; - }; + }; }; port@6 { reg = <6>; status = "okay"; ar0234_vi_in6: endpoint { - vc-id = <0>; - port-index = <3>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_out6>; + vc-id = <0>; + port-index = <3>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_out6>; status = "okay"; - }; + }; }; port@7 { reg = <7>; status = "okay"; ar0234_vi_in7: endpoint { - vc-id = <1>; + vc-id = <1>; port-index = <3>; bus-width = <2>; remote-endpoint = <&ar0234_csi_out7>; status = "okay"; - }; + }; }; port@8 { reg = <8>; @@ -180,9 +180,9 @@ reg = <1>; status = "okay"; ar0234_csi_out0: endpoint@1 { - remote-endpoint = <&ar0234_vi_in0>; + remote-endpoint = <&ar0234_vi_in0>; status = "okay"; - }; + }; }; }; }; @@ -206,9 +206,9 @@ reg = <1>; status = "okay"; ar0234_csi_out1: endpoint@3 { - remote-endpoint = <&ar0234_vi_in1>; + remote-endpoint = <&ar0234_vi_in1>; status = "okay"; - }; + }; }; }; }; @@ -232,9 +232,9 @@ reg = <1>; status = "okay"; ar0234_csi_out2: endpoint@5 { - remote-endpoint = <&ar0234_vi_in2>; + remote-endpoint = <&ar0234_vi_in2>; status = "okay"; - }; + }; }; }; }; @@ -258,9 +258,9 @@ reg = <1>; status = "okay"; ar0234_csi_out3: endpoint@7 { - remote-endpoint = <&ar0234_vi_in3>; + remote-endpoint = <&ar0234_vi_in3>; status = "okay"; - }; + }; }; }; }; @@ -284,9 +284,9 @@ reg = <1>; status = "okay"; ar0234_csi_out4: endpoint@9 { - remote-endpoint = <&ar0234_vi_in4>; + remote-endpoint = <&ar0234_vi_in4>; status = "okay"; - }; + }; }; }; }; @@ -310,9 +310,9 @@ reg = <1>; status = "okay"; ar0234_csi_out5: endpoint@11 { - remote-endpoint = <&ar0234_vi_in5>; + remote-endpoint = <&ar0234_vi_in5>; status = "okay"; - }; + }; }; }; }; @@ -336,9 +336,9 @@ reg = <1>; status = "okay"; ar0234_csi_out6: endpoint@13 { - remote-endpoint = <&ar0234_vi_in6>; + remote-endpoint = <&ar0234_vi_in6>; status = "okay"; - }; + }; }; }; }; @@ -362,9 +362,9 @@ reg = <1>; status = "okay"; ar0234_csi_out7: endpoint@15 { - remote-endpoint = <&ar0234_vi_in7>; + remote-endpoint = <&ar0234_vi_in7>; status = "okay"; - }; + }; }; }; }; @@ -388,9 +388,9 @@ reg = <1>; status = "okay"; ar0234_csi_out8: endpoint@17 { - remote-endpoint = <&ar0234_vi_in8>; + remote-endpoint = <&ar0234_vi_in8>; status = "okay"; - }; + }; }; }; }; @@ -414,9 +414,9 @@ reg = <1>; status = "okay"; ar0234_csi_out9: endpoint@19 { - remote-endpoint = <&ar0234_vi_in9>; + remote-endpoint = <&ar0234_vi_in9>; status = "okay"; - }; + }; }; }; }; @@ -430,19 +430,19 @@ reg = <0>; status = "okay"; ar0234_csi_in10: endpoint@20 { - port-index = <4>; - bus-width = <2>; - remote-endpoint = <&ar0234_ar0234_out10>; + port-index = <4>; + bus-width = <2>; + remote-endpoint = <&ar0234_ar0234_out10>; status = "okay"; - }; + }; }; port@1 { reg = <1>; status = "okay"; ar0234_csi_out10: endpoint@21 { - remote-endpoint = <&ar0234_vi_in10>; + remote-endpoint = <&ar0234_vi_in10>; status = "okay"; - }; + }; }; }; }; @@ -456,19 +456,19 @@ reg = <0>; status = "okay"; ar0234_csi_in11: endpoint@22 { - port-index = <4>; - bus-width = <2>; - remote-endpoint = <&ar0234_ar0234_out11>; + port-index = <4>; + bus-width = <2>; + remote-endpoint = <&ar0234_ar0234_out11>; status = "okay"; - }; + }; }; port@1 { reg = <1>; status = "okay"; ar0234_csi_out11: endpoint@23 { - remote-endpoint = <&ar0234_vi_in11>; + remote-endpoint = <&ar0234_vi_in11>; status = "okay"; - }; + }; }; }; }; @@ -535,10 +535,10 @@ port@0 { reg = <0>; ar0234_ar0234_out8: endpoint { - vc-id = <0>; - port-index = <4>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in8>; + vc-id = <0>; + port-index = <4>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in8>; }; }; }; @@ -603,10 +603,10 @@ port@0 { reg = <0>; ar0234_ar0234_out9: endpoint { - vc-id = <1>; - port-index = <4>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in9>; + vc-id = <1>; + port-index = <4>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in9>; }; }; }; @@ -671,10 +671,10 @@ port@0 { reg = <0>; ar0234_ar0234_out10: endpoint { - vc-id = <2>; - port-index = <4>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in10>; + vc-id = <2>; + port-index = <4>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in10>; }; }; }; @@ -739,10 +739,10 @@ port@0 { reg = <0>; ar0234_ar0234_out11: endpoint { - vc-id = <3>; - port-index = <4>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in11>; + vc-id = <3>; + port-index = <4>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in11>; }; }; }; @@ -899,10 +899,10 @@ port@0 { reg = <0>; ar0234_ar0234_out0: endpoint { - vc-id = <0>; - port-index = <0>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in0>; + vc-id = <0>; + port-index = <0>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in0>; }; }; }; @@ -967,10 +967,10 @@ port@0 { reg = <0>; ar0234_ar0234_out1: endpoint { - vc-id = <1>; - port-index = <0>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in1>; + vc-id = <1>; + port-index = <0>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in1>; }; }; }; @@ -1037,10 +1037,10 @@ port@0 { reg = <0>; ar0234_ar0234_out2: endpoint { - vc-id = <0>; - port-index = <1>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in2>; + vc-id = <0>; + port-index = <1>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in2>; }; }; }; @@ -1105,10 +1105,10 @@ port@0 { reg = <0>; ar0234_ar0234_out3: endpoint { - vc-id = <1>; - port-index = <1>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in3>; + vc-id = <1>; + port-index = <1>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in3>; }; }; }; @@ -1173,10 +1173,10 @@ port@0 { reg = <0>; ar0234_ar0234_out4: endpoint { - vc-id = <0>; - port-index = <2>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in4>; + vc-id = <0>; + port-index = <2>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in4>; }; }; }; @@ -1241,10 +1241,10 @@ port@0 { reg = <0>; ar0234_ar0234_out5: endpoint { - vc-id = <1>; - port-index = <2>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in5>; + vc-id = <1>; + port-index = <2>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in5>; }; }; }; @@ -1309,10 +1309,10 @@ port@0 { reg = <0>; ar0234_ar0234_out6: endpoint { - vc-id = <0>; - port-index = <3>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in6>; + vc-id = <0>; + port-index = <3>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in6>; }; }; }; @@ -1377,10 +1377,10 @@ port@0 { reg = <0>; ar0234_ar0234_out7: endpoint { - vc-id = <1>; - port-index = <3>; - bus-width = <2>; - remote-endpoint = <&ar0234_csi_in7>; + vc-id = <1>; + port-index = <3>; + bus-width = <2>; + remote-endpoint = <&ar0234_csi_in7>; }; }; }; diff --git a/overlay/tegra234-p3737-camera-p3762-a00-1Hawk-overlay.dts b/overlay/tegra234-p3737-camera-p3762-a00-1Hawk-overlay.dts new file mode 100644 index 0000000..fe7e6be --- /dev/null +++ b/overlay/tegra234-p3737-camera-p3762-a00-1Hawk-overlay.dts @@ -0,0 +1,175 @@ +// SPDX-License-Identifier: GPL-2.0-only +// SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +/dts-v1/; +/plugin/; + +#include "tegra234-p3737-camera-p3762-a00.dtsi" +#include "dt-bindings/gpio/tegra234-gpio.h" +#include "dt-bindings/clock/tegra234-clock.h" +#include + +/* camera control gpio definitions */ +#define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3) +#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6) +#define CAM1_RST_L TEGRA234_MAIN_GPIO(AC, 1) +#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0) +#define PWR_EN TEGRA234_MAIN_GPIO(AC, 7) +#define GYRO1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 1) +#define ACCE1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 0) + +/ { + overlay-name = "Jetson Camera 1-Hawk p3762 module"; + jetson-header-name = "Jetson AGX CSI Connector"; + compatible = JETSON_COMPATIBLE; + + fragment-camera-hawk-owl@0 { + target-path = "/"; + __overlay__ { + tegra-capture-vi { + num-channels = <2>; + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + status = "okay"; + }; + port@1 { + status = "okay"; + }; + port@2 { + status = "disabled"; + }; + port@3 { + status = "disabled"; + }; + port@4 { + status = "disabled"; + }; + port@5 { + status = "disabled"; + }; + port@6 { + status = "disabled"; + }; + port@7 { + status = "disabled"; + }; + port@8 { + status = "disabled"; + }; + port@9 { + status = "disabled"; + }; + port@10 { + status = "disabled"; + }; + port@11 { + status = "disabled"; + }; + }; + }; + bus@0 { + host1x@13e00000 { + nvcsi@15a00000 { + num-channels = <2>; + #address-cells = <1>; + #size-cells = <0>; + channel@0 { + status = "okay"; + }; + channel@1 { + status = "okay"; + }; + channel@2 { + status = "disabled"; + }; + channel@3 { + status = "disabled"; + }; + channel@4 { + status = "disabled"; + }; + channel@5 { + status = "disabled"; + }; + channel@6 { + status = "disabled"; + }; + channel@7 { + status = "disabled"; + }; + channel@8 { + status = "disabled"; + }; + channel@9 { + status = "disabled"; + }; + channel@10 { + status = "disabled"; + }; + channel@11 { + status = "disabled"; + }; + }; + }; + i2c@3180000 { + max96712_b@62 { + status = "disabled"; + }; + ar0234_i@30 { + status = "disabled"; + }; + ar0234_j@32 { + status = "disabled"; + }; + ar0234_k@34 { + status = "disabled"; + }; + ar0234_l@36 { + status = "disabled"; + }; + }; + i2c@31e0000 { + max96712_a@62 { + status = "okay"; + }; + virtual_i2c_mux@50 { + status = "okay"; + i2c@0 { + bmi088_a@69 { + status = "okay"; + }; + ar0234_a@30 { + status = "okay"; + }; + ar0234_b@31 { + status = "okay"; + }; + }; + i2c@1 { + ar0234_c@32 { + status = "disabled"; + }; + ar0234_d@33 { + status = "disabled"; + }; + ar0234_e@34 { + status = "disabled"; + }; + ar0234_f@35 { + status = "disabled"; + }; + ar0234_g@36 { + status = "disabled"; + }; + ar0234_h@37 { + status = "disabled"; + }; + }; + }; + }; + }; + }; + }; +}; diff --git a/overlay/tegra234-p3737-camera-p3762-a00-2Hawk-overlay.dts b/overlay/tegra234-p3737-camera-p3762-a00-2Hawk-overlay.dts new file mode 100644 index 0000000..03e5d77 --- /dev/null +++ b/overlay/tegra234-p3737-camera-p3762-a00-2Hawk-overlay.dts @@ -0,0 +1,175 @@ +// SPDX-License-Identifier: GPL-2.0-only +// SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +/dts-v1/; +/plugin/; + +#include "tegra234-p3737-camera-p3762-a00.dtsi" +#include "dt-bindings/gpio/tegra234-gpio.h" +#include "dt-bindings/clock/tegra234-clock.h" +#include + +/* camera control gpio definitions */ +#define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3) +#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6) +#define CAM1_RST_L TEGRA234_MAIN_GPIO(AC, 1) +#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0) +#define PWR_EN TEGRA234_MAIN_GPIO(AC, 7) +#define GYRO1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 1) +#define ACCE1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 0) + +/ { + overlay-name = "Jetson Camera 2-Hawk p3762 module"; + jetson-header-name = "Jetson AGX CSI Connector"; + compatible = JETSON_COMPATIBLE; + + fragment-camera-hawk-owl@0 { + target-path = "/"; + __overlay__ { + tegra-capture-vi { + num-channels = <4>; + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + status = "okay"; + }; + port@1 { + status = "okay"; + }; + port@2 { + status = "okay"; + }; + port@3 { + status = "okay"; + }; + port@4 { + status = "disabled"; + }; + port@5 { + status = "disabled"; + }; + port@6 { + status = "disabled"; + }; + port@7 { + status = "disabled"; + }; + port@8 { + status = "disabled"; + }; + port@9 { + status = "disabled"; + }; + port@10 { + status = "disabled"; + }; + port@11 { + status = "disabled"; + }; + }; + }; + bus@0 { + host1x@13e00000 { + nvcsi@15a00000 { + num-channels = <4>; + #address-cells = <1>; + #size-cells = <0>; + channel@0 { + status = "okay"; + }; + channel@1 { + status = "okay"; + }; + channel@2 { + status = "okay"; + }; + channel@3 { + status = "okay"; + }; + channel@4 { + status = "disabled"; + }; + channel@5 { + status = "disabled"; + }; + channel@6 { + status = "disabled"; + }; + channel@7 { + status = "disabled"; + }; + channel@8 { + status = "disabled"; + }; + channel@9 { + status = "disabled"; + }; + channel@10 { + status = "disabled"; + }; + channel@11 { + status = "disabled"; + }; + }; + }; + i2c@3180000 { + max96712_b@62 { + status = "disabled"; + }; + ar0234_i@30 { + status = "disabled"; + }; + ar0234_j@32 { + status = "disabled"; + }; + ar0234_k@34 { + status = "disabled"; + }; + ar0234_l@36 { + status = "disabled"; + }; + }; + i2c@31e0000 { + max96712_a@62 { + status = "okay"; + }; + virtual_i2c_mux@50 { + status = "okay"; + i2c@0 { + bmi088_a@69 { + status = "okay"; + }; + ar0234_a@30 { + status = "okay"; + }; + ar0234_b@31 { + status = "okay"; + }; + }; + i2c@1 { + ar0234_c@32 { + status = "okay"; + }; + ar0234_d@33 { + status = "okay"; + }; + ar0234_e@34 { + status = "disabled"; + }; + ar0234_f@35 { + status = "disabled"; + }; + ar0234_g@36 { + status = "disabled"; + }; + ar0234_h@37 { + status = "disabled"; + }; + }; + }; + }; + }; + }; + }; +}; diff --git a/overlay/tegra234-p3737-camera-p3762-a00-3Hawk-3Owl-overlay.dts b/overlay/tegra234-p3737-camera-p3762-a00-3Hawk-3Owl-overlay.dts new file mode 100644 index 0000000..7621345 --- /dev/null +++ b/overlay/tegra234-p3737-camera-p3762-a00-3Hawk-3Owl-overlay.dts @@ -0,0 +1,176 @@ +// SPDX-License-Identifier: GPL-2.0-only +// SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +/dts-v1/; +/plugin/; + +#include "tegra234-p3737-camera-p3762-a00.dtsi" +#include "dt-bindings/gpio/tegra234-gpio.h" +#include "dt-bindings/clock/tegra234-clock.h" +#include + +/* camera control gpio definitions */ +#define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3) +#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6) +#define CAM1_RST_L TEGRA234_MAIN_GPIO(AC, 1) +#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0) +#define PWR_EN TEGRA234_MAIN_GPIO(AC, 7) +#define GYRO1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 1) +#define ACCE1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 0) + +/ { + overlay-name = "Jetson Camera 3-Hawk 3-Owl p3762 module"; + jetson-header-name = "Jetson AGX CSI Connector"; + compatible = JETSON_COMPATIBLE; + + fragment-camera-hawk-owl@0 { + target-path = "/"; + __overlay__ { + tegra-capture-vi { + num-channels = <12>; + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + status = "okay"; + }; + port@1 { + status = "okay"; + }; + port@2 { + status = "okay"; + }; + port@3 { + status = "okay"; + }; + port@4 { + status = "okay"; + }; + port@5 { + status = "okay"; + }; + port@6 { + status = "disabled"; + }; + port@7 { + status = "disabled"; + }; + port@8 { + status = "okay"; + }; + port@9 { + status = "okay"; + }; + port@10 { + status = "okay"; + }; + port@11 { + status = "disabled"; + }; + }; + }; + bus@0 { + host1x@13e00000 { + nvcsi@15a00000 { + num-channels = <12>; + #address-cells = <1>; + #size-cells = <0>; + channel@0 { + status = "okay"; + }; + channel@1 { + status = "okay"; + }; + channel@2 { + status = "okay"; + }; + channel@3 { + status = "okay"; + }; + channel@4 { + status = "okay"; + }; + channel@5 { + status = "okay"; + }; + channel@6 { + status = "disabled"; + }; + channel@7 { + status = "disabled"; + }; + channel@8 { + status = "okay"; + }; + channel@9 { + status = "okay"; + }; + channel@10 { + status = "okay"; + }; + channel@11 { + status = "disabled"; + }; + }; + }; + i2c@3180000 { + max96712_b@62 { + status = "okay"; + }; + ar0234_i@30 { + status = "okay"; + }; + ar0234_j@32 { + status = "okay"; + }; + ar0234_k@34 { + status = "okay"; + }; + ar0234_l@36 { + status = "disabled"; + }; + }; + i2c@31e0000 { + max96712_a@62 { + status = "okay"; + }; + virtual_i2c_mux@50 { + status = "okay"; + + i2c@0 { + bmi088_a@69 { + status = "okay"; + }; + ar0234_a@30 { + status = "okay"; + }; + ar0234_b@31 { + status = "okay"; + }; + }; + i2c@1 { + ar0234_c@32 { + status = "okay"; + }; + ar0234_d@33 { + status = "okay"; + }; + ar0234_e@34 { + status = "okay"; + }; + ar0234_f@35 { + status = "okay"; + }; + ar0234_g@36 { + status = "disabled"; + }; + ar0234_h@37 { + status = "disabled"; + }; + }; + }; + }; + }; + }; + }; +}; diff --git a/overlay/tegra234-p3737-camera-p3762-a00-4Hawk-overlay.dts b/overlay/tegra234-p3737-camera-p3762-a00-4Hawk-overlay.dts new file mode 100644 index 0000000..028270b --- /dev/null +++ b/overlay/tegra234-p3737-camera-p3762-a00-4Hawk-overlay.dts @@ -0,0 +1,175 @@ +// SPDX-License-Identifier: GPL-2.0-only +// SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +/dts-v1/; +/plugin/; + +#include "tegra234-p3737-camera-p3762-a00.dtsi" +#include "dt-bindings/gpio/tegra234-gpio.h" +#include "dt-bindings/clock/tegra234-clock.h" +#include + +#define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3) +#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6) +#define CAM1_RST_L TEGRA234_MAIN_GPIO(AC, 1) +#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0) +#define PWR_EN TEGRA234_MAIN_GPIO(AC, 7) +#define GYRO1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 1) +#define ACCE1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 0) + +/* camera control gpio definitions */ +/ { + overlay-name = "Jetson Camera 4-Hawk p3762 module"; + jetson-header-name = "Jetson AGX CSI Connector"; + compatible = JETSON_COMPATIBLE; + + fragment-camera-hawk-owl@0 { + target-path = "/"; + __overlay__ { + tegra-capture-vi { + num-channels = <8>; + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + status = "okay"; + }; + port@1 { + status = "okay"; + }; + port@2 { + status = "okay"; + }; + port@3 { + status = "okay"; + }; + port@4 { + status = "okay"; + }; + port@5 { + status = "okay"; + }; + port@6 { + status = "okay"; + }; + port@7 { + status = "okay"; + }; + port@8 { + status = "disabled"; + }; + port@9 { + status = "disabled"; + }; + port@10 { + status = "disabled"; + }; + port@11 { + status = "disabled"; + }; + }; + }; + bus@0 { + host1x@13e00000 { + nvcsi@15a00000 { + num-channels = <8>; + #address-cells = <1>; + #size-cells = <0>; + channel@0 { + status = "okay"; + }; + channel@1 { + status = "okay"; + }; + channel@2 { + status = "okay"; + }; + channel@3 { + status = "okay"; + }; + channel@4 { + status = "okay"; + }; + channel@5 { + status = "okay"; + }; + channel@6 { + status = "okay"; + }; + channel@7 { + status = "okay"; + }; + channel@8 { + status = "disabled"; + }; + channel@9 { + status = "disabled"; + }; + channel@10 { + status = "disabled"; + }; + channel@11 { + status = "disabled"; + }; + }; + }; + i2c@3180000 { + max96712_b@62 { + status = "disabled"; + }; + ar0234_i@30 { + status = "disabled"; + }; + ar0234_j@32 { + status = "disabled"; + }; + ar0234_k@34 { + status = "disabled"; + }; + ar0234_l@36 { + status = "disabled"; + }; + }; + i2c@31e0000 { + max96712_a@62 { + status = "okay"; + }; + virtual_i2c_mux@50 { + status = "okay"; + i2c@0 { + bmi088_a@69 { + status = "okay"; + }; + ar0234_a@30 { + status = "okay"; + }; + ar0234_b@31 { + status = "okay"; + }; + }; + i2c@1 { + ar0234_c@32 { + status = "okay"; + }; + ar0234_d@33 { + status = "okay"; + }; + ar0234_e@34 { + status = "okay"; + }; + ar0234_f@35 { + status = "okay"; + }; + ar0234_g@36 { + status = "okay"; + }; + ar0234_h@37 { + status = "okay"; + }; + }; + }; + }; + }; + }; + }; +}; diff --git a/overlay/tegra234-p3737-camera-p3762-a00-4Owl-overlay.dts b/overlay/tegra234-p3737-camera-p3762-a00-4Owl-overlay.dts new file mode 100644 index 0000000..4ea7cb6 --- /dev/null +++ b/overlay/tegra234-p3737-camera-p3762-a00-4Owl-overlay.dts @@ -0,0 +1,176 @@ +// SPDX-License-Identifier: GPL-2.0-only +// SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +/dts-v1/; +/plugin/; + +#include "tegra234-p3737-camera-p3762-a00.dtsi" +#include "dt-bindings/gpio/tegra234-gpio.h" +#include "dt-bindings/clock/tegra234-clock.h" +#include + +/* camera control gpio definitions */ +#define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3) +#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6) +#define CAM1_RST_L TEGRA234_MAIN_GPIO(AC, 1) +#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0) +#define PWR_EN TEGRA234_MAIN_GPIO(AC, 7) +#define GYRO1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 1) +#define ACCE1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 0) + +/ { + overlay-name = "Jetson Camera 4-Owl p3762 module"; + jetson-header-name = "Jetson AGX CSI Connector"; + compatible = JETSON_COMPATIBLE; + + fragment-camera-hawk-owl@0 { + target-path = "/"; + __overlay__ { + tegra-capture-vi { + num-channels = <12>; + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + status = "disabled"; + }; + port@1 { + status = "disabled"; + }; + port@2 { + status = "disabled"; + }; + port@3 { + status = "disabled"; + }; + port@4 { + status = "disabled"; + }; + port@5 { + status = "disabled"; + }; + port@6 { + status = "disabled"; + }; + port@7 { + status = "disabled"; + }; + port@8 { + status = "okay"; + }; + port@9 { + status = "okay"; + }; + port@10 { + status = "okay"; + }; + port@11 { + status = "okay"; + }; + }; + }; + bus@0 { + host1x@13e00000 { + nvcsi@15a00000 { + num-channels = <12>; + #address-cells = <1>; + #size-cells = <0>; + channel@0 { + status = "disabled"; + }; + channel@1 { + status = "disabled"; + }; + channel@2 { + status = "disabled"; + }; + channel@3 { + status = "disabled"; + }; + channel@4 { + status = "disabled"; + }; + channel@5 { + status = "disabled"; + }; + channel@6 { + status = "disabled"; + }; + channel@7 { + status = "disabled"; + }; + channel@8 { + status = "okay"; + }; + channel@9 { + status = "okay"; + }; + channel@10 { + status = "okay"; + }; + channel@11 { + status = "okay"; + }; + }; + }; + i2c@3180000 { + max96712_b@62 { + status = "okay"; + }; + ar0234_i@30 { + status = "okay"; + }; + ar0234_j@32 { + status = "okay"; + }; + ar0234_k@34 { + status = "okay"; + }; + ar0234_l@36 { + status = "okay"; + }; + }; + i2c@31e0000 { + max96712_a@62 { + status = "disabled"; + }; + virtual_i2c_mux@50 { + status = "disabled"; + + i2c@0 { + bmi088_a@69 { + status = "disabled"; + }; + ar0234_a@30 { + status = "disabled"; + }; + ar0234_b@31 { + status = "disabled"; + }; + }; + i2c@1 { + ar0234_c@32 { + status = "disabled"; + }; + ar0234_d@33 { + status = "disabled"; + }; + ar0234_e@34 { + status = "disabled"; + }; + ar0234_f@35 { + status = "disabled"; + }; + ar0234_g@36 { + status = "disabled"; + }; + ar0234_h@37 { + status = "disabled"; + }; + }; + }; + }; + }; + }; + }; +}; diff --git a/overlay/tegra234-p3737-camera-p3762-a00-overlay.dts b/overlay/tegra234-p3737-camera-p3762-a00-overlay.dts index 590386f..5000dfb 100644 --- a/overlay/tegra234-p3737-camera-p3762-a00-overlay.dts +++ b/overlay/tegra234-p3737-camera-p3762-a00-overlay.dts @@ -4,7 +4,7 @@ /dts-v1/; /plugin/; -#include "tegra234-camera-p3762-a00.dtsi" +#include "tegra234-p3737-camera-p3762-a00.dtsi" #include "dt-bindings/gpio/tegra234-gpio.h" #include "dt-bindings/clock/tegra234-clock.h" #include @@ -27,112 +27,30 @@ target-path = "/"; __overlay__ { bus@0 { - /* set camera gpio direction to output */ - gpio@2200000 { - camera-control-output-low { - gpio-hog; - output-low; - gpios = ; - label = "cam0-rst", "cam0-pwdn", - "cam1-rst", "cam1-pwdn"; - }; - }; i2c@3180000 { max96712_b@62 { - compatible = "nvidia,max96712"; - reg = <0x62>; - channel = "b"; - pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; status = "okay"; }; ar0234_i@30 { status = "okay"; - def-addr = <0x18>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "b"; - has-eeprom; - eeprom-addr = <0x38>; - reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; ar0234_j@32 { status = "okay"; - def-addr = <0x18>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "b"; - has-eeprom; - eeprom-addr = <0x3a>; - reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; ar0234_k@34 { status = "okay"; - def-addr = <0x18>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "b"; - has-eeprom; - eeprom-addr = <0x3c>; - reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; ar0234_l@36 { status = "okay"; - def-addr = <0x18>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "b"; - has-eeprom; - eeprom-addr = <0x3e>; - reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; }; i2c@31e0000 { max96712_a@62 { - compatible = "nvidia,max96712"; - reg = <0x62>; - channel = "a"; - pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; status = "okay"; }; virtual_i2c_mux@50 { - reg = <0x50>; - compatible = "nvidia,virtual-i2c-mux"; - #address-cells = <1>; - #size-cells = <0>; - i2c-parent = <&dp_aux_ch3_i2c>; status = "okay"; - i2c@0 { - reg = <0>; - i2c-mux,deselect-on-exit; - #address-cells = <1>; - #size-cells = <0>; - bmi088_a@69 { compatible = "bmi,bmi088"; reg = <0x69>; @@ -148,137 +66,29 @@ }; ar0234_a@30 { status = "okay"; - def-addr = <0x10>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "a"; - has-eeprom; - eeprom-addr = <0x40>; - reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; ar0234_b@31 { status = "okay"; - def-addr = <0x18>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "a"; - has-eeprom; - eeprom-addr = <0x40>; - reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; }; i2c@1 { - reg = <1>; - i2c-mux,deselect-on-exit; - #address-cells = <1>; - #size-cells = <0>; ar0234_c@32 { status = "okay"; - def-addr = <0x10>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "a"; - has-eeprom; - eeprom-addr = <0x15>; - reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; ar0234_d@33 { status = "okay"; - def-addr = <0x18>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "a"; - has-eeprom; - eeprom-addr = <0x15>; - reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; ar0234_e@34 { status = "okay"; - def-addr = <0x10>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "a"; - has-eeprom; - eeprom-addr = <0x44>; - reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; ar0234_f@35 { status = "okay"; - def-addr = <0x18>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "a"; - has-eeprom; - eeprom-addr = <0x44>; - reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; ar0234_g@36 { status = "okay"; - def-addr = <0x10>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "a"; - has-eeprom; - eeprom-addr = <0x46>; - reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; ar0234_h@37 { status = "okay"; - def-addr = <0x18>; - /* Define any required hw resources needed by driver */ - /* ie. clocks, io pins, power sources */ - clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, - <&bpmp TEGRA234_CLK_EXTPERIPH1>; - clock-names = "extperiph1", "pllp_grtba"; - mclk = "extperiph1"; - channel = "a"; - has-eeprom; - eeprom-addr = <0x46>; - reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; - pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; - pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; }; }; }; @@ -286,15 +96,4 @@ }; }; }; - fragment-cam-cdi-tsc@0 { - target-path = "/"; - __overlay__ { - tsc_sig_gen@c6a0000 { - status = "okay"; - generator@380 { - status = "okay"; - }; - }; - }; - }; }; diff --git a/overlay/tegra234-p3737-camera-p3762-a00.dtsi b/overlay/tegra234-p3737-camera-p3762-a00.dtsi new file mode 100644 index 0000000..6bed8e3 --- /dev/null +++ b/overlay/tegra234-p3737-camera-p3762-a00.dtsi @@ -0,0 +1,299 @@ +// SPDX-License-Identifier: GPL-2.0-only +// SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +#include "tegra234-camera-p3762-a00.dtsi" +#include "dt-bindings/gpio/tegra234-gpio.h" +#include "dt-bindings/clock/tegra234-clock.h" +#include + +/* camera control gpio definitions */ +#define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3) +#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6) +#define CAM1_RST_L TEGRA234_MAIN_GPIO(AC, 1) +#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0) +#define PWR_EN TEGRA234_MAIN_GPIO(AC, 7) +#define GYRO1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 1) +#define ACCE1_IRQ_GPIO TEGRA234_AON_GPIO(CC, 0) + +/ { + fragment-camera-hawk-owl@0 { + target-path = "/"; + __overlay__ { + bus@0 { + /* set camera gpio direction to output */ + gpio@2200000 { + camera-control-output-low { + gpio-hog; + output-low; + gpios = ; + label = "cam0-rst", "cam0-pwdn", + "cam1-rst", "cam1-pwdn"; + }; + }; + i2c@3180000 { + max96712_b@62 { + compatible = "nvidia,max96712"; + reg = <0x62>; + channel = "b"; + pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; + status = "disabled"; + }; + ar0234_i@30 { + status = "disabled"; + def-addr = <0x18>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "b"; + has-eeprom; + eeprom-addr = <0x38>; + reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + ar0234_j@32 { + status = "disabled"; + def-addr = <0x18>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "b"; + has-eeprom; + eeprom-addr = <0x3a>; + reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + ar0234_k@34 { + status = "disabled"; + def-addr = <0x18>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "b"; + has-eeprom; + eeprom-addr = <0x3c>; + reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + ar0234_l@36 { + status = "disabled"; + def-addr = <0x18>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "b"; + has-eeprom; + eeprom-addr = <0x3e>; + reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + }; + i2c@31e0000 { + max96712_a@62 { + compatible = "nvidia,max96712"; + reg = <0x62>; + channel = "a"; + pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; + status = "disabled"; + }; + virtual_i2c_mux@50 { + reg = <0x50>; + compatible = "nvidia,virtual-i2c-mux"; + #address-cells = <1>; + #size-cells = <0>; + i2c-parent = <&dp_aux_ch3_i2c>; + status = "disabled"; + + i2c@0 { + reg = <0>; + i2c-mux,deselect-on-exit; + #address-cells = <1>; + #size-cells = <0>; + + bmi088_a@69 { + compatible = "bmi,bmi088"; + reg = <0x69>; + accel_i2c_addr = <0x19>; + /* Old BMI088 driver uses *_gpio property and the latest + * BMI088 driver uses *-gpios property. Have both versions + * to maintain backward compatibility. + */ + accel_irq_gpio = <&gpio_aon ACCE1_IRQ_GPIO GPIO_ACTIVE_HIGH>; + gyro_irq_gpio = <&gpio_aon GYRO1_IRQ_GPIO GPIO_ACTIVE_HIGH>; + accel_irq-gpios = <&gpio_aon ACCE1_IRQ_GPIO GPIO_ACTIVE_HIGH>; + gyro_irq-gpios = <&gpio_aon GYRO1_IRQ_GPIO GPIO_ACTIVE_HIGH>; + accel_matrix = [01 00 00 00 01 00 00 00 01]; + gyro_matrix = [01 00 00 00 01 00 00 00 01]; + gyro_reg_0x18 = <0x81>; + timestamps = <&hte_aon ACCE1_IRQ_GPIO>, <&hte_aon GYRO1_IRQ_GPIO>; + timestamp-names = "accelerometer", "gyroscope"; + status = "disabled"; + }; + ar0234_a@30 { + status = "disabled"; + def-addr = <0x10>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "a"; + has-eeprom; + eeprom-addr = <0x40>; + reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + ar0234_b@31 { + status = "disabled"; + def-addr = <0x18>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "a"; + has-eeprom; + eeprom-addr = <0x40>; + reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + }; + i2c@1 { + reg = <1>; + i2c-mux,deselect-on-exit; + #address-cells = <1>; + #size-cells = <0>; + ar0234_c@32 { + status = "disabled"; + def-addr = <0x10>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "a"; + has-eeprom; + eeprom-addr = <0x15>; + reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + ar0234_d@33 { + status = "disabled"; + def-addr = <0x18>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "a"; + has-eeprom; + eeprom-addr = <0x15>; + reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + ar0234_e@34 { + status = "disabled"; + def-addr = <0x10>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "a"; + has-eeprom; + eeprom-addr = <0x44>; + reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + ar0234_f@35 { + status = "disabled"; + def-addr = <0x18>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "a"; + has-eeprom; + eeprom-addr = <0x44>; + reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + ar0234_g@36 { + status = "disabled"; + def-addr = <0x10>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "a"; + has-eeprom; + eeprom-addr = <0x46>; + reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + ar0234_h@37 { + status = "disabled"; + def-addr = <0x18>; + /* Define any required hw resources needed by driver */ + /* ie. clocks, io pins, power sources */ + clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, + <&bpmp TEGRA234_CLK_EXTPERIPH1>; + clock-names = "extperiph1", "pllp_grtba"; + mclk = "extperiph1"; + channel = "a"; + has-eeprom; + eeprom-addr = <0x46>; + reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; + pwr-gpios = <&gpio PWR_EN GPIO_ACTIVE_HIGH>; + }; + }; + }; + }; + }; + }; + }; + fragment-cam-cdi-tsc@0 { + target-path = "/"; + __overlay__ { + tsc_sig_gen@c6a0000 { + status = "okay"; + generator@380 { + status = "okay"; + }; + }; + }; + }; +};