Linux GPIO subsystem development
 help / color / mirror / Atom feed
* [PATCH 0/2] dt-bindings: pinctrl: Convert ABx500 and Nomadik bindings to schema
@ 2026-11-10  9:58 Linus Walleij
  2026-11-10  9:58 ` [PATCH 1/2] dt-bindings: pinctrl: abx500: Convert to DT schema Linus Walleij
  2026-11-10  9:58 ` [PATCH 2/2] dt-bindings: pinctrl: nomadik: " Linus Walleij
  0 siblings, 2 replies; 6+ messages in thread
From: Linus Walleij @ 2026-11-10  9:58 UTC (permalink / raw)
  To: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Linus Walleij
  Cc: mfd, devicetree, linux-gpio

Convert the ABx500 GPIO/pin controller and Nomadik pin controller bindings
to DT schema. Describe the nested mux and configuration groups used by
existing boards and reference the ABx500 schema from the AB8500 MFD.

These are really old bindins, and one of the first pin control bindings
ever. Don't shoot the messenger, I'm just documenting what is out there.

Migrating to newer generic bindings and deprecating these old bindings
can be done in the future.

Prepared with Codex.

---
Linus Walleij (2):
      dt-bindings: pinctrl: abx500: Convert to DT schema
      dt-bindings: pinctrl: nomadik: Convert to DT schema

 .../devicetree/bindings/mfd/stericsson,ab8500.yaml |  16 +-
 .../devicetree/bindings/pinctrl/ste,abx500.txt     | 318 ---------------------
 .../devicetree/bindings/pinctrl/ste,nomadik.txt    | 148 ----------
 .../bindings/pinctrl/stericsson,abx500.yaml        |  68 +++++
 .../bindings/pinctrl/stericsson,nomadik.yaml       | 113 ++++++++
 5 files changed, 182 insertions(+), 481 deletions(-)
---
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
change-id: 20261109-ux500-pinctrl-bindings-4c94d333bfa1

Best regards,
--  
Linus Walleij <linusw@kernel.org>


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

* [PATCH 1/2] dt-bindings: pinctrl: abx500: Convert to DT schema
  2026-11-10  9:58 [PATCH 0/2] dt-bindings: pinctrl: Convert ABx500 and Nomadik bindings to schema Linus Walleij
@ 2026-11-10  9:58 ` Linus Walleij
  2026-11-12 14:05   ` Rob Herring
  2026-11-10  9:58 ` [PATCH 2/2] dt-bindings: pinctrl: nomadik: " Linus Walleij
  1 sibling, 1 reply; 6+ messages in thread
From: Linus Walleij @ 2026-11-10  9:58 UTC (permalink / raw)
  To: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Linus Walleij
  Cc: mfd, devicetree, linux-gpio

Describe the ABx500 GPIO and pin controller in DT schema, including
the nested mux and configuration groups used by existing boards.
Reference this schema from the AB8500 MFD instead of rejecting all
pin configuration children. Found with CHECK_DTBS=1.

Signed-off-by: Linus Walleij <linusw@kernel.org>
---
 .../devicetree/bindings/mfd/stericsson,ab8500.yaml |  16 +-
 .../devicetree/bindings/pinctrl/ste,abx500.txt     | 318 ---------------------
 .../bindings/pinctrl/stericsson,abx500.yaml        |  68 +++++
 3 files changed, 69 insertions(+), 333 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/stericsson,ab8500.yaml b/Documentation/devicetree/bindings/mfd/stericsson,ab8500.yaml
index d819954ee731..055e983310d8 100644
--- a/Documentation/devicetree/bindings/mfd/stericsson,ab8500.yaml
+++ b/Documentation/devicetree/bindings/mfd/stericsson,ab8500.yaml
@@ -61,21 +61,7 @@ properties:
         const: 1
 
   gpio:
-    description: Node describing the AB8500 GPIO controller. A few
-      GPIO pins available for misc usage.
-    type: object
-    additionalProperties: false
-
-    properties:
-      compatible:
-        enum:
-          - stericsson,ab8500-gpio
-          - stericsson,ab8505-gpio
-
-      gpio-controller: true
-
-      '#gpio-cells':
-        const: 2
+    $ref: /schemas/pinctrl/stericsson,abx500.yaml#
 
   rtc:
     description: Node describing the AB8500 battery-backed RTC.
diff --git a/Documentation/devicetree/bindings/pinctrl/ste,abx500.txt b/Documentation/devicetree/bindings/pinctrl/ste,abx500.txt
deleted file mode 100644
index 87697420439e..000000000000
--- a/Documentation/devicetree/bindings/pinctrl/ste,abx500.txt
+++ /dev/null
@@ -1,318 +0,0 @@
-ST Ericsson abx500 pinmux controller
-
-Required properties:
-- compatible: "stericsson,ab8500-gpio",  "stericsson,ab8540-gpio",
-	      "stericsson,ab8505-gpio", "stericsson,ab9540-gpio",
-
-Please refer to pinctrl-bindings.txt in this directory for details of the
-common pinctrl bindings used by client devices, including the meaning of the
-phrase "pin configuration node".
-
-ST Ericsson's pin configuration nodes use the generic pin multiplexing
-and pin configuration bindings, see pinctrl-bindings.txt
-
-Example board file extract:
-
-&pinctrl_abx500 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&sysclkreq2_default_mode>, <&sysclkreq3_default_mode>, <&gpio3_default_mode>, <&sysclkreq6_default_mode>, <&pwmout1_default_mode>, <&pwmout2_default_mode>, <&pwmout3_default_mode>, <&adi1_default_mode>, <&dmic12_default_mode>, <&dmic34_default_mode>, <&dmic56_default_mode>, <&sysclkreq5_default_mode>, <&batremn_default_mode>, <&service_default_mode>, <&pwrctrl0_default_mode>, <&pwrctrl1_default_mode>, <&pwmextvibra1_default_mode>, <&pwmextvibra2_default_mode>, <&gpio51_default_mode>, <&gpio52_default_mode>, <&gpio53_default_mode>, <&gpio54_default_mode>, <&pdmclkdat_default_mode>;
-
-	sysclkreq2 {
-		sysclkreq2_default_mode: sysclkreq2_default {
-			default_mux {
-				function = "sysclkreq";
-				groups = "sysclkreq2_d_1";
-			};
-			default_cfg {
-				pins = "GPIO1";
-				bias-disable;
-			};
-		};
-	};
-	sysclkreq3 {
-		sysclkreq3_default_mode: sysclkreq3_default {
-			default_mux {
-				function = "sysclkreq";
-				groups = "sysclkreq3_d_1";
-			};
-			default_cfg {
-				pins = "GPIO2";
-				output-low;
-			};
-		};
-	};
-	gpio3 {
-		gpio3_default_mode: gpio3_default {
-			default_mux {
-				function = "gpio";
-				groups = "gpio3_a_1";
-			};
-			default_cfg {
-				pins = "GPIO3";
-				output-low;
-			};
-		};
-	};
-	sysclkreq6 {
-		sysclkreq6_default_mode: sysclkreq6_default {
-			default_mux {
-				function = "sysclkreq";
-				groups = "sysclkreq6_d_1";
-			};
-			default_cfg {
-				pins = "GPIO4";
-				bias-disable;
-			};
-		};
-	};
-	pwmout1 {
-		pwmout1_default_mode: pwmout1_default {
-			default_mux {
-				function = "pwmout";
-				groups = "pwmout1_d_1";
-			};
-			default_cfg {
-				pins = "GPIO14";
-				output-low;
-			};
-		};
-	};
-	pwmout2 {
-		pwmout2_default_mode: pwmout2_default {
-			pwmout2_default_mux {
-				function = "pwmout";
-				groups = "pwmout2_d_1";
-			};
-			pwmout2_default_cfg {
-				pins = "GPIO15";
-				output-low;
-			};
-		};
-	};
-	pwmout3 {
-		pwmout3_default_mode: pwmout3_default {
-			pwmout3_default_mux {
-				function = "pwmout";
-				groups = "pwmout3_d_1";
-			};
-			pwmout3_default_cfg {
-				pins = "GPIO16";
-				output-low;
-			};
-		};
-	};
-	adi1 {
-
-		adi1_default_mode: adi1_default {
-			adi1_default_mux {
-				function = "adi1";
-				groups = "adi1_d_1";
-			};
-			adi1_default_cfg1 {
-				pins = "GPIO17","GPIO19","GPIO20";
-				bias-disable;
-			};
-			adi1_default_cfg2 {
-				pins = "GPIO18";
-				output-low;
-			};
-		};
-	};
-	dmic12 {
-		dmic12_default_mode: dmic12_default {
-			dmic12_default_mux {
-				function = "dmic";
-				groups = "dmic12_d_1";
-			};
-			dmic12_default_cfg1 {
-				pins = "GPIO27";
-				output-low;
-			};
-			dmic12_default_cfg2 {
-				pins = "GPIO28";
-				bias-disable;
-			};
-		};
-	};
-	dmic34 {
-		dmic34_default_mode: dmic34_default {
-			dmic34_default_mux {
-				function = "dmic";
-				groups = "dmic34_d_1";
-			};
-			dmic34_default_cfg1 {
-				pins = "GPIO29";
-				output-low;
-			};
-			dmic34_default_cfg2 {
-				pins = "GPIO30";
-				bias-disable;{
-
-			};
-		};
-	};
-	dmic56 {
-		dmic56_default_mode: dmic56_default {
-			dmic56_default_mux {
-				function = "dmic";
-				groups = "dmic56_d_1";
-			};
-			dmic56_default_cfg1 {
-				pins = "GPIO31";
-				output-low;
-			};
-			dmic56_default_cfg2 {
-				pins = "GPIO32";
-				bias-disable;
-			};
-		};
-	};
-	sysclkreq5 {
-		sysclkreq5_default_mode: sysclkreq5_default {
-			sysclkreq5_default_mux {
-				function = "sysclkreq";
-				groups = "sysclkreq5_d_1";
-			};
-			sysclkreq5_default_cfg {
-				pins = "GPIO42";
-				output-low;
-			};
-		};
-	};
-	batremn {
-		batremn_default_mode: batremn_default {
-			batremn_default_mux {
-				function = "batremn";
-				groups = "batremn_d_1";
-			};
-			batremn_default_cfg {
-				pins = "GPIO43";
-				bias-disable;
-			};
-		};
-	};
-	service {
-		service_default_mode: service_default {
-			service_default_mux {
-				function = "service";
-				groups = "service_d_1";
-			};
-			service_default_cfg {
-				pins = "GPIO44";
-				bias-disable;
-			};
-		};
-	};
-	pwrctrl0 {
-		pwrctrl0_default_mux: pwrctrl0_mux {
-			pwrctrl0_default_mux {
-				function = "pwrctrl";
-				groups = "pwrctrl0_d_1";
-			};
-		};
-		pwrctrl0_default_mode: pwrctrl0_default {
-			pwrctrl0_default_cfg {
-				pins = "GPIO45";
-				bias-disable;
-			};
-		};
-	};
-	pwrctrl1 {
-		pwrctrl1_default_mux: pwrctrl1_mux {
-			pwrctrl1_default_mux {
-				function = "pwrctrl";
-				groups = "pwrctrl1_d_1";
-			};
-		};
-		pwrctrl1_default_mode: pwrctrl1_default {
-			pwrctrl1_default_cfg {
-				pins = "GPIO46";
-				bias-disable;
-			};
-		};
-	};
-	pwmextvibra1 {
-		pwmextvibra1_default_mode: pwmextvibra1_default {
-			pwmextvibra1_default_mux {
-				function = "pwmextvibra";
-				groups = "pwmextvibra1_d_1";
-			};
-			pwmextvibra1_default_cfg {
-				pins = "GPIO47";
-				bias-disable;
-			};
-		};
-	};
-	pwmextvibra2 {
-		pwmextvibra2_default_mode: pwmextvibra2_default {
-			pwmextvibra2_default_mux {
-				function = "pwmextvibra";
-				groups = "pwmextvibra2_d_1";
-			};
-			pwmextvibra1_default_cfg {
-				pins = "GPIO48";
-				bias-disable;
-			};
-		};
-	};
-	gpio51 {
-		gpio51_default_mode: gpio51_default {
-				gpio51_default_mux {
-				function = "gpio";
-				groups = "gpio51_a_1";
-			};
-			gpio51_default_cfg {
-				pins = "GPIO51";
-				output-low;
-			};
-		};
-	};
-	gpio52 {
-		gpio52_default_mode: gpio52_default {
-			gpio52_default_mux {
-				function = "gpio";
-				groups = "gpio52_a_1";
-			};
-			gpio52_default_cfg {
-				pins = "GPIO52";
-				bias-pull-down;
-			};
-		};
-	};
-	gpio53 {
-		gpio53_default_mode: gpio53_default {
-			gpio53_default_mux {
-				function = "gpio";
-				groups = "gpio53_a_1";
-			};
-			gpio53_default_cfg {
-				pins = "GPIO53";
-				bias-pull-down;
-			};
-		};
-	};
-	gpio54 {
-		gpio54_default_mode: gpio54_default {
-			gpio54_default_mux {
-				function = "gpio";
-				groups = "gpio54_a_1";
-			};
-			gpio54_default_cfg {
-				pins = "GPIO54";
-				output-low;
-			};
-		};
-	};
-	pdmclkdat {
-		pdmclkdat_default_mode: pdmclkdat_default {
-			pdmclkdat_default_mux {
-				function = "pdm";
-				groups = "pdmclkdat_d_1";
-			};
-			pdmclkdat_default_cfg {
-				pins = "GPIO55", "GPIO56";
-				bias-disable;
-			};
-		};
-	};
-};
diff --git a/Documentation/devicetree/bindings/pinctrl/stericsson,abx500.yaml b/Documentation/devicetree/bindings/pinctrl/stericsson,abx500.yaml
new file mode 100644
index 000000000000..59ca14992427
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/stericsson,abx500.yaml
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/stericsson,abx500.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ST-Ericsson AB8500 and AB8505 GPIO and pin controller
+
+maintainers:
+  - Linus Walleij <linusw@kernel.org>
+
+properties:
+  compatible:
+    enum:
+      - stericsson,ab8500-gpio
+      - stericsson,ab8505-gpio
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  gpio-line-names:
+    minItems: 1
+    maxItems: 53
+
+patternProperties:
+  '^(?!phandle$|compatible$|gpio-controller$|gpio-line-names$|pinctrl-[0-9]+$|pinctrl-names$)[a-zA-Z0-9_-]+$':
+    $ref: '#/$defs/config-node'
+
+required:
+  - compatible
+  - gpio-controller
+  - '#gpio-cells'
+
+additionalProperties: false
+
+$defs:
+  config-node:
+    type: object
+    allOf:
+      - $ref: pincfg-node.yaml#
+      - $ref: pinmux-node.yaml#
+    patternProperties:
+      '^(?!phandle$|pins$|groups$|function$|bias-.*$|drive-.*$|input-.*$|output-.*$|power-source$|slew-rate$|low-power-.*$|persist-state$|skew-delay$)[a-zA-Z0-9_-]+$':
+        $ref: '#/$defs/config-node'
+    unevaluatedProperties: false
+
+examples:
+  - |
+    gpio {
+        compatible = "stericsson,ab8500-gpio";
+        gpio-controller;
+        #gpio-cells = <2>;
+
+        sysclkreq2 {
+            sysclkreq2-default {
+                mux {
+                    function = "sysclkreq";
+                    groups = "sysclkreq2_d_1";
+                };
+                config {
+                    pins = "GPIO1";
+                    bias-disable;
+                };
+            };
+        };
+    };

-- 
2.56.0


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

* [PATCH 2/2] dt-bindings: pinctrl: nomadik: Convert to DT schema
  2026-11-10  9:58 [PATCH 0/2] dt-bindings: pinctrl: Convert ABx500 and Nomadik bindings to schema Linus Walleij
  2026-11-10  9:58 ` [PATCH 1/2] dt-bindings: pinctrl: abx500: Convert to DT schema Linus Walleij
@ 2026-11-10  9:58 ` Linus Walleij
  2026-11-10 10:16   ` sashiko-bot
  2026-11-12 14:06   ` Rob Herring
  1 sibling, 2 replies; 6+ messages in thread
From: Linus Walleij @ 2026-11-10  9:58 UTC (permalink / raw)
  To: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Linus Walleij
  Cc: mfd, devicetree, linux-gpio

Describe the Nomadik and DB8500 pin controllers, GPIO bank references
and nested pin configurations in DT schema. Preserve the existing
ste,config references and numeric configuration encodings. This adds
validation for the pin groups in the Ux500 board trees.

Signed-off-by: Linus Walleij <linusw@kernel.org>
---
 .../devicetree/bindings/pinctrl/ste,nomadik.txt    | 148 ---------------------
 .../bindings/pinctrl/stericsson,nomadik.yaml       | 113 ++++++++++++++++
 2 files changed, 113 insertions(+), 148 deletions(-)

diff --git a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
deleted file mode 100644
index 2213802435e0..000000000000
--- a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
+++ /dev/null
@@ -1,148 +0,0 @@
-ST Ericsson Nomadik pinmux controller
-
-Required properties:
-- compatible: "stericsson,db8500-pinctrl", "stericsson,db8540-pinctrl",
-              "stericsson,stn8815-pinctrl"
-- nomadik-gpio-chips: array of phandles to the corresponding GPIO chips
-              (these have the register ranges used by the pin controller).
-- prcm: phandle to the PRCMU managing the back end of this pin controller
-
-Please refer to pinctrl-bindings.txt in this directory for details of the
-common pinctrl bindings used by client devices, including the meaning of the
-phrase "pin configuration node".
-
-ST Ericsson's pin configuration nodes act as a container for an arbitrary number of
-subnodes. Each of these subnodes represents some desired configuration for a
-pin, a group, or a list of pins or groups. This configuration can include the
-mux function to select on those pin(s)/group(s), and various pin configuration
-parameters, such as input, output, pull up, pull down...
-
-The name of each subnode is not important; all subnodes should be enumerated
-and processed purely based on their content. The subnodes use the generic
-pin multiplexing node layout from the standard pin control bindings
-(see pinctrl-bindings.txt):
-
-Required pin multiplexing subnode properties:
-- function: A string containing the name of the function to mux to the
-  pin or group.
-- groups : An array of strings. Each string contains the name of a pin
-  group that will be combined with the function to form a multiplexing
-  set-up.
-
-Required pin configuration subnode properties:
-- pins: A string array describing the pins affected by the configuration
-  in the node.
-- ste,config: Handle of pin configuration node
-  (e.g. ste,config = <&slpm_in_wkup_pdis>)
-
-- ste,input : <0/1/2>
-	0: input with no pull
-	1: input with pull up,
-	2: input with pull down,
-
-- ste,output: <0/1/2>
-	0: output low,
-	1: output high,
-	2: output (value is not specified).
-
-- ste,sleep: <0/1>
-	0: sleep mode disable,
-	1: sleep mode enable.
-
-- ste,sleep-input: <0/1/2/3>
-	0: sleep input with no pull,
-	1: sleep input with pull up,
-	2: sleep input with pull down.
-	3: sleep input and keep last input configuration (no pull, pull up or pull down).
-
-- ste,sleep-output: <0/1/2>
-	0: sleep output low,
-	1: sleep output high,
-	2: sleep output (value is not specified).
-
-- ste,sleep-gpio: <0/1>
-	0: disable sleep gpio mode,
-	1: enable sleep gpio mode.
-
-- ste,sleep-wakeup: <0/1>
-	0: wake-up detection enabled,
-	1: wake-up detection disabled.
-
-- ste,sleep-pull-disable: <0/1>
-	0: GPIO pull-up or pull-down resistor is enabled, when pin is an input,
-	1: GPIO pull-up and pull-down resistor are disabled.
-
-Example board file extract:
-
-	pinctrl@80157000 {
-		compatible = "stericsson,db8500-pinctrl";
-		nomadik-gpio-chips = <&gpio0>, <&gpio1>, <&gpio2>, <&gpio3>;
-		prcm = <&prcmu>;
-
-		pinctrl-names = "default";
-
-		slpm_in_wkup_pdis: slpm_in_wkup_pdis {
-			ste,sleep = <1>;
-			ste,sleep-input = <3>;
-			ste,sleep-wakeup = <1>;
-			ste,sleep-pull-disable = <0>;
-		};
-
-		slpm_out_hi_wkup_pdis: slpm_out_hi_wkup_pdis {
-			ste,sleep = <1>;
-			ste,sleep-output = <1>;
-			ste,sleep-wakeup = <1>;
-			ste,sleep-pull-disable = <0>;
-		};
-
-		slpm_out_wkup_pdis: slpm_out_wkup_pdis {
-			ste,sleep = <1>;
-			ste,sleep-output = <2>;
-			ste,sleep-wakeup = <1>;
-			ste,sleep-pull-disable = <0>;
-		};
-
-		uart0 {
-			uart0_default_mux: uart0_mux {
-				u0_default_mux {
-					function = "u0";
-					pins = "u0_a_1";
-				};
-			};
-			uart0_default_mode: uart0_default {
-				uart0_default_cfg1 {
-					pins = "GPIO0", "GPIO2";
-					ste,input = <1>;
-				};
-
-				uart0_default_cfg2 {
-					pins = "GPIO1", "GPIO3";
-					ste,output = <1>;
-				};
-			};
-			uart0_sleep_mode: uart0_sleep {
-				uart0_sleep_cfg1 {
-					pins = "GPIO0", "GPIO2";
-					ste,config = <&slpm_in_wkup_pdis>;
-				};
-				uart0_sleep_cfg2 {
-					pins = "GPIO1";
-					ste,config = <&slpm_out_hi_wkup_pdis>;
-				};
-				uart0_sleep_cfg3 {
-					pins = "GPIO3";
-					ste,config = <&slpm_out_wkup_pdis>;
-				};
-			};
-		};
-	};
-
-	uart@80120000 {
-		compatible = "arm,pl011", "arm,primecell";
-		reg = <0x80120000 0x1000>;
-		interrupts = <0 11 0x4>;
-
-		pinctrl-names = "default","sleep";
-		pinctrl-0 = <&uart0_default_mux>, <&uart0_default_mode>;
-		pinctrl-1 = <&uart0_sleep_mode>;
-	};
diff --git a/Documentation/devicetree/bindings/pinctrl/stericsson,nomadik.yaml b/Documentation/devicetree/bindings/pinctrl/stericsson,nomadik.yaml
new file mode 100644
index 000000000000..48b2b5773946
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/stericsson,nomadik.yaml
@@ -0,0 +1,113 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/stericsson,nomadik.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ST-Ericsson Nomadik pin controller
+
+maintainers:
+  - Linus Walleij <linusw@kernel.org>
+
+properties:
+  compatible:
+    enum:
+      - stericsson,db8500-pinctrl
+      - stericsson,stn8815-pinctrl
+
+  nomadik-gpio-chips:
+    description: GPIO banks providing the pin control registers.
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    minItems: 1
+    maxItems: 9
+    items:
+      maxItems: 1
+
+  prcm:
+    description: PRCMU controlling the alternate pin functions.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+patternProperties:
+  '^(?!phandle$|compatible$|nomadik-gpio-chips$|prcm$|pinctrl-[0-9]+$|pinctrl-names$)[a-zA-Z0-9_-]+$':
+    $ref: '#/$defs/config-node'
+
+required:
+  - compatible
+  - nomadik-gpio-chips
+
+additionalProperties: false
+
+$defs:
+  config-node:
+    type: object
+    properties:
+      function:
+        $ref: /schemas/types.yaml#/definitions/string
+      groups:
+        $ref: /schemas/types.yaml#/definitions/string-array
+      pins:
+        $ref: /schemas/types.yaml#/definitions/string-array
+      ste,config:
+        description: Shared pin configuration to apply.
+        $ref: /schemas/types.yaml#/definitions/phandle
+      ste,input:
+        description: Input pull configuration.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 2
+      ste,output:
+        description: Output value.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 2
+      ste,gpio:
+        description: GPIO mode enable.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 1
+      ste,sleep:
+        description: Sleep mode enable.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 1
+      ste,sleep-input:
+        description: Sleep input pull configuration.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 3
+      ste,sleep-output:
+        description: Sleep output value.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 2
+      ste,sleep-gpio:
+        description: Sleep GPIO mode enable.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 1
+      ste,sleep-wakeup:
+        description: Sleep wakeup disable.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 1
+      ste,sleep-pull-disable:
+        description: Sleep pull resistor disable.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 1
+    patternProperties:
+      '^(?!phandle$|pins$|groups$|function$)[a-zA-Z0-9_-]+$':
+        $ref: '#/$defs/config-node'
+    additionalProperties: false
+
+examples:
+  - |
+    pinctrl {
+        compatible = "stericsson,db8500-pinctrl";
+        nomadik-gpio-chips = <&gpio0>, <&gpio1>;
+        prcm = <&prcmu>;
+
+        uart0 {
+            uart0-default {
+                mux {
+                    function = "u0";
+                    groups = "u0_a_1";
+                };
+                config {
+                    pins = "GPIO0_AJ5";
+                    ste,input = <1>;
+                };
+            };
+        };
+    };

-- 
2.56.0


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

* Re: [PATCH 2/2] dt-bindings: pinctrl: nomadik: Convert to DT schema
  2026-11-10  9:58 ` [PATCH 2/2] dt-bindings: pinctrl: nomadik: " Linus Walleij
@ 2026-11-10 10:16   ` sashiko-bot
  2026-11-12 14:06   ` Rob Herring
  1 sibling, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-11-10 10:16 UTC (permalink / raw)
  To: Linus Walleij; +Cc: mfd, devicetree, linux-gpio, robh, conor+dt, lee

Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [Low] dt-bindings: pinctrl: nomadik: inverted description for
  ste,sleep-wakeup
- [Low] dt-bindings: pinctrl: nomadik: ste,sleep-gpio is not supported
  by driver
--

commit 42613122aac31a7796978d757c2d840b0d6ab5f2
Author: Linus Walleij <linusw@kernel.org>

dt-bindings: pinctrl: nomadik: Convert to DT schema

This commit converts the ST-Ericsson Nomadik pin controller device tree
binding from plain text to YAML schema.

> diff --git a/Documentation/devicetree/bindings/pinctrl/stericsson,nomadik.yaml b/Documentation/devicetree/bindings/pinctrl/stericsson,nomadik.yaml
> new file mode 100644
> index 0000000000000..48b2b5773946c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/stericsson,nomadik.yaml
> @@ -0,0 +1,113 @@

[ ... ]

> +      ste,sleep-gpio:
> +        description: Sleep GPIO mode enable.
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        maximum: 1

[Severity: Low]
Should ste,sleep-gpio be dropped or marked deprecated here?  When commit
e32af8894588 ("pinctrl/nomadik: add device tree support") added DT
support, the driver implemented ste,gpio in nmk_cfg_params[] while
ste,nomadik.txt mistakenly documented it as ste,sleep-gpio.  Because
nmk_cfg_params[] does not parse ste,sleep-gpio, any device tree using this
property will have it silently ignored at runtime.

> +      ste,sleep-wakeup:
> +        description: Sleep wakeup disable.
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        maximum: 1

[Severity: Low]
Should the description for ste,sleep-wakeup say "Sleep wakeup enable."
to match the sibling boolean-like properties?  Both
include/dt-bindings/pinctrl/nomadik.h (SLPM_WAKEUP_DISABLE = 0,
SLPM_WAKEUP_ENABLE = 1) and nmk_pin_sleep_wakeup_modes[] in
drivers/pinctrl/nomadik/pinctrl-nomadik.c treat 0 as disable and 1 as
enable:

drivers/pinctrl/nomadik/pinctrl-nomadik.c:
static const unsigned long nmk_pin_sleep_wakeup_modes[] = {
	PIN_SLPM_WAKEUP_DISABLE,
	PIN_SLPM_WAKEUP_ENABLE,
};

Describing the property as "Sleep wakeup disable." could mislead device
tree authors into inverting the value.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261110-ux500-pinctrl-bindings-v1-0-a9f0e9d12d19@kernel.org?part=2

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

* Re: [PATCH 1/2] dt-bindings: pinctrl: abx500: Convert to DT schema
  2026-11-10  9:58 ` [PATCH 1/2] dt-bindings: pinctrl: abx500: Convert to DT schema Linus Walleij
@ 2026-11-12 14:05   ` Rob Herring
  0 siblings, 0 replies; 6+ messages in thread
From: Rob Herring @ 2026-11-12 14:05 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Lee Jones, Krzysztof Kozlowski, Conor Dooley, mfd, devicetree,
	linux-gpio

On Tue, Nov 10, 2026 at 10:58:33AM +0100, Linus Walleij wrote:
> Describe the ABx500 GPIO and pin controller in DT schema, including
> the nested mux and configuration groups used by existing boards.
> Reference this schema from the AB8500 MFD instead of rejecting all
> pin configuration children. Found with CHECK_DTBS=1.
> 
> Signed-off-by: Linus Walleij <linusw@kernel.org>
> ---
>  .../devicetree/bindings/mfd/stericsson,ab8500.yaml |  16 +-
>  .../devicetree/bindings/pinctrl/ste,abx500.txt     | 318 ---------------------
>  .../bindings/pinctrl/stericsson,abx500.yaml        |  68 +++++
>  3 files changed, 69 insertions(+), 333 deletions(-)

[...]

> diff --git a/Documentation/devicetree/bindings/pinctrl/stericsson,abx500.yaml b/Documentation/devicetree/bindings/pinctrl/stericsson,abx500.yaml
> new file mode 100644
> index 000000000000..59ca14992427
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/stericsson,abx500.yaml
> @@ -0,0 +1,68 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/pinctrl/stericsson,abx500.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: ST-Ericsson AB8500 and AB8505 GPIO and pin controller
> +
> +maintainers:
> +  - Linus Walleij <linusw@kernel.org>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - stericsson,ab8500-gpio
> +      - stericsson,ab8505-gpio
> +
> +  gpio-controller: true
> +
> +  '#gpio-cells':
> +    const: 2
> +
> +  gpio-line-names:
> +    minItems: 1
> +    maxItems: 53
> +
> +patternProperties:
> +  '^(?!phandle$|compatible$|gpio-controller$|gpio-line-names$|pinctrl-[0-9]+$|pinctrl-names$)[a-zA-Z0-9_-]+$':

Yuck! Looks like you want just any name which can be expressed as:

additionalProperties:
  $ref: '#/$defs/config-node'


> +    $ref: '#/$defs/config-node'
> +
> +required:
> +  - compatible
> +  - gpio-controller
> +  - '#gpio-cells'
> +
> +additionalProperties: false
> +
> +$defs:
> +  config-node:
> +    type: object
> +    allOf:
> +      - $ref: pincfg-node.yaml#
> +      - $ref: pinmux-node.yaml#
> +    patternProperties:
> +      '^(?!phandle$|pins$|groups$|function$|bias-.*$|drive-.*$|input-.*$|output-.*$|power-source$|slew-rate$|low-power-.*$|persist-state$|skew-delay$)[a-zA-Z0-9_-]+$':
> +        $ref: '#/$defs/config-node'
> +    unevaluatedProperties: false

       unevaluatedProperties:
         $ref: '#/$defs/config-node'

Rob

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

* Re: [PATCH 2/2] dt-bindings: pinctrl: nomadik: Convert to DT schema
  2026-11-10  9:58 ` [PATCH 2/2] dt-bindings: pinctrl: nomadik: " Linus Walleij
  2026-11-10 10:16   ` sashiko-bot
@ 2026-11-12 14:06   ` Rob Herring
  1 sibling, 0 replies; 6+ messages in thread
From: Rob Herring @ 2026-11-12 14:06 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Lee Jones, Krzysztof Kozlowski, Conor Dooley, mfd, devicetree,
	linux-gpio

On Tue, Nov 10, 2026 at 10:58:34AM +0100, Linus Walleij wrote:
> Describe the Nomadik and DB8500 pin controllers, GPIO bank references
> and nested pin configurations in DT schema. Preserve the existing
> ste,config references and numeric configuration encodings. This adds
> validation for the pin groups in the Ux500 board trees.
> 
> Signed-off-by: Linus Walleij <linusw@kernel.org>
> ---
>  .../devicetree/bindings/pinctrl/ste,nomadik.txt    | 148 ---------------------
>  .../bindings/pinctrl/stericsson,nomadik.yaml       | 113 ++++++++++++++++
>  2 files changed, 113 insertions(+), 148 deletions(-)

Same comments for this one.

Rob

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

end of thread, other threads:[~2026-11-12 14:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-10  9:58 [PATCH 0/2] dt-bindings: pinctrl: Convert ABx500 and Nomadik bindings to schema Linus Walleij
2026-11-10  9:58 ` [PATCH 1/2] dt-bindings: pinctrl: abx500: Convert to DT schema Linus Walleij
2026-11-12 14:05   ` Rob Herring
2026-11-10  9:58 ` [PATCH 2/2] dt-bindings: pinctrl: nomadik: " Linus Walleij
2026-11-10 10:16   ` sashiko-bot
2026-11-12 14:06   ` Rob Herring

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