Re: [PATCH v8] iio: humidity: ens210: Extend I2C functionality check
Jonathan Cameron <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260823013407.434a2247@jic23-huawei> |
On Wed, 19 Aug 2026 11:31:09 +0100 Salah Triki <[email protected]> wrote: > The ENS210 driver uses byte data read/write, word data read, and block > data read transactions. However, the probe function checks for > I2C_FUNC_SMBUS_WRITE_BYTE (which is unused) and misses the check for word > data reads. > > Update the functionality check to strictly match the transactions used by > the driver by removing the unused flag and adding the missing byte and word > read capabilities. > > Signed-off-by: Salah Triki <[email protected]> I am a bit curious about whether any modern smbus capable controllers actually support only a subset and without that info I don't want to see lots of patches adding these checks In this case there was a wrong check though so I'm very happy to see that tidied! Applied to the testing branch of iio.git Thanks Jonathan > --- > Changes since v7: > - Fixed functionality mask based on code analysis by Stepan Ionichev and > Jonathan Cameron: > - Removed unused I2C_FUNC_SMBUS_WRITE_BYTE. > - Replaced I2C_FUNC_SMBUS_WRITE_BYTE_DATA with I2C_FUNC_SMBUS_BYTE_DATA. > - Used I2C_FUNC_SMBUS_READ_WORD_DATA > > Changes since v6: > - Replaced the incorrect use of I2C_FUNC_SMBUS_EMUL with an explicit > list of required SMBus functionalities as requested by Jonathan Cameron. > - Used combined macros (BYTE_DATA, WORD_DATA) to simplify the check. > > Changes since v5: > - Changed patch title from "Fix missing I2C functionality checks" to > "Simplify I2C functionality check" to reflect the new approach. > - Dropped the Fixes tag as the change is now considered hardening rather > than a bug fix. > - Replaced individual functionality checks with a single check for > I2C_FUNC_SMBUS_EMUL as suggested by Jonathan Cameron. > > Changes since v4: > - Fixed the alignment and indentation of the I2C functionality check > per Andy's review. > > Changes since v3: > - Fixed the alignment and indentation of the I2C functionality check > per Andy's review. > > Changes since v2: > - Fixed the alignment and indentation of the I2C functionality check > per Maxime's review. > > Changes since v1: > - Updated the I2C functionality test to check for both required native > operations and SMBus emulation (`I2C_FUNC_SMBUS_EMUL`) > > drivers/iio/humidity/ens210.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/humidity/ens210.c b/drivers/iio/humidity/ens210.c > index 81276195152b..4bdd37e7227b 100644 > --- a/drivers/iio/humidity/ens210.c > +++ b/drivers/iio/humidity/ens210.c > @@ -202,8 +202,8 @@ static int ens210_probe(struct i2c_client *client) > int ret; > > if (!i2c_check_functionality(client->adapter, > - I2C_FUNC_SMBUS_WRITE_BYTE_DATA | > - I2C_FUNC_SMBUS_WRITE_BYTE | > + I2C_FUNC_SMBUS_BYTE_DATA | > + I2C_FUNC_SMBUS_READ_WORD_DATA | > I2C_FUNC_SMBUS_READ_I2C_BLOCK)) { > return dev_err_probe(&client->dev, -EOPNOTSUPP, > "adapter does not support some i2c transactions\n");