Re: [PATCH v8 2/6] iio: Replace 'sign' field with union in struct iio_scan_type
From: David Lechner
Date: Mon Mar 23 2026 - 13:39:30 EST
On 3/23/26 11:04 AM, Francesco Lavra wrote:
> On Sat, 2026-03-21 at 12:22 -0500, David Lechner wrote:
>> On 3/17/26 10:04 AM, Francesco Lavra 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.
>>> Opportunistically replace character literals with symbolic constants
>>> that
>>> represent the set of allowed values for the format field.
>>>
>>> Signed-off-by: Francesco Lavra <flavra@xxxxxxxxxxxx>
>>> ---
>>> Documentation/driver-api/iio/buffers.rst | 4 ++--
>>> include/linux/iio/iio.h | 17 +++++++++++++++--
>>> 2 files changed, 17 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/Documentation/driver-api/iio/buffers.rst
>>> b/Documentation/driver-api/iio/buffers.rst
>>> index 63f364e862d1..e16abaf826fe 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 = IIO_SCAN_FORMAT_SIGNED_INT,
>>> .realbits = 12,
>>> .storagebits = 16,
>>> .shift = 4,
>>> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
>>> index a9ecff191bd9..d48a0ab01b8d 100644
>>> --- a/include/linux/iio/iio.h
>>> +++ b/include/linux/iio/iio.h
>>> @@ -176,9 +176,19 @@ struct iio_event_spec {
>>> unsigned long mask_shared_by_all;
>>> };
>>>
>>> +/*
>>> + * Format values in scan type
>>> + * @IIO_SCAN_FORMAT_SIGNED_INT: Signed integer (two's complement).
>>> + * @IIO_SCAN_FORMAT_UNSIGNED_INT: Unsigned integer.
>>> + */
>>
>> We could make this proper kernel doc format with one comment per macro.
>
> Actually, a set of related #defines can be documented with a single
> comment. I see a few examples doing that in include/linux/gfp_types.h and
> include/linux/fpga/fpga-mgr.h
Fancy. Although, IDEs tend to be able to handle doc comments better
if they are not combined (i.e. getting the docs when you hold the
mouse over an identifier).
>
>
>>> +#define IIO_SCAN_FORMAT_SIGNED_INT 's'
>>> +#define IIO_SCAN_FORMAT_UNSIGNED_INT 'u'
>>> +
>