Re: [PATCH] staging: iio: adc: ad7816: use sysfs_streq() instead of strcmp()

From: Andy Shevchenko

Date: Mon Mar 30 2026 - 06:12:48 EST


On Mon, Mar 30, 2026 at 01:48:50PM +0600, Md. Mahmudul Hasan Mabud wrote:
> Use sysfs_streq() to compare the input buffer with the mode strings.
> This is more robust as it ignores trailing newlines, making it safer
> for sysfs store functions.

...

> struct iio_dev *indio_dev = dev_to_iio_dev(dev);
> struct ad7816_chip_info *chip = iio_priv(indio_dev);
>
> - if (strcmp(buf, "full") == 0) {
> + if (sysfs_streq(buf, "full")) {
> gpiod_set_value(chip->rdwr_pin, 1);
> chip->mode = AD7816_FULL;

I think it might be better to do more work on this.
First of all, convert to use IIO_DEVICE_ATTR_RW().
Second, convert to use sysfs_emit() instead of sprintf().
But with that, switch to use a static array

static const char * const modes[] = {
[_FULL] = "full";
[_PD] = "power-save";
};

This will need redefinition to start from 0 (I don't see why it needs to
start from 1).

#define _FULL 0
#define _PD 1

This allows to switch to sysfs_match_string() and return an error on
unrecognized input (which is absent right now).

So, something like series out of ~3-4 patches is expected.

--
With Best Regards,
Andy Shevchenko