There is currently no user, but we might need it in future.
So better add it now, before we have to convert drivers afterwards.
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Acked-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
        ext_info = &this_attr->c->ext_info[this_attr->address];
 
-       return ext_info->read(indio_dev, this_attr->c, buf);
+       return ext_info->read(indio_dev, ext_info->private, this_attr->c, buf);
 }
 
 static ssize_t iio_write_channel_ext_info(struct device *dev,
 
        ext_info = &this_attr->c->ext_info[this_attr->address];
 
-       return ext_info->write(indio_dev, this_attr->c, buf, len);
+       return ext_info->write(indio_dev, ext_info->private,
+                              this_attr->c, buf, len);
 }
 
 static ssize_t iio_read_channel_info(struct device *dev,
 
 };
 
 static ssize_t ad5064_read_powerdown_mode_available(struct iio_dev *indio_dev,
-       const struct iio_chan_spec *chan, char *buf)
+       uintptr_t private, const struct iio_chan_spec *chan, char *buf)
 {
        return sprintf(buf, "%s %s %s\n", ad5064_powerdown_modes[1],
                ad5064_powerdown_modes[2], ad5064_powerdown_modes[3]);
 }
 
 static ssize_t ad5064_read_powerdown_mode(struct iio_dev *indio_dev,
-       const struct iio_chan_spec *chan, char *buf)
+       uintptr_t private, const struct iio_chan_spec *chan, char *buf)
 {
        struct ad5064_state *st = iio_priv(indio_dev);
 
 }
 
 static ssize_t ad5064_write_powerdown_mode(struct iio_dev *indio_dev,
-       const struct iio_chan_spec *chan, const char *buf, size_t len)
+       uintptr_t private, const struct iio_chan_spec *chan, const char *buf,
+       size_t len)
 {
        struct ad5064_state *st = iio_priv(indio_dev);
        unsigned int mode, i;
 }
 
 static ssize_t ad5064_read_dac_powerdown(struct iio_dev *indio_dev,
-       const struct iio_chan_spec *chan, char *buf)
+       uintptr_t private, const struct iio_chan_spec *chan, char *buf)
 {
        struct ad5064_state *st = iio_priv(indio_dev);
 
 }
 
 static ssize_t ad5064_write_dac_powerdown(struct iio_dev *indio_dev,
-       const struct iio_chan_spec *chan, const char *buf, size_t len)
+        uintptr_t private, const struct iio_chan_spec *chan, const char *buf,
+        size_t len)
 {
        struct ad5064_state *st = iio_priv(indio_dev);
        bool pwr_down;
 
 };
 
 static ssize_t ad5446_read_powerdown_mode_available(struct iio_dev *indio_dev,
-       const struct iio_chan_spec *chan, char *buf)
+       uintptr_t private, const struct iio_chan_spec *chan, char *buf)
 {
        return sprintf(buf, "%s %s %s\n", ad5446_powerdown_modes[1],
                ad5446_powerdown_modes[2], ad5446_powerdown_modes[3]);
 }
 
 static ssize_t ad5446_write_powerdown_mode(struct iio_dev *indio_dev,
+                                           uintptr_t private,
                                            const struct iio_chan_spec *chan,
                                            const char *buf, size_t len)
 {
 }
 
 static ssize_t ad5446_read_powerdown_mode(struct iio_dev *indio_dev,
+                                          uintptr_t private,
                                           const struct iio_chan_spec *chan,
                                           char *buf)
 {
 }
 
 static ssize_t ad5446_read_dac_powerdown(struct iio_dev *indio_dev,
+                                          uintptr_t private,
                                           const struct iio_chan_spec *chan,
                                           char *buf)
 {
 }
 
 static ssize_t ad5446_write_dac_powerdown(struct iio_dev *indio_dev,
+                                           uintptr_t private,
                                            const struct iio_chan_spec *chan,
                                            const char *buf, size_t len)
 {
 
  * @shared:    Whether this attribute is shared between all channels.
  * @read:      Read callback for this info attribute, may be NULL.
  * @write:     Write callback for this info attribute, may be NULL.
+ * @private:   Data private to the driver.
  */
 struct iio_chan_spec_ext_info {
        const char *name;
        bool shared;
-       ssize_t (*read)(struct iio_dev *, struct iio_chan_spec const *,
-                       char *buf);
-       ssize_t (*write)(struct iio_dev *, struct iio_chan_spec const *,
-                       const char *buf, size_t len);
+       ssize_t (*read)(struct iio_dev *, uintptr_t private,
+                       struct iio_chan_spec const *, char *buf);
+       ssize_t (*write)(struct iio_dev *, uintptr_t private,
+                        struct iio_chan_spec const *, const char *buf,
+                        size_t len);
+       uintptr_t private;
 };
 
 /**