[PATCH v2 0/3] pinctrl: single: bit-per-mux DT flexibility, probe robustness, and consistent pinconf offsets
Billy Tsai
billy_tsai at aspeedtech.com
Thu Feb 5 23:24:12 PST 2026
* Billy Tsai <billy_tsai at aspeedtech.com> [260204 06:54]:
> > Hi Tony,
> >
> > This series proposes a set of changes to pinctrl-single motivated by
> > bit-per-mux SoC designs such as ASPEED AST2700 (per-pin DT encoding,
> > aligned pinconf offsets, and allowing probe to continue when the MMIO
> > region is already reserved).
> >
> > Linus reviewed the series and noted that he would prefer a custom
> > pinctrl driver using existing helpers and the pinmux = <...> DT
> > property, rather than extending pinctrl-single, and suggested that the
> > pinctrl-single maintainers review the approach before any merge
> > decision.
> >
> > I would appreciate your guidance on whether extending
> > pinctrl-single in this direction is acceptable, or if the preference is
> > to pursue a dedicated driver instead.
> I agree with what Linus that separate more targeted drivers are better
> to avoid the drivers getting complex. With the GENERIC_PIN* helpers doing
> targeted drivers should be trivial.
> My preference would be to move the bit-per-mux handling out of the
> pinctrl-single driver into a separate pinctrl-single-bit type driver.
> Seems that can still handle the cases where no hardware specific driver
> is needed.
> This would simplify pinctrl-single driver quite a bit, and would make
> the new driver quite simple too AFAIK.
Hi Tony,
Thanks for the clarification.
I understand the preference is to keep pinctrl-single minimal and move
the bit-per-mux handling into a separate, more targeted driver built on
top of the GENERIC_PINMUX/GENERIC_PINCONF helpers, rather than extending
pinctrl-single itself.
Based on that, I’ll look into refactoring this into a
pinctrl-single-bit style driver that covers bit-per-mux / bit-per-pin
layouts generically (including AST2700), while keeping pinctrl-single
focused on the simpler register models.
One additional point I’d like to raise is the handling of pre-reserved
MMIO regions.
On AST2700 systems, the SCU register range containing the pinctrl
registers is commonly reserved by a top-level syscon node or by firmware.
In this setup, devm_request_mem_region() can return -EBUSY even though the
registers are valid and intended to be shared, which currently causes the
driver to fail probing and leaves pinmux unconfigured.
When moving to a separate targeted driver, would the preferred approach
be to treat this condition as a warning and continue probing, or is there
an alternative pattern you’d recommend for handling shared SCU-style
register blocks in pinctrl drivers?
Thanks,
Billy
More information about the linux-arm-kernel
mailing list