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.

AM625: How to support SMBus Quick mode

Part Number: AM625

Tool/software:

hello everyone:
I am currently using a module based on I2C bus on AM6254, and I need to use SMBus Quick mode to scan the module. However, AM6254 does not support this mode. Can this be modified through software support?
The specific printing information is as follows:
root@OK62xx:/# i2cdetect -y 2
Warning: Can't use SMBus Quick Write command, will skip some addresses
0 1 2 3 4 5 6 7 8 9 a b c d e f
00:
10:
20:
30: -- -- -- -- -- -- -- --
40:
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60:
70:
  • Hello,

    There is no native SMBUS mode on the I2C controller used in the AM62 family of devices (AM62x, AM62Ax, AM62Px, AM62Lx), AM64x, & am335x (the same IP is used).

    The Linux kernel supports SMBUS emulation over I2C, which works with TI I2C driver on these devices. So the hardware would support whatever subset of SMBUS commands that can be emulated over the I2C bus/protocol.

    Note that TI does not test or support these SMBUS commands (support comes from the Linux community). There are some SMBUS commands that might not be compatible with the hardware (for example, block copy/read: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/772463/linux-am3352-unsure-if-smbus-block-read-support-is-even-possible-given-the-way-the-am335x-i2c-subsystem-functions/2880237#2880237).

    Do note that electrically there are differences between the SMBUS and I2C specs which needs to be crossed checked against the SoC datasheet and the SMBUS client datasheet if you decide to try to emulate SMBUS over I2C.

    Another option would be to program the PRU cores to implement SMBus, like in https://www.ti.com/tool/TIDEP0065

    Regards,

    Nick

  • Hello, Nick

    I have encountered the same problem. I saw that the ti i2c kernel driver supports SMBUS, but it does not support SMBUS_QUICK. I would like to know why SMBUS_QUICK is not supported, whether it is determined by the ti hardware or software?

    root@evse:~# ls /dev/i2c-
    i2c-0 i2c-2 i2c-4
    root@evse:~# i2cdetect -l
    i2c-4 i2c OMAP I2C adapter I2C adapter
    i2c-2 i2c OMAP I2C adapter I2C adapter
    i2c-0 i2c OMAP I2C adapter I2C adapter
    root@evse:~#
    root@evse:~#
    root@evse:~# i2cdetect -y 0
    i2cdetect: warning: can't use SMBus quick write command, will skip some addresses
    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@evse:~#

  • Hello, Nick

    I have encountered the same problem. I saw that the ti i2c kernel driver supports SMBUS, but it does not support SMBUS_QUICK. I would like to know why SMBUS_QUICK is not supported, whether it is determined by the ti hardware or software?

    root@evse:~# ls /dev/i2c-
    i2c-0 i2c-2 i2c-4
    root@evse:~# i2cdetect -l
    i2c-4 i2c OMAP I2C adapter I2C adapter
    i2c-2 i2c OMAP I2C adapter I2C adapter
    i2c-0 i2c OMAP I2C adapter I2C adapter
    root@evse:~#
    root@evse:~#
    root@evse:~# i2cdetect -y 0
    i2cdetect: warning: can't use SMBus quick write command, will skip some addresses
    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@evse:~#

  • Hello Wang,

    Unfortunately this is outside the scope of the support I can support at this point in time. TI does not test or support SMBus commands.

    Refer to this discussion for more: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1170672/am6442-smbus-support-on-am64x/4413986#4413986

    Regards,

    Nick