hello everyone:
I am using a module based on I2C0 bus on AM6254, and I need to use SMBus Quick mode to scan the module. However, AM6254 does not support this mode.
The specific printing information is as follows:
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:~#
I found that the kernel driver does not support this mode(I2C_FUNC_SMBUS_QUICK).
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:~#
I found that the kernel driver does not support this mode(I2C_FUNC_SMBUS_QUICK).
static u32
omap_i2c_func(struct i2c_adapter *adap)
{
return I2C_FUNC_I2C | (I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK) |
I2C_FUNC_PROTOCOL_MANGLING;
}
I want to know if this is a hardware issue or a software issue, and how to support it