public inbox for linux-aspeed@lists.ozlabs.org
 help / color / mirror / Atom feed
* [PATCH RFC 0/2] pinctrl: add syscon-backed packed-field pinctrl driver and DT bindings
@ 2026-02-13  8:17 Billy Tsai
  2026-02-13  8:17 ` [PATCH RFC 1/2] dt-bindings: pinctrl: Add pinctrl-packed Billy Tsai
  2026-02-13  8:17 ` [PATCH RFC 2/2] pinctrl: add syscon-backed packed-field pin controller driver Billy Tsai
  0 siblings, 2 replies; 6+ messages in thread
From: Billy Tsai @ 2026-02-13  8:17 UTC (permalink / raw)
  To: Linus Walleij, Tony Lindgren, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Joel Stanley, Andrew Jeffery, Bartosz Golaszewski
  Cc: patrickw3, linux-gpio, devicetree, linux-kernel, linux-arm-kernel,
	linux-aspeed, BMC-SW, Billy Tsai

This work follows earlier review discussions around extending
pinctrl-single for bit-per-mux / packed-field controllers. Based on
feedback from Linus Walleij and Tony Lindgren, the direction was changed
towards introducing a separate targeted driver instead of further
increasing the complexity of pinctrl-single.

The prior pinctrl-single series is at:
https://lore.kernel.org/all/20260123-upstream_pinctrl_single-v2-0-40f8063cc5a2@aspeedtech.com/

This series is a replacement of that approach., targeted pinctrl driver
for controllers where pinmux and/or pin configuration are represented as
fixed-width fields packed sequentially within shared registers
(packed-field / bit-per-pin style controllers).

Although pinctrl-single contains support for some bit-per-mux use cases,
it was originally designed around direct MMIO ownership and has grown
in complexity over time. For SoCs where the pin controller lives inside
a larger SCU/syscon register block, using syscon + regmap-mmio provides
a clearer ownership model and naturally avoids MMIO resource conflicts.

The new driver is designed to be instantiated as a subnode of a syscon
device (e.g. SCU). It obtains a regmap from the parent and uses the
child node 'reg' as a window into the syscon register space.

This series includes:
  1. A generic Devicetree binding for packed-field pin controllers.
  2. The new pinctrl-packed driver (derived from pinctrl-single).

Signed-off-by: Billy Tsai <billy_tsai@aspeedtech.com>
---
Billy Tsai (2):
      dt-bindings: pinctrl: Add pinctrl-packed
      pinctrl: add syscon-backed packed-field pin controller driver

 .../bindings/pinctrl/pinctrl-packed.yaml           |  166 +++
 drivers/pinctrl/Kconfig                            |   13 +
 drivers/pinctrl/Makefile                           |    1 +
 drivers/pinctrl/pinctrl-packed.c                   | 1168 ++++++++++++++++++++
 4 files changed, 1348 insertions(+)
---
base-commit: ea24857a76ad90632f86f1e8c8465f96c9f2e407
change-id: 20260211-pinctrl-single-bit-da213f282c95

Best regards,
-- 
Billy Tsai <billy_tsai@aspeedtech.com>



^ permalink raw reply	[flat|nested] 6+ messages in thread
* Re: [PATCH RFC 1/2] dt-bindings: pinctrl: Add pinctrl-packed
@ 2026-02-18 16:13 Billy Tsai
  0 siblings, 0 replies; 6+ messages in thread
From: Billy Tsai @ 2026-02-18 16:13 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Tony Lindgren, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Joel Stanley, Andrew Jeffery, Bartosz Golaszewski,
	patrickw3@meta.com, linux-gpio@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-aspeed@lists.ozlabs.org, BMC-SW

Hi Krzysztof,

Thanks for the detailed review.
You are right regarding the example – it is not valid and would
trigger schema warnings. I should have tested it more thoroughly.
I will improve my testing workflow for future bindings.
Before sending the next revision, I will run:

    make dt_binding_check

without constraining the schema selection, and ensure that no new
warnings are introduced by the patches.

However, based on further feedback from Linus,
I will change direction and drop the generic "pinctrl-packed" binding.
Instead, I will implement an AST2700-specific driver using static SoC
data and reuse the existing standard pinmux and pin configuration
bindings. This should address your concern about the binding being
too generic and introducing unnecessary custom properties.

Hi Linus,

Based on your feedback perhaps introducing a new generic
"pinctrl-packed" binding is not justified at this stage.

Instead, I plan to:

- Drop the generic pinctrl-packed binding.
- The implementation primarily comes down to
describing the pin-to-register-field ordering and the
value-to-function mapping in static SoC data and the rest of
the driver will rely on the generic pinctrl APIs/existing pinctrl-packed code.
- Name the driver "pinctrl-aspeed-ast2700-soc1".
- Reuse the existing standard pinmux and pin configuration
  bindings (pinmux-node.yaml and pincfg-node.yaml),
  without introducing any custom DT properties.
- Hard-code the function mask and field width in the driver,
since they are fixed by the AST2700 hardware

Thanks
Best regards,
Billy Tsai

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-02-18 16:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-13  8:17 [PATCH RFC 0/2] pinctrl: add syscon-backed packed-field pinctrl driver and DT bindings Billy Tsai
2026-02-13  8:17 ` [PATCH RFC 1/2] dt-bindings: pinctrl: Add pinctrl-packed Billy Tsai
2026-02-13  9:57   ` Krzysztof Kozlowski
2026-02-13 13:47   ` Linus Walleij
2026-02-13  8:17 ` [PATCH RFC 2/2] pinctrl: add syscon-backed packed-field pin controller driver Billy Tsai
  -- strict thread matches above, loose matches on Subject: below --
2026-02-18 16:13 [PATCH RFC 1/2] dt-bindings: pinctrl: Add pinctrl-packed Billy Tsai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox