2025-11-20 7:19 AM
Hi everyone,
I’m trying to connect a MIPI CSI camera to my STM32MP257F-DK board. I’m using Yocto (branch scarthgap) with core-image-minimal and created a custom Yocto layer to patch the device tree located at arch/arm64/boot/dts/st/stm32mp257f-dk.dts.
The camera I’m working with uses the I²C address 0x3c, which unfortunately is also used by the ADV7535 HDMI chip on the STM32MP257F-DK board. As shown below (from the stm32mp257f-dk.dts file and i2cdetect), the ADV7535 occupies multiple addresses on I²C2:
adv7535: hdmi@3d {
compatible = "adi,adv7535";
reg = <0x3d>, <0x3c>, <0x3f>, <0x38>;
reg-names = "main", "cec", "edid", "packet";
...
};
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 -- -- -- 3c 3d -- 3f
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
...My main question is: how can I connect my camera when address 0x3c is already in use?
What I have tried
I first tried setting status = "disabled"; for the ADV7535 node (and related nodes). However, the ADV7535 still responds on the bus, i2cdetect continues to show the addresses 0x38, 0x3c, 0x3d, and 0x3f.
I noticed that the ADV7535 uses reset-gpios = <&gpiob 6 GPIO_ACTIVE_LOW>;. I attempted to hold the chip in reset permanently by adding this hog in the board device tree:
/ {
...
hdmi_reset_hog: hdmi-reset-hog {
compatible = "gpio-hog";
gpio-hog;
gpios = <&gpiob 6 GPIO_ACTIVE_LOW>;
output-low;
line-name = "hdmi-reset";
};
...
};
adv7535: hdmi@3d {
...
/delete-property/ reset-gpios;
status = "disabled"; /* also tried with "okay" no success! */
...
};Unfortunately, this also did not work. The HDMI-related I²C addresses still appear during i2cdetect.
Some clarification: I have successfully connected a Sony IMX219-based MIPI camera (I²C address 0x10) to the board, and I can confirm that my device tree patches are being applied (verified by decompiling the final .dtb).
I greatly appreciate any advice or tips on how to fully disable the ADV7535 so that the address 0x3C no longer appears on the I²C bus. If there is no reliable software method to achieve this, is physically removing the ADV7535 chip the only option?
Thanks!