From: Rosen Penev <rosenp@gmail.com>
To: devicetree@vger.kernel.org
Cc: Linus Walleij <linusw@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Ray Jui <rjui@broadcom.com>,
Scott Branden <sbranden@broadcom.com>,
linux-gpio@vger.kernel.org (open list:PIN CONTROL SUBSYSTEM),
linux-kernel@vger.kernel.org (open list)
Subject: [PATCHv2] dt-bindings: pinctrl: convert nsp-gpio binding
Date: Thu, 24 Sep 2026 16:35:41 -0700 [thread overview]
Message-ID: <20260924233541.126868-1-rosenp@gmail.com> (raw)
The brcm,nsp-gpio-a compatible used by the NSP GPIO controller was only
documented in the legacy text binding, so dtbs_check reported "failed to
match any schema" for the gpio@20 node present in the bcm958625 and
related broadcom boards.
Convert Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.txt to
a YAML schema and drop the text binding. Keep the existing required and
optional properties (reg, #gpio-cells, gpio-controller, ngpios, and the
optional interrupt/gpio-ranges support), including the generic pinconf
child nodes with pin bias and drive-strength.
Pin configuration nodes may be direct children of the controller or
grouped under a "-pins" node; both forms are recognized, and each "-pins"
node may group further pin configuration children. Child nodes named
"-hog" are supported as GPIO hogs.
Assisted-by: LLM
Signed-off-by: Rosen Penyev <rosenp@gmail.com>
---
v2: don't drop gpio-hog
.../bindings/pinctrl/brcm,nsp-gpio.txt | 80 ----------
.../bindings/pinctrl/brcm,nsp-gpio.yaml | 139 ++++++++++++++++++
2 files changed, 139 insertions(+), 80 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.txt
create mode 100644 Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.yaml
diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.txt
deleted file mode 100644
index 0844168a6dd4..000000000000
--- a/Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-Broadcom Northstar plus (NSP) GPIO/PINCONF Controller
-
-Required properties:
-- compatible:
- Must be "brcm,nsp-gpio-a"
-
-- reg:
- Should contain the register physical address and length for each of
- GPIO base, IO control registers
-
-- #gpio-cells:
- Must be two. The first cell is the GPIO pin number (within the
- controller's pin space) and the second cell is used for the following:
- bit[0]: polarity (0 for active high and 1 for active low)
-
-- gpio-controller:
- Specifies that the node is a GPIO controller
-
-- ngpios:
- Number of gpios supported (58x25 supports 32 and 58x23 supports 24)
-
-Optional properties:
-- interrupts:
- Interrupt ID
-
-- interrupt-controller:
- Specifies that the node is an interrupt controller
-
-- gpio-ranges:
- Specifies the mapping between gpio controller and pin-controllers pins.
- This requires 4 fields in cells defined as -
- 1. Phandle of pin-controller.
- 2. GPIO base pin offset.
- 3 Pin-control base pin offset.
- 4. number of gpio pins which are linearly mapped from pin base.
-
-Supported generic PINCONF properties in child nodes:
-- pins:
- The list of pins (within the controller's own pin space) that properties
- in the node apply to. Pin names are "gpio-<pin>"
-
-- bias-disable:
- Disable pin bias
-
-- bias-pull-up:
- Enable internal pull up resistor
-
-- bias-pull-down:
- Enable internal pull down resistor
-
-- drive-strength:
- Valid drive strength values include 2, 4, 6, 8, 10, 12, 14, 16 (mA)
-
-Example:
-
- gpioa: gpio@18000020 {
- compatible = "brcm,nsp-gpio-a";
- reg = <0x18000020 0x100>,
- <0x1803f1c4 0x1c>;
- #gpio-cells = <2>;
- gpio-controller;
- ngpios = <32>;
- gpio-ranges = <&pinctrl 0 0 31>;
- interrupt-controller;
- interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
-
- /* Hog a few default settings */
- pinctrl-names = "default";
- pinctrl-0 = <&led>;
- led: led {
- pins = "gpio-1";
- bias-pull-up;
- };
-
- pwr: pwr {
- gpio-hog;
- gpios = <3 1>;
- output-high;
- };
- };
diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.yaml b/Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.yaml
new file mode 100644
index 000000000000..d7f9a1eb3b93
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.yaml
@@ -0,0 +1,139 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/brcm,nsp-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom Northstar Plus (NSP) GPIO/PINCONF Controller
+
+maintainers:
+ - Ray Jui <rjui@broadcom.com>
+ - Scott Branden <sbranden@broadcom.com>
+
+description: |
+ The chipCommonA GPIO block also provides generic pin configuration for the
+ pins it controls: bias, pull up/down and drive strength. Pin configuration
+ child nodes may be direct children of the controller, or grouped under a
+ '-pins' node. In both cases the pin configuration nodes are referenced by
+ the consuming device through the standard pinctrl-0/pinctrl-names
+ properties. Child nodes named '*-hog' are treated as GPIO hogs.
+
+properties:
+ compatible:
+ const: brcm,nsp-gpio-a
+
+ reg:
+ items:
+ - description: GPIO base registers
+ - description: IO control registers
+
+ "#gpio-cells":
+ const: 2
+ description: |
+ The first cell is the GPIO pin number (within the controller's pin
+ space) and the second cell is used for the following:
+ bit[0]: polarity (0 for active high and 1 for active low)
+
+ gpio-controller: true
+
+ ngpios:
+ description: Number of GPIOs supported (58x25 supports 32 and 58x23 supports 24)
+ maximum: 32
+
+ interrupts:
+ maxItems: 1
+
+ "#interrupt-cells":
+ const: 2
+
+ interrupt-controller: true
+
+ gpio-ranges: true
+
+required:
+ - compatible
+ - reg
+ - "#gpio-cells"
+ - gpio-controller
+ - ngpios
+
+$defs:
+ nsp-gpio-pinconf:
+ type: object
+ allOf:
+ - $ref: pincfg-node.yaml#
+ - $ref: pinmux-node.yaml#
+
+ properties:
+ pins:
+ $ref: /schemas/types.yaml#/definitions/string-array
+ items:
+ pattern: '^gpio-'
+
+ bias-disable: true
+ bias-pull-up: true
+ bias-pull-down: true
+
+ drive-strength:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 2, 4, 6, 8, 10, 12, 14, 16 ]
+
+ required:
+ - pins
+
+patternProperties:
+ '-pins$':
+ oneOf:
+ - $ref: '#/$defs/nsp-gpio-pinconf'
+ - type: object
+ additionalProperties:
+ $ref: '#/$defs/nsp-gpio-pinconf'
+
+ '-hog(-[0-9]+)?$':
+ type: object
+ required:
+ - gpio-hog
+
+additionalProperties:
+ $ref: '#/$defs/nsp-gpio-pinconf'
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+ gpio@18000020 {
+ compatible = "brcm,nsp-gpio-a";
+ reg = <0x18000020 0x100>,
+ <0x1803f1c4 0x1c>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ ngpios = <32>;
+ gpio-ranges = <&pinctrl 0 0 31>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+
+ /* Pin configuration node applied as a pinctrl state */
+ pinctrl-names = "default";
+ pinctrl-0 = <&led>;
+
+ led: led {
+ pins = "gpio-1";
+ bias-pull-up;
+ };
+
+ /* Pin configuration nodes may also be grouped under a '-pins' node */
+ pwm-pins {
+ pwm {
+ pins = "gpio-0";
+ drive-strength = <16>;
+ };
+ };
+
+ /* GPIO hog */
+ pwr-hog {
+ gpio-hog;
+ gpios = <3 1>;
+ output-high;
+ };
+ };
--
2.55.0
reply other threads:[~2026-09-24 23:35 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260924233541.126868-1-rosenp@gmail.com \
--to=rosenp@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rjui@broadcom.com \
--cc=robh@kernel.org \
--cc=sbranden@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®