cancel
Showing results for 
Search instead for 
Did you mean: 

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

Dantis
Visitor

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!

 

 

0 REPLIES 0