Re: [RFC/RFT PATCH] pinctrl: bcm2835: don't -EINVAL on alternate funcs from get_direction()
From: Bartosz Golaszewski
Date: Wed Feb 19 2025 - 09:31:16 EST
On Wed, Feb 19, 2025 at 3:27 PM Mark Brown <broonie@xxxxxxxxxx> wrote:
>
> On Wed, Feb 19, 2025 at 11:27:50AM +0100, Bartosz Golaszewski wrote:
> > From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
> >
> > Since commit 9d846b1aebbe ("gpiolib: check the return value of
> > gpio_chip::get_direction()") we check the return value of the
> > get_direction() callback as per its API contract. This driver returns
> > -EINVAL if the pin in question is set to one of the alternative
> > (non-GPIO) functions. This isn't really an error that should be
> > communicated to GPIOLIB so default to returning the "safe" value of
> > INPUT in this case. The GPIO subsystem does not have the notion of
> > "unknown" direction.
>
> I see this was already tested for these specific boards. I've also
> found that Avenger96 is failing with bisect pointing to the same commit
> this is fixing:
>
> https://lava.sirena.org.uk/scheduler/job/1126314
>
> as is the Libretech Potato:
>
> https://lava.sirena.org.uk/scheduler/job/1126285
>
> neither of which produce any output before dying, they'll not be fixed
> by this change. Seems like an audit of the drivers might be in order?
Right. I don't know if they return EINVAL or some other error so let
me prepare a change that will not bail-out but simply warn on
get_direction() errors in gpiochip_add_data() instead.
This patch can still go upstream IMO.
Bart