Re: [PATCH v2 0/3] pinctrl: single: bit-per-mux DT flexibility, probe robustness, and consistent pinconf offsets
From: Billy Tsai <hidden>
Date: 2026-02-06 07:24:15
Also in:
linux-gpio, linux-omap, lkml
* Billy Tsai [off-list ref] [260204 06:54]:
quoted
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