diff mbox

[linux,dev-4.10] i2c: fsi: Add SMBUS emulation

Message ID 20170706064443.16972-1-joel@jms.id.au
State Accepted, archived
Headers show

Commit Message

Joel Stanley July 6, 2017, 6:44 a.m. UTC
Userspace expects this to be enabled. For example, it is required for
using i2cdetect.

Signed-off-by: Joel Stanley <joel@jms.id.au>
---
 drivers/i2c/busses/i2c-fsi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Joel Stanley July 19, 2017, 9:45 a.m. UTC | #1
On Thu, Jul 6, 2017 at 4:14 PM, Joel Stanley <joel@jms.id.au> wrote:
> Userspace expects this to be enabled. For example, it is required for
> using i2cdetect.
>
> Signed-off-by: Joel Stanley <joel@jms.id.au>

What do you think Eddie?

> ---
>  drivers/i2c/busses/i2c-fsi.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/i2c/busses/i2c-fsi.c b/drivers/i2c/busses/i2c-fsi.c
> index d5135b4bc607..952cf8f392b4 100644
> --- a/drivers/i2c/busses/i2c-fsi.c
> +++ b/drivers/i2c/busses/i2c-fsi.c
> @@ -467,7 +467,8 @@ static int fsi_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
>
>  static u32 fsi_i2c_functionality(struct i2c_adapter *adap)
>  {
> -       return I2C_FUNC_I2C | I2C_FUNC_PROTOCOL_MANGLING | I2C_FUNC_10BIT_ADDR;
> +       return I2C_FUNC_I2C | I2C_FUNC_PROTOCOL_MANGLING | I2C_FUNC_10BIT_ADDR
> +               | I2C_FUNC_SMBUS_EMUL | I2C_FUNC_SMBUS_BLOCK_DATA;
>  }
>
>  static int fsi_i2c_low_level_recover_bus(struct fsi_i2c_master *i2c)
> --
> 2.13.2
>
Eddie James July 19, 2017, 1:40 p.m. UTC | #2
On 07/19/2017 04:45 AM, Joel Stanley wrote:
> On Thu, Jul 6, 2017 at 4:14 PM, Joel Stanley <joel@jms.id.au> wrote:
>> Userspace expects this to be enabled. For example, it is required for
>> using i2cdetect.
>>
>> Signed-off-by: Joel Stanley <joel@jms.id.au>
> What do you think Eddie?

Sorry, forgot about this one. Looks good, thanks.

Acked-by: Eddie James <eajames@linux.vnet.ibm.com>

>
>> ---
>>   drivers/i2c/busses/i2c-fsi.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-fsi.c b/drivers/i2c/busses/i2c-fsi.c
>> index d5135b4bc607..952cf8f392b4 100644
>> --- a/drivers/i2c/busses/i2c-fsi.c
>> +++ b/drivers/i2c/busses/i2c-fsi.c
>> @@ -467,7 +467,8 @@ static int fsi_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
>>
>>   static u32 fsi_i2c_functionality(struct i2c_adapter *adap)
>>   {
>> -       return I2C_FUNC_I2C | I2C_FUNC_PROTOCOL_MANGLING | I2C_FUNC_10BIT_ADDR;
>> +       return I2C_FUNC_I2C | I2C_FUNC_PROTOCOL_MANGLING | I2C_FUNC_10BIT_ADDR
>> +               | I2C_FUNC_SMBUS_EMUL | I2C_FUNC_SMBUS_BLOCK_DATA;
>>   }
>>
>>   static int fsi_i2c_low_level_recover_bus(struct fsi_i2c_master *i2c)
>> --
>> 2.13.2
>>
Eddie James July 19, 2017, 1:57 p.m. UTC | #3
On 07/19/2017 08:40 AM, Eddie James wrote:
>
>
> On 07/19/2017 04:45 AM, Joel Stanley wrote:
>> On Thu, Jul 6, 2017 at 4:14 PM, Joel Stanley <joel@jms.id.au> wrote:
>>> Userspace expects this to be enabled. For example, it is required for
>>> using i2cdetect.

FYI, i2cget/i2cset don't seem to work with these i2c busses, as those 
tools don't have 10-bit address support... Not sure how i2cdetect 
behaves with that. I have been using 
https://github.com/eddiejames/fsidbg to access those devices for debug 
purposes.

Thanks,
Eddie

>>>
>>> Signed-off-by: Joel Stanley <joel@jms.id.au>
>> What do you think Eddie?
>
> Sorry, forgot about this one. Looks good, thanks.
>
> Acked-by: Eddie James <eajames@linux.vnet.ibm.com>
>
>>
>>> ---
>>>   drivers/i2c/busses/i2c-fsi.c | 3 ++-
>>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/i2c/busses/i2c-fsi.c 
>>> b/drivers/i2c/busses/i2c-fsi.c
>>> index d5135b4bc607..952cf8f392b4 100644
>>> --- a/drivers/i2c/busses/i2c-fsi.c
>>> +++ b/drivers/i2c/busses/i2c-fsi.c
>>> @@ -467,7 +467,8 @@ static int fsi_i2c_xfer(struct i2c_adapter 
>>> *adap, struct i2c_msg *msgs,
>>>
>>>   static u32 fsi_i2c_functionality(struct i2c_adapter *adap)
>>>   {
>>> -       return I2C_FUNC_I2C | I2C_FUNC_PROTOCOL_MANGLING | 
>>> I2C_FUNC_10BIT_ADDR;
>>> +       return I2C_FUNC_I2C | I2C_FUNC_PROTOCOL_MANGLING | 
>>> I2C_FUNC_10BIT_ADDR
>>> +               | I2C_FUNC_SMBUS_EMUL | I2C_FUNC_SMBUS_BLOCK_DATA;
>>>   }
>>>
>>>   static int fsi_i2c_low_level_recover_bus(struct fsi_i2c_master *i2c)
>>> -- 
>>> 2.13.2
>>>
>
diff mbox

Patch

diff --git a/drivers/i2c/busses/i2c-fsi.c b/drivers/i2c/busses/i2c-fsi.c
index d5135b4bc607..952cf8f392b4 100644
--- a/drivers/i2c/busses/i2c-fsi.c
+++ b/drivers/i2c/busses/i2c-fsi.c
@@ -467,7 +467,8 @@  static int fsi_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
 
 static u32 fsi_i2c_functionality(struct i2c_adapter *adap)
 {
-	return I2C_FUNC_I2C | I2C_FUNC_PROTOCOL_MANGLING | I2C_FUNC_10BIT_ADDR;
+	return I2C_FUNC_I2C | I2C_FUNC_PROTOCOL_MANGLING | I2C_FUNC_10BIT_ADDR
+		| I2C_FUNC_SMBUS_EMUL | I2C_FUNC_SMBUS_BLOCK_DATA;
 }
 
 static int fsi_i2c_low_level_recover_bus(struct fsi_i2c_master *i2c)