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.

PROCESSOR-SDK-DRA8X-TDA4X: I2C bus and addressing issues

Part Number: PROCESSOR-SDK-DRA8X-TDA4X

Hello,

I had a question similar to the one asked on the link: https://e2e.ti.com/support/processors/f/791/p/942674/3483537

The issue in addressing the EEPROM remains. There are several issues I am facing:

1. The number of i2c devices I can see are only 8, when there should be 10

2. The number of EEPROMs available should be 2 board EEPROMs (one on the SoM and one on the CPB), and one BOOT EEPROM. The addresses mentioned for the Board ID EEPROMs are 0x50 and 0x53, and from what I can see in the User's Guide, these should be 32kB. I checked  the attached devices to the 8 buses, and I see that there are devices being shown only for the following addressses (I use the i2cdetect -y command):

Bus 0: 0x50, 0x51, 0x5a

Bus 1: no device

Bus 2: 0x50, 0x51, 0x54, 0x58

Bus 3: 0x57

Bus 4, 5, 6 and 7: no device

This does not match any of the addresses mentioned in the User's Guide. Further, when I attempt to read the value of Bus 0, 0x50, I see that only 8kB of data can be read.

It's the same case for Bus 2 (8kB of data).

The User's Guide mentions that there should be 32kBs of readable data (259 bytes of addressable EEPROM and the remaining for code storage). This is quite confusing.

Could you please help me with this topic?

Best regards,

Abhinav

  • Hi Abhinav,

    I2C instances mapping. That is answered as part of this query: https://e2e.ti.com/support/processors/f/791/t/942449

    I am using PSDKLA 7.0 & i see the below log:

    [ 0.891864] omap_i2c 40b00000.i2c: bus 0 rev0.12 at 100 kHz
    [ 0.897826] omap_i2c 40b10000.i2c: bus 1 rev0.12 at 100 kHz
    [ 0.903793] omap_i2c 42120000.i2c: bus 2 rev0.12 at 100 kHz
    [ 0.909824] pca953x 3-0020: 3-0020 supply vcc not found, using dummy regulator
    [ 0.940069] GPIO line 509 (VINOUT_MUX_SEL1) hogged as output/high
    [ 0.946487] GPIO line 508 (VINOUT_MUX_SEL0) hogged as output/low
    [ 0.952876] pca953x 3-0022: 3-0022 supply vcc not found, using dummy regulator
    [ 0.960891] GPIO line 481 (MCASP/TRACE_MUX_S0) hogged as output/low
    [ 0.967489] GPIO line 482 (MCASP/TRACE_MUX_S1) hogged as output/high
    [ 0.974316] omap_i2c 2000000.i2c: bus 3 rev0.12 at 400 kHz
    [ 0.980380] omap_i2c 2010000.i2c: bus 4 rev0.12 at 100 kHz
    [ 0.986247] omap_i2c 2020000.i2c: bus 5 rev0.12 at 100 kHz
    [ 0.992397] pca953x 6-0020: 6-0020 supply vcc not found, using dummy regulator
    [ 1.023836] omap_i2c 2030000.i2c: bus 6 rev0.12 at 400 kHz
    [ 1.029694] omap_i2c 2040000.i2c: bus 7 rev0.12 at 100 kHz
    [ 1.035551] omap_i2c 2050000.i2c: bus 8 rev0.12 at 100 kHz
    [ 1.041457] pca953x 9-0020: 9-0020 supply vcc not found, using dummy regulator
    [ 1.071787] omap_i2c 2060000.i2c: bus 9 rev0.12 at 400 kHz

    Can you let me know which SDK you are using where you seeing only 8 instances?

    We will first tackle this and will get to EEPROM.

    Best Regards,
    Keerthy

  • Hello Keerthy,

    Thank you for the response.

    The SDK version I am using is: V07.00.00

    Best regards,

    Abhinav

  • Hi Abhinav,

    Can you attach the full log where you are seeing only 8 out of 10 i2c instances?

    Best Regards,
    Keerthy

  • Hello Keerthy,

    Here are the logs:

    i2cdetect -l
    i2c-3   i2c             OMAP I2C adapter                        I2C adapter
    i2c-1   i2c             OMAP I2C adapter                        I2C adapter
    i2c-6   i2c             OMAP I2C adapter                        I2C adapter
    i2c-4   i2c             OMAP I2C adapter                        I2C adapter
    i2c-2   i2c             OMAP I2C adapter                        I2C adapter
    i2c-0   i2c             OMAP I2C adapter                        I2C adapter
    i2c-7   i2c             OMAP I2C adapter                        I2C adapter
    i2c-5   i2c             OMAP I2C adapter                        I2C adapter

    Using dmesg:

    dmesg | grep i2c
    [    0.837139] i2c /dev entries driver
    [    0.980360] omap_i2c 40b00000.i2c: bus 0 rev0.12 at 100 kHz
    [    0.986352] omap_i2c 40b10000.i2c: bus 1 rev0.12 at 100 kHz
    [    0.992315] omap_i2c 42120000.i2c: bus 2 rev0.12 at 100 kHz
    [    1.049083] omap_i2c 2000000.i2c: bus 3 rev0.12 at 400 kHz
    [    1.054991] omap_i2c 2020000.i2c: bus 4 rev0.12 at 100 kHz
    [    1.091422] omap_i2c 2030000.i2c: bus 5 rev0.12 at 400 kHz
    [    1.097366] omap_i2c 2040000.i2c: bus 6 rev0.12 at 100 kHz
    [    1.103247] omap_i2c 2050000.i2c: bus 7 rev0.12 at 100 kHz

    Best regards,

    Abhinav

  • Hi Abhinav,

    As i asked you in the beginning i showed the 10 instances on PSDKLA Linux SDK: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/latest/index_FDS.html

    You are using the RTOS SDK: https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/07_00_00_11/index_FDS.html

    The RTOS SDK Overlays arch/arm64/boot/dts/ti/k3-j721e-vision-apps.dtso

    &main_i2c6 {
            status = "disabled";
    };

    &main_i2c1 {
            status = "disabled";
    };

    In effect you see 2 of them disabled and hence only 8/10 are seen. So hope your question 1 is answered.

    For question 2 i am looping in my colleague.

    Best Regards,
    Keerthy

  • Abhinav,

    I think the other three I2C instances are used on the mcu domain, so may not be included in main domain/Linux.

    Regards,

    Brijesh

  • The boot EEPROM is 1Mbit (128KB) total.  This memory is blank by default on the EVM.

    The configuration EEPROMs are 256kbit (32KB).  There is information stored in these devices by default (defined in the User Guide).  Yes - the entire range of the EEPROM is not used with this configuration info.

  • Hello Brijesh,

    Okay. But is the addressing for the I2C devices correct? For instance, on the i2c-bus0, I only see devices on the address offsets 0x50 and 0x51.

    Ideally, the probe should show devices on address 0x53, 0x62, 0x60, 0x61 and 0x58-5B too.

    I don't think this is likely, but is the EEPROM only going to be visible in the probe if the write-protection is removed using the switch? In which case I will try to find out where the switch is located.

    Is there something I'm still missing? I reinstalled the Linux SDK as suggested above by Keerthy, and I see all 10 I2C ports now.

    Best regards,

    Abhinav

  • Hi Abhinav,

    Probe will show the i2c client only if it responds and also i2c client needs to be powered on.  So can you please check if these devices are powered on? 

    Regards,

    Brijesh

  • Hello Brijesh,

    I am trying to address a Board ID EEPROM at the moment, which is part of the evaluation board. I did not see any specific power on procedure for this EEPROM. I did change the corresponding switch so that I can use it in Read/Write mode. But I assume if the board is otherwise powered up and reset, this device should respond as expected.

    Best regards,

    Abhinav

  • Hi Abhinav,

    Apologies for responding late. Can you let us know what you did here when you say:

    Abhinav Sinha said:
    I did change the corresponding switch so that I can use it in Read/Write mode.

    This will help us try to reproduce at our end.
    In case if you have already resolved this at your end please let us know.

    Best Regards,
    Keerthy