[PATCH 16/16] i2c-designware: Add I2C_FUNC_SMBUS_* bits
Shinya Kuribayashi
shinya.kuribayashi at necel.com
Wed Oct 14 23:22:23 EDT 2009
Hi Baruch,
Baruch Siach wrote:
> On Tue, Oct 13, 2009 at 11:54:21AM +0900, Shinya Kuribayashi wrote:
>> This will ease our testing a bit with i2c-tools. Note that DW I2C core
>> doesn't support I2C_FUNC_SMBUS_QUICK, as it's not capable of slave-
>> addressing-only I2C transactions.
>
> Is this supposed to be applied to mainline?
Yes, I hope so. But I have to admit I blindly added several flags for
my testing, and should have audited them before submitting patches.
>> @@ -529,7 +529,14 @@ done:
>>
>> static u32 i2c_dw_func(struct i2c_adapter *adap)
>> {
>> - return I2C_FUNC_I2C | I2C_FUNC_10BIT_ADDR;
>> + return I2C_FUNC_I2C |
>> + I2C_FUNC_10BIT_ADDR |
>> + I2C_FUNC_SMBUS_BYTE |
>> + I2C_FUNC_SMBUS_BYTE_DATA |
>> + I2C_FUNC_SMBUS_WORD_DATA |
>> + I2C_FUNC_SMBUS_BLOCK_DATA |
>> + I2C_FUNC_SMBUS_I2C_BLOCK |
>> + I2C_FUNC_SMBUS_I2C_BLOCK_2;
>> }
As far as I confirmed the requirements for having I2C_FUNC_SMBUS_*
from drivers/i2c/,
>> + I2C_FUNC_SMBUS_BLOCK_DATA |
>> + I2C_FUNC_SMBUS_I2C_BLOCK_2;
should be removed. About the former, we have not implemented proper
I2C_M_RECV_LEN handling yet [ I'm not sure what it's for ... ], and
the latter doesn't seem to be used anywhere in the kernel.
As for the rest, BYTE/WORD/I2C_BLOCK transaction works for me.
So the resulting func() would be,
static u32 i2c_dw_func(struct i2c_adapter *adap)
{
return I2C_FUNC_I2C |
I2C_FUNC_10BIT_ADDR |
I2C_FUNC_SMBUS_BYTE |
I2C_FUNC_SMBUS_BYTE_DATA |
I2C_FUNC_SMBUS_WORD_DATA |
I2C_FUNC_SMBUS_I2C_BLOCK;
}
and will be fixed up in the next patchset.
--
Shinya Kuribayashi
NEC Electronics
More information about the linux-arm-kernel
mailing list