This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: i2cdetect does not show the device on I2C6 instance

Part Number: TDA4VM

Hi,

We have MAX96712 deserializer(7 Bit i2c address 0x29) connected to TDAV4 using I2C6.

We are using PADCONFIG134 as I2C6_SCL and PADCNFIG135 as I2C6_SDA, i2cdetect is not showing the slave though slave is sending ACK. What could be the issue ?

root@j7-evm:~# devmem2 0x0011C218

/dev/mem opened.
Memory mapped at address 0xffff9ac80000.
Read at address 0x0011C218 (0xffff9ac8c218): 0x00060004
root@j7-evm:~# devmem2 0x0011C21C
/dev/mem opened.
Memory mapped at address 0xffff8b6e0000.
Read at address 0x0011C21C (0xffff8b6ec21c): 0x00060004
root@j7-evm:~#

root@j7-evm:~# dmesg | grep i2c
[ 0.700796] i2c /dev entries driver
[ 0.904126] omap_i2c 40b00000.i2c: bus 0 rev0.12 at 100 kHz
[ 0.910055] omap_i2c 40b10000.i2c: bus 1 rev0.12 at 100 kHz
[ 0.915997] omap_i2c 42120000.i2c: bus 2 rev0.12 at 100 kHz
[ 1.005108] omap_i2c 2000000.i2c: bus 3 rev0.12 at 400 kHz
[ 1.010992] omap_i2c 2020000.i2c: bus 4 rev0.12 at 100 kHz
[ 1.067102] omap_i2c 2030000.i2c: bus 5 rev0.12 at 400 kHz
[ 1.073045] omap_i2c 2040000.i2c: bus 6 rev0.12 at 100 kHz
[ 1.078909] omap_i2c 2050000.i2c: bus 7 rev0.12 at 100 kHz
[ 1.135038] omap_i2c 2060000.i2c: bus 8 rev0.12 at 400 kHz
r

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

 

  • Hi,

    Please directly do a i2cget or i2cset and and check the behavior

     

    Regards,

    Nikhil D

  • Hi Nikhil,

    Both i2cget and i2cset are failing as there is nothing on the i2c6 lines after the slave acknowledges, master does not generate clock pulse, scope measurement is same as attached for i2cdetect.

  • Mahipal,

    In your description you are trying to check i2c6 but
    the command you are using is:

    i2cdetect -r -y 8

    Shouldn't that be 6? bus number parameter should be 6.
    Was it a copy paste error?

    - Keerthy

  • Hi Mahipal,

    Okay 8 is reprseting: "omap_i2c 2060000.i2c: bus 8 rev0.12 at 400 kHz"
    which is main_i2c6.

    I see no timeouts as well as per your oscilloscope snapshots and the i2cdetect log.
    Discard my previous question.

    - Keerthy

  • Hi Mahipal,

    Which ball are you using to bring out i2c6_sda and I2c6_scl?

    If you are using AA3 & Y2 then below should be device tree entry for main_i2c6_pins_default

    &main_pmx0 {
    main_i2c6_pins_default: main-i2c6-pins-default {
    pinctrl-single,pins = <
    J721E_IOPAD(0x1d0, PIN_INPUT_PULLUP, 2) /* (AA3) SPI0_D1.I2C6_SCL */
    J721E_IOPAD(0x1e4, PIN_INPUT_PULLUP, 2) /* (Y2) SPI1_D1.I2C6_SDA */
    >;
    };

    By default if you pick any ball in the pinmux tool you get:

    myi2c3_pins_default: myi2c3_pins_default {
    pinctrl-single,pins = <
    J721E_IOPAD(0x218, PIN_INPUT_PULLUP, 4) /* (W2) I3C0_SCL.I2C6_SCL */
    J721E_IOPAD(0x21c, PIN_INPUT_PULLUP, 4) /* (W1) I3C0_SDA.I2C6_SDA */
    >;
    };

    So please verify the correct ball that you are using on your board and change the device tree
    accordingly.

    dev.ti.com/pinmux

    pick the j7 as device. Choose I2C under peripherals then Use peripheral ticked to i2c6.
    Pick the i2c pins(specific ball) that you are using.

    Hope this fixes the issue you are seeing.


    Regards,
    Keerthy

  • Hi Keerthy,

    We resolved this issue last week itself, we were using some other ball and so both were getting configured as i2c6, when we changed AA3 & Y2 to a GPIO mode, it resolved the issue.

    Regards

    Mahipal