Skip to main content
Visitor II
November 20, 2025
Question

STM32MP257F-DK: How to Fully Disable ADV7535 to Free I2C Address 0x3C?

  • November 20, 2025
  • 1 reply
  • 161 views

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

Attempt 1: Disable the ADV7535 in the device tree

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.

Attempt 2: Hold ADV7535 in reset using its reset GPIO

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!

 

 

    This topic has been closed for replies.

    1 reply

    DantisAuthor
    Visitor II
    November 21, 2025

    I also handled the R25 resistor and added a 2 kΩ recommended pull-down on the PD pin. Only one of the I²C addresses changed, from 0x3d to 0x39.

    Before adding the 2 kΩ pull-down:

     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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

    After adding the 2 kΩ pull-down:

    root@stm32mp2:~# i2cdetect -y 1
     0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- 38 39 -- -- 3c -- -- 3f
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

    But the address 0x3c, which is the conflicting address, still remains unchanged!