[PATCH v6] staging: iio: adc: ad7816: Use modern IIO attribute macros

Md. Mahmudul Hasan Mabud posted 1 patch 1 month ago
drivers/staging/iio/adc/ad7816.c | 69 +++++++++++---------------------
1 file changed, 24 insertions(+), 45 deletions(-)
[PATCH v6] staging: iio: adc: ad7816: Use modern IIO attribute macros
Posted by Md. Mahmudul Hasan Mabud 1 month ago
Replace the legacy IIO_DEVICE_ATTR() macros with the modern
IIO_DEVICE_ATTR_RW() and IIO_DEVICE_ATTR_RO() macros.

This includes renaming driver-specific callback functions to
standard <name>_show() and <name>_store() formats.

Signed-off-by: Md. Mahmudul Hasan Mabud <mdmahmudulhasan1511@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
---
v6:
  -Dropped extra blank lines based on Andy Shevchenko's feedback.
v5:
  - Converted to a standalone single patch (previously part of the v3/v4 series).
  - Updated commit message and fixed function header line lengths and wrapping based on Andy Shevchenko's feedback on v3.
    Link: https://lore.kernel.org/linux-iio/act9ovNVsJvWO6Cx@ashevche-desk.local/
v4:
  - Sent by mistake without updates.
v3:
  - Initial version (as patch 4/4 of the series).
 drivers/staging/iio/adc/ad7816.c | 69 +++++++++++---------------------
 1 file changed, 24 insertions(+), 45 deletions(-)

diff --git a/drivers/staging/iio/adc/ad7816.c b/drivers/staging/iio/adc/ad7816.c
index 30644d2d7..e8c2c1bfe 100644
--- a/drivers/staging/iio/adc/ad7816.c
+++ b/drivers/staging/iio/adc/ad7816.c
@@ -116,9 +116,8 @@ static int ad7816_spi_write(struct ad7816_chip_info *chip, u8 data)
 	return ret;
 }
 
-static ssize_t ad7816_show_mode(struct device *dev,
-				struct device_attribute *attr,
-				char *buf)
+static ssize_t mode_show(struct device *dev, struct device_attribute *attr,
+			 char *buf)
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct ad7816_chip_info *chip = iio_priv(indio_dev);
@@ -128,10 +127,8 @@ static ssize_t ad7816_show_mode(struct device *dev,
 	return sysfs_emit(buf, "full\n");
 }
 
-static ssize_t ad7816_store_mode(struct device *dev,
-				 struct device_attribute *attr,
-				 const char *buf,
-				 size_t len)
+static ssize_t mode_store(struct device *dev, struct device_attribute *attr,
+			  const char *buf, size_t len)
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct ad7816_chip_info *chip = iio_priv(indio_dev);
@@ -146,25 +143,18 @@ static ssize_t ad7816_store_mode(struct device *dev,
 
 	return len;
 }
+static IIO_DEVICE_ATTR_RW(mode, 0);
 
-static IIO_DEVICE_ATTR(mode, 0644,
-		ad7816_show_mode,
-		ad7816_store_mode,
-		0);
-
-static ssize_t ad7816_show_available_modes(struct device *dev,
-					   struct device_attribute *attr,
-					   char *buf)
+static ssize_t available_modes_show(struct device *dev,
+				    struct device_attribute *attr,
+				    char *buf)
 {
 	return sysfs_emit(buf, "full\npower-save\n");
 }
+static IIO_DEVICE_ATTR_RO(available_modes, 0);
 
-static IIO_DEVICE_ATTR(available_modes, 0444, ad7816_show_available_modes,
-			NULL, 0);
-
-static ssize_t ad7816_show_channel(struct device *dev,
-				   struct device_attribute *attr,
-				   char *buf)
+static ssize_t channel_show(struct device *dev, struct device_attribute *attr,
+			    char *buf)
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct ad7816_chip_info *chip = iio_priv(indio_dev);
@@ -172,10 +162,8 @@ static ssize_t ad7816_show_channel(struct device *dev,
 	return sysfs_emit(buf, "%d\n", chip->channel_id);
 }
 
-static ssize_t ad7816_store_channel(struct device *dev,
-				    struct device_attribute *attr,
-				    const char *buf,
-				    size_t len)
+static ssize_t channel_store(struct device *dev, struct device_attribute *attr,
+			     const char *buf, size_t len)
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct ad7816_chip_info *chip = iio_priv(indio_dev);
@@ -204,15 +192,10 @@ static ssize_t ad7816_store_channel(struct device *dev,
 
 	return len;
 }
+static IIO_DEVICE_ATTR_RW(channel, 0);
 
-static IIO_DEVICE_ATTR(channel, 0644,
-		ad7816_show_channel,
-		ad7816_store_channel,
-		0);
-
-static ssize_t ad7816_show_value(struct device *dev,
-				 struct device_attribute *attr,
-				 char *buf)
+static ssize_t value_show(struct device *dev, struct device_attribute *attr,
+			  char *buf)
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct ad7816_chip_info *chip = iio_priv(indio_dev);
@@ -235,8 +218,7 @@ static ssize_t ad7816_show_value(struct device *dev,
 	}
 	return sysfs_emit(buf, "%u\n", data);
 }
-
-static IIO_DEVICE_ATTR(value, 0444, ad7816_show_value, NULL, 0);
+static IIO_DEVICE_ATTR_RO(value, 0);
 
 static struct attribute *ad7816_attributes[] = {
 	&iio_dev_attr_available_modes.dev_attr.attr,
@@ -266,9 +248,8 @@ static irqreturn_t ad7816_event_handler(int irq, void *private)
 	return IRQ_HANDLED;
 }
 
-static ssize_t ad7816_show_oti(struct device *dev,
-			       struct device_attribute *attr,
-			       char *buf)
+static ssize_t oti_show(struct device *dev, struct device_attribute *attr,
+			char *buf)
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct ad7816_chip_info *chip = iio_priv(indio_dev);
@@ -286,10 +267,10 @@ static ssize_t ad7816_show_oti(struct device *dev,
 	return sysfs_emit(buf, "%u\n", chip->oti_data[chip->channel_id]);
 }
 
-static inline ssize_t ad7816_set_oti(struct device *dev,
-				     struct device_attribute *attr,
-				     const char *buf,
-				     size_t len)
+static inline ssize_t oti_store(struct device *dev,
+				struct device_attribute *attr,
+				const char *buf,
+				size_t len)
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct ad7816_chip_info *chip = iio_priv(indio_dev);
@@ -326,9 +307,7 @@ static inline ssize_t ad7816_set_oti(struct device *dev,
 
 	return len;
 }
-
-static IIO_DEVICE_ATTR(oti, 0644,
-		       ad7816_show_oti, ad7816_set_oti, 0);
+static IIO_DEVICE_ATTR_RW(oti, 0);
 
 static struct attribute *ad7816_event_attributes[] = {
 	&iio_dev_attr_oti.dev_attr.attr,
-- 
2.34.1
Re: [PATCH v6] staging: iio: adc: ad7816: Use modern IIO attribute macros
Posted by Jonathan Cameron 3 weeks, 6 days ago
On Fri, 28 Aug 2026 03:47:21 +0600
"Md. Mahmudul Hasan Mabud" <mdmahmudulhasan1511@gmail.com> wrote:

> Replace the legacy IIO_DEVICE_ATTR() macros with the modern
> IIO_DEVICE_ATTR_RW() and IIO_DEVICE_ATTR_RO() macros.
> 
> This includes renaming driver-specific callback functions to
> standard <name>_show() and <name>_store() formats.
> 
> Signed-off-by: Md. Mahmudul Hasan Mabud <mdmahmudulhasan1511@gmail.com>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>

How did we end up even looking at these?  This is converting attributes
that would most likely go away in any attempt to bring this driver out of staging.
I'd much rather see the major surgery needed than tidying up around the edges.

I'm not particularly keen on any effort being expended in this direction
without substantially more justification. 

So as this stands I'm going to ignore this one.

Jonathan
Re: [PATCH v6] staging: iio: adc: ad7816: Use modern IIO attribute macros
Posted by Andy Shevchenko 3 weeks, 5 days ago
On Mon, Aug 31, 2026 at 12:09:54AM +0100, Jonathan Cameron wrote:
> On Fri, 28 Aug 2026 03:47:21 +0600
> "Md. Mahmudul Hasan Mabud" <mdmahmudulhasan1511@gmail.com> wrote:
> 
> > Replace the legacy IIO_DEVICE_ATTR() macros with the modern
> > IIO_DEVICE_ATTR_RW() and IIO_DEVICE_ATTR_RO() macros.
> > 
> > This includes renaming driver-specific callback functions to
> > standard <name>_show() and <name>_store() formats.
> > 
> > Signed-off-by: Md. Mahmudul Hasan Mabud <mdmahmudulhasan1511@gmail.com>
> > Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> 
> How did we end up even looking at these?  This is converting attributes
> that would most likely go away in any attempt to bring this driver out of staging.
> I'd much rather see the major surgery needed than tidying up around the edges.
> 
> I'm not particularly keen on any effort being expended in this direction
> without substantially more justification. 

Even though, I would consider this as a good cleanup from two perspectives:
- reducing the current code base, id est makes easier to get current state
of affairs
- educating people to use better alternatives (in case that's unavoidable)
in their code

> So as this stands I'm going to ignore this one.

This is fine!

-- 
With Best Regards,
Andy Shevchenko
Re: [PATCH v6] staging: iio: adc: ad7816: Use modern IIO attribute macros
Posted by Joshua Crofts 4 weeks, 1 day ago
On Fri, 28 Aug 2026 03:47:21 +0600
"Md. Mahmudul Hasan Mabud" <mdmahmudulhasan1511@gmail.com> wrote:

> Replace the legacy IIO_DEVICE_ATTR() macros with the modern
> IIO_DEVICE_ATTR_RW() and IIO_DEVICE_ATTR_RO() macros.
> 
> This includes renaming driver-specific callback functions to
> standard <name>_show() and <name>_store() formats.
> 
> Signed-off-by: Md. Mahmudul Hasan Mabud <mdmahmudulhasan1511@gmail.com>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> ---

Also, as trivial as the requested change was, please wait at least
24 hours before resubmitting, let others review the code as well.

-- 
Kind regards,
Joshua Crofts