Discussion:
[PATCH 00/28] DT: Improve validation for Marvell SoCs
(too old to reply)
Lubomir Rintel
2020-03-17 09:38:54 UTC
Permalink
Hello World,

chained to this message is a set of patches that improve coverage of Device
Tree validation for devices typically found on Marvell SoCs. It converts most
of the peripheral binding documentation to YAML and fixes up validation issues
in the SoC device trees.

It starts with fixing the issues:

[PATCH 01/28] ARM: dts: kirkwood: Fix interrupt controller node name
[PATCH 02/28] ARM: dts: dove: Fix interrupt controller node name
[PATCH 03/28] ARM: dts: pxa168: Add missing address/size cells to i2c
[PATCH 04/28] ARM: dts: pxa168: Fix the gpio interrupt cell number
[PATCH 05/28] ARM: dts: pxa3xx: Fix up encoding of the /gpio
[PATCH 06/28] ARM: dts: pxa910: Fix the gpio interrupt cell number
[PATCH 07/28] ARM: dts: pxa*: Fix up encoding of the /rtc interrupts
[PATCH 08/28] ARM: dts: mmp*: Fix up encoding of the /rtc interrupts
[PATCH 09/28] ARM: dts: mmp3: fix L2 cache controller node name
[PATCH 10/28] ARM: dts: mmp3: fix USB & USB PHY node names
[PATCH 11/28] ARM: dts: berlin*: Fix up the SDHCI node names

Then the binding fixes follow.

When converting .txt binding files that were not written by myself,
I didn't include the SPDX license tag and set the maintaners: to the
devicetree@ list. The reason is that the original binding files don't
contain the information and I didn't want to speak for anyone else and
make it up.

If this is not the correct thing to do, or the respective binding
contributors want to clarify the licensing or be listed as maintainers,
please respond and I'll send an updated patch set. I'm also happy to
maintain any of these bindings.

[PATCH 12/28] spi: dt-bindings: spi-controller: Slaves have no
[PATCH 13/28] dt-bindings: serial: move Marvell compatible string to
[PATCH 14/28] dt-bindings: arm: l2x0: Tauros 3 is PL310 compatible
[PATCH 15/28] dt-bindings: arm: mrvl: Add missing compatible strings
[PATCH 16/28] dt-bindings: Add "mrvl", a legacy vendor prefix for
[PATCH 17/28] dt-bindings: mmc: Fix up clk-phase-sd-hs in an example
[PATCH 18/28] dt-bindings: mmc: Fix node name in an example
[PATCH 19/28] dt-bindings: mmc: Convert sdhci-pxa to json-schema
[PATCH 20/28] dt-bindings: phy: Convert phy-mmp3-usb to json-schema
[PATCH 21/28] dt-bindings: gpio: Convert mrvl-gpio to json-schema
[PATCH 22/28] dt-bindings: i2c: Convert i2c-pxa to json-schema
[PATCH 23/28] dt-bindings: interrupt-controller: Convert mrvl,intc to
[PATCH 24/28] dt-bindings: media: Convert marvell,mmp2-ccic to
[PATCH 25/28] dt-bindings: rtc: Convert sa1100-rtc to json-schema
[PATCH 26/28] dt-bindings: spi: Convert spi-pxa2xx to json-schema
[PATCH 27/28] dt-bindings: timer: Convert mrvl,mmp-timer to
[PATCH 28/28] dt-bindings: usb: Convert ehci-mv to json-schema

None of the patches depends on any other and they can be applied in any
order.

Love,
Lubo
Lubomir Rintel
2020-03-17 09:38:55 UTC
Permalink
The current ones makes validation unhappy:

kirkwood-lsxhl.dt.yaml: main-interrupt-***@20200: $nodename:0:
'main-interrupt-***@20200' does not match
'^interrupt-controller(@[0-9a-f,]+)*$'

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/kirkwood.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi
index 2161e23bd98ef..6c8d94beae78f 100644
--- a/arch/arm/boot/dts/kirkwood.dtsi
+++ b/arch/arm/boot/dts/kirkwood.dtsi
@@ -228,7 +228,7 @@ l2: l2-***@20128 {
reg = <0x20128 0x4>;
};

- intc: main-interrupt-***@20200 {
+ intc: interrupt-***@20200 {
compatible = "marvell,orion-intc";
interrupt-controller;
#interrupt-cells = <1>;
--
2.25.1
Andrew Lunn
2020-03-17 13:20:18 UTC
Permalink
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:38:56 UTC
Permalink
The current ones makes validation unhappy:

dove-d3plug.dt.yaml: main-interrupt-***@20200: $nodename:0:
'main-interrupt-***@20200' does not match
'^interrupt-controller(@[0-9a-f,]+)*$'

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/dove.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi
index 3081b04e8c08f..ddd4653f52811 100644
--- a/arch/arm/boot/dts/dove.dtsi
+++ b/arch/arm/boot/dts/dove.dtsi
@@ -248,7 +248,7 @@ bridge_intc: bridge-interrupt-***@20110 {
marvell,#interrupts = <5>;
};

- intc: main-interrupt-***@20200 {
+ intc: interrupt-***@20200 {
compatible = "marvell,orion-intc";
interrupt-controller;
#interrupt-cells = <1>;
--
2.25.1
Andrew Lunn
2020-03-17 13:20:32 UTC
Permalink
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:38:57 UTC
Permalink
This makes the nodes compatible with the generic i2c binding without the
board DTS files having to supply the necessary properties themselves.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/pxa168.dtsi | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/pxa168.dtsi b/arch/arm/boot/dts/pxa168.dtsi
index 72f8cb60cb531..c39d00fe07982 100644
--- a/arch/arm/boot/dts/pxa168.dtsi
+++ b/arch/arm/boot/dts/pxa168.dtsi
@@ -116,6 +116,8 @@ gcb3: ***@d4019100 {

twsi1: ***@d4011000 {
compatible = "mrvl,mmp-twsi";
+ #address-cells = <1>;
+ #size-cells = <0>;
reg = <0xd4011000 0x1000>;
interrupts = <7>;
clocks = <&soc_clocks PXA168_CLK_TWSI0>;
@@ -126,6 +128,8 @@ twsi1: ***@d4011000 {

twsi2: ***@d4025000 {
compatible = "mrvl,mmp-twsi";
+ #address-cells = <1>;
+ #size-cells = <0>;
reg = <0xd4025000 0x1000>;
interrupts = <58>;
clocks = <&soc_clocks PXA168_CLK_TWSI1>;
--
2.25.1
Andrew Lunn
2020-03-17 13:21:18 UTC
Permalink
Post by Lubomir Rintel
This makes the nodes compatible with the generic i2c binding without the
board DTS files having to supply the necessary properties themselves.
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:38:58 UTC
Permalink
gpio-pxa uses two cell to encode the interrupt source: the pin number
and the trigger type. Adjust the device node accordingly.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/pxa168.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/pxa168.dtsi b/arch/arm/boot/dts/pxa168.dtsi
index c39d00fe07982..c6ac85e362d8a 100644
--- a/arch/arm/boot/dts/pxa168.dtsi
+++ b/arch/arm/boot/dts/pxa168.dtsi
@@ -94,7 +94,7 @@ ***@d4019000 {
resets = <&soc_clocks PXA168_CLK_GPIO>;
interrupt-names = "gpio_mux";
interrupt-controller;
- #interrupt-cells = <1>;
+ #interrupt-cells = <2>;
ranges;

gcb0: ***@d4019000 {
--
2.25.1
Andrew Lunn
2020-03-17 13:27:46 UTC
Permalink
Post by Lubomir Rintel
gpio-pxa uses two cell to encode the interrupt source: the pin number
and the trigger type. Adjust the device node accordingly.
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:38:59 UTC
Permalink
This way the device tree validator learns that each cell of the property
constitutes a separate item. Otherwise it gets unnecessairly upset:

pxa300-raumfeld-speaker-s.dt.yaml: ***@40e00000: interrupts:
[[8, 9, 10]] is too short

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/pxa3xx.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/pxa3xx.dtsi b/arch/arm/boot/dts/pxa3xx.dtsi
index c237a0e4b12ae..d19674812cd2d 100644
--- a/arch/arm/boot/dts/pxa3xx.dtsi
+++ b/arch/arm/boot/dts/pxa3xx.dtsi
@@ -170,7 +170,7 @@ gpio: ***@40e00000 {
clocks = <&clks CLK_GPIO>;
gpio-ranges = <&pinctrl 0 0 128>;
interrupt-names = "gpio0", "gpio1", "gpio_mux";
- interrupts = <8 9 10>;
+ interrupts = <8>, <9>, <10>;
gpio-controller;
#gpio-cells = <0x2>;
interrupt-controller;
--
2.25.1
Andrew Lunn
2020-03-17 13:28:54 UTC
Permalink
Post by Lubomir Rintel
This way the device tree validator learns that each cell of the property
[[8, 9, 10]] is too short
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:39:01 UTC
Permalink
This way the device tree validator learns that each cell of the property
constitutes a separate item. Otherwise it gets unnecessairly upset:

pxa168-aspenite.dt.yaml: ***@d4010000: interrupts: [[5, 6]] is too short
pxa910-dkb.dt.yaml: ***@d4010000: interrupts: [[5, 6]] is too short

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/pxa168.dtsi | 2 +-
arch/arm/boot/dts/pxa910.dtsi | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/pxa168.dtsi b/arch/arm/boot/dts/pxa168.dtsi
index c6ac85e362d8a..ae2221a3f825f 100644
--- a/arch/arm/boot/dts/pxa168.dtsi
+++ b/arch/arm/boot/dts/pxa168.dtsi
@@ -140,7 +140,7 @@ twsi2: ***@d4025000 {
rtc: ***@d4010000 {
compatible = "mrvl,mmp-rtc";
reg = <0xd4010000 0x1000>;
- interrupts = <5 6>;
+ interrupts = <5>, <6>;
interrupt-names = "rtc 1Hz", "rtc alarm";
clocks = <&soc_clocks PXA168_CLK_RTC>;
resets = <&soc_clocks PXA168_CLK_RTC>;
diff --git a/arch/arm/boot/dts/pxa910.dtsi b/arch/arm/boot/dts/pxa910.dtsi
index 5f8e208916b31..774e8e9730924 100644
--- a/arch/arm/boot/dts/pxa910.dtsi
+++ b/arch/arm/boot/dts/pxa910.dtsi
@@ -152,7 +152,7 @@ twsi2: ***@d4037000 {
rtc: ***@d4010000 {
compatible = "mrvl,mmp-rtc";
reg = <0xd4010000 0x1000>;
- interrupts = <5 6>;
+ interrupts = <5>, <6>;
interrupt-names = "rtc 1Hz", "rtc alarm";
clocks = <&soc_clocks PXA910_CLK_RTC>;
resets = <&soc_clocks PXA910_CLK_RTC>;
--
2.25.1
Andrew Lunn
2020-03-17 13:29:36 UTC
Permalink
Post by Lubomir Rintel
This way the device tree validator learns that each cell of the property
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:39:02 UTC
Permalink
This way the device tree validator learns that each cell of the property
constitutes a separate item. Otherwise it gets unnecessairly upset:

mmp3-dell-ariel.dt.yaml: ***@d4010000: interrupts: [[1, 0]] is too short

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/mmp2.dtsi | 2 +-
arch/arm/boot/dts/mmp3.dtsi | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/mmp2.dtsi b/arch/arm/boot/dts/mmp2.dtsi
index 6a2f072c1d0a8..173ee68e877fd 100644
--- a/arch/arm/boot/dts/mmp2.dtsi
+++ b/arch/arm/boot/dts/mmp2.dtsi
@@ -364,7 +364,7 @@ twsi6: ***@d4034000 {
rtc: ***@d4010000 {
compatible = "mrvl,mmp-rtc";
reg = <0xd4010000 0x1000>;
- interrupts = <1 0>;
+ interrupts = <1>, <0>;
interrupt-names = "rtc 1Hz", "rtc alarm";
interrupt-parent = <&intcmux5>;
clocks = <&soc_clocks MMP2_CLK_RTC>;
diff --git a/arch/arm/boot/dts/mmp3.dtsi b/arch/arm/boot/dts/mmp3.dtsi
index 59a108e49b41e..649aa74851257 100644
--- a/arch/arm/boot/dts/mmp3.dtsi
+++ b/arch/arm/boot/dts/mmp3.dtsi
@@ -474,7 +474,7 @@ twsi6: ***@d4034000 {
rtc: ***@d4010000 {
compatible = "mrvl,mmp-rtc";
reg = <0xd4010000 0x1000>;
- interrupts = <1 0>;
+ interrupts = <1>, <0>;
interrupt-names = "rtc 1Hz", "rtc alarm";
interrupt-parent = <&rtc_mux>;
clocks = <&soc_clocks MMP2_CLK_RTC>;
--
2.25.1
Andrew Lunn
2020-03-17 13:30:05 UTC
Permalink
Post by Lubomir Rintel
This way the device tree validator learns that each cell of the property
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Andrew Lunn
2020-03-17 13:30:48 UTC
Permalink
Post by Lubomir Rintel
This way the device tree validator learns that each cell of the property
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:39:04 UTC
Permalink
There are better generic ones and the validation is going to complain:

mmp3-dell-ariel.dt.yaml: ***@f0001000: $nodename:0: '***@f0001000'
does not match '^usb(@.*)?'
mmp3-dell-ariel.dt.yaml: ***@f0002000: $nodename:0: '***@f0002000'
does not match '^usb(@.*)?'
...

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/mmp3.dtsi | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/arm/boot/dts/mmp3.dtsi b/arch/arm/boot/dts/mmp3.dtsi
index eaff9b1bc1d9f..fc75f96106351 100644
--- a/arch/arm/boot/dts/mmp3.dtsi
+++ b/arch/arm/boot/dts/mmp3.dtsi
@@ -183,14 +183,14 @@ hsi0_mux: interrupt-***@d42821d0 {
mrvl,intc-nr-irqs = <5>;
};

- usb_otg_phy0: usb-otg-***@d4207000 {
+ usb_otg_phy0: usb-***@d4207000 {
compatible = "marvell,mmp3-usb-phy";
reg = <0xd4207000 0x40>;
#phy-cells = <0>;
status = "disabled";
};

- usb_otg0: usb-***@d4208000 {
+ usb_otg0: ***@d4208000 {
compatible = "marvell,pxau2o-ehci";
reg = <0xd4208000 0x200>;
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
@@ -201,7 +201,7 @@ usb_otg0: usb-***@d4208000 {
status = "disabled";
};

- hsic_phy0: hsic-***@f0001800 {
+ hsic_phy0: usb-***@f0001800 {
compatible = "marvell,mmp3-hsic-phy",
"usb-nop-xceiv";
reg = <0xf0001800 0x40>;
@@ -209,7 +209,7 @@ hsic_phy0: hsic-***@f0001800 {
status = "disabled";
};

- hsic0: ***@f0001000 {
+ hsic0: ***@f0001000 {
compatible = "marvell,pxau2o-ehci";
reg = <0xf0001000 0x200>;
interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
@@ -223,7 +223,7 @@ hsic0: ***@f0001000 {
status = "disabled";
};

- hsic_phy1: hsic-***@f0002800 {
+ hsic_phy1: usb-***@f0002800 {
compatible = "marvell,mmp3-hsic-phy",
"usb-nop-xceiv";
reg = <0xf0002800 0x40>;
@@ -231,7 +231,7 @@ hsic_phy1: hsic-***@f0002800 {
status = "disabled";
};

- hsic1: ***@f0002000 {
+ hsic1: ***@f0002000 {
compatible = "marvell,pxau2o-ehci";
reg = <0xf0002000 0x200>;
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
--
2.25.1
Andrew Lunn
2020-03-17 13:32:22 UTC
Permalink
...
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:39:03 UTC
Permalink
The current one makes validation unhappy:

mmp3-dell-ariel.dt.yaml: l2-cache-***@d0020000: $nodename:0:
'l2-cache-***@d0020000' does not match
'^(cache-controller|cpu)(@[0-9a-f,]+)*$'

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/mmp3.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/mmp3.dtsi b/arch/arm/boot/dts/mmp3.dtsi
index 649aa74851257..eaff9b1bc1d9f 100644
--- a/arch/arm/boot/dts/mmp3.dtsi
+++ b/arch/arm/boot/dts/mmp3.dtsi
@@ -523,7 +523,7 @@ ssp4: ***@d4039000 {
};
};

- l2: l2-cache-***@d0020000 {
+ l2: cache-***@d0020000 {
compatible = "marvell,tauros3-cache", "arm,pl310-cache";
reg = <0xd0020000 0x1000>;
cache-unified;
--
2.25.1
Andrew Lunn
2020-03-17 13:31:10 UTC
Permalink
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:39:06 UTC
Permalink
SPI controllers in slave mode have a single child node that has no
address. Enforce #address-cells of zero instead of one.

Fixes: 0a1b929356830 ("spi: Add YAML schemas for the generic SPI options")
Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../bindings/spi/spi-controller.yaml | 23 ++++++++++++++-----
1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/Documentation/devicetree/bindings/spi/spi-controller.yaml b/Documentation/devicetree/bindings/spi/spi-controller.yaml
index d8e5509a70816..30d774cf6cc95 100644
--- a/Documentation/devicetree/bindings/spi/spi-controller.yaml
+++ b/Documentation/devicetree/bindings/spi/spi-controller.yaml
@@ -15,16 +15,27 @@ description: |
controller may be described for use in SPI master mode or in SPI slave mode,
but not for both at the same time.

+allOf:
+ - if:
+ required:
+ - spi-slave
+ then:
+ properties:
+ "#address-cells":
+ const: 0
+ "#size-cells":
+ const: 0
+ else:
+ properties:
+ "#address-cells":
+ const: 1
+ "#size-cells":
+ const: 0
+
properties:
$nodename:
pattern: "^spi(@.*|-[0-9a-f])*$"

- "#address-cells":
- const: 1
-
- "#size-cells":
- const: 0
-
cs-gpios:
description: |
GPIOs used as chip selects.
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:07 UTC
Permalink
These ports are compatible with NS8250 and handled by the same driver.
Get rid of the extra document that fails to document the properties that
are actually supported.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
Documentation/devicetree/bindings/serial/8250.txt | 2 ++
Documentation/devicetree/bindings/serial/mrvl-serial.txt | 4 ----
2 files changed, 2 insertions(+), 4 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/serial/mrvl-serial.txt

diff --git a/Documentation/devicetree/bindings/serial/8250.txt b/Documentation/devicetree/bindings/serial/8250.txt
index 55700f20f6ee8..a543702859e2f 100644
--- a/Documentation/devicetree/bindings/serial/8250.txt
+++ b/Documentation/devicetree/bindings/serial/8250.txt
@@ -26,6 +26,8 @@ Required properties:
- "aspeed,ast2400-vuart"
- "aspeed,ast2500-vuart"
- "nuvoton,npcm750-uart"
+ - "mrvl,mmp-uart"
+ - "mrvl,pxa-uart"
- "serial" if the port type is unknown.
- reg : offset and length of the register set for the device.
- interrupts : should contain uart interrupt.
diff --git a/Documentation/devicetree/bindings/serial/mrvl-serial.txt b/Documentation/devicetree/bindings/serial/mrvl-serial.txt
deleted file mode 100644
index d744340de887c..0000000000000
--- a/Documentation/devicetree/bindings/serial/mrvl-serial.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-PXA UART controller
-
-Required properties:
-- compatible : should be "mrvl,mmp-uart" or "mrvl,pxa-uart".
--
2.25.1
Andrew Lunn
2020-03-17 13:48:05 UTC
Permalink
Post by Lubomir Rintel
These ports are compatible with NS8250 and handled by the same driver.
Get rid of the extra document that fails to document the properties that
are actually supported.
Hi Lubmir

This is needs a bit closer examination. By the PXA maintainers. It
appears there are two serial drivers, the 8250 and a PXA specific
driver.

Andrew
Lubomir Rintel
2020-03-17 19:09:13 UTC
Permalink
Post by Andrew Lunn
Post by Lubomir Rintel
These ports are compatible with NS8250 and handled by the same driver.
Get rid of the extra document that fails to document the properties that
are actually supported.
Hi Lubmir
This is needs a bit closer examination. By the PXA maintainers. It
appears there are two serial drivers, the 8250 and a PXA specific
driver.
Well, for "mrvl,mmp-uart", there are three: SERIAL_OF_PLATFORM,
SERIAL_8250_PXA and SERIAL_PXA:

drivers/tty/serial/8250/8250_of.c: { .compatible = "mrvl,mmp-uart",
drivers/tty/serial/8250/8250_pxa.c: { .compatible = "mrvl,mmp-uart", },
drivers/tty/serial/pxa.c: { .compatible = "mrvl,mmp-uart", },

For that matter, the hardware is also compatible with intel,xscale-uart
and the mrvl,mmp-uart compatible string is perhaps entirely unnecessary.

I guess the story is somewhat similar for mrvl,pxa-uart; I can not
verify though.

I suppose SERIAL_PXA is not really needed at this point and if support
for mrvl,pxa-uart was added to SERIAL_OF_PLATFORM, then SERIAL_8250_PXA
would only be useful for platforms that don't use DT and the DT bits
could be stripped from it eventually. That is -- if PXA maintainers
agree, of course.
Post by Andrew Lunn
Andrew
Regards
Lubo

Lubomir Rintel
2020-03-17 09:39:08 UTC
Permalink
The validation is unhappy about mmp3-dell-ariel declaring its
marvell,tauros3-cache node to be compatible with arm,pl310-cache:

mmp3-dell-ariel.dt.yaml: cache-***@d0020000: compatible:
Additional items are not allowed ('arm,pl310-cache' was unexpected)
mmp3-dell-ariel.dt.yaml: cache-***@d0020000: compatible:
['marvell,tauros3-cache', 'arm,pl310-cache'] is too long

Let's allow this -- Tauros 3 is designed to be compatible with PL310.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../devicetree/bindings/arm/l2c2x0.yaml | 45 ++++++++++---------
1 file changed, 24 insertions(+), 21 deletions(-)

diff --git a/Documentation/devicetree/bindings/arm/l2c2x0.yaml b/Documentation/devicetree/bindings/arm/l2c2x0.yaml
index 913a8cd8b2c00..7e39088a9bed2 100644
--- a/Documentation/devicetree/bindings/arm/l2c2x0.yaml
+++ b/Documentation/devicetree/bindings/arm/l2c2x0.yaml
@@ -29,27 +29,30 @@ allOf:

properties:
compatible:
- enum:
- - arm,pl310-cache
- - arm,l220-cache
- - arm,l210-cache
- # DEPRECATED by "brcm,bcm11351-a2-pl310-cache"
- - bcm,bcm11351-a2-pl310-cache
- # For Broadcom bcm11351 chipset where an
- # offset needs to be added to the address before passing down to the L2
- # cache controller
- - brcm,bcm11351-a2-pl310-cache
- # Marvell Controller designed to be
- # compatible with the ARM one, with system cache mode (meaning
- # maintenance operations on L1 are broadcasted to the L2 and L2
- # performs the same operation).
- - marvell,aurora-system-cache
- # Marvell Controller designed to be
- # compatible with the ARM one with outer cache mode.
- - marvell,aurora-outer-cache
- # Marvell Tauros3 cache controller, compatible
- # with arm,pl310-cache controller.
- - marvell,tauros3-cache
+ oneOf:
+ - enum:
+ - arm,pl310-cache
+ - arm,l220-cache
+ - arm,l210-cache
+ # DEPRECATED by "brcm,bcm11351-a2-pl310-cache"
+ - bcm,bcm11351-a2-pl310-cache
+ # For Broadcom bcm11351 chipset where an
+ # offset needs to be added to the address before passing down to the L2
+ # cache controller
+ - brcm,bcm11351-a2-pl310-cache
+ # Marvell Controller designed to be
+ # compatible with the ARM one, with system cache mode (meaning
+ # maintenance operations on L1 are broadcasted to the L2 and L2
+ # performs the same operation).
+ - marvell,aurora-system-cache
+ # Marvell Controller designed to be
+ # compatible with the ARM one with outer cache mode.
+ - marvell,aurora-outer-cache
+ - items:
+ # Marvell Tauros3 cache controller, compatible
+ # with arm,pl310-cache controller.
+ - const: marvell,tauros3-cache
+ - const: arm,pl310-cache

cache-level:
const: 2
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:09 UTC
Permalink
Add compatible strings for the boards we have in tree. At the same time,
fix the MMP3 compatible string: the preferred vendor name for Marvell is
"marvell", not "mrvl", and indeed "marvell,mmp3" has been actively used,
not "mrvl,mmp3".

Fixes: 95aecb71b84e ("dt-bindings: arm: mrvl: Document MMP3 compatible string")
Signed-off-by: Lubomir Rintel <***@v3.sk>
---
Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml b/Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml
index 818dfe6de5120..3235ec9e9bad1 100644
--- a/Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml
+++ b/Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml
@@ -28,8 +28,11 @@ properties:
items:
- enum:
- mrvl,mmp2-brownstone
+ - olpc,xo-1.75
- const: mrvl,mmp2
- description: MMP3 based boards
items:
- - const: mrvl,mmp3
+ - enum:
+ - dell,wyse-ariel
+ - const: marvell,mmp3
...
--
2.25.1
Andrew Lunn
2020-03-17 13:54:35 UTC
Permalink
Post by Lubomir Rintel
Add compatible strings for the boards we have in tree. At the same time,
fix the MMP3 compatible string: the preferred vendor name for Marvell is
"marvell", not "mrvl", and indeed "marvell,mmp3" has been actively used,
not "mrvl,mmp3".
Fixes: 95aecb71b84e ("dt-bindings: arm: mrvl: Document MMP3 compatible string")
What is implied by the Fixes: tag? Do you expect this to be
back ported? Is anything actually broken here?

Apart from that:

Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:39:10 UTC
Permalink
While the preferred vendor prefix is "marvell", "mrvl" is used by many
older bindings already. Add it, while also marking it deprecated.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 3 +++
1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 23ca95bee2985..1653de506db1a 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -645,6 +645,9 @@ patternProperties:
description: Monolithic Power Systems Inc.
"^mqmaker,.*":
description: mqmaker Inc.
+ "^mrvl,.*":
+ description: Marvell Technology Group Ltd.
+ deprecated: true
"^mscc,.*":
description: Microsemi Corporation
"^msi,.*":
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:11 UTC
Permalink
This way the validator can know that the two cells constitute a singlej
pair of clock phase degrees value, not separate items Otherwise it is
unhappy:

mmc-controller.example.dt.yaml: ***@ab000000: clk-phase-sd-hs:0:
[63] is too short
mmc-controller.example.dt.yaml: ***@ab000000: clk-phase-sd-hs:1:
[72] is too short

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
Documentation/devicetree/bindings/mmc/mmc-controller.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
index 8fded83c519ad..c9384ed685b8f 100644
--- a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
+++ b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
@@ -363,7 +363,7 @@ examples:
keep-power-in-suspend;
wakeup-source;
mmc-pwrseq = <&sdhci0_pwrseq>;
- clk-phase-sd-hs = <63>, <72>;
+ clk-phase-sd-hs = <63 72>;
};

- |
--
2.25.1
Sergei Shtylyov
2020-03-17 10:04:55 UTC
Permalink
Hello!
Post by Lubomir Rintel
This way the validator can know that the two cells constitute a singlej
Single?
Post by Lubomir Rintel
pair of clock phase degrees value, not separate items Otherwise it is
Forgot a period after "items"?
Post by Lubomir Rintel
[63] is too short
[72] is too short
[...]

MBR, Sergei
Lubomir Rintel
2020-03-17 09:39:12 UTC
Permalink
The $nodename allows only "mmc@*" whereas the example node is named
"sdhci".

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
Documentation/devicetree/bindings/mmc/mmc-controller.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
index c9384ed685b8f..c03fe268c29a0 100644
--- a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
+++ b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
@@ -351,7 +351,7 @@ dependencies:

examples:
- |
- ***@ab000000 {
+ ***@ab000000 {
compatible = "sdhci";
reg = <0xab000000 0x200>;
interrupts = <23>;
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:13 UTC
Permalink
Convert the sdhci-pxa binding to DT schema format using json-schema.

At the same time, fix a couple of issues with the examples discovered by
the validation tool -- a semicolon instead of a comma and wrong node names.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../devicetree/bindings/mmc/sdhci-pxa.txt | 50 ---------
.../devicetree/bindings/mmc/sdhci-pxa.yaml | 101 ++++++++++++++++++
2 files changed, 101 insertions(+), 50 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
create mode 100644 Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml

diff --git a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
deleted file mode 100644
index 3d1b449d6097d..0000000000000
--- a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-* Marvell sdhci-pxa v2/v3 controller
-
-This file documents differences between the core properties in mmc.txt
-and the properties used by the sdhci-pxav2 and sdhci-pxav3 drivers.
-
-Required properties:
-- compatible: Should be "mrvl,pxav2-mmc", "mrvl,pxav3-mmc" or
- "marvell,armada-380-sdhci".
-- reg:
- * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for
- the SDHCI registers.
-
- * for "marvell,armada-380-sdhci", three register areas. The first
- one for the SDHCI registers themselves, the second one for the
- AXI/Mbus bridge registers of the SDHCI unit, the third one for the
- SDIO3 Configuration register
-- reg names: should be "sdhci", "mbus", "conf-sdio3". only mandatory
- for "marvell,armada-380-sdhci"
-- clocks: Array of clocks required for SDHCI; requires at least one for
- I/O clock.
-- clock-names: Array of names corresponding to clocks property; shall be
- "io" for I/O clock and "core" for optional core clock.
-
-Optional properties:
-- mrvl,clk-delay-cycles: Specify a number of cycles to delay for tuning.
-
-Example:
-
-***@d4280800 {
- compatible = "mrvl,pxav3-mmc";
- reg = <0xd4280800 0x800>;
- bus-width = <8>;
- interrupts = <27>;
- clocks = <&chip CLKID_SDIO1XIN>, <&chip CLKID_SDIO1>;
- clock-names = "io", "core";
- non-removable;
- mrvl,clk-delay-cycles = <31>;
-};
-
-***@d8000 {
- compatible = "marvell,armada-380-sdhci";
- reg-names = "sdhci", "mbus", "conf-sdio3";
- reg = <0xd8000 0x1000>,
- <0xdc000 0x100>;
- <0x18454 0x4>;
- interrupts = <0 25 0x4>;
- clocks = <&gateclk 17>;
- clock-names = "io";
- mrvl,clk-delay-cycles = <0x1F>;
-};
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml b/Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml
new file mode 100644
index 0000000000000..4ae0926ac294f
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml
@@ -0,0 +1,101 @@
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/sdhci-pxa.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell PXA SDHCI v2/v3 bindings
+
+maintainers:
+ - ***@vger.kernel.org
+
+allOf:
+ - $ref: mmc-controller.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: marvell,armada-380-sdhci
+ then:
+ properties:
+ regs:
+ minItems: 3
+ maxItems: 3
+ reg-names:
+ items:
+ - const: sdhci
+ - const: mbus
+ - const: conf-sdio3
+ required:
+ - reg-names
+ else:
+ properties:
+ regs:
+ minItems: 1
+ maxItems: 1
+ reg-names:
+ minItems: 1
+ maxItems: 1
+
+properties:
+ compatible:
+ enum:
+ - mrvl,pxav2-mmc
+ - mrvl,pxav3-mmc
+ - marvell,armada-380-sdhci
+
+ reg: true
+
+ reg-names: true
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ minItems: 1
+ maxItems: 2
+
+ clock-names:
+ minItems: 1
+ maxItems: 2
+ items:
+ - const: io
+ - const: core
+
+ mrvl,clk-delay-cycles:
+ description: Specify a number of cycles to delay for tuning.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - clock-names
+
+examples:
+ - |
+ #include <dt-bindings/clock/berlin2.h>
+ ***@d4280800 {
+ compatible = "mrvl,pxav3-mmc";
+ reg = <0xd4280800 0x800>;
+ bus-width = <8>;
+ interrupts = <27>;
+ clocks = <&chip CLKID_SDIO1XIN>, <&chip CLKID_SDIO1>;
+ clock-names = "io", "core";
+ non-removable;
+ mrvl,clk-delay-cycles = <31>;
+ };
+ - |
+ ***@d8000 {
+ compatible = "marvell,armada-380-sdhci";
+ reg-names = "sdhci", "mbus", "conf-sdio3";
+ reg = <0xd8000 0x1000>,
+ <0xdc000 0x100>,
+ <0x18454 0x4>;
+ interrupts = <0 25 0x4>;
+ clocks = <&gateclk 17>;
+ clock-names = "io";
+ mrvl,clk-delay-cycles = <0x1F>;
+ };
+
+...
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:14 UTC
Permalink
A rather straightforward conversion of the phy-mmp3-usb binding to DT
schema format using json-schema.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../bindings/phy/marvell,mmp3-usb-phy.yaml | 40 +++++++++++++++++++
.../devicetree/bindings/phy/phy-mmp3-usb.txt | 13 ------
2 files changed, 40 insertions(+), 13 deletions(-)
create mode 100644 Documentation/devicetree/bindings/phy/marvell,mmp3-usb-phy.yaml
delete mode 100644 Documentation/devicetree/bindings/phy/phy-mmp3-usb.txt

diff --git a/Documentation/devicetree/bindings/phy/marvell,mmp3-usb-phy.yaml b/Documentation/devicetree/bindings/phy/marvell,mmp3-usb-phy.yaml
new file mode 100644
index 0000000000000..1307703d9b627
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/marvell,mmp3-usb-phy.yaml
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+# Copyright 2019,2020 Lubomir Rintel <***@v3.sk>
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/marvell,mmp3-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MMP3 USB PHY bindings
+
+maintainers:
+ - Lubomir Rintel <***@v3.sk>
+
+properties:
+ $nodename:
+ pattern: '^usb-phy@[a-f0-9]+$'
+
+ compatible:
+ const: marvell,mmp3-usb-phy
+
+ reg:
+ maxItems: 1
+ description: base address of the device
+
+ '#phy-cells':
+ const: 0
+
+required:
+ - compatible
+ - reg
+ - '#phy-cells'
+
+examples:
+ - |
+ usb-***@d4207000 {
+ compatible = "marvell,mmp3-usb-phy";
+ reg = <0xd4207000 0x40>;
+ #phy-cells = <0>;
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/phy/phy-mmp3-usb.txt b/Documentation/devicetree/bindings/phy/phy-mmp3-usb.txt
deleted file mode 100644
index 7183b9102f917..0000000000000
--- a/Documentation/devicetree/bindings/phy/phy-mmp3-usb.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Marvell MMP3 USB PHY
---------------------
-
-Required properties:
-- compatible: must be "marvell,mmp3-usb-phy"
-- #phy-cells: must be 0
-
-Example:
- usb-phy: usb-***@d4207000 {
- compatible = "marvell,mmp3-usb-phy";
- reg = <0xd4207000 0x40>;
- #phy-cells = <0>;
- };
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:16 UTC
Permalink
A conversion of the i2c-pxa binding to DT schema format using json-schema.

This also cleans ups some errors in the binding: The compatible string
description suggested that "mmp" in "mrvl,mmp-twsi" is to be substituted
with a processor model, which wouldn't be a right thing to do and indeed
nobody seems to have been doing that. There also was "Recommended
properties" section that included optional as well as mandatory
properties. Missing mandatory properties were added to the example.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../devicetree/bindings/i2c/i2c-pxa.txt | 31 --------
.../devicetree/bindings/i2c/i2c-pxa.yaml | 71 +++++++++++++++++++
2 files changed, 71 insertions(+), 31 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-pxa.txt
create mode 100644 Documentation/devicetree/bindings/i2c/i2c-pxa.yaml

diff --git a/Documentation/devicetree/bindings/i2c/i2c-pxa.txt b/Documentation/devicetree/bindings/i2c/i2c-pxa.txt
deleted file mode 100644
index c30783c0eca03..0000000000000
--- a/Documentation/devicetree/bindings/i2c/i2c-pxa.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-* Marvell MMP I2C controller
-
-Required properties :
-
- - reg : Offset and length of the register set for the device
- - compatible : should be "mrvl,mmp-twsi" where mmp is the name of a
- compatible processor, e.g. pxa168, pxa910, mmp2, mmp3.
- For the pxa2xx/pxa3xx, an additional node "mrvl,pxa-i2c" is required
- as shown in the example below.
- For the Armada 3700, the compatible should be "marvell,armada-3700-i2c".
-
-Recommended properties :
-
- - interrupts : the interrupt number
- - mrvl,i2c-polling : Disable interrupt of i2c controller. Polling
- status register of i2c controller instead.
- - mrvl,i2c-fast-mode : Enable fast mode of i2c controller.
-
-Examples:
- twsi1: ***@d4011000 {
- compatible = "mrvl,mmp-twsi";
- reg = <0xd4011000 0x1000>;
- interrupts = <7>;
- mrvl,i2c-fast-mode;
- };
-
- twsi2: ***@d4025000 {
- compatible = "mrvl,mmp-twsi";
- reg = <0xd4025000 0x1000>;
- interrupts = <58>;
- };
diff --git a/Documentation/devicetree/bindings/i2c/i2c-pxa.yaml b/Documentation/devicetree/bindings/i2c/i2c-pxa.yaml
new file mode 100644
index 0000000000000..c04fb81927208
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/i2c-pxa.yaml
@@ -0,0 +1,71 @@
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/i2c-pxa.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MMP I2C controller bindings
+
+maintainers:
+ - ***@vger.kernel.org
+
+allOf:
+ - $ref: /schemas/i2c/i2c-controller.yaml#
+ - if:
+ not:
+ required:
+ - mrvl,i2c-polling
+ then:
+ required:
+ - interrupts
+
+properties:
+ compatible:
+ enum:
+ - mrvl,mmp-twsi
+ - mrvl,pxa-i2c
+ - marvell,armada-3700-i2c
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ minItems: 1
+
+ resets:
+ minItems: 1
+
+ mrvl,i2c-polling:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description: |
+ Disable interrupt of i2c controller. Polling status register of i2c
+ controller instead.
+
+ mrvl,i2c-fast-mode:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description: Enable fast mode of i2c controller.
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - '#address-cells'
+ - '#size-cells'
+
+examples:
+ - |
+ #include <dt-bindings/clock/marvell,mmp2.h>
+ ***@d4011000 {
+ compatible = "mrvl,mmp-twsi";
+ reg = <0xd4011000 0x1000>;
+ interrupts = <7>;
+ clocks = <&soc_clocks MMP2_CLK_TWSI1>;
+ mrvl,i2c-fast-mode;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+...
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:17 UTC
Permalink
Convert the mrvl,intc binding to DT schema format using json-schema.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../interrupt-controller/mrvl,intc.txt | 64 --------
.../interrupt-controller/mrvl,intc.yaml | 144 ++++++++++++++++++
2 files changed, 144 insertions(+), 64 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/interrupt-controller/mrvl,intc.txt
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/mrvl,intc.yaml

diff --git a/Documentation/devicetree/bindings/interrupt-controller/mrvl,intc.txt b/Documentation/devicetree/bindings/interrupt-controller/mrvl,intc.txt
deleted file mode 100644
index a0ed02725a9d7..0000000000000
--- a/Documentation/devicetree/bindings/interrupt-controller/mrvl,intc.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-* Marvell MMP Interrupt controller
-
-Required properties:
-- compatible : Should be
- "mrvl,mmp-intc" on Marvel MMP,
- "mrvl,mmp2-intc" along with "mrvl,mmp2-mux-intc" on MMP2 or
- "marvell,mmp3-intc" with "mrvl,mmp2-mux-intc" on MMP3
-- reg : Address and length of the register set of the interrupt controller.
- If the interrupt controller is intc, address and length means the range
- of the whole interrupt controller. The "marvell,mmp3-intc" controller
- also has a secondary range for the second CPU core. If the interrupt
- controller is mux-intc, address and length means one register. Since
- address of mux-intc is in the range of intc. mux-intc is secondary
- interrupt controller.
-- reg-names : Name of the register set of the interrupt controller. It's
- only required in mux-intc interrupt controller.
-- interrupts : Should be the port interrupt shared by mux interrupts. It's
- only required in mux-intc interrupt controller.
-- interrupt-controller : Identifies the node as an interrupt controller.
-- #interrupt-cells : Specifies the number of cells needed to encode an
- interrupt source.
-- mrvl,intc-nr-irqs : Specifies the number of interrupts in the interrupt
- controller.
-- mrvl,clr-mfp-irq : Specifies the interrupt that needs to clear MFP edge
- detection first.
-
-Example:
- intc: interrupt-***@d4282000 {
- compatible = "mrvl,mmp2-intc";
- interrupt-controller;
- #interrupt-cells = <1>;
- reg = <0xd4282000 0x1000>;
- mrvl,intc-nr-irqs = <64>;
- };
-
- ***@d4282150 {
- compatible = "mrvl,mmp2-mux-intc";
- interrupts = <4>;
- interrupt-controller;
- #interrupt-cells = <1>;
- reg = <0x150 0x4>, <0x168 0x4>;
- reg-names = "mux status", "mux mask";
- mrvl,intc-nr-irqs = <2>;
- };
-
-* Marvell Orion Interrupt controller
-
-Required properties
-- compatible : Should be "marvell,orion-intc".
-- #interrupt-cells: Specifies the number of cells needed to encode an
- interrupt source. Supported value is <1>.
-- interrupt-controller : Declare this node to be an interrupt controller.
-- reg : Interrupt mask address. A list of 4 byte ranges, one per controller.
- One entry in the list represents 32 interrupts.
-
-Example:
-
- intc: interrupt-controller {
- compatible = "marvell,orion-intc", "marvell,intc";
- interrupt-controller;
- #interrupt-cells = <1>;
- reg = <0xfed20204 0x04>,
- <0xfed20214 0x04>;
- };
diff --git a/Documentation/devicetree/bindings/interrupt-controller/mrvl,intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/mrvl,intc.yaml
new file mode 100644
index 0000000000000..f0644f7d7e1d2
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/mrvl,intc.yaml
@@ -0,0 +1,144 @@
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/mrvl,intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MMP/Orion Interrupt controller bindings
+
+maintainers:
+ - ***@vger.kernel.org
+
+allOf:
+ - $ref: /schemas/interrupt-controller.yaml#
+ - if:
+ properties:
+ compatible:
+ not:
+ contains:
+ const: marvell,orion-intc
+ then:
+ required:
+ - mrvl,intc-nr-irqs
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - mrvl,mmp-intc
+ - mrvl,mmp2-intc
+ then:
+ properties:
+ reg:
+ minItems: 1
+ maxItems: 1
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - marvell,mmp3-intc
+ - mrvl,mmp2-mux-intc
+ then:
+ properties:
+ reg:
+ minItems: 2
+ maxItems: 2
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: marvell,orion-intc
+ then:
+ properties:
+ reg:
+ minItems: 1
+ maxItems: 2
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: mrvl,mmp2-mux-intc
+ then:
+ properties:
+ interrupts:
+ minItems: 1
+ maxItems: 1
+ reg-names:
+ minItems: 2
+ maxItems: 2
+ items:
+ - const: 'mux status'
+ - const: 'mux mask'
+ required:
+ - interrupts
+ else:
+ properties:
+ interrupts: false
+
+properties:
+ '#interrupt-cells':
+ const: 1
+
+ compatible:
+ enum:
+ - mrvl,mmp-intc
+ - mrvl,mmp2-intc
+ - marvell,mmp3-intc
+ - marvell,orion-intc
+ - mrvl,mmp2-mux-intc
+
+ reg: true
+
+ reg-names: true
+
+ interrupts: true
+
+ interrupt-controller: true
+
+ mrvl,intc-nr-irqs:
+ description: |
+ Specifies the number of interrupts in the interrupt controller.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ mrvl,clr-mfp-irq:
+ description: |
+ Specifies the interrupt that needs to clear MFP edge detection first.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+ - '#interrupt-cells'
+ - compatible
+ - reg
+ - interrupt-controller
+
+additionalProperties: false
+
+examples:
+ - |
+ interrupt-***@d4282000 {
+ compatible = "mrvl,mmp2-intc";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0xd4282000 0x1000>;
+ mrvl,intc-nr-irqs = <64>;
+ };
+
+ interrupt-***@d4282150 {
+ compatible = "mrvl,mmp2-mux-intc";
+ interrupts = <4>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0x150 0x4>, <0x168 0x4>;
+ reg-names = "mux status", "mux mask";
+ mrvl,intc-nr-irqs = <2>;
+ };
+ - |
+ interrupt-***@fed20204 {
+ compatible = "marvell,orion-intc";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0xfed20204 0x04>,
+ <0xfed20214 0x04>;
+ };
+
+...
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:18 UTC
Permalink
Convert the marvell,mmp2-ccic binding to DT schema format using
json-schema.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../bindings/media/marvell,mmp2-ccic.txt | 50 ---------
.../bindings/media/marvell,mmp2-ccic.yaml | 102 ++++++++++++++++++
2 files changed, 102 insertions(+), 50 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/media/marvell,mmp2-ccic.txt
create mode 100644 Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml

diff --git a/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.txt b/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.txt
deleted file mode 100644
index 7ec2c8c8a3b98..0000000000000
--- a/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-Marvell MMP2 camera host interface
-
-Required properties:
- - compatible: Should be "marvell,mmp2-ccic".
- - reg: Register base and size.
- - interrupts: The interrupt number.
- - #clock-cells: Must be 0.
-
-Optional properties:
- - clocks: Reference to the input clock as specified by
- Documentation/devicetree/bindings/clock/clock-bindings.txt.
- - clock-names: Names of the clocks used; "axi" for the AXI bus interface,
- "func" for the peripheral clock and "phy" for the parallel
- video bus interface.
- - clock-output-names: Optional clock source for sensors. Shall be "mclk".
-
-Required subnodes:
- - port: The parallel bus interface port with a single endpoint linked to
- the sensor's endpoint as described in
- Documentation/devicetree/bindings/media/video-interfaces.txt.
-
-Required endpoint properties:
- - bus-type: data bus type, <5> or <6> for Parallel or Bt.656 respectively
- - pclk-sample: pixel clock polarity
- - hsync-active: horizontal synchronization polarity (only required for
- parallel bus)
- - vsync-active: vertical synchronization polarity (only required for
- parallel bus)
-
-Example:
-
- camera0: ***@d420a000 {
- compatible = "marvell,mmp2-ccic";
- reg = <0xd420a000 0x800>;
- interrupts = <42>;
- clocks = <&soc_clocks MMP2_CLK_CCIC0>;
- clock-names = "axi";
- #clock-cells = <0>;
- clock-output-names = "mclk";
-
- port {
- camera0_0: endpoint {
- remote-endpoint = <&ov7670_0>;
- bus-type = <5>; /* Parallel */
- hsync-active = <1>; /* Active high */
- vsync-active = <1>; /* Active high */
- pclk-sample = <0>; /* Falling */
- };
- };
- };
diff --git a/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml b/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml
new file mode 100644
index 0000000000000..890a3f9d0302f
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml
@@ -0,0 +1,102 @@
+# SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+# Copyright 2019,2020 Lubomir Rintel <***@v3.sk>
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/marvell,mmp2-ccic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MMP2 camera host interface bindings
+
+maintainers:
+ - Lubomir Rintel <***@v3.sk>
+
+properties:
+ $nodename:
+ pattern: '^camera@[a-f0-9]+$'
+
+ compatible:
+ const: marvell,mmp2-ccic
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ port:
+ type: object
+ additionalProperties: false
+
+ properties:
+ endpoint:
+ type: object
+ additionalProperties: false
+
+ # Properties described in
+ # Documentation/devicetree/bindings/media/video-interfaces.txt
+ properties:
+ remote-endpoint: true
+ hsync-active: true
+ vsync-active: true
+ pclk-sample: true
+ bus-type: true
+
+ required:
+ - remote-endpoint
+
+ required:
+ - endpoint
+
+ clocks:
+ minItems: 1
+ maxItems: 3
+ items:
+ - description: AXI bus interface clock
+ - description: Peripheral clock
+ - description: Parallel video bus interface clock
+
+ clock-names:
+ minItems: 1
+ maxItems: 3
+ items:
+ - const: axi
+ - const: func
+ - const: phy
+
+ '#clock-cells':
+ const: 0
+
+ clock-output-names:
+ const: mclk
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - port
+
+examples:
+ - |
+ #include <dt-bindings/clock/marvell,mmp2.h>
+
+ ***@d420a000 {
+ compatible = "marvell,mmp2-ccic";
+ reg = <0xd420a000 0x800>;
+ interrupts = <42>;
+ clocks = <&soc_clocks MMP2_CLK_CCIC0>;
+ clock-names = "axi";
+ #clock-cells = <0>;
+ clock-output-names = "mclk";
+
+ port {
+ camera0_0: endpoint {
+ remote-endpoint = <&ov7670_0>;
+ bus-type = <5>; /* Parallel */
+ hsync-active = <1>; /* Active high */
+ vsync-active = <1>; /* Active high */
+ pclk-sample = <0>; /* Falling */
+ };
+ };
+ };
+
+...
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:19 UTC
Permalink
Convert the sa1100-rtc binding to DT schema format using json-schema.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../devicetree/bindings/rtc/sa1100-rtc.txt | 17 ------
.../devicetree/bindings/rtc/sa1100-rtc.yaml | 55 +++++++++++++++++++
2 files changed, 55 insertions(+), 17 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/rtc/sa1100-rtc.txt
create mode 100644 Documentation/devicetree/bindings/rtc/sa1100-rtc.yaml

diff --git a/Documentation/devicetree/bindings/rtc/sa1100-rtc.txt b/Documentation/devicetree/bindings/rtc/sa1100-rtc.txt
deleted file mode 100644
index 968ac820254bb..0000000000000
--- a/Documentation/devicetree/bindings/rtc/sa1100-rtc.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-* Marvell Real Time Clock controller
-
-Required properties:
-- compatible: should be "mrvl,sa1100-rtc"
-- reg: physical base address of the controller and length of memory mapped
- region.
-- interrupts: Should be two. The first interrupt number is the rtc alarm
- interrupt and the second interrupt number is the rtc hz interrupt.
-- interrupt-names: Assign name of irq resource.
-
-Example:
- rtc: ***@d4010000 {
- compatible = "mrvl,mmp-rtc";
- reg = <0xd4010000 0x1000>;
- interrupts = <5>, <6>;
- interrupt-names = "rtc 1Hz", "rtc alarm";
- };
diff --git a/Documentation/devicetree/bindings/rtc/sa1100-rtc.yaml b/Documentation/devicetree/bindings/rtc/sa1100-rtc.yaml
new file mode 100644
index 0000000000000..53a8b72df9f34
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/sa1100-rtc.yaml
@@ -0,0 +1,55 @@
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/rtc/sa1100-rtc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Real Time Clock controller bindings
+
+allOf:
+ - $ref: rtc.yaml#
+
+maintainers:
+ - ***@vger.kernel.org
+
+properties:
+ compatible:
+ enum:
+ - mrvl,sa1100-rtc
+ - mrvl,mmp-rtc
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ resets:
+ maxItems: 1
+
+ interrupts:
+ minItems: 2
+ maxItems: 2
+
+ interrupt-names:
+ items:
+ - const: 'rtc 1Hz'
+ - const: 'rtc alarm'
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - interrupt-names
+
+additionalProperties: false
+
+examples:
+ - |
+ rtc: ***@d4010000 {
+ compatible = "mrvl,mmp-rtc";
+ reg = <0xd4010000 0x1000>;
+ interrupts = <5>, <6>;
+ interrupt-names = "rtc 1Hz", "rtc alarm";
+ };
+
+...
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:20 UTC
Permalink
A straightforward conversion of the the spi-pxa2xx binding to DT schema
format using json-schema.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../bindings/spi/marvell,mmp2-ssp.yaml | 58 +++++++++++++++++++
.../devicetree/bindings/spi/spi-pxa2xx.txt | 27 ---------
2 files changed, 58 insertions(+), 27 deletions(-)
create mode 100644 Documentation/devicetree/bindings/spi/marvell,mmp2-ssp.yaml
delete mode 100644 Documentation/devicetree/bindings/spi/spi-pxa2xx.txt

diff --git a/Documentation/devicetree/bindings/spi/marvell,mmp2-ssp.yaml b/Documentation/devicetree/bindings/spi/marvell,mmp2-ssp.yaml
new file mode 100644
index 0000000000000..de6b6a53b70d8
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/marvell,mmp2-ssp.yaml
@@ -0,0 +1,58 @@
+# SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+# Copyright 2019,2020 Lubomir Rintel <***@v3.sk>
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/spi/marvell,mmp2-ssp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: PXA2xx SSP SPI Controller bindings
+
+maintainers:
+ - Lubomir Rintel <***@v3.sk>
+
+allOf:
+ - $ref: spi-controller.yaml#
+
+properties:
+ compatible:
+ const: marvell,mmp2-ssp
+
+ interrupts:
+ maxItems: 1
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ ready-gpios:
+ description: |
+ GPIO used to signal a SPI master that the FIFO is filled and we're
+ ready to service a transfer. Only useful in slave mode.
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - '#address-cells'
+ - '#size-cells'
+
+dependencies:
+ ready-gpios: [ spi-slave ]
+
+examples:
+ - |
+ #include <dt-bindings/clock/marvell,mmp2.h>
+ ***@d4035000 {
+ compatible = "marvell,mmp2-ssp";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0xd4035000 0x1000>;
+ clocks = <&soc_clocks MMP2_CLK_SSP0>;
+ interrupts = <0>;
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/spi/spi-pxa2xx.txt b/Documentation/devicetree/bindings/spi/spi-pxa2xx.txt
deleted file mode 100644
index e30e0c2a4bce1..0000000000000
--- a/Documentation/devicetree/bindings/spi/spi-pxa2xx.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-PXA2xx SSP SPI Controller
-
-Required properties:
-- compatible: Must be "marvell,mmp2-ssp".
-- reg: Offset and length of the device's register set.
-- interrupts: Should be the interrupt number.
-- clocks: Should contain a single entry describing the clock input.
-- #address-cells: Number of cells required to define a chip select address.
-- #size-cells: Should be zero.
-
-Optional properties:
-- cs-gpios: list of GPIO chip selects. See the SPI bus bindings,
- Documentation/devicetree/bindings/spi/spi-bus.txt
-- spi-slave: Empty property indicating the SPI controller is used in slave mode.
-- ready-gpios: GPIO used to signal a SPI master that the FIFO is filled
- and we're ready to service a transfer. Only useful in slave mode.
-
-Child nodes represent devices on the SPI bus
- See ../spi/spi-bus.txt
-
-Example:
- ssp1: ***@d4035000 {
- compatible = "marvell,mmp2-ssp";
- reg = <0xd4035000 0x1000>;
- clocks = <&soc_clocks MMP2_CLK_SSP0>;
- interrupts = <0>;
- };
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:21 UTC
Permalink
A straightforward conversion of the mrvl,mmp-timer binding to DT schema
format using json-schema.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../bindings/timer/mrvl,mmp-timer.txt | 17 --------
.../bindings/timer/mrvl,mmp-timer.yaml | 43 +++++++++++++++++++
2 files changed, 43 insertions(+), 17 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/timer/mrvl,mmp-timer.txt
create mode 100644 Documentation/devicetree/bindings/timer/mrvl,mmp-timer.yaml

diff --git a/Documentation/devicetree/bindings/timer/mrvl,mmp-timer.txt b/Documentation/devicetree/bindings/timer/mrvl,mmp-timer.txt
deleted file mode 100644
index b8f02c6635219..0000000000000
--- a/Documentation/devicetree/bindings/timer/mrvl,mmp-timer.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-* Marvell MMP Timer controller
-
-Required properties:
-- compatible : Should be "mrvl,mmp-timer".
-- reg : Address and length of the register set of timer controller.
-- interrupts : Should be the interrupt number.
-
-Optional properties:
-- clocks : Should contain a single entry describing the clock input.
-
-Example:
- timer0: ***@d4014000 {
- compatible = "mrvl,mmp-timer";
- reg = <0xd4014000 0x100>;
- interrupts = <13>;
- clocks = <&coreclk 2>;
- };
diff --git a/Documentation/devicetree/bindings/timer/mrvl,mmp-timer.yaml b/Documentation/devicetree/bindings/timer/mrvl,mmp-timer.yaml
new file mode 100644
index 0000000000000..ebee0b862d493
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/mrvl,mmp-timer.yaml
@@ -0,0 +1,43 @@
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/mrvl,mmp-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MMP Timer bindings
+
+maintainers:
+ - ***@vger.kernel.org
+
+properties:
+ $nodename:
+ pattern: '^timer@[a-f0-9]+$'
+
+ compatible:
+ const: mrvl,mmp-timer
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ ***@d4014000 {
+ compatible = "mrvl,mmp-timer";
+ reg = <0xd4014000 0x100>;
+ interrupts = <13>;
+ clocks = <&coreclk 2>;
+ };
+
+...
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:22 UTC
Permalink
A straightforward conversion of the ehci-mv binding to DT schema format
using json-schema.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../devicetree/bindings/usb/ehci-mv.txt | 23 -------
.../bindings/usb/marvell,pxau2o-ehci.yaml | 60 +++++++++++++++++++
2 files changed, 60 insertions(+), 23 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/usb/ehci-mv.txt
create mode 100644 Documentation/devicetree/bindings/usb/marvell,pxau2o-ehci.yaml

diff --git a/Documentation/devicetree/bindings/usb/ehci-mv.txt b/Documentation/devicetree/bindings/usb/ehci-mv.txt
deleted file mode 100644
index 335589895763e..0000000000000
--- a/Documentation/devicetree/bindings/usb/ehci-mv.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-* Marvell PXA/MMP EHCI controller.
-
-Required properties:
-
-- compatible: must be "marvell,pxau2o-ehci"
-- reg: physical base addresses of the controller and length of memory mapped region
-- interrupts: one EHCI controller interrupt should be described here
-- clocks: phandle list of usb clocks
-- clock-names: should be "USBCLK"
-- phys: phandle for the PHY device
-- phy-names: should be "usb"
-
-Example:
-
- ehci0: usb-***@d4208000 {
- compatible = "marvell,pxau2o-ehci";
- reg = <0xd4208000 0x200>;
- interrupts = <44>;
- clocks = <&soc_clocks MMP2_CLK_USB>;
- clock-names = "USBCLK";
- phys = <&usb_otg_phy>;
- phy-names = "usb";
- };
diff --git a/Documentation/devicetree/bindings/usb/marvell,pxau2o-ehci.yaml b/Documentation/devicetree/bindings/usb/marvell,pxau2o-ehci.yaml
new file mode 100644
index 0000000000000..189025ef1e92e
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/marvell,pxau2o-ehci.yaml
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+# Copyright 2019,2020 Lubomir Rintel <***@v3.sk>
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/marvell,pxau2o-ehci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell PXA/MMP EHCI bindings
+
+maintainers:
+ - Lubomir Rintel <***@v3.sk>
+
+allOf:
+ - $ref: usb-hcd.yaml#
+
+properties:
+ compatible:
+ const: marvell,pxau2o-ehci
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ clock-names:
+ const: USBCLK
+
+ phys:
+ maxItems: 1
+
+ phy-names:
+ const: usb
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - clock-names
+ - phys
+ - phy-names
+
+examples:
+ - |
+ #include <dt-bindings/clock/marvell,mmp2.h>
+ ***@d4208000 {
+ compatible = "marvell,pxau2o-ehci";
+ reg = <0xd4208000 0x200>;
+ interrupts = <44>;
+ clocks = <&soc_clocks MMP2_CLK_USB>;
+ clock-names = "USBCLK";
+ phys = <&usb_otg_phy>;
+ phy-names = "usb";
+ };
+
+...
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:15 UTC
Permalink
This converts the mrvl-gpio binding to DT schema format using json-schema.

Various fixes were done during the conversion, such as adding more
properties that are in fact mandatory or extending the examples to
include child nodes with extra GPIO blocks.

The compatible strings are a mess. It is not clear why so many of them
are needed; the driver doesn't really seem to differentiate between the
models. Some of them, like marvell,pxa93x-gpio and marvell,pxa1928-gpio
are not used at all, so it's not known how many interrupts they utilize.
On the other hand, mrvl,pxa-gpio has been seen in the tree, but it
doesn't end up in any actual DTB file.

In any case -- the schema merely copies whatever was in the original
binding document, so it's hopefully no more wrong that the original.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
.../devicetree/bindings/gpio/mrvl-gpio.txt | 48 -----
.../devicetree/bindings/gpio/mrvl-gpio.yaml | 173 ++++++++++++++++++
2 files changed, 173 insertions(+), 48 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
create mode 100644 Documentation/devicetree/bindings/gpio/mrvl-gpio.yaml

diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
deleted file mode 100644
index 30fd2201b3d4c..0000000000000
--- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-* Marvell PXA GPIO controller
-
-Required properties:
-- compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio",
- "intel,pxa27x-gpio", "intel,pxa3xx-gpio",
- "marvell,pxa93x-gpio", "marvell,mmp-gpio",
- "marvell,mmp2-gpio" or marvell,pxa1928-gpio.
-- reg : Address and length of the register set for the device
-- interrupts : Should be the port interrupt shared by all gpio pins.
- There're three gpio interrupts in arch-pxa, and they're gpio0,
- gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp,
- gpio_mux.
-- interrupt-names : Should be the names of irq resources. Each interrupt
- uses its own interrupt name, so there should be as many interrupt names
- as referenced interrupts.
-- interrupt-controller : Identifies the node as an interrupt controller.
-- #interrupt-cells: Specifies the number of cells needed to encode an
- interrupt source.
-- gpio-controller : Marks the device node as a gpio controller.
-- #gpio-cells : Should be two. The first cell is the pin number and
- the second cell is used to specify flags. See gpio.txt for possible
- values.
-
-Example for a MMP platform:
-
- gpio: ***@d4019000 {
- compatible = "marvell,mmp-gpio";
- reg = <0xd4019000 0x1000>;
- interrupts = <49>;
- interrupt-names = "gpio_mux";
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <1>;
- };
-
-Example for a PXA3xx platform:
-
- gpio: ***@40e00000 {
- compatible = "intel,pxa3xx-gpio";
- reg = <0x40e00000 0x10000>;
- interrupt-names = "gpio0", "gpio1", "gpio_mux";
- interrupts = <8 9 10>;
- gpio-controller;
- #gpio-cells = <0x2>;
- interrupt-controller;
- #interrupt-cells = <0x2>;
- };
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.yaml b/Documentation/devicetree/bindings/gpio/mrvl-gpio.yaml
new file mode 100644
index 0000000000000..5c713bf59b06d
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.yaml
@@ -0,0 +1,173 @@
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/mrvl-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell PXA GPIO controller
+
+maintainers:
+ - ***@vger.kernel.org
+
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - intel,pxa25x-gpio
+ - intel,pxa26x-gpio
+ - intel,pxa27x-gpio
+ - intel,pxa3xx-gpio
+ then:
+ properties:
+ interrupts:
+ minItems: 3
+ maxItems: 3
+ interrupt-names:
+ items:
+ - const: gpio0
+ - const: gpio1
+ - const: gpio_mux
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - marvell,mmp-gpio
+ - marvell,mmp2-gpio
+ then:
+ properties:
+ interrupts:
+ maxItems: 1
+ interrupt-names:
+ items:
+ - const: gpio_mux
+
+properties:
+ $nodename:
+ pattern: '^gpio@[0-9a-f]+$'
+
+ compatible:
+ enum:
+ - intel,pxa25x-gpio
+ - intel,pxa26x-gpio
+ - intel,pxa27x-gpio
+ - intel,pxa3xx-gpio
+ - marvell,mmp-gpio
+ - marvell,mmp2-gpio
+ - marvell,pxa93x-gpio
+ - marvell,pxa1928-gpio
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ resets:
+ maxItems: 1
+
+ ranges: true
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 1
+
+ gpio-controller: true
+
+ '#gpio-cells':
+ const: 2
+
+ gpio-ranges:
+ maxItems: 1
+
+ interrupts: true
+
+ interrupt-names: true
+
+ interrupt-controller: true
+
+ '#interrupt-cells':
+ const: 2
+
+patternProperties:
+ '^gpio@[0-9a-f]*$':
+ type: object
+ properties:
+ reg:
+ maxItems: 1
+
+ required:
+ - reg
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - '#address-cells'
+ - '#size-cells'
+ - reg
+ - gpio-controller
+ - '#gpio-cells'
+ - interrupts
+ - interrupt-names
+ - interrupt-controller
+ - '#interrupt-cells'
+ - ranges
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/pxa-clock.h>
+ ***@40e00000 {
+ compatible = "intel,pxa3xx-gpio";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x40e00000 0x10000>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupts = <8>, <9>, <10>;
+ interrupt-names = "gpio0", "gpio1", "gpio_mux";
+ clocks = <&clks CLK_GPIO>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ ranges;
+ };
+ - |
+ #include <dt-bindings/clock/marvell,pxa910.h>
+ ***@d4019000 {
+ compatible = "marvell,mmp-gpio";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xd4019000 0x1000>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupts = <49>;
+ interrupt-names = "gpio_mux";
+ clocks = <&soc_clocks PXA910_CLK_GPIO>;
+ resets = <&soc_clocks PXA910_CLK_GPIO>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ ranges;
+
+ ***@d4019000 {
+ reg = <0xd4019000 0x4>;
+ };
+
+ ***@d4019004 {
+ reg = <0xd4019004 0x4>;
+ };
+
+ ***@d4019008 {
+ reg = <0xd4019008 0x4>;
+ };
+
+ ***@d4019100 {
+ reg = <0xd4019100 0x4>;
+ };
+ };
+
+...
--
2.25.1
Lubomir Rintel
2020-03-17 09:39:05 UTC
Permalink
The node name preferred by mmc-controller.yaml binding spec is "mmc":

berlin2-sony-nsz-gs7.dt.yaml: ***@ab0000: $nodename:0:
'***@ab0000' does not match '^mmc(@.*)?$'
berlin2-sony-nsz-gs7.dt.yaml: ***@ab0800: $nodename:0:
'***@ab0800' does not match '^mmc(@.*)?$'
berlin2-sony-nsz-gs7.dt.yaml: ***@ab1000: $nodename:0:
'***@ab1000' does not match '^mmc(@.*)?$'
berlin2cd-google-chromecast.dt.yaml: ***@ab0000: $nodename:0:
'***@ab0000' does not match '^mmc(@.*)?$'
berlin2cd-valve-steamlink.dt.yaml: ***@ab0000: $nodename:0:
'***@ab0000' does not match '^mmc(@.*)?$'
berlin2q-marvell-dmp.dt.yaml: ***@ab0000: $nodename:0:
'***@ab0000' does not match '^mmc(@.*)?$'
berlin2q-marvell-dmp.dt.yaml: ***@ab0800: $nodename:0:
'***@ab0800' does not match '^mmc(@.*)?$'
berlin2q-marvell-dmp.dt.yaml: ***@ab1000: $nodename:0:
'***@ab1000' does not match '^mmc(@.*)?$'

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/berlin2.dtsi | 6 +++---
arch/arm/boot/dts/berlin2cd.dtsi | 2 +-
arch/arm/boot/dts/berlin2q.dtsi | 6 +++---
3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/arch/arm/boot/dts/berlin2.dtsi b/arch/arm/boot/dts/berlin2.dtsi
index d2f7d984bba5c..3ab3cd250da70 100644
--- a/arch/arm/boot/dts/berlin2.dtsi
+++ b/arch/arm/boot/dts/berlin2.dtsi
@@ -77,7 +77,7 @@ ***@f7000000 {

ranges = <0 0xf7000000 0x1000000>;

- sdhci0: ***@ab0000 {
+ sdhci0: ***@ab0000 {
compatible = "mrvl,pxav3-mmc";
reg = <0xab0000 0x200>;
clocks = <&chip_clk CLKID_SDIO0XIN>, <&chip_clk CLKID_SDIO0>;
@@ -86,7 +86,7 @@ sdhci0: ***@ab0000 {
status = "disabled";
};

- sdhci1: ***@ab0800 {
+ sdhci1: ***@ab0800 {
compatible = "mrvl,pxav3-mmc";
reg = <0xab0800 0x200>;
clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO1>;
@@ -95,7 +95,7 @@ sdhci1: ***@ab0800 {
status = "disabled";
};

- sdhci2: ***@ab1000 {
+ sdhci2: ***@ab1000 {
compatible = "mrvl,pxav3-mmc";
reg = <0xab1000 0x200>;
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/arch/arm/boot/dts/berlin2cd.dtsi b/arch/arm/boot/dts/berlin2cd.dtsi
index e5c1f4213ff90..7cf3e6302d75c 100644
--- a/arch/arm/boot/dts/berlin2cd.dtsi
+++ b/arch/arm/boot/dts/berlin2cd.dtsi
@@ -62,7 +62,7 @@ ***@f7000000 {

ranges = <0 0xf7000000 0x1000000>;

- sdhci0: ***@ab0000 {
+ sdhci0: ***@ab0000 {
compatible = "mrvl,pxav3-mmc";
reg = <0xab0000 0x200>;
clocks = <&chip_clk CLKID_SDIO0XIN>, <&chip_clk CLKID_SDIO0>;
diff --git a/arch/arm/boot/dts/berlin2q.dtsi b/arch/arm/boot/dts/berlin2q.dtsi
index 99d6872a6dfcc..c44a32e873f44 100644
--- a/arch/arm/boot/dts/berlin2q.dtsi
+++ b/arch/arm/boot/dts/berlin2q.dtsi
@@ -122,7 +122,7 @@ ***@f7000000 {
ranges = <0 0xf7000000 0x1000000>;
interrupt-parent = <&gic>;

- sdhci0: ***@ab0000 {
+ sdhci0: ***@ab0000 {
compatible = "mrvl,pxav3-mmc";
reg = <0xab0000 0x200>;
clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
@@ -131,7 +131,7 @@ sdhci0: ***@ab0000 {
status = "disabled";
};

- sdhci1: ***@ab0800 {
+ sdhci1: ***@ab0800 {
compatible = "mrvl,pxav3-mmc";
reg = <0xab0800 0x200>;
clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
@@ -140,7 +140,7 @@ sdhci1: ***@ab0800 {
status = "disabled";
};

- sdhci2: ***@ab1000 {
+ sdhci2: ***@ab1000 {
compatible = "mrvl,pxav3-mmc";
reg = <0xab1000 0x200>;
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
--
2.25.1
Andrew Lunn
2020-03-17 13:34:56 UTC
Permalink
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Lubomir Rintel
2020-03-17 09:39:00 UTC
Permalink
gpio-pxa uses two cell to encode the interrupt source: the pin number
and the trigger type. Adjust the device node accordingly.

Signed-off-by: Lubomir Rintel <***@v3.sk>
---
arch/arm/boot/dts/pxa910.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/pxa910.dtsi b/arch/arm/boot/dts/pxa910.dtsi
index b3d6182d4de4a..5f8e208916b31 100644
--- a/arch/arm/boot/dts/pxa910.dtsi
+++ b/arch/arm/boot/dts/pxa910.dtsi
@@ -106,7 +106,7 @@ ***@d4019000 {
clocks = <&soc_clocks PXA910_CLK_GPIO>;
resets = <&soc_clocks PXA910_CLK_GPIO>;
interrupt-controller;
- #interrupt-cells = <1>;
+ #interrupt-cells = <2>;
ranges;

gcb0: ***@d4019000 {
--
2.25.1
Andrew Lunn
2020-03-17 13:29:16 UTC
Permalink
Post by Lubomir Rintel
gpio-pxa uses two cell to encode the interrupt source: the pin number
and the trigger type. Adjust the device node accordingly.
Reviewed-by: Andrew Lunn <***@lunn.ch>

Andrew
Mark Brown
2020-03-17 13:19:06 UTC
Permalink
Post by Lubomir Rintel
None of the patches depends on any other and they can be applied in any
order.
For future reference since this is a large set of mostly unrelated
changes it'd be as well to split it up via subsystem or something so
that the CC lists get reduced.
Andrew Lunn
2020-03-17 13:46:09 UTC
Permalink
Post by Lubomir Rintel
Hello World,
Yah, that is an issue here. Marvell have a few different SoC families,
each with there own maintainers. Gregory and I tend to look after
'mvebu', aka orion5x, kirkwood, dove, berlin and a few others. All the
others are 'Somebody elses' problem'.

How do you think this patchset should get merged? Are we going to
split it up, just nominate one maintainer to merge the lot, or go
direct to arm-soc?

Andrew
Alexandre Belloni
2020-03-17 13:55:59 UTC
Permalink
Post by Andrew Lunn
Post by Lubomir Rintel
Hello World,
Yah, that is an issue here. Marvell have a few different SoC families,
each with there own maintainers. Gregory and I tend to look after
'mvebu', aka orion5x, kirkwood, dove, berlin and a few others. All the
others are 'Somebody elses' problem'.
Hum, berlin is not mvebu, it was the same BU as the MMP and it has been
sold to synopsys a while ago.
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
Andrew Lunn
2020-03-17 13:59:56 UTC
Permalink
Post by Alexandre Belloni
Post by Andrew Lunn
Post by Lubomir Rintel
Hello World,
Yah, that is an issue here. Marvell have a few different SoC families,
each with there own maintainers. Gregory and I tend to look after
'mvebu', aka orion5x, kirkwood, dove, berlin and a few others. All the
others are 'Somebody elses' problem'.
Hum, berlin is not mvebu, it was the same BU as the MMP and it has been
sold to synopsys a while ago.
Yes, the boundaries are a bit fluffy. At least the early work by
Sebastian was merged via the mvebu maintainers, even if it is not
technically part of mvebu.

This is also part of the discussion about how this lot actually gets
merged.

Andrew
Loading...