Re: [PATCH v3 1/3] iio: add struct declarations for iio types

From: Jonathan Cameron
Date: Sat Dec 03 2022 - 11:58:52 EST


On Mon, 28 Nov 2022 15:26:51 +0100
Michael Riesch <michael.riesch@xxxxxxxxxxxxxx> wrote:

> Hi Andy,
>
> On 11/28/22 15:05, Andy Shevchenko wrote:
> > On Mon, Nov 28, 2022 at 02:48:48PM +0100, Michael Riesch wrote:
> >> On 11/28/22 14:27, Andy Shevchenko wrote:
> >>> On Mon, Nov 28, 2022 at 01:18:04PM +0100, Gerald Loacker wrote:
> >>>> Am 25.11.2022 um 12:01 schrieb Andy Shevchenko:
> >
> > ...
> >
> >>> It's a rule to use _t for typedef:s in the kernel. That's why
> >>> I suggested to leave struct definition and only typedef the same structures
> >>> (existing) to new names (if needed).
> >>
> >> Andy, excuse our ignorance but we are not sure how this typedef approach
> >> is supposed to look like...
> >>
> >>>> or
> >>>
> >>>> typedef iio_val_int_plus_micro iio_val_int_plus_micro_db;
> >>
> >> ... because
> >>
> >> #include <stdio.h>
> >>
> >> struct iio_val_int_plus_micro {
> >> int integer;
> >> int micro;
> >> };
> >>
> >> typedef iio_val_int_plus_micro iio_val_int_plus_micro_db;
> >>
> >> int main()
> >> {
> >> struct iio_val_int_plus_micro a = { .integer = 100, .micro = 10, };
> >> struct iio_val_int_plus_micro_db b = { .integer = 20, .micro = 10, };
> >> return 0;
> >> }
> >>
> >> won't compile.
> >
> > I see. Thanks for pointing this out.
> >
> > Then the question is why do we need the two same structures with different
> > names?
>
> Most probably we don't need "struct iio_val_int_plus_micro_db" at all
> since IIO_VAL_INT_PLUS_MICRO_DB and IIO_VAL_INT_PLUS_MICRO get the same
> treatment in industrialio-core.c. At least it should not be introduced
> in the scope of this series. In the end this is up to whoever writes the
> first driver using the common data structures and IIO_VAL_INT_PLUS_MICRO_DB.

They get same treatment today because we don't attempt to deal with
IIO_VAL_INT_PLUS_MICRO_DB in conjunction with any of the analog circuit type
front ends yet. Mind you, even though the handling in iio-rescale.c will be
different if anyone ever adds support for the DB form (I shudder at the maths
of combining this with other scale factors), I don't see the possibility meaning
we need a different structure.

Jonathan


>
> Best regards,
> Michael
>