Re: [PATCH -next] iio: st_accel: Fix unused variable warning

From: Jonathan Cameron
Date: Sun Nov 03 2019 - 06:01:44 EST


On Sat, 2 Nov 2019 21:15:35 +0100
Ladislav Michl <ladis@xxxxxxxxxxxxxx> wrote:

> On Sat, Nov 02, 2019 at 02:08:10PM +0000, Jonathan Cameron wrote:
> > On Sat, 2 Nov 2019 11:41:25 +0100
> > Ladislav Michl <ladis@xxxxxxxxxxxxxx> wrote:
> >
> > > On Fri, Nov 01, 2019 at 09:47:41PM +0800, YueHaibing wrote:
> > > > drivers/iio/accel/st_accel_core.c:1005:44: warning:
> > > > mount_matrix_ext_info defined but not used [-Wunused-const-variable=]
> > > >
> > > > Move it to ifdef to mute this warning.
> > > >
> > > > Signed-off-by: YueHaibing <yuehaibing@xxxxxxxxxx>
> > > > ---
> > > > drivers/iio/accel/st_accel_core.c | 2 ++
> > > > 1 file changed, 2 insertions(+)
> > > >
> > > > diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c
> > > > index 2e37f8a..bba0717 100644
> > > > --- a/drivers/iio/accel/st_accel_core.c
> > > > +++ b/drivers/iio/accel/st_accel_core.c
> > > > @@ -1002,10 +1002,12 @@ get_mount_matrix(const struct iio_dev *indio_dev,
> > > > return adata->mount_matrix;
> > > > }
> > > >
> > > > +#ifdef CONFIG_ACPI
> > > > static const struct iio_chan_spec_ext_info mount_matrix_ext_info[] = {
> > > > IIO_MOUNT_MATRIX(IIO_SHARED_BY_ALL, get_mount_matrix),
> > >
> > > So now you do not get any warning for unused get_mount_matrix?
> > > (Then it would make more sense to put all that stuff under one ifdef
> > > and provide empty apply_acpi_orientation for non ACPI case)
> >
> > Does the __maybe_unused marking make this go away?
> >
> > I'd assume that the compiler will manage to drop this either way
> > but I guess we should check that.
> >
> > ifdef magic is always harder to read and potentially fragile in the
> > long run. Here we simply want to indicate that in some build
> > configurations we might not use this.
>
> This suggestion implies we'll get rid of CONFIG_ACPI completely, which
> seems inapproriate looking at size of apply_acpi_orientation function.
> And having both CONFIG_ACPI and __maybe_unused does not make much
> sense. I had something like that in mind (+COMPILE_TEST perhaps):

One additional oddity here is why we have explicit support for
the mount matrix only in the ACPI paths. There are standard DT bindings
for it as well which we should be using.

So let us take your approach below for now, but it would be good to
support this properly on non acpi platforms as well. Where it isn't
specified it will fall back to an identity matrix which is as good as
we have now with no information supplied.

Please send a v2 with the below.

Thanks,

Jonathan

>
> diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c
> index 2e37f8a6d8cf..0e7eac62d618 100644
> --- a/drivers/iio/accel/st_accel_core.c
> +++ b/drivers/iio/accel/st_accel_core.c
> @@ -993,6 +993,7 @@ static const struct iio_trigger_ops st_accel_trigger_ops = {
> #define ST_ACCEL_TRIGGER_OPS NULL
> #endif
>
> +#ifdef CONFIG_ACPI
> static const struct iio_mount_matrix *
> get_mount_matrix(const struct iio_dev *indio_dev,
> const struct iio_chan_spec *chan)
> @@ -1013,7 +1014,6 @@ static const struct iio_chan_spec_ext_info mount_matrix_ext_info[] = {
> static int apply_acpi_orientation(struct iio_dev *indio_dev,
> struct iio_chan_spec *channels)
> {
> -#ifdef CONFIG_ACPI
> struct st_sensor_data *adata = iio_priv(indio_dev);
> struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
> struct acpi_device *adev;
> @@ -1141,10 +1141,14 @@ static int apply_acpi_orientation(struct iio_dev *indio_dev,
> out:
> kfree(buffer.pointer);
> return ret;
> -#else /* !CONFIG_ACPI */
> +}
> +#else
> +static int apply_acpi_orientation(struct iio_dev *indio_dev,
> + struct iio_chan_spec *channels)
> +{
> return 0;
> -#endif
> }
> +#endif
>
> /*
> * st_accel_get_settings() - get sensor settings from device name
> > Thanks,
> >
> > Jonathan
> >
> >
> > >
> > > > { },
> > > > };
> > > > +#endif
> > > >
> > > > /* Read ST-specific _ONT orientation data from ACPI and generate an
> > > > * appropriate mount matrix.
> > > > --
> > > > 2.7.4
> > > >