* [PATCH v4 0/7] gpio: add pinctrl based generic gpio driver
@ 2026-03-17 14:40 Dan Carpenter
2026-03-17 14:40 ` [PATCH v4 6/7] dt-bindings: gpio: Add bindings for " Dan Carpenter
0 siblings, 1 reply; 3+ messages in thread
From: Dan Carpenter @ 2026-03-17 14:40 UTC (permalink / raw)
To: Linus Walleij, AKASHI Takahiro
Cc: arm-scmi, Bartosz Golaszewski, Conor Dooley, Cristian Marussi,
Dan Carpenter, devicetree, Krzysztof Kozlowski, linux-arm-kernel,
linux-gpio, linux-kernel, Rob Herring, Sudeep Holla,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
Vincent Guittot, Khaled Ali Ahmed, Michal Simek
This basically abandons my earlier attempts and goes back to Takahiro
Akashi's driver. Here is the link to Takahiro's patchset:
https://lore.kernel.org/all/20231005025843.508689-1-takahiro.akashi@linaro.org/
v4: Addressed Andy's comments about kernel-doc
Addressed Rob's comments on the spec file
v3: Forward ported Takahiro's patches and added some fixes ups to make
it work on current kernels.
AKASHI Takahiro (3):
pinctrl: introduce pinctrl_gpio_get_config()
dt-bindings: gpio: Add bindings for pinctrl based generic gpio driver
gpio: add pinctrl based generic gpio driver
Dan Carpenter (4):
pinctrl: scmi: Add SCMI_PIN_INPUT_VALUE
pinctrl: Delete PIN_CONFIG_OUTPUT_IMPEDANCE_OHMS support
pinctrl-scmi: ignore PIN_CONFIG_PERSIST_STATE
arm_scmi: pinctrl: allow PINCTRL_REQUEST to return EOPNOTSUPP
.../bindings/gpio/pin-control-gpio.yaml | 59 +++++++++
drivers/firmware/arm_scmi/pinctrl.c | 2 +
drivers/gpio/Kconfig | 7 +
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio-by-pinctrl.c | 124 ++++++++++++++++++
drivers/pinctrl/core.c | 31 +++++
drivers/pinctrl/pinctrl-scmi.c | 46 +++++--
include/linux/pinctrl/consumer.h | 9 ++
8 files changed, 266 insertions(+), 13 deletions(-)
create mode 100644 Documentation/devicetree/bindings/gpio/pin-control-gpio.yaml
create mode 100644 drivers/gpio/gpio-by-pinctrl.c
--
2.51.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v4 6/7] dt-bindings: gpio: Add bindings for pinctrl based generic gpio driver
2026-03-17 14:40 [PATCH v4 0/7] gpio: add pinctrl based generic gpio driver Dan Carpenter
@ 2026-03-17 14:40 ` Dan Carpenter
2026-03-18 7:14 ` Krzysztof Kozlowski
0 siblings, 1 reply; 3+ messages in thread
From: Dan Carpenter @ 2026-03-17 14:40 UTC (permalink / raw)
To: Linus Walleij, AKASHI Takahiro
Cc: Bartosz Golaszewski, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Dan Carpenter, linux-gpio, devicetree, linux-kernel,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski, arm-scmi,
Vincent Guittot, Khaled Ali Ahmed, Michal Simek
From: AKASHI Takahiro <takahiro.akashi@linaro.org>
Add a dt binding for the gpio-by-pinctrl driver. The driver is used
for doing GPIO over the SCMI pinctrl protocol. There are a few
mandatory properties such as gpio-ranges and ngpios, but it's not
mandatory to specify the pin-mux.
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Linus Walleij <linusw@kernel.org>
---
v4: Changed additionalProperties: true to false.
My concern here was that there might be a lot of gpio properties
which I wasn't familiar with. To check I did:
grep :$ Documentation/devicetree/bindings/gpio/* | \
cut -d : -f 2- | perl -ne 's/[\ ]*//g; print "$_\n"' | \
sort | uniq -c
The only property that I decided to add was gpio-line-names.
Deleted the extra bonus example.
.../bindings/gpio/pin-control-gpio.yaml | 59 +++++++++++++++++++
1 file changed, 59 insertions(+)
create mode 100644 Documentation/devicetree/bindings/gpio/pin-control-gpio.yaml
diff --git a/Documentation/devicetree/bindings/gpio/pin-control-gpio.yaml b/Documentation/devicetree/bindings/gpio/pin-control-gpio.yaml
new file mode 100644
index 000000000000..ebc3fdd039fd
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/pin-control-gpio.yaml
@@ -0,0 +1,59 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/pin-control-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Pin control based generic GPIO controller
+
+description:
+ The pin control-based GPIO will facilitate a pin controller's ability
+ to drive electric lines high/low and other generic properties of a
+ pin controller to perform general-purpose one-bit binary I/O.
+
+maintainers:
+ - Dan Carpenter <dan.carpenter@linaro.og>
+
+properties:
+ compatible:
+ const: scmi-pinctrl-gpio
+
+ gpio-controller: true
+
+ "#gpio-cells":
+ const: 2
+
+ gpio-line-names: true
+
+ gpio-ranges: true
+
+ ngpios: true
+
+patternProperties:
+ "^.+-hog(-[0-9]+)?$":
+ type: object
+
+ required:
+ - gpio-hog
+
+required:
+ - compatible
+ - gpio-controller
+ - "#gpio-cells"
+ - gpio-ranges
+ - ngpios
+
+additionalProperties: false
+
+examples:
+ - |
+ gpio {
+ compatible = "scmi-pinctrl-gpio";
+ gpio-controller;
+ #gpio-cells = <2>;
+ ngpios = <3>;
+ gpio-line-names = "gpio_5_17", "gpio_5_20", "gpio_5_22", "gpio_2_1";
+ gpio-ranges = <&scmi_pinctrl 0 30 4>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&keys_pins>;
+ };
--
2.51.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v4 6/7] dt-bindings: gpio: Add bindings for pinctrl based generic gpio driver
2026-03-17 14:40 ` [PATCH v4 6/7] dt-bindings: gpio: Add bindings for " Dan Carpenter
@ 2026-03-18 7:14 ` Krzysztof Kozlowski
0 siblings, 0 replies; 3+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-18 7:14 UTC (permalink / raw)
To: Dan Carpenter
Cc: Linus Walleij, AKASHI Takahiro, Bartosz Golaszewski, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dan Carpenter, linux-gpio,
devicetree, linux-kernel, Andy Shevchenko, Bartosz Golaszewski,
arm-scmi, Vincent Guittot, Khaled Ali Ahmed, Michal Simek
On Tue, Mar 17, 2026 at 05:40:57PM +0300, Dan Carpenter wrote:
> From: AKASHI Takahiro <takahiro.akashi@linaro.org>
>
> Add a dt binding for the gpio-by-pinctrl driver. The driver is used
Drop all references to the driver. Describe the
device/hardware/firmware/interface, not driver. Same for subject.
> for doing GPIO over the SCMI pinctrl protocol. There are a few
> mandatory properties such as gpio-ranges and ngpios, but it's not
> mandatory to specify the pin-mux.
There is no such thing there as pin-mux, so I don't understand above
sentence.
Describe the hardware/firmware/interface, not the patch, because we
easily see which properties are mandatory. Schema tells that.
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> Reviewed-by: Linus Walleij <linusw@kernel.org>
A nit, subject: drop second/last, redundant "bindings for". The
"dt-bindings" prefix is already stating that these are bindings.
See also:
https://elixir.bootlin.com/linux/v6.17-rc3/source/Documentation/devicetree/bindings/submitting-patches.rst#L18
> ---
> v4: Changed additionalProperties: true to false.
>
> My concern here was that there might be a lot of gpio properties
> which I wasn't familiar with. To check I did:
> grep :$ Documentation/devicetree/bindings/gpio/* | \
> cut -d : -f 2- | perl -ne 's/[\ ]*//g; print "$_\n"' | \
> sort | uniq -c
> The only property that I decided to add was gpio-line-names.
>
> Deleted the extra bonus example.
>
> .../bindings/gpio/pin-control-gpio.yaml | 59 +++++++++++++++++++
> 1 file changed, 59 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/gpio/pin-control-gpio.yaml
>
> diff --git a/Documentation/devicetree/bindings/gpio/pin-control-gpio.yaml b/Documentation/devicetree/bindings/gpio/pin-control-gpio.yaml
> new file mode 100644
> index 000000000000..ebc3fdd039fd
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gpio/pin-control-gpio.yaml
> @@ -0,0 +1,59 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/gpio/pin-control-gpio.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Pin control based generic GPIO controller
> +
> +description:
> + The pin control-based GPIO will facilitate a pin controller's ability
> + to drive electric lines high/low and other generic properties of a
> + pin controller to perform general-purpose one-bit binary I/O.
> +
> +maintainers:
> + - Dan Carpenter <dan.carpenter@linaro.og>
> +
> +properties:
> + compatible:
> + const: scmi-pinctrl-gpio
> +
> + gpio-controller: true
> +
> + "#gpio-cells":
> + const: 2
> +
> + gpio-line-names: true
> +
> + gpio-ranges: true
> +
> + ngpios: true
> +
> +patternProperties:
> + "^.+-hog(-[0-9]+)?$":
> + type: object
> +
> + required:
> + - gpio-hog
> +
> +required:
> + - compatible
> + - gpio-controller
> + - "#gpio-cells"
> + - gpio-ranges
> + - ngpios
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + gpio {
> + compatible = "scmi-pinctrl-gpio";
> + gpio-controller;
> + #gpio-cells = <2>;
> + ngpios = <3>;
Three pins here
> + gpio-line-names = "gpio_5_17", "gpio_5_20", "gpio_5_22", "gpio_2_1";
... four here
> + gpio-ranges = <&scmi_pinctrl 0 30 4>;
... and four here, so it feels inconsistent. I guess ngpios = 4?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-03-18 7:14 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-17 14:40 [PATCH v4 0/7] gpio: add pinctrl based generic gpio driver Dan Carpenter
2026-03-17 14:40 ` [PATCH v4 6/7] dt-bindings: gpio: Add bindings for " Dan Carpenter
2026-03-18 7:14 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox