public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] iio: humidity: ens210: Fix missing I2C functionality checks
@ 2026-05-05 17:49 Salah Triki
  2026-05-06  8:39 ` Andy Shevchenko
  0 siblings, 1 reply; 6+ messages in thread
From: Salah Triki @ 2026-05-05 17:49 UTC (permalink / raw)
  To: Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko
  Cc: linux-iio, linux-kernel, Salah Triki

The ENS210 driver uses SMBus transactions (such as byte, word, and block
data reads/writes) during the probe and measurement phases. However, the
initial functionality check only validated a subset of these capabilities,
which could lead to loading failures on adapters requiring SMBus
emulation or native-only controllers.

To ensure compatibility across a wide range of I2C adapters, modify the
functionality check to verify if the adapter supports the required native
operations or, failing that, supports the SMBus emulation layer.

Fixes: c524fbca672e ("iio: humidity: Add support for ENS210")
Signed-off-by: Salah Triki <salah.triki@gmail.com>
---
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`) to prevent
  loading issues on controllers lacking the emulation flag.

 drivers/iio/humidity/ens210.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/iio/humidity/ens210.c b/drivers/iio/humidity/ens210.c
index 77418d97f30d..07925bed2bea 100644
--- a/drivers/iio/humidity/ens210.c
+++ b/drivers/iio/humidity/ens210.c
@@ -202,9 +202,13 @@ 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_READ_I2C_BLOCK)) {
+				I2C_FUNC_SMBUS_WRITE_BYTE_DATA |
+				I2C_FUNC_SMBUS_WRITE_BYTE |
+				I2C_FUNC_SMBUS_READ_BYTE_DATA |
+				I2C_FUNC_SMBUS_READ_WORD_DATA |
+				I2C_FUNC_SMBUS_READ_I2C_BLOCK) &&
+				!i2c_check_functionality(client->adapter,
+					I2C_FUNC_SMBUS_EMUL)) {
 		return dev_err_probe(&client->dev, -EOPNOTSUPP,
 			"adapter does not support some i2c transactions\n");
 	}
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] iio: humidity: ens210: Fix missing I2C functionality checks
  2026-05-05 17:49 [PATCH v3] iio: humidity: ens210: Fix missing I2C functionality checks Salah Triki
@ 2026-05-06  8:39 ` Andy Shevchenko
  2026-05-06  8:39   ` Andy Shevchenko
  0 siblings, 1 reply; 6+ messages in thread
From: Andy Shevchenko @ 2026-05-06  8:39 UTC (permalink / raw)
  To: Salah Triki
  Cc: Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
	linux-iio, linux-kernel

On Tue, May 05, 2026 at 06:49:43PM +0100, Salah Triki wrote:
> The ENS210 driver uses SMBus transactions (such as byte, word, and block
> data reads/writes) during the probe and measurement phases. However, the
> initial functionality check only validated a subset of these capabilities,
> which could lead to loading failures on adapters requiring SMBus
> emulation or native-only controllers.
> 
> To ensure compatibility across a wide range of I2C adapters, modify the
> functionality check to verify if the adapter supports the required native
> operations or, failing that, supports the SMBus emulation layer.

...

> ---
> Changes since v2:
> - Fixed the alignment and indentation of the I2C functionality check
>   per Maxime's review.

???

...

>  	if (!i2c_check_functionality(client->adapter,
> -				     I2C_FUNC_SMBUS_WRITE_BYTE_DATA |
> -				     I2C_FUNC_SMBUS_WRITE_BYTE |
> -				     I2C_FUNC_SMBUS_READ_I2C_BLOCK)) {
> +				I2C_FUNC_SMBUS_WRITE_BYTE_DATA |
> +				I2C_FUNC_SMBUS_WRITE_BYTE |
> +				I2C_FUNC_SMBUS_READ_BYTE_DATA |
> +				I2C_FUNC_SMBUS_READ_WORD_DATA |
> +				I2C_FUNC_SMBUS_READ_I2C_BLOCK) &&

The above was the correct one.

> +				!i2c_check_functionality(client->adapter,
> +					I2C_FUNC_SMBUS_EMUL)) {

This one is now wrong.


-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] iio: humidity: ens210: Fix missing I2C functionality checks
  2026-05-06  8:39 ` Andy Shevchenko
@ 2026-05-06  8:39   ` Andy Shevchenko
  2026-05-06 15:02     ` Maxwell Doose
  0 siblings, 1 reply; 6+ messages in thread
From: Andy Shevchenko @ 2026-05-06  8:39 UTC (permalink / raw)
  To: Salah Triki
  Cc: Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
	linux-iio, linux-kernel

On Wed, May 06, 2026 at 11:39:11AM +0300, Andy Shevchenko wrote:
> On Tue, May 05, 2026 at 06:49:43PM +0100, Salah Triki wrote:

...

> > +				!i2c_check_functionality(client->adapter,
> > +					I2C_FUNC_SMBUS_EMUL)) {
> 
> This one is now wrong.

I meant this *indentation* is now wrong.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] iio: humidity: ens210: Fix missing I2C functionality checks
  2026-05-06  8:39   ` Andy Shevchenko
@ 2026-05-06 15:02     ` Maxwell Doose
  2026-05-06 15:43       ` Andy Shevchenko
  0 siblings, 1 reply; 6+ messages in thread
From: Maxwell Doose @ 2026-05-06 15:02 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Salah Triki, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, linux-iio, linux-kernel

On Wed, May 6, 2026 at 3:40 AM Andy Shevchenko
<andriy.shevchenko@intel.com> wrote:
>
> On Wed, May 06, 2026 at 11:39:11AM +0300, Andy Shevchenko wrote:
> > On Tue, May 05, 2026 at 06:49:43PM +0100, Salah Triki wrote:
>
> ...
>
> > > +                           !i2c_check_functionality(client->adapter,
> > > +                                   I2C_FUNC_SMBUS_EMUL)) {
> >
> > This one is now wrong.
>
> I meant this *indentation* is now wrong.
>

Did something happen to that when I sent the email? Or maybe I'm just
going insane...

slightly confused,
max



> --
> With Best Regards,
> Andy Shevchenko
>
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] iio: humidity: ens210: Fix missing I2C functionality checks
  2026-05-06 15:02     ` Maxwell Doose
@ 2026-05-06 15:43       ` Andy Shevchenko
  2026-05-06 16:03         ` Maxwell Doose
  0 siblings, 1 reply; 6+ messages in thread
From: Andy Shevchenko @ 2026-05-06 15:43 UTC (permalink / raw)
  To: Maxwell Doose
  Cc: Salah Triki, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, linux-iio, linux-kernel

On Wed, May 06, 2026 at 10:02:29AM -0500, Maxwell Doose wrote:
> On Wed, May 6, 2026 at 3:40 AM Andy Shevchenko
> <andriy.shevchenko@intel.com> wrote:
> > On Wed, May 06, 2026 at 11:39:11AM +0300, Andy Shevchenko wrote:
> > > On Tue, May 05, 2026 at 06:49:43PM +0100, Salah Triki wrote:

...

> > > > +                           !i2c_check_functionality(client->adapter,
> > > > +                                   I2C_FUNC_SMBUS_EMUL)) {
> > >
> > > This one is now wrong.
> >
> > I meant this *indentation* is now wrong.
> 
> Did something happen to that when I sent the email? Or maybe I'm just
> going insane...

Sounds like latter one? :-)

> slightly confused,

In short this is `if (foo(A) && foo(B))`, and foo should be indented on the
same column while their parameters on different but still same. In your example
the foo(B) is indented as A parameter on previous call instead of indenting as
foo(...).

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] iio: humidity: ens210: Fix missing I2C functionality checks
  2026-05-06 15:43       ` Andy Shevchenko
@ 2026-05-06 16:03         ` Maxwell Doose
  0 siblings, 0 replies; 6+ messages in thread
From: Maxwell Doose @ 2026-05-06 16:03 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Salah Triki, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, linux-iio, linux-kernel

On Wed, May 6, 2026 at 10:43 AM Andy Shevchenko
<andriy.shevchenko@intel.com> wrote:
>
> On Wed, May 06, 2026 at 10:02:29AM -0500, Maxwell Doose wrote:
> > On Wed, May 6, 2026 at 3:40 AM Andy Shevchenko
> > <andriy.shevchenko@intel.com> wrote:
> > > On Wed, May 06, 2026 at 11:39:11AM +0300, Andy Shevchenko wrote:
> > > > On Tue, May 05, 2026 at 06:49:43PM +0100, Salah Triki wrote:
>
> ...
>
> > > > > +                           !i2c_check_functionality(client->adapter,
> > > > > +                                   I2C_FUNC_SMBUS_EMUL)) {
> > > >
> > > > This one is now wrong.
> > >
> > > I meant this *indentation* is now wrong.
> >
> > Did something happen to that when I sent the email? Or maybe I'm just
> > going insane...
>
> Sounds like latter one? :-)
>

Probably true :)
In all seriousness though I need to slow down...

>
> > slightly confused,
>
> In short this is `if (foo(A) && foo(B))`, and foo should be indented on the
> same column while their parameters on different but still same. In your example
> the foo(B) is indented as A parameter on previous call instead of indenting as
> foo(...).
>

Mk, thanks for pointing that out to me.

best regards,
max



> --
> With Best Regards,
> Andy Shevchenko
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-05-06 16:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-05 17:49 [PATCH v3] iio: humidity: ens210: Fix missing I2C functionality checks Salah Triki
2026-05-06  8:39 ` Andy Shevchenko
2026-05-06  8:39   ` Andy Shevchenko
2026-05-06 15:02     ` Maxwell Doose
2026-05-06 15:43       ` Andy Shevchenko
2026-05-06 16:03         ` Maxwell Doose

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox