mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
dt-bindings: pinctrl: brcm,nsp-gpio: Convert to DT schema
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 in bcm-nsp.dtsi. Convert the text binding to DT schema. Beyond a direct conversion: - Require pin configuration nodes to use a '-pins' suffix and GPIO hogs a '-hog' suffix, as the old example used arbitrary node names. No in-tree DTS has child nodes under this controller, so nothing is affected. - Document slew-rate, which the driver supports but the text binding never listed. - Add #interrupt-cells and gpio-line-names, and make #interrupt-cells depend on interrupt-controller. Assisted-by: LLM Signed-off-by: Rosen Penev <rosenp@gmail.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Linus Walleij <linusw@kernel.org>
This commit is contained in:
parent
2430546e8d
commit
4f0dbdbdb3
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
130
Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.yaml
Normal file
130
Documentation/devicetree/bindings/pinctrl/brcm,nsp-gpio.yaml
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
# 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, slew rate and drive strength. Pin
|
||||
configuration is described in '-pins' child nodes, referenced 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
|
||||
|
||||
gpio-line-names: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#gpio-cells"
|
||||
- gpio-controller
|
||||
- ngpios
|
||||
|
||||
dependencies:
|
||||
interrupt-controller: ['#interrupt-cells']
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pincfg-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 ]
|
||||
|
||||
slew-rate:
|
||||
description: 0 disables and 1 enables slew rate control
|
||||
enum: [ 0, 1 ]
|
||||
|
||||
required:
|
||||
- pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
'-hog(-[0-9]+)?$':
|
||||
type: object
|
||||
required:
|
||||
- gpio-hog
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
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>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&led_pins>;
|
||||
|
||||
led_pins: led-pins {
|
||||
pins = "gpio-1";
|
||||
bias-pull-up;
|
||||
drive-strength = <16>;
|
||||
};
|
||||
|
||||
/* GPIO hog */
|
||||
pwr-hog {
|
||||
gpio-hog;
|
||||
gpios = <3 1>;
|
||||
output-high;
|
||||
};
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user