Message ID | 20191231161400.1688-3-wsa+renesas@sang-engineering.com |
---|---|
State | RFC |
Headers | show |
Series | i2c: implement mechanism to retrieve an alias device | expand |
Hi Wolfram, Thank you for the patch. On Tue, Dec 31, 2019 at 05:13:57PM +0100, Wolfram Sang wrote: > For the new 'alias' feature, we need to scan for devices while holding > the lock. We focus on read_byte transactions for now to keep things > simple. Requesting an alias will be rare, so there is not much overhead. > > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > --- > drivers/i2c/i2c-core-base.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c > index 20a726dc78db..51bd953ddfb2 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -2108,6 +2108,23 @@ static int i2c_default_probe(struct i2c_adapter *adap, unsigned short addr) > return err >= 0; > } > > +static int i2c_unlocked_read_byte_probe(struct i2c_adapter *adap, unsigned short addr) > +{ > + union i2c_smbus_data dummy; > + int err; > + > + if (i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE)) { > + err = __i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0, > + I2C_SMBUS_BYTE, &dummy); > + } else { > + dev_warn(&adap->dev, "No suitable probing method supported for address 0x%02X\n", This should be wrapped after the first argument. s/02X/02x/ As this function is static and unused in this patch, this may introduce a new warning when bisection. I see little reason to keep this patch standalone, you can squash it with 3/5. It otherwise looks good to me. > + addr); > + err = -EOPNOTSUPP; > + } > + > + return err >= 0; > +} > + > static int i2c_scan_for_client(struct i2c_adapter *adap, unsigned short addr, > int (*probe)(struct i2c_adapter *adap, unsigned short addr)) > {
Hi Wolfram, On 31/12/2019 16:13, Wolfram Sang wrote: > For the new 'alias' feature, we need to scan for devices while holding > the lock. We focus on read_byte transactions for now to keep things > simple. Requesting an alias will be rare, so there is not much overhead. > > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > --- > drivers/i2c/i2c-core-base.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c > index 20a726dc78db..51bd953ddfb2 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -2108,6 +2108,23 @@ static int i2c_default_probe(struct i2c_adapter *adap, unsigned short addr) > return err >= 0; > } > > +static int i2c_unlocked_read_byte_probe(struct i2c_adapter *adap, unsigned short addr) > +{ > + union i2c_smbus_data dummy; > + int err; > + > + if (i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE)) { > + err = __i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0, > + I2C_SMBUS_BYTE, &dummy); > + } else { > + dev_warn(&adap->dev, "No suitable probing method supported for address 0x%02X\n", Laurent has already pointed out the format issue here, and that this function might be squashed into 3/5 anyway, But otherwise it looks good to me, so if you keep it separate: Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> > + addr); > + err = -EOPNOTSUPP; > + } > + > + return err >= 0; > +} > + > static int i2c_scan_for_client(struct i2c_adapter *adap, unsigned short addr, > int (*probe)(struct i2c_adapter *adap, unsigned short addr)) > { >
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 20a726dc78db..51bd953ddfb2 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -2108,6 +2108,23 @@ static int i2c_default_probe(struct i2c_adapter *adap, unsigned short addr) return err >= 0; } +static int i2c_unlocked_read_byte_probe(struct i2c_adapter *adap, unsigned short addr) +{ + union i2c_smbus_data dummy; + int err; + + if (i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE)) { + err = __i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0, + I2C_SMBUS_BYTE, &dummy); + } else { + dev_warn(&adap->dev, "No suitable probing method supported for address 0x%02X\n", + addr); + err = -EOPNOTSUPP; + } + + return err >= 0; +} + static int i2c_scan_for_client(struct i2c_adapter *adap, unsigned short addr, int (*probe)(struct i2c_adapter *adap, unsigned short addr)) {
For the new 'alias' feature, we need to scan for devices while holding the lock. We focus on read_byte transactions for now to keep things simple. Requesting an alias will be rare, so there is not much overhead. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/i2c/i2c-core-base.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)