Re: [PATCH v2 1/3] i3c: Drop support for I2C 10 bit addresing

vitor
2019-02-27T12:05:45Z

On 26/02/19 14:28, Przemyslaw Gaj wrote:
> This patch dropps support for I2C devices with 10 bit addressing. When I2C
> device with 10 bit address is defined in DT, I3C master registration fails.
>
> Signed-off-by: Przemyslaw Gaj <pgaj@cadence.com>
>
> ---
>
> Main changes between v1 and v2 are:
> - Add error message when registering I2C device with 10 bit address.
>
> ---
> drivers/i3c/master.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
> index 2dc628d..8c1e365 100644
> --- a/drivers/i3c/master.c
> +++ b/drivers/i3c/master.c
> @@ -1962,6 +1962,15 @@ of_i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master,
> if (ret)
> return ret;
>
> + /* The I3C Specification does not clearly say I2C devices with 10-bit
> + * address are supported. These devices can't be passed properly through
> + * DEFSLVS command.
> + */

IMO we just need to say 10-bit address not used or not supported in i3c.

> + if (boardinfo->base.flags & I2C_CLIENT_TEN) {
> + dev_err(&master->dev, "I2C device with 10 bit address not supported.");
> + return -ENOTSUPP;
> + }
> +
> /* LVR is encoded in reg[2]. */
> boardinfo->lvr = reg[2];
>

Also need to change:

#define I2C_MAX_ADDR            GENMASK(9, 0)
to
#define I2C_MAX_ADDR            GENMASK(6, 0)
in master.h file

Not sure about:
unsigned long addrslots[((I2C_MAX_ADDR + 1) * 2) / BITS_PER_LONG];
@Boris can you check this part?

Best regards,
Vitor Soares