Subject: Re: [PATCH v2 1/3] pinctrl: sunxi: a523: Remove unneeded IRQ remuxing flag

From: Andre Przywara <[email-masked]>
Date: Sun, 5 Apr 2026 17:27:38 +0200

On Fri, 27 Mar 2026 19:38:57 +0800
Chen-Yu Tsai <[email-masked]> wrote:

Hi Linus,

> On Fri, Mar 27, 2026 at 7:30 PM Andre Przywara <[email-masked]> wrote:
> >
> > The Allwinner A10 and H3 SoCs cannot read the state of a GPIO line when
> > that line is muxed for IRQ triggering (muxval 6), but only if it's
> > explicitly muxed for GPIO input (muxval 0). Other SoCs do not show this
> > behaviour, so we added a optional workaround, triggered by a quirk bit,
> > which triggers remuxing the pin when it's configured for IRQ, while we
> > need to read its value.
> >
> > For some reasons this quirk flag was copied over to newer SoCs, even
> > though they don't show this behaviour, and the GPIO data register
> > reflects the true GPIO state even with a pin muxed to IRQ trigger.
> >
> > Remove the unneeded quirk from the A523 family, where it's definitely
> > not needed (confirmed by experiments), and where it actually breaks,
> > because the workaround is not compatible with the newer generation
> > pinctrl IP used in that chip.
> >
> > Together with a DT change this fixes GPIO IRQ operation on the A523
> > family of SoCs, as for instance used for the SD card detection.
> >
> > Signed-off-by: Andre Przywara <[email-masked]>
> > Fixes: b8a51e95b376 ("pinctrl: sunxi: Add support for the secondary A523 GPIO ports")  
> 
> Acked-by: Chen-Yu Tsai <[email-masked]>

Can you possibly take this patch and maybe the binding (PATCH v2 2/3)?
Ideally still for v7.0? IIUC Chen-Yu would take the DT patch, but
relies on those two here.

Thanks,
Andre

> 
> > ---
> >  drivers/pinctrl/sunxi/pinctrl-sun55i-a523-r.c | 1 -
> >  drivers/pinctrl/sunxi/pinctrl-sun55i-a523.c   | 1 -
> >  2 files changed, 2 deletions(-)
> >
> > diff --git a/drivers/pinctrl/sunxi/pinctrl-sun55i-a523-r.c b/drivers/pinctrl/sunxi/pinctrl-sun55i-a523-r.c
> > index 69cd2b4ebd7d..462aa1c4a5fa 100644
> > --- a/drivers/pinctrl/sunxi/pinctrl-sun55i-a523-r.c
> > +++ b/drivers/pinctrl/sunxi/pinctrl-sun55i-a523-r.c
> > @@ -26,7 +26,6 @@ static const u8 a523_r_irq_bank_muxes[SUNXI_PINCTRL_MAX_BANKS] =
> >  static struct sunxi_pinctrl_desc a523_r_pinctrl_data = {
> >         .irq_banks = ARRAY_SIZE(a523_r_irq_bank_map),
> >         .irq_bank_map = a523_r_irq_bank_map,
> > -       .irq_read_needs_mux = true,
> >         .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_SEL,
> >         .pin_base = PL_BASE,
> >  };
> > diff --git a/drivers/pinctrl/sunxi/pinctrl-sun55i-a523.c b/drivers/pinctrl/sunxi/pinctrl-sun55i-a523.c
> > index 7d2308c37d29..b6f78f1f30ac 100644
> > --- a/drivers/pinctrl/sunxi/pinctrl-sun55i-a523.c
> > +++ b/drivers/pinctrl/sunxi/pinctrl-sun55i-a523.c
> > @@ -26,7 +26,6 @@ static const u8 a523_irq_bank_muxes[SUNXI_PINCTRL_MAX_BANKS] =
> >  static struct sunxi_pinctrl_desc a523_pinctrl_data = {
> >         .irq_banks = ARRAY_SIZE(a523_irq_bank_map),
> >         .irq_bank_map = a523_irq_bank_map,
> > -       .irq_read_needs_mux = true,
> >         .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_SEL,
> >  };
> >
> > --
> > 2.43.0
> >  
>