Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
From 984ee10b17034a4a832a3df110efec5ed8333c9f Mon Sep 17 00:00:00 2001
From: Sivasubramanaiyan Padmanaban <sivasubramaniyan.padmanaban@analog.com>
Date: Fri, 23 Jan 2026 15:45:47 +0530
Subject: [PATCH] overlay: adsd3500_dual: Fix GPIO line name

- Fixed the inconsistent naming for "I2CM SEL" to "I2CM_SEL" to maintain uniformity.
- Fixed the inconsistent naming for "NET HOST_IO_SEL" to "NET_HOST_IO_SEL" to maintain uniformity.

Signed-off-by: Sivasubramanaiyan Padmanaban <sivasubramaniyan.padmanaban@analog.com>
---
...p3767-camera-p3768-dual-adsd3500-adsd3100-arducam-ar0234.dts | 2 +-
overlay/tegra234-p3767-camera-p3768-dual-adsd3500-adsd3100.dts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/overlay/tegra234-p3767-camera-p3768-dual-adsd3500-adsd3100-arducam-ar0234.dts b/overlay/tegra234-p3767-camera-p3768-dual-adsd3500-adsd3100-arducam-ar0234.dts
index 4a624f0..78dcba0 100644
--- a/overlay/tegra234-p3767-camera-p3768-dual-adsd3500-adsd3100-arducam-ar0234.dts
+++ b/overlay/tegra234-p3767-camera-p3768-dual-adsd3500-adsd3100-arducam-ar0234.dts
@@ -414,7 +414,7 @@
reg = <0x68>;
gpio-controller;
#gpio-cells = <2>;
- gpio-line-names = "EN_1P8", "EN_0P8", "P2", "I2CM SEL", "ISP_BS3/ISP_INT", "NET HOST_IO_SEL", "ISP_BS0", "ISP_BS1", "HOST_IO_DIR", "ISP_BS4", "ISP_BS5", "FSYNC_DIR", "EN_VAUX", "EN_VAUX_LS", "EN_SYS";
+ gpio-line-names = "EN_1P8", "EN_0P8", "P2", "I2CM_SEL", "ISP_BS3/ISP_INT", "NET_HOST_IO_SEL", "ISP_BS0", "ISP_BS1", "HOST_IO_DIR", "ISP_BS4", "ISP_BS5", "FSYNC_DIR", "EN_VAUX", "EN_VAUX_LS", "EN_SYS";
};
adsd3500@38 {
compatible = "adi,adsd3500";
diff --git a/overlay/tegra234-p3767-camera-p3768-dual-adsd3500-adsd3100.dts b/overlay/tegra234-p3767-camera-p3768-dual-adsd3500-adsd3100.dts
index b621234..5e8ef94 100644
--- a/overlay/tegra234-p3767-camera-p3768-dual-adsd3500-adsd3100.dts
+++ b/overlay/tegra234-p3767-camera-p3768-dual-adsd3500-adsd3100.dts
@@ -2459,7 +2459,7 @@
reg = <0x68>;
gpio-controller;
#gpio-cells = <2>;
- gpio-line-names = "EN_1P8", "EN_0P8", "P2", "I2CM SEL", "ISP_BS3/ISP_INT", "NET HOST_IO_SEL", "ISP_BS0", "ISP_BS1", "HOST_IO_DIR", "ISP_BS4", "ISP_BS5", "FSYNC_DIR", "EN_VAUX", "EN_VAUX_LS", "EN_SYS";
+ gpio-line-names = "EN_1P8", "EN_0P8", "P2", "I2CM_SEL", "ISP_BS3/ISP_INT", "NET_HOST_IO_SEL", "ISP_BS0", "ISP_BS1", "HOST_IO_DIR", "ISP_BS4", "ISP_BS5", "FSYNC_DIR", "EN_VAUX", "EN_VAUX_LS", "EN_SYS";
};
};
pwm: pwm-gpio {
--
2.25.1

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
From b7724648ee98cb832295b3ca1827f32652a42483 Mon Sep 17 00:00:00 2001
From: Sivasubramanaiyan Padmanaban <sivasubramaniyan.padmanaban@analog.com>
Date: Thu, 22 Jan 2026 11:15:56 +0530
Subject: [PATCH] arch: arm64: configs: defconfig: build Tegra194 PCIe and NVMe
drivers into kernel

- Build the Tegra194 PCIe host/endpoint drivers and the NVMe block
driver into the kernel to ensure availability during early boot.

Signed-off-by: Sivasubramanaiyan Padmanaban <sivasubramaniyan.padmanaban@analog.com>
---
arch/arm64/configs/defconfig | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 2a9c2815df00..7a8d9568d9e5 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -270,8 +270,8 @@ CONFIG_PCIE_QCOM=y
CONFIG_PCIE_ARMADA_8K=y
CONFIG_PCIE_KIRIN=y
CONFIG_PCIE_HISI_STB=y
-CONFIG_PCIE_TEGRA194_HOST=m
-CONFIG_PCIE_TEGRA194_EP=m
+CONFIG_PCIE_TEGRA194_HOST=y
+CONFIG_PCIE_TEGRA194_EP=y
CONFIG_PCIE_LAYERSCAPE_GEN4=y
CONFIG_PCI_ENDPOINT=y
CONFIG_PCI_ENDPOINT_CONFIGFS=y
@@ -314,7 +314,7 @@ CONFIG_ZRAM=m
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_NBD=m
CONFIG_VIRTIO_BLK=y
-CONFIG_BLK_DEV_NVME=m
+CONFIG_BLK_DEV_NVME=y
CONFIG_NVME_TCP=m
CONFIG_NVME_TARGET=m
CONFIG_NVME_TARGET_TCP=m
--
2.25.1

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#!/bin/bash

# Discover adsd3500 V4L2 sub-device and video nodes by parsing the media controller graph
MEDIA_DEVICE="/dev/media0"
DOT_OUTPUT=$(media-ctl -d "$MEDIA_DEVICE" --print-dot)
DOT_OUTPUT=$(echo "$DOT_OUTPUT" | sed 's/\\n/\n/g')
Expand All @@ -14,25 +15,30 @@ else
exit 1
fi

# export NET HOST_IO_SEL Pin
if [ ! -d /sys/class/gpio/gpio305 ]
then
echo 305 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio305/direction
fi

# export HOST_IO_DIR Pin
if [ ! -d /sys/class/gpio/gpio308 ]
then
echo 308 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio308/direction
fi
# Declare GPIO mapping directly
declare -A GPIO=(
[EN_1P8]=300
[EN_0P8]=301
[P2]=302
[I2CM_SEL]=303
[ISP_BS3]=304
[NET_HOST_IO_SEL]=305
[ISP_BS0]=306
[ISP_BS1]=307
[HOST_IO_DIR]=308
[ISP_BS4]=309
[ISP_BS5]=310
[FSYNC_DIR]=311
[EN_VAUX]=312
[EN_VAUX_LS]=313
[EN_SYS]=314
)

# Set 0: EXT_FSYNC / 1: ISP_INT
echo 0 > /sys/class/gpio/gpio305/value
echo 0 > /sys/class/gpio/gpio${GPIO[NET_HOST_IO_SEL]}/value

# Set 0: EXT_FSYNC / 1: ISP_INT
echo 0 > /sys/class/gpio/gpio308/value
echo 0 > /sys/class/gpio/gpio${GPIO[HOST_IO_DIR]}/value

# Enable external fsync
v4l2-ctl --set-ctrl=fsync_trigger=0 -d $SUBDEV_PATH
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#!/bin/bash

# Discover adsd3500 V4L2 sub-device and video nodes by parsing the media controller graph
MEDIA_DEVICE="/dev/media0"
DOT_OUTPUT=$(media-ctl -d "$MEDIA_DEVICE" --print-dot)
DOT_OUTPUT=$(echo "$DOT_OUTPUT" | sed 's/\\n/\n/g')
Expand All @@ -14,25 +15,30 @@ else
exit 1
fi

# export NET HOST_IO_SEL Pin
if [ ! -d /sys/class/gpio/gpio305 ]
then
echo 305 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio305/direction
fi

# export HOST_IO_DIR Pin
if [ ! -d /sys/class/gpio/gpio308 ]
then
echo 308 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio308/direction
fi
# Declare GPIO mapping directly
declare -A GPIO=(
[EN_1P8]=300
[EN_0P8]=301
[P2]=302
[I2CM_SEL]=303
[ISP_BS3]=304
[NET_HOST_IO_SEL]=305
[ISP_BS0]=306
[ISP_BS1]=307
[HOST_IO_DIR]=308
[ISP_BS4]=309
[ISP_BS5]=310
[FSYNC_DIR]=311
[EN_VAUX]=312
[EN_VAUX_LS]=313
[EN_SYS]=314
)

# Set 0: EXT_FSYNC / 1: ISP_INT
echo 1 > /sys/class/gpio/gpio305/value
echo 1 > /sys/class/gpio/gpio${GPIO[NET_HOST_IO_SEL]}/value

# Set 0: EXT_FSYNC / 1: ISP_INT
echo 1 > /sys/class/gpio/gpio308/value
echo 1 > /sys/class/gpio/gpio${GPIO[HOST_IO_DIR]}/value

# Enable interrupt support
# Enable external fsync
v4l2-ctl --set-ctrl=fsync_trigger=1 -d $SUBDEV_PATH
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
#!/bin/bash

echo 0 > /sys/class/gpio/PAC.00/value
GPIO_NAME="PAC.00"

echo 0 > /sys/class/gpio/$GPIO_NAME/value

sleep 1

echo 1 > /sys/class/gpio/PAC.00/value
echo 1 > /sys/class/gpio/$GPIO_NAME/value

Original file line number Diff line number Diff line change
@@ -1,6 +1,28 @@
#!/bin/bash

MODULE=$(strings /proc/device-tree/tegra-camera-platform/modules/module0/badge)
# Scan all camera module badge entries and assign MODULE to the first one matching the ADI ToF sensor
TARGET="adi_dual_adsd3500_adsd3100"
MODULE=""

for badge in \
/proc/device-tree/tegra-camera-platform/modules/module0/badge \
/proc/device-tree/tegra-camera-platform/modules/module1/badge
do
if [[ -f "$badge" ]]; then
value=$(strings "$badge")
if echo "$value" | grep -q "$TARGET"; then
MODULE="$value"
break
fi
fi
done

if [[ -z "$MODULE" ]]; then
echo "Target module not found"
exit 0
fi

echo "Matched MODULE: $MODULE"

MEDIA_DEVICE="/dev/media0"
DOT_OUTPUT=$(media-ctl -d "$MEDIA_DEVICE" --print-dot)
Expand All @@ -16,48 +38,62 @@ else
exit 1
fi

adsd3500_power_sequence(){

#Pull ADSD3500 reset low
echo 0 > /sys/class/gpio/PAC.00/value

#Disable the the supply voltage
#EN_1P8
gpioset 2 0=0
GPIO_NAME="PAC.00"

#EN_0P8
gpioset 2 1=0
# Declare GPIO mapping directly
declare -A GPIO=(
[EN_1P8]=300
[EN_0P8]=301
[P2]=302
[I2CM_SEL]=303
[ISP_BS3]=304
[NET_HOST_IO_SEL]=305
[ISP_BS0]=306
[ISP_BS1]=307
[HOST_IO_DIR]=308
[ISP_BS4]=309
[ISP_BS5]=310
[FSYNC_DIR]=311
[EN_VAUX]=312
[EN_VAUX_LS]=313
[EN_SYS]=314
)

sleep 0.2
adsd3500_power_sequence() {

#I2CM_SET
gpioset 2 3=0
# Pull ADSD3500 reset low
echo 0 > /sys/class/gpio/$GPIO_NAME/value

#ISP_BS0
gpioset 2 6=1
# Disable the supply voltage
echo 0 > /sys/class/gpio/gpio${GPIO[EN_1P8]}/value
echo 0 > /sys/class/gpio/gpio${GPIO[EN_0P8]}/value

#ISP_BS1
gpioset 2 7=0
sleep 0.2

#ISP_BS4
gpioset 2 9=0
# I2CM_SEL
echo 0 > /sys/class/gpio/gpio${GPIO[I2CM_SEL]}/value

#ISP_BS5
gpioset 2 10=0
# ISP_BS0
echo 1 > /sys/class/gpio/gpio${GPIO[ISP_BS0]}/value

#EN_1P8
gpioset 2 0=1
# ISP_BS1
echo 0 > /sys/class/gpio/gpio${GPIO[ISP_BS1]}/value

sleep 0.2
# ISP_BS4
echo 0 > /sys/class/gpio/gpio${GPIO[ISP_BS4]}/value

#EN_0P8
gpioset 2 1=1
# ISP_BS5
echo 0 > /sys/class/gpio/gpio${GPIO[ISP_BS5]}/value

sleep 0.2
# Re-enable the supply voltage
echo 1 > /sys/class/gpio/gpio${GPIO[EN_1P8]}/value
sleep 0.2

#Pull ADSD3500 reset high
echo 1 > /sys/class/gpio/PAC.00/value
echo 1 > /sys/class/gpio/gpio${GPIO[EN_0P8]}/value
sleep 0.2

# Pull ADSD3500 reset high
echo 1 > /sys/class/gpio/$GPIO_NAME/value
}

load_firmware() {
Expand Down
Loading
Loading