* [PATCH v4 1/3] dt-bindings: gpio: gpio-mvebu: convert txt binding to DT schema format
2022-05-26 1:29 [PATCH v4 0/3] dt-bindings: gpio: gpio-mvebu: Convert to DT schema format Chris Packham
@ 2022-05-26 1:29 ` Chris Packham
2022-05-26 12:26 ` Krzysztof Kozlowski
2022-05-26 1:29 ` [PATCH v4 2/3] dt-bindings: gpio: gpio-mvebu: deprecate armadaxp-gpio Chris Packham
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Chris Packham @ 2022-05-26 1:29 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, linus.walleij, brgl,
thierry.reding, u.kleine-koenig, lee.jones, andrew,
thomas.petazzoni
Cc: devicetree, linux-kernel, linux-gpio, linux-pwm, Chris Packham
Convert the existing device tree binding to DT schema format.
The old binding listed the interrupt-controller and related properties
as required but there are sufficiently many existing usages without it
that the YAML binding does not make the interrupt properties required.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
Notes:
Changes in v4:
- Set Thomas and Andrew as maintainers based on lines-authored in the
gpio-mvebu.c driver
- Use "DT schema format" instead of YAML in subject
- Add regNames.minItems constraint for armadaxp
Changes in v3:
- Correct indent in example
- Move offset and marvell,pwm-offset to separate patch
- Correct some documentation cross references
Changes in v2:
- Collect review from Andrew
- Remove unnecessary/obvious property descriptions
- Clarify reg property requirements for armadaxp vs the rest. Enforce
these with a variant specific constraint.
- Update compatible property requirements. marvell,orion-gpio and
marvell,armada-8k-gpio can be used on their own. Everything else needs
marvell,orion-gpio as a fallback.
- Correct example to include marvell,orion-gpio fallback
.../arm/marvell/ap80x-system-controller.txt | 2 +-
.../arm/marvell/cp110-system-controller.txt | 2 +-
.../devicetree/bindings/gpio/gpio-mvebu.txt | 93 -----------
.../devicetree/bindings/gpio/gpio-mvebu.yaml | 146 ++++++++++++++++++
MAINTAINERS | 2 +-
5 files changed, 149 insertions(+), 96 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
create mode 100644 Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
diff --git a/Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt b/Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt
index 052a967c1f28..c83245065d44 100644
--- a/Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt
+++ b/Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt
@@ -72,7 +72,7 @@ mpp19 19 gpio, uart0(rxd), sdio(pw_off)
GPIO:
-----
For common binding part and usage, refer to
-Documentation/devicetree/bindings/gpio/gpio-mvebu.txt.
+Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml.
Required properties:
diff --git a/Documentation/devicetree/bindings/arm/marvell/cp110-system-controller.txt b/Documentation/devicetree/bindings/arm/marvell/cp110-system-controller.txt
index 0705e765f432..d84105c7c935 100644
--- a/Documentation/devicetree/bindings/arm/marvell/cp110-system-controller.txt
+++ b/Documentation/devicetree/bindings/arm/marvell/cp110-system-controller.txt
@@ -156,7 +156,7 @@ GPIO:
-----
For common binding part and usage, refer to
-Documentation/devicetree/bindings/gpio/gpio-mvebu.txt.
+Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml.
Required properties:
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mvebu.txt b/Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
deleted file mode 100644
index 0fc6700ed800..000000000000
--- a/Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-* Marvell EBU GPIO controller
-
-Required properties:
-
-- compatible : Should be "marvell,orion-gpio", "marvell,mv78200-gpio",
- "marvell,armadaxp-gpio" or "marvell,armada-8k-gpio".
-
- "marvell,orion-gpio" should be used for Orion, Kirkwood, Dove,
- Discovery (except MV78200) and Armada 370. "marvell,mv78200-gpio"
- should be used for the Discovery MV78200.
-
- "marvel,armadaxp-gpio" should be used for all Armada XP SoCs
- (MV78230, MV78260, MV78460).
-
- "marvell,armada-8k-gpio" should be used for the Armada 7K and 8K
- SoCs (either from AP or CP), see
- Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt
- for specific details about the offset property.
-
-- reg: Address and length of the register set for the device. Only one
- entry is expected, except for the "marvell,armadaxp-gpio" variant
- for which two entries are expected: one for the general registers,
- one for the per-cpu registers. Not used for marvell,armada-8k-gpio.
-
-- interrupts: The list of interrupts that are used for all the pins
- managed by this GPIO bank. There can be more than one interrupt
- (example: 1 interrupt per 8 pins on Armada XP, which means 4
- interrupts per bank of 32 GPIOs).
-
-- interrupt-controller: identifies the node as an interrupt controller
-
-- #interrupt-cells: specifies the number of cells needed to encode an
- interrupt source. Should be two.
- The first cell is the GPIO number.
- The second cell is used to specify flags:
- bits[3:0] trigger type and level flags:
- 1 = low-to-high edge triggered.
- 2 = high-to-low edge triggered.
- 4 = active high level-sensitive.
- 8 = active low level-sensitive.
-
-- gpio-controller: marks the device node as a gpio controller
-
-- ngpios: number of GPIOs this controller has
-
-- #gpio-cells: Should be two. The first cell is the pin number. The
- second cell is reserved for flags, unused at the moment.
-
-Optional properties:
-
-In order to use the GPIO lines in PWM mode, some additional optional
-properties are required.
-
-- compatible: Must contain "marvell,armada-370-gpio"
-
-- reg: an additional register set is needed, for the GPIO Blink
- Counter on/off registers.
-
-- reg-names: Must contain an entry "pwm" corresponding to the
- additional register range needed for PWM operation.
-
-- #pwm-cells: Should be two. The first cell is the GPIO line number. The
- second cell is the period in nanoseconds.
-
-- clocks: Must be a phandle to the clock for the GPIO controller.
-
-Example:
-
- gpio0: gpio@d0018100 {
- compatible = "marvell,armadaxp-gpio";
- reg = <0xd0018100 0x40>,
- <0xd0018800 0x30>;
- ngpios = <32>;
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- interrupts = <16>, <17>, <18>, <19>;
- };
-
- gpio1: gpio@18140 {
- compatible = "marvell,armada-370-gpio";
- reg = <0x18140 0x40>, <0x181c8 0x08>;
- reg-names = "gpio", "pwm";
- ngpios = <17>;
- gpio-controller;
- #gpio-cells = <2>;
- #pwm-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- interrupts = <87>, <88>, <89>;
- clocks = <&coreclk 0>;
- };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml b/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
new file mode 100644
index 000000000000..d1695e7bd825
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
@@ -0,0 +1,146 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/gpio-mvebu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell EBU GPIO controller
+
+maintainers:
+ - Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+ - Andrew Lunn <andrew@lunn.ch>
+
+properties:
+ compatible:
+ oneOf:
+ - enum:
+ - marvell,armada-8k-gpio
+ - marvell,orion-gpio
+
+ - items:
+ - enum:
+ - marvell,mv78200-gpio
+ - marvell,armada-370-gpio
+ - marvell,armadaxp-gpio
+ - const: marvell,orion-gpio
+
+ reg:
+ description: |
+ Address and length of the register set for the device. Not used for
+ marvell,armada-8k-gpio.
+
+ For the "marvell,armadaxp-gpio" variant a second entry is expected for
+ the per-cpu registers. For other variants second entry can be provided,
+ for the PWM function using the GPIO Blink Counter on/off registers.
+ minItems: 1
+ maxItems: 2
+
+ reg-names:
+ items:
+ - const: gpio
+ - const: pwm
+ minItems: 1
+
+ interrupts:
+ description: |
+ The list of interrupts that are used for all the pins managed by this
+ GPIO bank. There can be more than one interrupt (example: 1 interrupt
+ per 8 pins on Armada XP, which means 4 interrupts per bank of 32
+ GPIOs).
+ minItems: 1
+ maxItems: 4
+
+ interrupt-controller: true
+
+ "#interrupt-cells":
+ const: 2
+
+ gpio-controller: true
+
+ ngpios:
+ minimum: 1
+ maximum: 32
+
+ "#gpio-cells":
+ const: 2
+
+ "#pwm-cells":
+ description:
+ The first cell is the GPIO line number. The second cell is the period
+ in nanoseconds.
+ const: 2
+
+ clocks:
+ description:
+ Clock(s) used for PWM function.
+ items:
+ - description: Core clock
+ - description: AXI bus clock
+ minItems: 1
+
+ clock-names:
+ items:
+ - const: core
+ - const: axi
+ minItems: 1
+
+required:
+ - compatible
+ - gpio-controller
+ - ngpios
+ - "#gpio-cells"
+
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: marvell,armada-8k-gpio
+ then:
+ required:
+ - offset
+ else:
+ required:
+ - reg
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: marvell,armadaxp-gpio
+ then:
+ properties:
+ reg:
+ minItems: 2
+ reg-names:
+ minItems: 2
+
+unevaluatedProperties: true
+
+examples:
+ - |
+ gpio@d0018100 {
+ compatible = "marvell,armadaxp-gpio", "marvell,orion-gpio";
+ reg = <0xd0018100 0x40>, <0xd0018800 0x30>;
+ ngpios = <32>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ interrupts = <16>, <17>, <18>, <19>;
+ };
+
+ - |
+ gpio@18140 {
+ compatible = "marvell,armada-370-gpio", "marvell,orion-gpio";
+ reg = <0x18140 0x40>, <0x181c8 0x08>;
+ reg-names = "gpio", "pwm";
+ ngpios = <17>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ #pwm-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ interrupts = <87>, <88>, <89>;
+ clocks = <&coreclk 0>;
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 55114e73de26..e15a4d574a32 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -16134,7 +16134,7 @@ L: linux-pwm@vger.kernel.org
S: Maintained
Q: https://patchwork.ozlabs.org/project/linux-pwm/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git
-F: Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
+F: Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
F: Documentation/devicetree/bindings/pwm/
F: Documentation/driver-api/pwm.rst
F: drivers/gpio/gpio-mvebu.c
--
2.36.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v4 2/3] dt-bindings: gpio: gpio-mvebu: deprecate armadaxp-gpio
2022-05-26 1:29 [PATCH v4 0/3] dt-bindings: gpio: gpio-mvebu: Convert to DT schema format Chris Packham
2022-05-26 1:29 ` [PATCH v4 1/3] dt-bindings: gpio: gpio-mvebu: convert txt binding " Chris Packham
@ 2022-05-26 1:29 ` Chris Packham
2022-05-26 12:27 ` Krzysztof Kozlowski
2022-11-28 7:59 ` Pali Rohár
2022-05-26 1:29 ` [PATCH v4 3/3] dt-bindings: gpio: gpio-mvebu: document offset and marvell,pwm-offset Chris Packham
2022-06-23 20:25 ` [PATCH v4 0/3] dt-bindings: gpio: gpio-mvebu: Convert to DT schema format Bartosz Golaszewski
3 siblings, 2 replies; 11+ messages in thread
From: Chris Packham @ 2022-05-26 1:29 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, linus.walleij, brgl,
thierry.reding, u.kleine-koenig, lee.jones, andrew,
thomas.petazzoni
Cc: devicetree, linux-kernel, linux-gpio, linux-pwm, Chris Packham
Commit 5f79c651e81e ("arm: mvebu: use global interrupts for GPIOs on
Armada XP") the marvell,armadaxp-gpio compatible obsolete.
The driver code still exists to handle the armadaxp behaviour but all
the in-tree boards use the marvell,armada-370-gpio. Document the
marvell,armadaxp-gpio compatible as deprecated.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
This could potentially be squashed into the first commit but it seemed
more proper to do a straight 1:1 conversion of the old binding then
clean things up to match reality.
Changes in v4:
- New
.../devicetree/bindings/gpio/gpio-mvebu.yaml | 24 +++++++------------
1 file changed, 8 insertions(+), 16 deletions(-)
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml b/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
index d1695e7bd825..459ec35864fe 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
@@ -21,17 +21,21 @@ properties:
- enum:
- marvell,mv78200-gpio
- marvell,armada-370-gpio
- - marvell,armadaxp-gpio
- const: marvell,orion-gpio
+ - description: Deprecated binding
+ items:
+ - const: marvell,armadaxp-gpio
+ - const: marvell,orion-gpio
+ deprecated: true
+
reg:
description: |
Address and length of the register set for the device. Not used for
marvell,armada-8k-gpio.
- For the "marvell,armadaxp-gpio" variant a second entry is expected for
- the per-cpu registers. For other variants second entry can be provided,
- for the PWM function using the GPIO Blink Counter on/off registers.
+ A second entry can be provided, for the PWM function using the GPIO Blink
+ Counter on/off registers.
minItems: 1
maxItems: 2
@@ -103,18 +107,6 @@ allOf:
required:
- reg
- - if:
- properties:
- compatible:
- contains:
- const: marvell,armadaxp-gpio
- then:
- properties:
- reg:
- minItems: 2
- reg-names:
- minItems: 2
-
unevaluatedProperties: true
examples:
--
2.36.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v4 3/3] dt-bindings: gpio: gpio-mvebu: document offset and marvell,pwm-offset
2022-05-26 1:29 [PATCH v4 0/3] dt-bindings: gpio: gpio-mvebu: Convert to DT schema format Chris Packham
2022-05-26 1:29 ` [PATCH v4 1/3] dt-bindings: gpio: gpio-mvebu: convert txt binding " Chris Packham
2022-05-26 1:29 ` [PATCH v4 2/3] dt-bindings: gpio: gpio-mvebu: deprecate armadaxp-gpio Chris Packham
@ 2022-05-26 1:29 ` Chris Packham
2022-06-19 20:13 ` Uwe Kleine-König
2022-06-22 13:54 ` Thierry Reding
2022-06-23 20:25 ` [PATCH v4 0/3] dt-bindings: gpio: gpio-mvebu: Convert to DT schema format Bartosz Golaszewski
3 siblings, 2 replies; 11+ messages in thread
From: Chris Packham @ 2022-05-26 1:29 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, linus.walleij, brgl,
thierry.reding, u.kleine-koenig, lee.jones, andrew,
thomas.petazzoni
Cc: devicetree, linux-kernel, linux-gpio, linux-pwm, Chris Packham
The offset and marvell,pwm-offset properties weren't in the old binding.
Add them based on the existing usage in the driver and board DTS when
the marvell,armada-8k-gpio compatible is used.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
Notes:
Changes in v4:
- Reword commit message slightly
- Add review from Krzysztof
Changes in v3:
- Split off from 1:1 conversion patch
Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml b/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
index 459ec35864fe..f1bd1e6b2e1f 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
@@ -45,6 +45,10 @@ properties:
- const: pwm
minItems: 1
+ offset:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Offset in the register map for the gpio registers (in bytes)
+
interrupts:
description: |
The list of interrupts that are used for all the pins managed by this
@@ -68,6 +72,10 @@ properties:
"#gpio-cells":
const: 2
+ marvell,pwm-offset:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Offset in the register map for the pwm registers (in bytes)
+
"#pwm-cells":
description:
The first cell is the GPIO line number. The second cell is the period
--
2.36.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v4 0/3] dt-bindings: gpio: gpio-mvebu: Convert to DT schema format
2022-05-26 1:29 [PATCH v4 0/3] dt-bindings: gpio: gpio-mvebu: Convert to DT schema format Chris Packham
` (2 preceding siblings ...)
2022-05-26 1:29 ` [PATCH v4 3/3] dt-bindings: gpio: gpio-mvebu: document offset and marvell,pwm-offset Chris Packham
@ 2022-06-23 20:25 ` Bartosz Golaszewski
3 siblings, 0 replies; 11+ messages in thread
From: Bartosz Golaszewski @ 2022-06-23 20:25 UTC (permalink / raw)
To: Chris Packham
Cc: Rob Herring, Krzysztof Kozlowski, Linus Walleij, Thierry Reding,
Uwe Kleine-König, Lee Jones, Andrew Lunn, Thomas Petazzoni,
devicetree, Linux Kernel Mailing List, open list:GPIO SUBSYSTEM,
open list:PWM SUBSYSTEM
On Thu, May 26, 2022 at 3:29 AM Chris Packham
<chris.packham@alliedtelesis.co.nz> wrote:
>
> The 1st patch converts the old binding mostly 1:1.
> The 2nd patch deprecates the unused marvell,armadaxp compatible.
> The 3rd patch documents the existing usage of the offset/marvell,pwm-offset
> properties.
>
> Chris Packham (3):
> dt-bindings: gpio: gpio-mvebu: convert txt binding to DT schema format
> dt-bindings: gpio: gpio-mvebu: deprecate armadaxp-gpio
> dt-bindings: gpio: gpio-mvebu: document offset and marvell,pwm-offset
>
> .../arm/marvell/ap80x-system-controller.txt | 2 +-
> .../arm/marvell/cp110-system-controller.txt | 2 +-
> .../devicetree/bindings/gpio/gpio-mvebu.txt | 93 -----------
> .../devicetree/bindings/gpio/gpio-mvebu.yaml | 146 ++++++++++++++++++
> MAINTAINERS | 2 +-
> 5 files changed, 149 insertions(+), 96 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
> create mode 100644 Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
>
> --
> 2.36.1
>
Applied the series, thanks!
Bart
^ permalink raw reply [flat|nested] 11+ messages in thread