Re: [PATCH v7 2/6] iio: Replace 'sign' field with union in struct iio_scan_type

From: Jonathan Cameron

Date: Sat Mar 07 2026 - 08:11:00 EST


On Wed, 4 Mar 2026 09:06:40 +0100
Francesco Lavra <flavra@xxxxxxxxxxxx> wrote:

> This field is used to differentiate between signed and unsigned integers.
> A following commit will extend its use in order to add support for non-
> integer scan elements; therefore, replace it with a union that contains a
> more generic 'format' field. This union will be dropped when all drivers
> are changed to use the format field.
>
> Signed-off-by: Francesco Lavra <flavra@xxxxxxxxxxxx>
> ---
> Documentation/driver-api/iio/buffers.rst | 4 ++--
> include/linux/iio/iio.h | 7 +++++--
> 2 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/driver-api/iio/buffers.rst b/Documentation/driver-api/iio/buffers.rst
> index 63f364e862d1..f36e6d00173f 100644
> --- a/Documentation/driver-api/iio/buffers.rst
> +++ b/Documentation/driver-api/iio/buffers.rst
> @@ -78,7 +78,7 @@ fields in iio_chan_spec definition::
> /* other members */
> int scan_index
> struct {
> - char sign;
> + char format;
> u8 realbits;
> u8 storagebits;
> u8 shift;
> @@ -98,7 +98,7 @@ following channel definition::
> /* other stuff here */
> .scan_index = 0,
> .scan_type = {
> - .sign = 's',
> + .format = 's',
This made me wonder if we should use this opportunity to restrict
the flexibility of what can go in .format via some defines?

#define IIO_SCAN_FORMAT_SIGNED_INT 's'
#define IIO_SCAN_FORMAT_UNSIGNED_INT 'u'
#define IIO_SCAN_FORMAT_FLOAT 'f'

or something like that. Given the aim is to convert all current
instances we can move to the macros as part of switching from
sign to format.


> .realbits = 12,
> .storagebits = 16,
> .shift = 4,