[PATCH v2 00/52] ARM: dts: Last round of DT schema fixes

85 views
Skip to first unread message

Maxime Ripard

unread,
Sep 1, 2021, 4:57:31 AM9/1/21
to devic...@vger.kernel.org, Chen-Yu Tsai, Maxime Ripard, Jernej Skrabec, Rob Herring, Frank Rowand, linux...@googlegroups.com, linux-ar...@lists.infradead.org
Hi,

Here's another round of schema warnings fixes for the Allwinner platform.

There's a fair share of new schemas in there since the schema tools now warn
when a compatible is not documented in a schema.

We don't have any warning anymore if we use the OPP binding Rob submitted, and
since that means we have all our devices properly validated I don't expect more
fixes now, aside from the usual bunch of regressions.

Let me know what you think,
Maxime

Maxime Ripard (52):
ASoC: dt-bindings: Add WM8978 Binding
ASoC: dt-bindings: Convert Bluetooth SCO Link binding to a schema
ASoC: dt-bindings: Convert SPDIF Transmitter binding to a schema
ASoC: dt-bindings: Convert Simple Amplifier binding to a schema
dt-bindings: Convert Reserved Memory binding to a schema
dt-bindings: arm: Convert ARM CCI-400 binding to a schema
dt-bindings: bluetooth: broadcom: Fix clocks check
dt-bindings: bluetooth: realtek: Add missing max-speed
dt-bindings: clocks: Fix typo in the H6 compatible
dt-bindings: display: Move idk-1110wr to panel-lvds
dt-bindings: display: Move idk-2121wr to panel-lvds
dt-bindings: display: Move ee101ia-01d to panel-lvds
dt-bindings: display: aa104xd12: Remove unused vcc-supply
dt-bindings: display: aa104xd12: Fix data-mapping
dt-bindings: display: Move aa104xd12 to panel-lvds
dt-bindings: display: aa121td01: Remove unused vcc-supply
dt-bindings: display: aa121td01: Fix data-mapping
dt-bindings: display: Move aa121td01 to panel-lvds
dt-bindings: display: Move gktw70sdae4se to panel-lvds
dt-bindings: display: panel-lvds: Document missing panel compatibles
dt-bindings: gnss: Convert UBlox Neo-6M binding to a schema
dt-bindings: gpio: Convert X-Powers AXP209 GPIO binding to a schema
dt-bindings: hwmon: Add IIO HWMON binding
dt-bindings: input: Convert Silead GSL1680 binding to a schema
dt-bindings: interconnect: sunxi: Add R40 MBUS compatible
dt-bindings: media: ti,cal: Fix example
dt-bindings: media: Convert OV5640 binding to a schema
dt-bindings: mfd: Convert X-Powers AC100 binding to a schema
dt-bindings: mfd: Convert X-Powers AXP binding to a schema
dt-bindings: mmc: Convert MMC Card binding to a schema
dt-bindings: net: dwmac: Fix typo in the R40 compatible
dt-bindings: net: wireless: Convert ESP ESP8089 binding to a schema
dt-bindings: regulator: Convert SY8106A binding to a schema
dt-bindings: sunxi: Add CPU Configuration Controller Binding
dt-bindings: sunxi: Add Allwinner A80 PRCM Binding
dt-bindings: usb: Convert SMSC USB3503 binding to a schema
dt-bindings: usb: dwc3: Fix usb-phy check
dt-bindings: w1: Convert 1-Wire GPIO binding to a schema
ARM: dts: sunxi: Rename power-supply names
ARM: dts: sunxi: Rename gpio pinctrl names
ARM: dts: sunxi: Fix OPP arrays
ARM: dts: sunxi: Fix OPPs node name
ARM: dts: sunxi: Fix the SPI NOR node names
ARM: dts: v3s: Remove useless DMA properties
ARM: dts: tbs711: Fix touchscreen compatible
ARM: dts: cubieboard4: Remove the dumb-vga-dac compatible
arm64: dts: allwinner: h5: Fix GPU thermal zone node name
arm64: dts: allwinner: h6: Fix de3 parent clocks ordering
arm64: dts: allwinner: a100: Fix thermal zone node name
arm64: dts: allwinner: pinetab: Change regulator node name to avoid
warning
arm64: dts: allwinner: teres-i: Add missing reg
arm64: dts: allwinner: teres-i: Remove wakekup-source from the PMIC

.../devicetree/bindings/arm/arm,cci-400.yaml | 216 ++++++++++
.../bindings/arm/cci-control-port.yaml | 38 ++
Documentation/devicetree/bindings/arm/cci.txt | 224 ----------
.../devicetree/bindings/arm/cpus.yaml | 2 +
.../arm/sunxi/allwinner,sun4i-a10-mbus.yaml | 1 +
.../sunxi/allwinner,sun6i-a31-cpuconfig.yaml | 38 ++
.../arm/sunxi/allwinner,sun9i-a80-prcm.yaml | 33 ++
.../clock/allwinner,sun8i-a83t-de2-clk.yaml | 2 +-
.../display/panel/advantech,idk-1110wr.yaml | 69 ---
.../display/panel/advantech,idk-2121wr.yaml | 121 ------
.../display/panel/innolux,ee101ia-01d.yaml | 31 --
.../bindings/display/panel/lvds.yaml | 130 +++++-
.../display/panel/mitsubishi,aa104xd12.yaml | 75 ----
.../display/panel/mitsubishi,aa121td01.yaml | 74 ----
.../display/panel/sgd,gktw70sdae4se.yaml | 68 ---
.../bindings/gnss/u-blox,neo-6m.yaml | 62 +++
.../devicetree/bindings/gnss/u-blox.txt | 45 --
.../devicetree/bindings/gpio/gpio-axp209.txt | 75 ----
.../bindings/gpio/x-powers,axp209-gpio.yaml | 55 +++
.../devicetree/bindings/hwmon/iio-hwmon.yaml | 37 ++
.../i2c/allwinner,sun6i-a31-p2wi.yaml | 2 +-
.../input/touchscreen/silead,gsl1680.yaml | 91 ++++
.../input/touchscreen/silead_gsl1680.txt | 44 --
.../devicetree/bindings/media/i2c/ov5640.txt | 92 ----
.../bindings/media/i2c/ovti,ov5640.yaml | 154 +++++++
.../devicetree/bindings/media/ti,cal.yaml | 4 +-
.../devicetree/bindings/mfd/ac100.txt | 50 ---
.../devicetree/bindings/mfd/axp20x.txt | 273 ------------
.../bindings/mfd/x-powers,ac100.yaml | 116 +++++
.../bindings/mfd/x-powers,axp152.yaml | 400 ++++++++++++++++++
.../devicetree/bindings/mmc/mmc-card.txt | 30 --
.../devicetree/bindings/mmc/mmc-card.yaml | 48 +++
.../bindings/mmc/mmc-controller.yaml | 6 -
.../net/allwinner,sun8i-a83t-emac.yaml | 4 +-
.../bindings/net/broadcom-bluetooth.yaml | 17 +-
.../bindings/net/realtek-bluetooth.yaml | 2 +
.../devicetree/bindings/net/snps,dwmac.yaml | 6 +-
.../bindings/net/wireless/esp,esp8089.txt | 30 --
.../bindings/net/wireless/esp,esp8089.yaml | 43 ++
.../bindings/regulator/silergy,sy8106a.yaml | 52 +++
.../bindings/regulator/sy8106a-regulator.txt | 23 -
.../reserved-memory/memory-region.yaml | 40 ++
.../reserved-memory/reserved-memory.txt | 172 +-------
.../reserved-memory/reserved-memory.yaml | 96 +++++
.../reserved-memory/shared-dma-pool.yaml | 87 ++++
.../devicetree/bindings/sound/bt-sco.txt | 13 -
.../bindings/sound/linux,bt-sco.yaml | 38 ++
.../bindings/sound/linux,spdif-dit.yaml | 32 ++
.../bindings/sound/simple-amplifier.txt | 17 -
.../sound/simple-audio-amplifier.yaml | 45 ++
.../bindings/sound/spdif-transmitter.txt | 10 -
.../devicetree/bindings/sound/wlf,wm8978.yaml | 58 +++
.../devicetree/bindings/usb/smsc,usb3503.yaml | 108 +++++
.../devicetree/bindings/usb/snps,dwc3.yaml | 10 +-
.../devicetree/bindings/usb/usb3503.txt | 39 --
.../devicetree/bindings/w1/w1-gpio.txt | 27 --
.../devicetree/bindings/w1/w1-gpio.yaml | 44 ++
arch/arm/boot/dts/axp209.dtsi | 6 +-
arch/arm/boot/dts/axp22x.dtsi | 6 +-
arch/arm/boot/dts/axp81x.dtsi | 10 +-
.../arm/boot/dts/sun4i-a10-olinuxino-lime.dts | 11 +-
arch/arm/boot/dts/sun4i-a10.dtsi | 11 +-
arch/arm/boot/dts/sun5i-a13.dtsi | 15 +-
arch/arm/boot/dts/sun6i-a31.dtsi | 44 +-
arch/arm/boot/dts/sun7i-a20-bananapi.dts | 17 +-
arch/arm/boot/dts/sun7i-a20.dtsi | 34 +-
arch/arm/boot/dts/sun8i-a33.dtsi | 4 +-
arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts | 2 +-
arch/arm/boot/dts/sun8i-a83t.dtsi | 4 +-
arch/arm/boot/dts/sun8i-h3.dtsi | 4 +-
arch/arm/boot/dts/sun8i-v3-sl631.dtsi | 2 +-
arch/arm/boot/dts/sun8i-v3s.dtsi | 2 -
arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 2 +-
.../boot/dts/sunxi-libretech-all-h3-it.dtsi | 2 +-
arch/arm64/boot/dts/allwinner/axp803.dtsi | 10 +-
.../arm64/boot/dts/allwinner/sun50i-a100.dtsi | 6 +-
.../dts/allwinner/sun50i-a64-cpu-opp.dtsi | 2 +-
.../dts/allwinner/sun50i-a64-orangepi-win.dts | 2 +-
.../boot/dts/allwinner/sun50i-a64-pinetab.dts | 2 +-
.../boot/dts/allwinner/sun50i-a64-teres-i.dts | 3 +-
.../boot/dts/allwinner/sun50i-h5-cpu-opp.dtsi | 2 +-
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 2 +-
.../boot/dts/allwinner/sun50i-h6-cpu-opp.dtsi | 2 +-
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 8 +-
84 files changed, 2191 insertions(+), 1743 deletions(-)
create mode 100644 Documentation/devicetree/bindings/arm/arm,cci-400.yaml
create mode 100644 Documentation/devicetree/bindings/arm/cci-control-port.yaml
delete mode 100644 Documentation/devicetree/bindings/arm/cci.txt
create mode 100644 Documentation/devicetree/bindings/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml
create mode 100644 Documentation/devicetree/bindings/arm/sunxi/allwinner,sun9i-a80-prcm.yaml
delete mode 100644 Documentation/devicetree/bindings/display/panel/advantech,idk-1110wr.yaml
delete mode 100644 Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
delete mode 100644 Documentation/devicetree/bindings/display/panel/innolux,ee101ia-01d.yaml
delete mode 100644 Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
delete mode 100644 Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
delete mode 100644 Documentation/devicetree/bindings/display/panel/sgd,gktw70sdae4se.yaml
create mode 100644 Documentation/devicetree/bindings/gnss/u-blox,neo-6m.yaml
delete mode 100644 Documentation/devicetree/bindings/gnss/u-blox.txt
delete mode 100644 Documentation/devicetree/bindings/gpio/gpio-axp209.txt
create mode 100644 Documentation/devicetree/bindings/gpio/x-powers,axp209-gpio.yaml
create mode 100644 Documentation/devicetree/bindings/hwmon/iio-hwmon.yaml
create mode 100644 Documentation/devicetree/bindings/input/touchscreen/silead,gsl1680.yaml
delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt
delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt
create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov5640.yaml
delete mode 100644 Documentation/devicetree/bindings/mfd/ac100.txt
delete mode 100644 Documentation/devicetree/bindings/mfd/axp20x.txt
create mode 100644 Documentation/devicetree/bindings/mfd/x-powers,ac100.yaml
create mode 100644 Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
delete mode 100644 Documentation/devicetree/bindings/mmc/mmc-card.txt
create mode 100644 Documentation/devicetree/bindings/mmc/mmc-card.yaml
delete mode 100644 Documentation/devicetree/bindings/net/wireless/esp,esp8089.txt
create mode 100644 Documentation/devicetree/bindings/net/wireless/esp,esp8089.yaml
create mode 100644 Documentation/devicetree/bindings/regulator/silergy,sy8106a.yaml
delete mode 100644 Documentation/devicetree/bindings/regulator/sy8106a-regulator.txt
create mode 100644 Documentation/devicetree/bindings/reserved-memory/memory-region.yaml
create mode 100644 Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml
create mode 100644 Documentation/devicetree/bindings/reserved-memory/shared-dma-pool.yaml
delete mode 100644 Documentation/devicetree/bindings/sound/bt-sco.txt
create mode 100644 Documentation/devicetree/bindings/sound/linux,bt-sco.yaml
create mode 100644 Documentation/devicetree/bindings/sound/linux,spdif-dit.yaml
delete mode 100644 Documentation/devicetree/bindings/sound/simple-amplifier.txt
create mode 100644 Documentation/devicetree/bindings/sound/simple-audio-amplifier.yaml
delete mode 100644 Documentation/devicetree/bindings/sound/spdif-transmitter.txt
create mode 100644 Documentation/devicetree/bindings/sound/wlf,wm8978.yaml
create mode 100644 Documentation/devicetree/bindings/usb/smsc,usb3503.yaml
delete mode 100644 Documentation/devicetree/bindings/usb/usb3503.txt
delete mode 100644 Documentation/devicetree/bindings/w1/w1-gpio.txt
create mode 100644 Documentation/devicetree/bindings/w1/w1-gpio.yaml

--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:07:49 AM9/1/21
to devic...@vger.kernel.org, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, Rob Herring, Frank Rowand, linux...@googlegroups.com, linux-ar...@lists.infradead.org

Maxime Ripard

unread,
Sep 1, 2021, 5:18:57 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com

Maxime Ripard

unread,
Sep 1, 2021, 5:19:00 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, alsa-...@alsa-project.org, Liam Girdwood, Mark Brown, pat...@opensource.cirrus.com, Rob Herring
Even though we had the wm8978 driver for some time and a number of
boards using it already, we never had a binding for it. Let's add it
based on what the driver expects and the boards are providing.

Cc: alsa-...@alsa-project.org
Cc: devic...@vger.kernel.org
Cc: Liam Girdwood <lgir...@gmail.com>
Cc: Mark Brown <bro...@kernel.org>
Cc: pat...@opensource.cirrus.com
Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Changed the maintainers of the bindings
---
.../devicetree/bindings/sound/wlf,wm8978.yaml | 58 +++++++++++++++++++
1 file changed, 58 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/wlf,wm8978.yaml

diff --git a/Documentation/devicetree/bindings/sound/wlf,wm8978.yaml b/Documentation/devicetree/bindings/sound/wlf,wm8978.yaml
new file mode 100644
index 000000000000..944e5859c962
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/wlf,wm8978.yaml
@@ -0,0 +1,58 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/wlf,wm8978.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Wolfson WM8978 Codec Device Tree Bindings
+
+maintainers:
+ - pat...@opensource.cirrus.com
+
+properties:
+ '#sound-dai-cells':
+ const: 0
+
+ compatible:
+ const: wlf,wm8978
+
+ reg:
+ maxItems: 1
+
+ spi-max-frequency:
+ maximum: 526000
+
+required:
+ - '#sound-dai-cells'
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ spi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ codec@0 {
+ #sound-dai-cells = <0>;
+ compatible = "wlf,wm8978";
+ reg = <0>;
+ spi-max-frequency = <500000>;
+ };
+ };
+
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ codec@0 {
+ #sound-dai-cells = <0>;
+ compatible = "wlf,wm8978";
+ reg = <0>;
+ };
+ };
+
+...
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:02 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, alsa-...@alsa-project.org, Liam Girdwood, Mark Brown, Samuel Holland
Bluetooth SCO Link are supported by Linux with a matching device tree
binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.
Cc: Samuel Holland <sam...@sholland.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Accept either a 0 or 1 #sound-dai-cells
---
.../devicetree/bindings/sound/bt-sco.txt | 13 -------
.../bindings/sound/linux,bt-sco.yaml | 38 +++++++++++++++++++
2 files changed, 38 insertions(+), 13 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/sound/bt-sco.txt
create mode 100644 Documentation/devicetree/bindings/sound/linux,bt-sco.yaml

diff --git a/Documentation/devicetree/bindings/sound/bt-sco.txt b/Documentation/devicetree/bindings/sound/bt-sco.txt
deleted file mode 100644
index 641edf75e184..000000000000
--- a/Documentation/devicetree/bindings/sound/bt-sco.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Bluetooth-SCO audio CODEC
-
-This device support generic Bluetooth SCO link.
-
-Required properties:
-
- - compatible : "delta,dfbmcs320" or "linux,bt-sco"
-
-Example:
-
-codec: bt_sco {
- compatible = "delta,dfbmcs320";
-};
diff --git a/Documentation/devicetree/bindings/sound/linux,bt-sco.yaml b/Documentation/devicetree/bindings/sound/linux,bt-sco.yaml
new file mode 100644
index 000000000000..e3a1f485f664
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/linux,bt-sco.yaml
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/linux,bt-sco.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Bluetooth SCO Audio Codec Device Tree Bindings
+
+maintainers:
+ - Mark Brown <bro...@kernel.org>
+
+properties:
+ '#sound-dai-cells':
+ enum:
+ - 0
+
+ # For Wideband PCM
+ - 1
+
+ compatible:
+ enum:
+ - delta,dfbmcs320
+ - linux,bt-sco
+
+required:
+ - '#sound-dai-cells'
+ - compatible
+
+additionalProperties: false
+
+examples:
+ - |
+ codec {
+ #sound-dai-cells = <0>;
+ compatible = "linux,bt-sco";

Maxime Ripard

unread,
Sep 1, 2021, 5:19:03 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, alsa-...@alsa-project.org, Liam Girdwood, Mark Brown, Rob Herring
The SPDIF Transmitter binding is used by Linux with a matching Device
Tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: alsa-...@alsa-project.org
Cc: Liam Girdwood <lgir...@gmail.com>
Cc: Mark Brown <bro...@kernel.org>
Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/sound/linux,spdif-dit.yaml | 32 +++++++++++++++++++
.../bindings/sound/spdif-transmitter.txt | 10 ------
2 files changed, 32 insertions(+), 10 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/linux,spdif-dit.yaml
delete mode 100644 Documentation/devicetree/bindings/sound/spdif-transmitter.txt

diff --git a/Documentation/devicetree/bindings/sound/linux,spdif-dit.yaml b/Documentation/devicetree/bindings/sound/linux,spdif-dit.yaml
new file mode 100644
index 000000000000..c6b070e1d014
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/linux,spdif-dit.yaml
@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/linux,spdif-dit.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Dummy SPDIF Transmitter Device Tree Bindings
+
+maintainers:
+ - Mark Brown <bro...@kernel.org>
+
+properties:
+ compatible:
+ const: linux,spdif-dit
+
+ "#sound-dai-cells":
+ const: 0
+
+required:
+ - "#sound-dai-cells"
+ - compatible
+
+additionalProperties: false
+
+examples:
+ - |
+ spdif-out {
+ #sound-dai-cells = <0>;
+ compatible = "linux,spdif-dit";
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/sound/spdif-transmitter.txt b/Documentation/devicetree/bindings/sound/spdif-transmitter.txt
deleted file mode 100644
index 55a85841dd85..000000000000
--- a/Documentation/devicetree/bindings/sound/spdif-transmitter.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Device-Tree bindings for dummy spdif transmitter
-
-Required properties:
- - compatible: should be "linux,spdif-dit".
-
-Example node:
-
- codec: spdif-transmitter {
- compatible = "linux,spdif-dit";
- };
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:05 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, alsa-...@alsa-project.org, Jerome Brunet, Liam Girdwood, Mark Brown, Rob Herring
Simple audio amplifiers are supported by Linux with a matching device
tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: alsa-...@alsa-project.org
Cc: Jerome Brunet <jbr...@baylibre.com>
Cc: Liam Girdwood <lgir...@gmail.com>
Cc: Mark Brown <bro...@kernel.org>
Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/sound/simple-amplifier.txt | 17 -------
.../sound/simple-audio-amplifier.yaml | 45 +++++++++++++++++++
2 files changed, 45 insertions(+), 17 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/sound/simple-amplifier.txt
create mode 100644 Documentation/devicetree/bindings/sound/simple-audio-amplifier.yaml

diff --git a/Documentation/devicetree/bindings/sound/simple-amplifier.txt b/Documentation/devicetree/bindings/sound/simple-amplifier.txt
deleted file mode 100644
index b1b097cc9b68..000000000000
--- a/Documentation/devicetree/bindings/sound/simple-amplifier.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-Simple Amplifier Audio Driver
-
-Required properties:
-- compatible : "dioo,dio2125" or "simple-audio-amplifier"
-
-Optional properties:
-- enable-gpios : the gpio connected to the enable pin of the simple amplifier
-- VCC-supply : power supply for the device, as covered
- in Documentation/devicetree/bindings/regulator/regulator.txt
-
-Example:
-
-amp: analog-amplifier {
- compatible = "simple-audio-amplifier";
- VCC-supply = <&regulator>;
- enable-gpios = <&gpio GPIOH_3 0>;
-};
diff --git a/Documentation/devicetree/bindings/sound/simple-audio-amplifier.yaml b/Documentation/devicetree/bindings/sound/simple-audio-amplifier.yaml
new file mode 100644
index 000000000000..26379377a7ac
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/simple-audio-amplifier.yaml
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/simple-audio-amplifier.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Simple Audio Amplifier Device Tree Bindings
+
+maintainers:
+ - Jerome Brunet <jbr...@baylibre.com>
+
+properties:
+ compatible:
+ enum:
+ - dioo,dio2125
+ - simple-audio-amplifier
+
+ enable-gpios:
+ maxItems: 1
+
+ VCC-supply:
+ description: >
+ power supply for the device
+
+ sound-name-prefix:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: >
+ See ./name-prefix.txt
+
+required:
+ - compatible
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/meson8-gpio.h>
+
+ analog-amplifier {
+ compatible = "simple-audio-amplifier";
+ VCC-supply = <&regulator>;
+ enable-gpios = <&gpio GPIOH_3 0>;

Maxime Ripard

unread,
Sep 1, 2021, 5:19:08 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Mailing List
The Reserved Memory mechanism is supported by Linux thanks to its device
tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Mailing List <devicet...@vger.kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Fixed the license
- Added a mention that the file has moved
- Added a documentation for memory-region
- Split the reserved-memory binding in two: one for the generic part
and one for shared-dma-pool
---
.../reserved-memory/memory-region.yaml | 40 ++++
.../reserved-memory/reserved-memory.txt | 172 +-----------------
.../reserved-memory/reserved-memory.yaml | 96 ++++++++++
.../reserved-memory/shared-dma-pool.yaml | 87 +++++++++
4 files changed, 224 insertions(+), 171 deletions(-)
create mode 100644 Documentation/devicetree/bindings/reserved-memory/memory-region.yaml
create mode 100644 Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml
create mode 100644 Documentation/devicetree/bindings/reserved-memory/shared-dma-pool.yaml

diff --git a/Documentation/devicetree/bindings/reserved-memory/memory-region.yaml b/Documentation/devicetree/bindings/reserved-memory/memory-region.yaml
new file mode 100644
index 000000000000..3f93d9f5aa2d
--- /dev/null
+++ b/Documentation/devicetree/bindings/reserved-memory/memory-region.yaml
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reserved-memory/memory-region.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Reserved Memory Region Device Tree Binding
+
+maintainers:
+ - Devicetree Specification Mailing List <devicet...@vger.kernel.org>
+
+description: |
+ Regions in the /reserved-memory node may be referenced by other device
+ nodes by adding a memory-region property to the device node.
+
+select: true
+
+properties:
+ memory-region:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description: >
+ Phandle to a /reserved-memory child node assigned to the device.
+
+ memory-region-names:
+ $ref: /schemas/types.yaml#/definitions/string-array
+ description: >
+ A list of names, one for each corresponding entry in the
+ memory-region property
+
+additionalProperties: true
+
+examples:
+ - |
+ fb0: video@12300000 {
+ /* ... */
+ reg = <0x12300000 0x1000>;
+ memory-region = <&display_reserved>;
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
index 39b5f4c5a511..1810701a8509 100644
--- a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
+++ b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
@@ -1,171 +1 @@
-*** Reserved memory regions ***
-
-Reserved memory is specified as a node under the /reserved-memory node.
-The operating system shall exclude reserved memory from normal usage
-one can create child nodes describing particular reserved (excluded from
-normal use) memory regions. Such memory regions are usually designed for
-the special usage by various device drivers.
-
-Parameters for each memory region can be encoded into the device tree
-with the following nodes:
-
-/reserved-memory node
----------------------
-#address-cells, #size-cells (required) - standard definition
- - Should use the same values as the root node
-ranges (required) - standard definition
- - Should be empty
-
-/reserved-memory/ child nodes
------------------------------
-Each child of the reserved-memory node specifies one or more regions of
-reserved memory. Each child node may either use a 'reg' property to
-specify a specific range of reserved memory, or a 'size' property with
-optional constraints to request a dynamically allocated block of memory.
-
-Following the generic-names recommended practice, node names should
-reflect the purpose of the node (ie. "framebuffer" or "dma-pool"). Unit
-address (@<address>) should be appended to the name if the node is a
-static allocation.
-
-Properties:
-Requires either a) or b) below.
-a) static allocation
- reg (required) - standard definition
-b) dynamic allocation
- size (required) - length based on parent's #size-cells
- - Size in bytes of memory to reserve.
- alignment (optional) - length based on parent's #size-cells
- - Address boundary for alignment of allocation.
- alloc-ranges (optional) - prop-encoded-array (address, length pairs).
- - Specifies regions of memory that are
- acceptable to allocate from.
-
-If both reg and size are present, then the reg property takes precedence
-and size is ignored.
-
-Additional properties:
-compatible (optional) - standard definition
- - may contain the following strings:
- - shared-dma-pool: This indicates a region of memory meant to be
- used as a shared pool of DMA buffers for a set of devices. It can
- be used by an operating system to instantiate the necessary pool
- management subsystem if necessary.
- - restricted-dma-pool: This indicates a region of memory meant to be
- used as a pool of restricted DMA buffers for a set of devices. The
- memory region would be the only region accessible to those devices.
- When using this, the no-map and reusable properties must not be set,
- so the operating system can create a virtual mapping that will be used
- for synchronization. The main purpose for restricted DMA is to
- mitigate the lack of DMA access control on systems without an IOMMU,
- which could result in the DMA accessing the system memory at
- unexpected times and/or unexpected addresses, possibly leading to data
- leakage or corruption. The feature on its own provides a basic level
- of protection against the DMA overwriting buffer contents at
- unexpected times. However, to protect against general data leakage and
- system memory corruption, the system needs to provide way to lock down
- the memory access, e.g., MPU. Note that since coherent allocation
- needs remapping, one must set up another device coherent pool by
- shared-dma-pool and use dma_alloc_from_dev_coherent instead for atomic
- coherent allocation.
- - vendor specific string in the form <vendor>,[<device>-]<usage>
-no-map (optional) - empty property
- - Indicates the operating system must not create a virtual mapping
- of the region as part of its standard mapping of system memory,
- nor permit speculative access to it under any circumstances other
- than under the control of the device driver using the region.
-reusable (optional) - empty property
- - The operating system can use the memory in this region with the
- limitation that the device driver(s) owning the region need to be
- able to reclaim it back. Typically that means that the operating
- system can use that region to store volatile or cached data that
- can be otherwise regenerated or migrated elsewhere.
-
-A node must not carry both the no-map and the reusable property as these are
-logically contradictory.
-
-Linux implementation note:
-- If a "linux,cma-default" property is present, then Linux will use the
- region for the default pool of the contiguous memory allocator.
-
-- If a "linux,dma-default" property is present, then Linux will use the
- region for the default pool of the consistent DMA allocator.
-
-Device node references to reserved memory
------------------------------------------
-Regions in the /reserved-memory node may be referenced by other device
-nodes by adding a memory-region property to the device node.
-
-memory-region (optional) - phandle, specifier pairs to children of /reserved-memory
-memory-region-names (optional) - a list of names, one for each corresponding
- entry in the memory-region property
-
-Example
--------
-This example defines 4 contiguous regions for Linux kernel:
-one default of all device drivers (named linux,cma@72000000 and 64MiB in size),
-one dedicated to the framebuffer device (named framebuffer@78000000, 8MiB),
-one for multimedia processing (named multimedia-memory@77000000, 64MiB), and
-one for restricted dma pool (named restricted_dma_reserved@0x50000000, 64MiB).
-
-/ {
- #address-cells = <1>;
- #size-cells = <1>;
-
- memory {
- reg = <0x40000000 0x40000000>;
- };
-
- reserved-memory {
- #address-cells = <1>;
- #size-cells = <1>;
- ranges;
-
- /* global autoconfigured region for contiguous allocations */
- linux,cma {
- compatible = "shared-dma-pool";
- reusable;
- size = <0x4000000>;
- alignment = <0x2000>;
- linux,cma-default;
- };
-
- display_reserved: framebuffer@78000000 {
- reg = <0x78000000 0x800000>;
- };
-
- multimedia_reserved: multimedia@77000000 {
- compatible = "acme,multimedia-memory";
- reg = <0x77000000 0x4000000>;
- };
-
- restricted_dma_reserved: restricted_dma_reserved {
- compatible = "restricted-dma-pool";
- reg = <0x50000000 0x4000000>;
- };
- };
-
- /* ... */
-
- fb0: video@12300000 {
- memory-region = <&display_reserved>;
- /* ... */
- };
-
- scaler: scaler@12500000 {
- memory-region = <&multimedia_reserved>;
- /* ... */
- };
-
- codec: codec@12600000 {
- memory-region = <&multimedia_reserved>;
- /* ... */
- };
-
- pcie_device: pcie_device@0,0 {
- reg = <0x83010000 0x0 0x00000000 0x0 0x00100000
- 0x83010000 0x0 0x00100000 0x0 0x00100000>;
- memory-region = <&restricted_dma_reserved>;
- /* ... */
- };
-};
+This file has been moved to reserved-memory.yaml.
diff --git a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml
new file mode 100644
index 000000000000..e5df888af4b8
--- /dev/null
+++ b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reserved-memory/reserved-memory.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: /reserved-memory Child Node Common Device Tree Bindings
+
+maintainers:
+ - Devicetree Specification Mailing List <devicet...@vger.kernel.org>
+
+description: >
+ Reserved memory is specified as a node under the /reserved-memory node. The
+ operating system shall exclude reserved memory from normal usage one can
+ create child nodes describing particular reserved (excluded from normal use)
+ memory regions. Such memory regions are usually designed for the special
+ usage by various device drivers.
+
+ Each child of the reserved-memory node specifies one or more regions
+ of reserved memory. Each child node may either use a 'reg' property to
+ specify a specific range of reserved memory, or a 'size' property with
+ optional constraints to request a dynamically allocated block of
+ memory.
+
+ Following the generic-names recommended practice, node names should
+ reflect the purpose of the node (ie. "framebuffer" or "dma-pool").
+ Unit address (@<address>) should be appended to the name if the node
+ is a static allocation.
+
+properties:
+ reg: true
+
+ size:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description: >
+ Length based on parent's \#size-cells. Size in bytes of memory to
+ reserve.
+
+ alignment:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description: >
+ Length based on parent's \#size-cells. Address boundary for
+ alignment of allocation.
+
+ alloc-ranges:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description: >
+ Address and Length pairs. Specifies regions of memory that are
+ acceptable to allocate from.
+
+ no-map:
+ type: boolean
+ description: >
+ Indicates the operating system must not create a virtual mapping
+ of the region as part of its standard mapping of system memory,
+ nor permit speculative access to it under any circumstances other
+ than under the control of the device driver using the region.
+
+ reusable:
+ type: boolean
+ description: >
+ The operating system can use the memory in this region with the
+ limitation that the device driver(s) owning the region need to be
+ able to reclaim it back. Typically that means that the operating
+ system can use that region to store volatile or cached data that
+ can be otherwise regenerated or migrated elsewhere.
+
+allOf:
+ - if:
+ required:
+ - no-map
+
+ then:
+ not:
+ required:
+ - reusable
+
+ - if:
+ required:
+ - reusable
+
+ then:
+ not:
+ required:
+ - no-map
+
+oneOf:
+ - required:
+ - reg
+
+ - required:
+ - size
+
+additionalProperties: true
+
+...
diff --git a/Documentation/devicetree/bindings/reserved-memory/shared-dma-pool.yaml b/Documentation/devicetree/bindings/reserved-memory/shared-dma-pool.yaml
new file mode 100644
index 000000000000..c7a66d3da590
--- /dev/null
+++ b/Documentation/devicetree/bindings/reserved-memory/shared-dma-pool.yaml
@@ -0,0 +1,87 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reserved-memory/shared-dma-pool.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: /reserved-memory Node
+
+maintainers:
+ - Devicetree Specification Mailing List <devicet...@vger.kernel.org>
+
+allOf:
+ - $ref: "reserved-memory.yaml"
+
+properties:
+ compatible:
+ oneOf:
+ - const: shared-dma-pool
+ description: >
+ This indicates a region of memory meant to be used as a shared
+ pool of DMA buffers for a set of devices. It can be used by an
+ operating system to instantiate the necessary pool management
+ subsystem if necessary.
+
+ - const: restricted-dma-pool
+ description: >
+ This indicates a region of memory meant to be used as a pool
+ of restricted DMA buffers for a set of devices. The memory
+ region would be the only region accessible to those devices.
+ When using this, the no-map and reusable properties must not
+ be set, so the operating system can create a virtual mapping
+ that will be used for synchronization. The main purpose for
+ restricted DMA is to mitigate the lack of DMA access control
+ on systems without an IOMMU, which could result in the DMA
+ accessing the system memory at unexpected times and/or
+ unexpected addresses, possibly leading to data leakage or
+ corruption. The feature on its own provides a basic level of
+ protection against the DMA overwriting buffer contents at
+ unexpected times. However, to protect against general data
+ leakage and system memory corruption, the system needs to
+ provide way to lock down the memory access, e.g., MPU. Note
+ that since coherent allocation needs remapping, one must set
+ up another device coherent pool by shared-dma-pool and use
+ dma_alloc_from_dev_coherent instead for atomic coherent
+ allocation.
+
+ linux,cma-default:
+ type: boolean
+ description: >
+ If this property is present, then Linux will use the region for
+ the default pool of the contiguous memory allocator.
+
+ linux,dma-default:
+ type: boolean
+ description: >
+ If this property is present, then Linux will use the region for
+ the default pool of the consistent DMA allocator.
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ reserved-memory {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ /* global autoconfigured region for contiguous allocations */
+ linux,cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x4000000>;
+ alignment = <0x2000>;
+ linux,cma-default;
+ };
+
+ display_reserved: framebuffer@78000000 {
+ reg = <0x78000000 0x800000>;
+ };
+
+ restricted_dma_reserved: restricted-dma-pool@50000000 {
+ compatible = "restricted-dma-pool";
+ reg = <0x50000000 0x4000000>;
+ };

Maxime Ripard

unread,
Sep 1, 2021, 5:19:09 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Lorenzo Pieralisi
The ARM CCI-400 Interconnect is supported by Linux thanks to its device
tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Lorenzo Pieralisi <lorenzo....@arm.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Reduced the max number of interrupts
- Comented the pl330 compatible to avoid a warning
- Added cci-control-port to the cpus schemas
---
.../devicetree/bindings/arm/arm,cci-400.yaml | 216 +++++++++++++++++
.../bindings/arm/cci-control-port.yaml | 38 +++
Documentation/devicetree/bindings/arm/cci.txt | 224 ------------------
.../devicetree/bindings/arm/cpus.yaml | 2 +
4 files changed, 256 insertions(+), 224 deletions(-)
create mode 100644 Documentation/devicetree/bindings/arm/arm,cci-400.yaml
create mode 100644 Documentation/devicetree/bindings/arm/cci-control-port.yaml
delete mode 100644 Documentation/devicetree/bindings/arm/cci.txt

diff --git a/Documentation/devicetree/bindings/arm/arm,cci-400.yaml b/Documentation/devicetree/bindings/arm/arm,cci-400.yaml
new file mode 100644
index 000000000000..4682f991a5c8
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/arm,cci-400.yaml
@@ -0,0 +1,216 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/arm,cci-400.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM CCI Cache Coherent Interconnect Device Tree Binding
+
+maintainers:
+ - Lorenzo Pieralisi <lorenzo....@arm.com>
+
+description: >
+ ARM multi-cluster systems maintain intra-cluster coherency through a cache
+ coherent interconnect (CCI) that is capable of monitoring bus transactions
+ and manage coherency, TLB invalidations and memory barriers.
+
+ It allows snooping and distributed virtual memory message broadcast across
+ clusters, through memory mapped interface, with a global control register
+ space and multiple sets of interface control registers, one per slave
+ interface.
+
+properties:
+ $nodename:
+ pattern: "^cci(@[0-9a-f]+)?$"
+
+ compatible:
+ enum:
+ - arm,cci-400
+ - arm,cci-500
+ - arm,cci-550
+
+ reg:
+ maxItems: 1
+ description: >
+ Specifies base physical address of CCI control registers common to all
+ interfaces.
+
+ "#address-cells": true
+ "#size-cells": true
+ ranges: true
+
+patternProperties:
+ "^slave-if@[0-9a-f]+$":
+ type: object
+
+ properties:
+ compatible:
+ const: arm,cci-400-ctrl-if
+
+ interface-type:
+ enum:
+ - ace
+ - ace-lite
+
+ reg:
+ maxItems: 1
+
+ required:
+ - compatible
+ - interface-type
+ - reg
+
+ additionalProperties: false
+
+ "^pmu@[0-9a-f]+$":
+ type: object
+
+ properties:
+ compatible:
+ oneOf:
+ - const: arm,cci-400-pmu,r0
+ - const: arm,cci-400-pmu,r1
+ - const: arm,cci-400-pmu
+ deprecated: true
+ description: >
+ Permitted only where OS has secure access to CCI registers
+ - const: arm,cci-500-pmu,r0
+ - const: arm,cci-550-pmu,r0
+
+ interrupts:
+ minItems: 1
+ maxItems: 8
+ description: >
+ List of counter overflow interrupts, one per counter. The interrupts
+ must be specified starting with the cycle counter overflow interrupt,
+ followed by counter0 overflow interrupt, counter1 overflow
+ interrupt,... ,counterN overflow interrupt.
+
+ The CCI PMU has an interrupt signal for each counter. The number of
+ interrupts must be equal to the number of counters.
+
+ reg:
+ maxItems: 1
+
+ required:
+ - compatible
+ - interrupts
+ - reg
+
+ additionalProperties: false
+
+required:
+ - "#address-cells"
+ - "#size-cells"
+ - compatible
+ - ranges
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ / {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ compatible = "arm,vexpress,v2p-ca15_a7", "arm,vexpress";
+ model = "V2P-CA15_CA7";
+ arm,hbi = <0x249>;
+ interrupt-parent = <&gic>;
+
+ /*
+ * This CCI node corresponds to a CCI component whose control
+ * registers sits at address 0x000000002c090000.
+ *
+ * CCI slave interface @0x000000002c091000 is connected to dma
+ * controller dma0.
+ *
+ * CCI slave interface @0x000000002c094000 is connected to CPUs
+ * {CPU0, CPU1};
+ *
+ * CCI slave interface @0x000000002c095000 is connected to CPUs
+ * {CPU2, CPU3};
+ */
+
+ cpus {
+ #size-cells = <0>;
+ #address-cells = <1>;
+
+ CPU0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a15";
+ cci-control-port = <&cci_control1>;
+ reg = <0x0>;
+ };
+
+ CPU1: cpu@1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a15";
+ cci-control-port = <&cci_control1>;
+ reg = <0x1>;
+ };
+
+ CPU2: cpu@100 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a7";
+ cci-control-port = <&cci_control2>;
+ reg = <0x100>;
+ };
+
+ CPU3: cpu@101 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a7";
+ cci-control-port = <&cci_control2>;
+ reg = <0x101>;
+ };
+ };
+
+ dma0: dma@3000000 {
+ /* compatible = "arm,pl330", "arm,primecell"; */
+ cci-control-port = <&cci_control0>;
+ reg = <0x0 0x3000000 0x0 0x1000>;
+ interrupts = <10>;
+ #dma-cells = <1>;
+ #dma-channels = <8>;
+ #dma-requests = <32>;
+ };
+
+ cci@2c090000 {
+ compatible = "arm,cci-400";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x0 0x2c090000 0 0x1000>;
+ ranges = <0x0 0x0 0x2c090000 0x10000>;
+
+ cci_control0: slave-if@1000 {
+ compatible = "arm,cci-400-ctrl-if";
+ interface-type = "ace-lite";
+ reg = <0x1000 0x1000>;
+ };
+
+ cci_control1: slave-if@4000 {
+ compatible = "arm,cci-400-ctrl-if";
+ interface-type = "ace";
+ reg = <0x4000 0x1000>;
+ };
+
+ cci_control2: slave-if@5000 {
+ compatible = "arm,cci-400-ctrl-if";
+ interface-type = "ace";
+ reg = <0x5000 0x1000>;
+ };
+
+ pmu@9000 {
+ compatible = "arm,cci-400-pmu";
+ reg = <0x9000 0x5000>;
+ interrupts = <0 101 4>,
+ <0 102 4>,
+ <0 103 4>,
+ <0 104 4>,
+ <0 105 4>;
+ };
+ };
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/arm/cci-control-port.yaml b/Documentation/devicetree/bindings/arm/cci-control-port.yaml
new file mode 100644
index 000000000000..c9114866213f
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/cci-control-port.yaml
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/cci-control-port.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: CCI Interconnect Bus Masters binding
+
+maintainers:
+ - Lorenzo Pieralisi <lorenzo....@arm.com>
+
+description: |
+ Masters in the device tree connected to a CCI port (inclusive of CPUs
+ and their cpu nodes).
+
+select: true
+
+properties:
+ cci-control-port:
+ $ref: /schemas/types.yaml#/definitions/phandle
+
+additionalProperties: true
+
+examples:
+ - |
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ compatible = "arm,cortex-a15";
+ device_type = "cpu";
+ cci-control-port = <&cci_control1>;
+ reg = <0>;
+ };
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/arm/cci.txt b/Documentation/devicetree/bindings/arm/cci.txt
deleted file mode 100644
index 9600761f2d5b..000000000000
--- a/Documentation/devicetree/bindings/arm/cci.txt
+++ /dev/null
@@ -1,224 +0,0 @@
-=======================================================
-ARM CCI cache coherent interconnect binding description
-=======================================================
-
-ARM multi-cluster systems maintain intra-cluster coherency through a
-cache coherent interconnect (CCI) that is capable of monitoring bus
-transactions and manage coherency, TLB invalidations and memory barriers.
-
-It allows snooping and distributed virtual memory message broadcast across
-clusters, through memory mapped interface, with a global control register
-space and multiple sets of interface control registers, one per slave
-interface.
-
-* CCI interconnect node
-
- Description: Describes a CCI cache coherent Interconnect component
-
- Node name must be "cci".
- Node's parent must be the root node /, and the address space visible
- through the CCI interconnect is the same as the one seen from the
- root node (ie from CPUs perspective as per DT standard).
- Every CCI node has to define the following properties:
-
- - compatible
- Usage: required
- Value type: <string>
- Definition: must contain one of the following:
- "arm,cci-400"
- "arm,cci-500"
- "arm,cci-550"
-
- - reg
- Usage: required
- Value type: Integer cells. A register entry, expressed as a pair
- of cells, containing base and size.
- Definition: A standard property. Specifies base physical
- address of CCI control registers common to all
- interfaces.
-
- - ranges:
- Usage: required
- Value type: Integer cells. An array of range entries, expressed
- as a tuple of cells, containing child address,
- parent address and the size of the region in the
- child address space.
- Definition: A standard property. Follow rules in the Devicetree
- Specification for hierarchical bus addressing. CCI
- interfaces addresses refer to the parent node
- addressing scheme to declare their register bases.
-
- CCI interconnect node can define the following child nodes:
-
- - CCI control interface nodes
-
- Node name must be "slave-if".
- Parent node must be CCI interconnect node.
-
- A CCI control interface node must contain the following
- properties:
-
- - compatible
- Usage: required
- Value type: <string>
- Definition: must be set to
- "arm,cci-400-ctrl-if"
-
- - interface-type:
- Usage: required
- Value type: <string>
- Definition: must be set to one of {"ace", "ace-lite"}
- depending on the interface type the node
- represents.
-
- - reg:
- Usage: required
- Value type: Integer cells. A register entry, expressed
- as a pair of cells, containing base and
- size.
- Definition: the base address and size of the
- corresponding interface programming
- registers.
-
- - CCI PMU node
-
- Parent node must be CCI interconnect node.
-
- A CCI pmu node must contain the following properties:
-
- - compatible
- Usage: required
- Value type: <string>
- Definition: Must contain one of:
- "arm,cci-400-pmu,r0"
- "arm,cci-400-pmu,r1"
- "arm,cci-400-pmu" - DEPRECATED, permitted only where OS has
- secure access to CCI registers
- "arm,cci-500-pmu,r0"
- "arm,cci-550-pmu,r0"
- - reg:
- Usage: required
- Value type: Integer cells. A register entry, expressed
- as a pair of cells, containing base and
- size.
- Definition: the base address and size of the
- corresponding interface programming
- registers.
-
- - interrupts:
- Usage: required
- Value type: Integer cells. Array of interrupt specifier
- entries, as defined in
- ../interrupt-controller/interrupts.txt.
- Definition: list of counter overflow interrupts, one per
- counter. The interrupts must be specified
- starting with the cycle counter overflow
- interrupt, followed by counter0 overflow
- interrupt, counter1 overflow interrupt,...
- ,counterN overflow interrupt.
-
- The CCI PMU has an interrupt signal for each
- counter. The number of interrupts must be
- equal to the number of counters.
-
-* CCI interconnect bus masters
-
- Description: masters in the device tree connected to a CCI port
- (inclusive of CPUs and their cpu nodes).
-
- A CCI interconnect bus master node must contain the following
- properties:
-
- - cci-control-port:
- Usage: required
- Value type: <phandle>
- Definition: a phandle containing the CCI control interface node
- the master is connected to.
-
-Example:
-
- cpus {
- #size-cells = <0>;
- #address-cells = <1>;
-
- CPU0: cpu@0 {
- device_type = "cpu";
- compatible = "arm,cortex-a15";
- cci-control-port = <&cci_control1>;
- reg = <0x0>;
- };
-
- CPU1: cpu@1 {
- device_type = "cpu";
- compatible = "arm,cortex-a15";
- cci-control-port = <&cci_control1>;
- reg = <0x1>;
- };
-
- CPU2: cpu@100 {
- device_type = "cpu";
- compatible = "arm,cortex-a7";
- cci-control-port = <&cci_control2>;
- reg = <0x100>;
- };
-
- CPU3: cpu@101 {
- device_type = "cpu";
- compatible = "arm,cortex-a7";
- cci-control-port = <&cci_control2>;
- reg = <0x101>;
- };
-
- };
-
- dma0: dma@3000000 {
- compatible = "arm,pl330", "arm,primecell";
- cci-control-port = <&cci_control0>;
- reg = <0x0 0x3000000 0x0 0x1000>;
- interrupts = <10>;
- #dma-cells = <1>;
- #dma-channels = <8>;
- #dma-requests = <32>;
- };
-
- cci@2c090000 {
- compatible = "arm,cci-400";
- #address-cells = <1>;
- #size-cells = <1>;
- reg = <0x0 0x2c090000 0 0x1000>;
- ranges = <0x0 0x0 0x2c090000 0x10000>;
-
- cci_control0: slave-if@1000 {
- compatible = "arm,cci-400-ctrl-if";
- interface-type = "ace-lite";
- reg = <0x1000 0x1000>;
- };
-
- cci_control1: slave-if@4000 {
- compatible = "arm,cci-400-ctrl-if";
- interface-type = "ace";
- reg = <0x4000 0x1000>;
- };
-
- cci_control2: slave-if@5000 {
- compatible = "arm,cci-400-ctrl-if";
- interface-type = "ace";
- reg = <0x5000 0x1000>;
- };
-
- pmu@9000 {
- compatible = "arm,cci-400-pmu";
- reg = <0x9000 0x5000>;
- interrupts = <0 101 4>,
- <0 102 4>,
- <0 103 4>,
- <0 104 4>,
- <0 105 4>;
- };
- };
-
-This CCI node corresponds to a CCI component whose control registers sits
-at address 0x000000002c090000.
-CCI slave interface @0x000000002c091000 is connected to dma controller dma0.
-CCI slave interface @0x000000002c094000 is connected to CPUs {CPU0, CPU1};
-CCI slave interface @0x000000002c095000 is connected to CPUs {CPU2, CPU3};
diff --git a/Documentation/devicetree/bindings/arm/cpus.yaml b/Documentation/devicetree/bindings/arm/cpus.yaml
index 9a2432a88074..35b552ce8803 100644
--- a/Documentation/devicetree/bindings/arm/cpus.yaml
+++ b/Documentation/devicetree/bindings/arm/cpus.yaml
@@ -240,6 +240,8 @@ properties:
DMIPS/MHz, relative to highest capacity-dmips-mhz
in the system.

+ cci-control-port: true
+
dynamic-power-coefficient:
$ref: '/schemas/types.yaml#/definitions/uint32'
description:
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:12 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, David S. Miller, Jakub Kicinski, Linus Walleij, net...@vger.kernel.org, Rob Herring
The original binding was mentioning that valid values for the clocks and
clock-names property were one or two clocks from extclk, txco and lpo,
with extclk being deprecated in favor of txco.

However, the current binding lists a valid array as extclk, txco and
lpo, with either one or two items.

While this looks similar, it actually enforces that all the device trees
use either ["extclk"], or ["extclk", "txco"]. That doesn't make much
sense, since the two clocks are said to be equivalent, with one
superseeding the other.

lpo is also not a valid clock anymore, and would be as the third clock
of the list, while we could have only this clock in the previous binding
(and in DTs).

Let's rework the clock clause to allow to have either:

- extclk, and mark it a deprecated
- txco alone
- lpo alone
- txco, lpo

While ["extclk", "lpo"] wouldn't be valid, it wasn't found in any device
tree so it's not an issue in practice.

Similarly, ["lpo", "txco"] is still considered invalid, but it's
generally considered as a best practice to fix the order of clocks.

Cc: "David S. Miller" <da...@davemloft.net>
Cc: Jakub Kicinski <ku...@kernel.org>
Cc: Linus Walleij <linus....@linaro.org>
Cc: net...@vger.kernel.org
Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/net/broadcom-bluetooth.yaml | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/net/broadcom-bluetooth.yaml b/Documentation/devicetree/bindings/net/broadcom-bluetooth.yaml
index fbdc2083bec4..5aac094fd217 100644
--- a/Documentation/devicetree/bindings/net/broadcom-bluetooth.yaml
+++ b/Documentation/devicetree/bindings/net/broadcom-bluetooth.yaml
@@ -50,16 +50,29 @@ properties:
by interrupts and "host-wakeup" interrupt-names

clocks:
+ minItems: 1
maxItems: 2
description: 1 or 2 clocks as defined in clock-names below,
in that order

clock-names:
description: Names of the 1 to 2 supplied clocks
- items:
+ oneOf:
+ - const: extclk
+ deprecated: true
+ description: Deprecated in favor of txco
+
- const: txco
+ description: >
+ external reference clock (not a standalone crystal)
+
- const: lpo
- - const: extclk
+ description: >
+ external low power 32.768 kHz clock
+
+ - items:
+ - const: txco
+ - const: lpo

vbat-supply:
description: phandle to regulator supply for VBAT
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:13 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Alistair Francis, David S. Miller, Jakub Kicinski, net...@vger.kernel.org, Vasily Khoruzhick, Rob Herring
additionalProperties prevent any property not explicitly defined in the
binding to be used. Yet, some serial properties like max-speed are valid
and validated through the serial/serial.yaml binding.

Even though the ideal solution would be to use unevaluatedProperties
instead, it's not pratical due to the way the bus bindings have been
described. Let's add max-speed to remove the warning.

Cc: Alistair Francis <alis...@alistair23.me>
Cc: "David S. Miller" <da...@davemloft.net>
Cc: Jakub Kicinski <ku...@kernel.org>
Cc: net...@vger.kernel.org
Cc: Vasily Khoruzhick <anar...@gmail.com>
Reviewed-by: Alistair Francis <alis...@alistair23.me>
Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
Documentation/devicetree/bindings/net/realtek-bluetooth.yaml | 2 ++
1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/realtek-bluetooth.yaml b/Documentation/devicetree/bindings/net/realtek-bluetooth.yaml
index 0634e69dd9a6..157d606bf9cb 100644
--- a/Documentation/devicetree/bindings/net/realtek-bluetooth.yaml
+++ b/Documentation/devicetree/bindings/net/realtek-bluetooth.yaml
@@ -34,6 +34,8 @@ properties:
maxItems: 1
description: GPIO specifier, used to wakeup the host processor

+ max-speed: true
+
required:
- compatible

--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:15 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Rob Herring
Even though both the driver and the device trees all use the
allwinner,sun50i-h6-de3-clk, we documented the compatible as
allwinner,sun50i-h6-de2-clk in the binding. Let's fix this.

Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../devicetree/bindings/clock/allwinner,sun8i-a83t-de2-clk.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/clock/allwinner,sun8i-a83t-de2-clk.yaml b/Documentation/devicetree/bindings/clock/allwinner,sun8i-a83t-de2-clk.yaml
index 3f995d2b30eb..e79eeac5f086 100644
--- a/Documentation/devicetree/bindings/clock/allwinner,sun8i-a83t-de2-clk.yaml
+++ b/Documentation/devicetree/bindings/clock/allwinner,sun8i-a83t-de2-clk.yaml
@@ -24,7 +24,7 @@ properties:
- const: allwinner,sun8i-v3s-de2-clk
- const: allwinner,sun50i-a64-de2-clk
- const: allwinner,sun50i-h5-de2-clk
- - const: allwinner,sun50i-h6-de2-clk
+ - const: allwinner,sun50i-h6-de3-clk
- items:
- const: allwinner,sun8i-r40-de2-clk
- const: allwinner,sun8i-h3-de2-clk
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:17 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Advantech IDK-2121WR Device Tree binding doesn't really add any
useful content that is not already present in the panel-lvds binding
aside from a requirement on the data-mapping.

Let's move it to the generic panel-lvds binding

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../display/panel/advantech,idk-1110wr.yaml | 69 -------------------
.../bindings/display/panel/lvds.yaml | 22 ++++--
2 files changed, 15 insertions(+), 76 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/display/panel/advantech,idk-1110wr.yaml

diff --git a/Documentation/devicetree/bindings/display/panel/advantech,idk-1110wr.yaml b/Documentation/devicetree/bindings/display/panel/advantech,idk-1110wr.yaml
deleted file mode 100644
index 93878c2cd370..000000000000
--- a/Documentation/devicetree/bindings/display/panel/advantech,idk-1110wr.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/display/panel/advantech,idk-1110wr.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Advantech IDK-1110WR 10.1" WSVGA LVDS Display Panel
-
-maintainers:
- - Lad Prabhakar <prabhakar.ma...@bp.renesas.com>
- - Thierry Reding <thierry...@gmail.com>
-
-allOf:
- - $ref: lvds.yaml#
-
-properties:
- compatible:
- items:
- - const: advantech,idk-1110wr
- - {} # panel-lvds, but not listed here to avoid false select
-
- data-mapping:
- const: jeida-24
-
- width-mm:
- const: 223
-
- height-mm:
- const: 125
-
- panel-timing: true
- port: true
-
-additionalProperties: false
-
-required:
- - compatible
-
-examples:
- - |+
- panel {
- compatible = "advantech,idk-1110wr", "panel-lvds";
-
- width-mm = <223>;
- height-mm = <125>;
-
- data-mapping = "jeida-24";
-
- panel-timing {
- /* 1024x600 @60Hz */
- clock-frequency = <51200000>;
- hactive = <1024>;
- vactive = <600>;
- hsync-len = <240>;
- hfront-porch = <40>;
- hback-porch = <40>;
- vsync-len = <10>;
- vfront-porch = <15>;
- vback-porch = <10>;
- };
-
- port {
- panel_in: endpoint {
- remote-endpoint = <&lvds_encoder>;
- };
- };
- };
-
-...
diff --git a/Documentation/devicetree/bindings/display/panel/lvds.yaml b/Documentation/devicetree/bindings/display/panel/lvds.yaml
index 49460c9dceea..e4e49e06f302 100644
--- a/Documentation/devicetree/bindings/display/panel/lvds.yaml
+++ b/Documentation/devicetree/bindings/display/panel/lvds.yaml
@@ -28,15 +28,23 @@ description: |+

allOf:
- $ref: panel-common.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: advantech,idk-1110wr
+
+ then:
+ properties:
+ data-mapping:
+ const: jeida-24

properties:
compatible:
- contains:
- const: panel-lvds
- description:
- Shall contain "panel-lvds" in addition to a mandatory panel-specific
- compatible string defined in individual panel bindings. The "panel-lvds"
- value shall never be used on its own.
+ items:
+ - enum:
+ - advantech,idk-1110wr
+ - const: panel-lvds

data-mapping:
enum:
@@ -112,6 +120,6 @@ oneOf:
- required:
- ports

-additionalProperties: true
+unevaluatedProperties: false

...
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:19 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Advantech IDK-2121WR Device Tree binding uses most of the panel-lvds
binding, aside from a requirement on the data-mapping and the
definition of the dual link binding.

The LVDS dual link binding applies to any panel with a dual-link setup,
and thus could be made generic, and we can move the data-mapping
requirement to a conditional.

Let's move it to the generic panel-lvds binding

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../display/panel/advantech,idk-2121wr.yaml | 121 ------------------
.../bindings/display/panel/lvds.yaml | 88 ++++++++++++-
2 files changed, 87 insertions(+), 122 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml

diff --git a/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml b/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
deleted file mode 100644
index 67682fe77f10..000000000000
--- a/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
+++ /dev/null
@@ -1,121 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/display/panel/advantech,idk-2121wr.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Advantech IDK-2121WR 21.5" Full-HD dual-LVDS panel
-
-maintainers:
- - Lad Prabhakar <prabhakar.ma...@bp.renesas.com>
- - Thierry Reding <thierry...@gmail.com>
-
-description: |
- The IDK-2121WR from Advantech is a Full-HD dual-LVDS panel.
- A dual-LVDS interface is a dual-link connection with even pixels traveling
- on one link, and with odd pixels traveling on the other link.
-
- The panel expects odd pixels on the first port, and even pixels on the
- second port, therefore the ports must be marked accordingly (with either
- dual-lvds-odd-pixels or dual-lvds-even-pixels).
-
-properties:
- compatible:
- items:
- - const: advantech,idk-2121wr
- - {} # panel-lvds, but not listed here to avoid false select
-
- width-mm:
- const: 476
-
- height-mm:
- const: 268
-
- data-mapping:
- const: vesa-24
-
- panel-timing: true
-
- ports:
- $ref: /schemas/graph.yaml#/properties/ports
-
- properties:
- port@0:
- $ref: /schemas/graph.yaml#/$defs/port-base
- unevaluatedProperties: false
- description: The sink for odd pixels.
- properties:
- dual-lvds-odd-pixels: true
-
- required:
- - dual-lvds-odd-pixels
-
- port@1:
- $ref: /schemas/graph.yaml#/$defs/port-base
- unevaluatedProperties: false
- description: The sink for even pixels.
- properties:
- dual-lvds-even-pixels: true
-
- required:
- - dual-lvds-even-pixels
-
- required:
- - port@0
- - port@1
-
-additionalProperties: false
-
-required:
- - compatible
- - width-mm
- - height-mm
- - data-mapping
- - panel-timing
- - ports
-
-examples:
- - |+
- panel-lvds {
- compatible = "advantech,idk-2121wr", "panel-lvds";
-
- width-mm = <476>;
- height-mm = <268>;
-
- data-mapping = "vesa-24";
-
- panel-timing {
- clock-frequency = <148500000>;
- hactive = <1920>;
- vactive = <1080>;
- hsync-len = <44>;
- hfront-porch = <88>;
- hback-porch = <148>;
- vfront-porch = <4>;
- vback-porch = <36>;
- vsync-len = <5>;
- };
-
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
-
- port@0 {
- reg = <0>;
- dual-lvds-odd-pixels;
- panel_in0: endpoint {
- remote-endpoint = <&lvds0_out>;
- };
- };
-
- port@1 {
- reg = <1>;
- dual-lvds-even-pixels;
- panel_in1: endpoint {
- remote-endpoint = <&lvds1_out>;
- };
- };
- };
- };
-
-...
diff --git a/Documentation/devicetree/bindings/display/panel/lvds.yaml b/Documentation/devicetree/bindings/display/panel/lvds.yaml
index e4e49e06f302..9b3b329e4e67 100644
--- a/Documentation/devicetree/bindings/display/panel/lvds.yaml
+++ b/Documentation/devicetree/bindings/display/panel/lvds.yaml
@@ -39,11 +39,26 @@ allOf:
data-mapping:
const: jeida-24

+ - if:
+ properties:
+ compatible:
+ contains:
+ const: advantech,idk-2121wr
+
+ then:
+ properties:
+ data-mapping:
+ const: vesa-24
+
+ required:
+ - ports
+
properties:
compatible:
items:
- enum:
- advantech,idk-1110wr
+ - advantech,idk-2121wr
- const: panel-lvds

data-mapping:
@@ -105,7 +120,34 @@ properties:
data lanes, transmitting bits for slots 6 to 0 instead of 0 to 6.

port: true
- ports: true
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+
+ properties:
+ port@0:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ unevaluatedProperties: false
+ description: The sink for odd pixels.
+ properties:
+ dual-lvds-odd-pixels: true
+
+ required:
+ - dual-lvds-odd-pixels
+
+ port@1:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ unevaluatedProperties: false
+ description: The sink for even pixels.
+ properties:
+ dual-lvds-even-pixels: true
+
+ required:
+ - dual-lvds-even-pixels
+
+ required:
+ - port@0
+ - port@1

required:
- compatible
@@ -122,4 +164,48 @@ oneOf:

unevaluatedProperties: false

+examples:
+ - |+
+ panel-lvds {
+ compatible = "advantech,idk-2121wr", "panel-lvds";
+
+ width-mm = <476>;
+ height-mm = <268>;
+
+ data-mapping = "vesa-24";
+
+ panel-timing {
+ clock-frequency = <148500000>;
+ hactive = <1920>;
+ vactive = <1080>;
+ hsync-len = <44>;
+ hfront-porch = <88>;
+ hback-porch = <148>;
+ vfront-porch = <4>;
+ vback-porch = <36>;
+ vsync-len = <5>;
+ };
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ dual-lvds-odd-pixels;
+ panel_in0: endpoint {
+ remote-endpoint = <&lvds0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ dual-lvds-even-pixels;
+ panel_in1: endpoint {
+ remote-endpoint = <&lvds1_out>;
+ };
+ };
+ };
+ };
+
...
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:21 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Innolux EE101IA-01D Device Tree binding doesn't really add any
useful content that is not already present in the panel-lvds binding.
Let's move it to the generic panel-lvds binding

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../display/panel/innolux,ee101ia-01d.yaml | 31 -------------------
.../bindings/display/panel/lvds.yaml | 1 +
2 files changed, 1 insertion(+), 31 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/display/panel/innolux,ee101ia-01d.yaml

diff --git a/Documentation/devicetree/bindings/display/panel/innolux,ee101ia-01d.yaml b/Documentation/devicetree/bindings/display/panel/innolux,ee101ia-01d.yaml
deleted file mode 100644
index a69681e724cb..000000000000
--- a/Documentation/devicetree/bindings/display/panel/innolux,ee101ia-01d.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/display/panel/innolux,ee101ia-01d.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Innolux Corporation 10.1" EE101IA-01D WXGA (1280x800) LVDS panel
-
-maintainers:
- - Heiko Stuebner <heiko.s...@bq.com>
- - Thierry Reding <thierry...@gmail.com>
-
-allOf:
- - $ref: lvds.yaml#
-
-properties:
- compatible:
- items:
- - const: innolux,ee101ia-01d
- - {} # panel-lvds, but not listed here to avoid false select
-
- backlight: true
- enable-gpios: true
- power-supply: true
- width-mm: true
- height-mm: true
- panel-timing: true
- port: true
-
-additionalProperties: false
-...
diff --git a/Documentation/devicetree/bindings/display/panel/lvds.yaml b/Documentation/devicetree/bindings/display/panel/lvds.yaml
index 9b3b329e4e67..91a6d97a96e0 100644
--- a/Documentation/devicetree/bindings/display/panel/lvds.yaml
+++ b/Documentation/devicetree/bindings/display/panel/lvds.yaml
@@ -59,6 +59,7 @@ properties:
- enum:
- advantech,idk-1110wr
- advantech,idk-2121wr
+ - innolux,ee101ia-01d
- const: panel-lvds

data-mapping:
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:23 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Mitsubishi AA140XD12 Device Tree Binding was requiring a vcc-supply
property. However, neither the existing device trees using that binding,
nor the driver were actually using that property which is also redundant
with power-supply. Let's just drop it.

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/display/panel/mitsubishi,aa104xd12.yaml | 5 -----
1 file changed, 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
index b5e7ee230fa6..b595edd58bbb 100644
--- a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
+++ b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
@@ -19,9 +19,6 @@ properties:
- const: mitsubishi,aa104xd12
- {} # panel-lvds, but not listed here to avoid false select

- vcc-supply:
- description: Reference to the regulator powering the panel VCC pins.
-
data-mapping:
const: jeida-24

@@ -38,14 +35,12 @@ additionalProperties: false

required:
- compatible
- - vcc-supply

examples:
- |+

panel {
compatible = "mitsubishi,aa104xd12", "panel-lvds";
- vcc-supply = <&vcc_3v3>;

width-mm = <210>;
height-mm = <158>;
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:24 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Mitsubishi AA140XD12 Device Tree Binding was requiring a
data-mapping property value which was set to another value in the
existing Device Trees. Fix this.

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/display/panel/mitsubishi,aa104xd12.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
index b595edd58bbb..2d1c85e377cd 100644
--- a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
+++ b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
@@ -20,7 +20,7 @@ properties:
- {} # panel-lvds, but not listed here to avoid false select

data-mapping:
- const: jeida-24
+ const: jeida-18

width-mm:
const: 210
@@ -45,7 +45,7 @@ examples:
width-mm = <210>;
height-mm = <158>;

- data-mapping = "jeida-24";
+ data-mapping = "jeida-18";

panel-timing {
/* 1024x768 @65Hz */
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:26 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Mitsubishi AA104XD12 Device Tree binding doesn't really add any
useful content that is not already present in the panel-lvds binding
aside from a requirement on the data-mapping.

Let's move it to the generic panel-lvds binding

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/display/panel/lvds.yaml | 12 ++++
.../display/panel/mitsubishi,aa104xd12.yaml | 70 -------------------
2 files changed, 12 insertions(+), 70 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml

diff --git a/Documentation/devicetree/bindings/display/panel/lvds.yaml b/Documentation/devicetree/bindings/display/panel/lvds.yaml
index 91a6d97a96e0..09a818a60f2e 100644
--- a/Documentation/devicetree/bindings/display/panel/lvds.yaml
+++ b/Documentation/devicetree/bindings/display/panel/lvds.yaml
@@ -28,6 +28,17 @@ description: |+

allOf:
- $ref: panel-common.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: mitsubishi,aa104xd12
+
+ then:
+ properties:
+ data-mapping:
+ const: jeida-18
+
- if:
properties:
compatible:
@@ -60,6 +71,7 @@ properties:
- advantech,idk-1110wr
- advantech,idk-2121wr
- innolux,ee101ia-01d
+ - mitsubishi,aa104xd12
- const: panel-lvds

data-mapping:
diff --git a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
deleted file mode 100644
index 2d1c85e377cd..000000000000
--- a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
+++ /dev/null
@@ -1,70 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/display/panel/mitsubishi,aa104xd12.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Mitsubishi AA104XD12 10.4" XGA LVDS Display Panel
-
-maintainers:
- - Laurent Pinchart <laurent....@ideasonboard.com>
- - Thierry Reding <thierry...@gmail.com>
-
-allOf:
- - $ref: lvds.yaml#
-
-properties:
- compatible:
- items:
- - const: mitsubishi,aa104xd12
- - {} # panel-lvds, but not listed here to avoid false select
-
- data-mapping:
- const: jeida-18
-
- width-mm:
- const: 210
-
- height-mm:
- const: 158
-
- panel-timing: true
- port: true
-
-additionalProperties: false
-
-required:
- - compatible
-
-examples:
- - |+
-
- panel {
- compatible = "mitsubishi,aa104xd12", "panel-lvds";
-
- width-mm = <210>;
- height-mm = <158>;
-
- data-mapping = "jeida-18";
-
- panel-timing {
- /* 1024x768 @65Hz */
- clock-frequency = <65000000>;
- hactive = <1024>;
- vactive = <768>;
- hsync-len = <136>;
- hfront-porch = <20>;
- hback-porch = <160>;
- vfront-porch = <3>;
- vback-porch = <29>;
- vsync-len = <6>;
- };
-
- port {
- panel_in: endpoint {
- remote-endpoint = <&lvds_encoder>;
- };
- };
- };
-
-...
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:28 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Mitsubishi AA121TD01 Device Tree Binding was requiring a vcc-supply
property. However, neither the existing device trees using that binding,
nor the driver were actually using that property which is also redundant
with power-supply. Let's just drop it.

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/display/panel/mitsubishi,aa121td01.yaml | 5 -----
1 file changed, 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
index 977c50a85b67..b0f1d4eff12d 100644
--- a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
+++ b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
@@ -19,9 +19,6 @@ properties:
- const: mitsubishi,aa121td01
- {} # panel-lvds, but not listed here to avoid false select

- vcc-supply:
- description: Reference to the regulator powering the panel VCC pins.
-
data-mapping:
const: jeida-24

@@ -38,13 +35,11 @@ additionalProperties: false

required:
- compatible
- - vcc-supply

examples:
- |+
panel {
compatible = "mitsubishi,aa121td01", "panel-lvds";
- vcc-supply = <&vcc_3v3>;

width-mm = <261>;
height-mm = <163>;
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:30 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Mitsubishi AA121TD01 Device Tree Binding was requiring a
data-mapping property value which was set to another value in the
existing Device Trees. Fix this.

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/display/panel/mitsubishi,aa121td01.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
index b0f1d4eff12d..467a0ed4d444 100644
--- a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
+++ b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
@@ -20,7 +20,7 @@ properties:
- {} # panel-lvds, but not listed here to avoid false select

data-mapping:
- const: jeida-24
+ const: jeida-18

width-mm:
const: 261
@@ -44,7 +44,7 @@ examples:
width-mm = <261>;
height-mm = <163>;

- data-mapping = "jeida-24";
+ data-mapping = "jeida-18";

panel-timing {
/* 1280x800 @60Hz */
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:32 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Solomon Goldentek Display GKTW70SDAE4SE Device Tree binding doesn't
really add any useful content that is not already present in the
panel-lvds binding aside from a requirement on the data-mapping.

Let's move it to the generic panel-lvds binding

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/display/panel/lvds.yaml | 2 +
.../display/panel/sgd,gktw70sdae4se.yaml | 68 -------------------
2 files changed, 2 insertions(+), 68 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/display/panel/sgd,gktw70sdae4se.yaml

diff --git a/Documentation/devicetree/bindings/display/panel/lvds.yaml b/Documentation/devicetree/bindings/display/panel/lvds.yaml
index 22f6cf1e134d..1563d57bc793 100644
--- a/Documentation/devicetree/bindings/display/panel/lvds.yaml
+++ b/Documentation/devicetree/bindings/display/panel/lvds.yaml
@@ -35,6 +35,7 @@ allOf:
enum:
- mitsubishi,aa104xd12
- mitsubishi,aa121td01
+ - sgd,gktw70sdae4se

then:
properties:
@@ -75,6 +76,7 @@ properties:
- innolux,ee101ia-01d
- mitsubishi,aa104xd12
- mitsubishi,aa121td01
+ - sgd,gktw70sdae4se
- const: panel-lvds

data-mapping:
diff --git a/Documentation/devicetree/bindings/display/panel/sgd,gktw70sdae4se.yaml b/Documentation/devicetree/bindings/display/panel/sgd,gktw70sdae4se.yaml
deleted file mode 100644
index e63a570ae59d..000000000000
--- a/Documentation/devicetree/bindings/display/panel/sgd,gktw70sdae4se.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/display/panel/sgd,gktw70sdae4se.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Solomon Goldentek Display GKTW70SDAE4SE 7" WVGA LVDS Display Panel
-
-maintainers:
- - Neil Armstrong <narms...@baylibre.com>
- - Thierry Reding <thierry...@gmail.com>
-
-allOf:
- - $ref: lvds.yaml#
-
-properties:
- compatible:
- items:
- - const: sgd,gktw70sdae4se
- - {} # panel-lvds, but not listed here to avoid false select
-
- data-mapping:
- const: jeida-18
-
- width-mm:
- const: 153
-
- height-mm:
- const: 86
-
- panel-timing: true
- port: true
-
-additionalProperties: false
-
-required:
- - compatible
-
-examples:
- - |+
- panel {
- compatible = "sgd,gktw70sdae4se", "panel-lvds";
-
- width-mm = <153>;
- height-mm = <86>;
-
- data-mapping = "jeida-18";
-
- panel-timing {
- clock-frequency = <32000000>;
- hactive = <800>;
- vactive = <480>;
- hback-porch = <39>;
- hfront-porch = <39>;
- vback-porch = <29>;
- vfront-porch = <13>;
- hsync-len = <47>;
- vsync-len = <2>;

Maxime Ripard

unread,
Sep 1, 2021, 5:19:32 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
The Mitsubishi AA121TD01 Device Tree binding doesn't really add any
useful content that is not already present in the panel-lvds binding
aside from a requirement on the data-mapping.

Let's move it to the generic panel-lvds binding

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/display/panel/lvds.yaml | 5 +-
.../display/panel/mitsubishi,aa121td01.yaml | 69 -------------------
2 files changed, 4 insertions(+), 70 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml

diff --git a/Documentation/devicetree/bindings/display/panel/lvds.yaml b/Documentation/devicetree/bindings/display/panel/lvds.yaml
index 09a818a60f2e..22f6cf1e134d 100644
--- a/Documentation/devicetree/bindings/display/panel/lvds.yaml
+++ b/Documentation/devicetree/bindings/display/panel/lvds.yaml
@@ -32,7 +32,9 @@ allOf:
properties:
compatible:
contains:
- const: mitsubishi,aa104xd12
+ enum:
+ - mitsubishi,aa104xd12
+ - mitsubishi,aa121td01

then:
properties:
@@ -72,6 +74,7 @@ properties:
- advantech,idk-2121wr
- innolux,ee101ia-01d
- mitsubishi,aa104xd12
+ - mitsubishi,aa121td01
- const: panel-lvds

data-mapping:
diff --git a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml b/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
deleted file mode 100644
index 467a0ed4d444..000000000000
--- a/Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/display/panel/mitsubishi,aa121td01.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Mitsubishi AA121TD01 12.1" WXGA LVDS Display Panel
-
-maintainers:
- - Laurent Pinchart <laurent....@ideasonboard.com>
- - Thierry Reding <thierry...@gmail.com>
-
-allOf:
- - $ref: lvds.yaml#
-
-properties:
- compatible:
- items:
- - const: mitsubishi,aa121td01
- - {} # panel-lvds, but not listed here to avoid false select
-
- data-mapping:
- const: jeida-18
-
- width-mm:
- const: 261
-
- height-mm:
- const: 163
-
- panel-timing: true
- port: true
-
-additionalProperties: false
-
-required:
- - compatible
-
-examples:
- - |+
- panel {
- compatible = "mitsubishi,aa121td01", "panel-lvds";
-
- width-mm = <261>;
- height-mm = <163>;
-
- data-mapping = "jeida-18";
-
- panel-timing {
- /* 1280x800 @60Hz */
- clock-frequency = <71000000>;
- hactive = <1280>;
- vactive = <800>;
- hsync-len = <70>;
- hfront-porch = <20>;
- hback-porch = <70>;
- vsync-len = <5>;
- vfront-porch = <3>;
- vback-porch = <15>;

Maxime Ripard

unread,
Sep 1, 2021, 5:19:35 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, dri-...@lists.freedesktop.org, Laurent Pinchart, Sam Ravnborg, Thierry Reding
A few panel-lvds compatibles were never documented. Let's add them.

Cc: dri-...@lists.freedesktop.org
Cc: Laurent Pinchart <laurent....@ideasonboard.com>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
Documentation/devicetree/bindings/display/panel/lvds.yaml | 2 ++
1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/panel/lvds.yaml b/Documentation/devicetree/bindings/display/panel/lvds.yaml
index 1563d57bc793..b2e8f5b263d7 100644
--- a/Documentation/devicetree/bindings/display/panel/lvds.yaml
+++ b/Documentation/devicetree/bindings/display/panel/lvds.yaml
@@ -73,10 +73,12 @@ properties:
- enum:
- advantech,idk-1110wr
- advantech,idk-2121wr
+ - auo,b101ew05
- innolux,ee101ia-01d
- mitsubishi,aa104xd12
- mitsubishi,aa121td01
- sgd,gktw70sdae4se
+ - tbs,a711-panel

Maxime Ripard

unread,
Sep 1, 2021, 5:19:36 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Johan Hovold
The UBlox Neo 6M is supported by Linux thanks to its device tree
binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Johan Hovold <jo...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Fixed a typo
- Fixed the example node name
---
.../bindings/gnss/u-blox,neo-6m.yaml | 62 +++++++++++++++++++
.../devicetree/bindings/gnss/u-blox.txt | 45 --------------
2 files changed, 62 insertions(+), 45 deletions(-)
create mode 100644 Documentation/devicetree/bindings/gnss/u-blox,neo-6m.yaml
delete mode 100644 Documentation/devicetree/bindings/gnss/u-blox.txt

diff --git a/Documentation/devicetree/bindings/gnss/u-blox,neo-6m.yaml b/Documentation/devicetree/bindings/gnss/u-blox,neo-6m.yaml
new file mode 100644
index 000000000000..396101a223e7
--- /dev/null
+++ b/Documentation/devicetree/bindings/gnss/u-blox,neo-6m.yaml
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gnss/u-blox,neo-6m.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: U-blox GNSS Receiver Device Tree Bindings
+
+maintainers:
+ - Johan Hovold <jo...@kernel.org>
+
+description: >
+ The U-blox GNSS receivers can use UART, DDC (I2C), SPI and USB interfaces.
+
+properties:
+ compatible:
+ enum:
+ - u-blox,neo-6m
+ - u-blox,neo-8
+ - u-blox,neo-m8
+
+ reg:
+ description: >
+ The DDC Slave Address, SPI chip select address, the number of the USB hub
+ port or the USB host-controller port to which this device is attached,
+ depending on the bus used. Required for the DDC, SPI or USB busses.
+
+ vcc-supply:
+ description: >
+ Main voltage regulator
+
+ timepulse-gpios:
+ maxItems: 1
+ description: >
+ Time pulse GPIO
+
+ u-blox,extint-gpios:
+ maxItems: 1
+ description: >
+ GPIO connected to the "external interrupt" input pin
+
+ v-bckp-supply:
+ description: >
+ Backup voltage regulator
+
+ current-speed: true
+
+required:
+ - compatible
+ - vcc-supply
+
+additionalProperties: false
+
+examples:
+ - |
+ serial {
+ gnss {
+ compatible = "u-blox,neo-8";
+ v-bckp-supply = <&gnss_v_bckp_reg>;
+ vcc-supply = <&gnss_vcc_reg>;
+ };
+ };
diff --git a/Documentation/devicetree/bindings/gnss/u-blox.txt b/Documentation/devicetree/bindings/gnss/u-blox.txt
deleted file mode 100644
index 7cdefd058fe0..000000000000
--- a/Documentation/devicetree/bindings/gnss/u-blox.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-u-blox GNSS Receiver DT binding
-
-The u-blox GNSS receivers can use UART, DDC (I2C), SPI and USB interfaces.
-
-Please see Documentation/devicetree/bindings/gnss/gnss.txt for generic
-properties.
-
-Required properties:
-
-- compatible : Must be one of
-
- "u-blox,neo-6m"
- "u-blox,neo-8"
- "u-blox,neo-m8"
-
-- vcc-supply : Main voltage regulator
-
-Required properties (DDC):
-- reg : DDC (I2C) slave address
-
-Required properties (SPI):
-- reg : SPI chip select address
-
-Required properties (USB):
-- reg : Number of the USB hub port or the USB host-controller port
- to which this device is attached
-
-Optional properties:
-
-- timepulse-gpios : Time pulse GPIO
-- u-blox,extint-gpios : GPIO connected to the "external interrupt" input pin
-- v-bckp-supply : Backup voltage regulator
-
-Example:
-
-serial@1234 {
- compatible = "ns16550a";
-
- gnss {
- compatible = "u-blox,neo-8";
-
- v-bckp-supply = <&gnss_v_bckp_reg>;
- vcc-supply = <&gnss_vcc_reg>;
- };
-};
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:37 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Bartosz Golaszewski, Linus Walleij, linux...@vger.kernel.org
The X-Powers AXP PMICs feature a GPIO Controller supported by Linux
thanks to its device tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Bartosz Golaszewski <bgolas...@baylibre.com>
Cc: Chen-Yu Tsai <we...@csie.org>
Cc: Linus Walleij <linus....@linaro.org>
Cc: linux...@vger.kernel.org
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Removed the example and moved it in the mfd schema
---
.../devicetree/bindings/gpio/gpio-axp209.txt | 75 -------------------
.../bindings/gpio/x-powers,axp209-gpio.yaml | 55 ++++++++++++++
2 files changed, 55 insertions(+), 75 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/gpio/gpio-axp209.txt
create mode 100644 Documentation/devicetree/bindings/gpio/x-powers,axp209-gpio.yaml

diff --git a/Documentation/devicetree/bindings/gpio/gpio-axp209.txt b/Documentation/devicetree/bindings/gpio/gpio-axp209.txt
deleted file mode 100644
index fc42b2caa06d..000000000000
--- a/Documentation/devicetree/bindings/gpio/gpio-axp209.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-AXP209 GPIO & pinctrl controller
-
-This driver follows the usual GPIO bindings found in
-Documentation/devicetree/bindings/gpio/gpio.txt
-
-This driver follows the usual pinctrl bindings found in
-Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
-
-This driver employs the per-pin muxing pattern.
-
-Required properties:
-- compatible: Should be one of:
- - "x-powers,axp209-gpio"
- - "x-powers,axp813-gpio"
-- #gpio-cells: Should be two. The first cell is the pin number and the
- second is the GPIO flags.
-- gpio-controller: Marks the device node as a GPIO controller.
-
-This node must be a subnode of the axp20x PMIC, documented in
-Documentation/devicetree/bindings/mfd/axp20x.txt
-
-Example:
-
-axp209: pmic@34 {
- compatible = "x-powers,axp209";
- reg = <0x34>;
- interrupt-parent = <&nmi_intc>;
- interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
- interrupt-controller;
- #interrupt-cells = <1>;
-
- axp_gpio: gpio {
- compatible = "x-powers,axp209-gpio";
- gpio-controller;
- #gpio-cells = <2>;
- };
-};
-
-The GPIOs can be muxed to other functions and therefore, must be a subnode of
-axp_gpio.
-
-Example:
-
-&axp_gpio {
- gpio0_adc: gpio0-adc {
- pins = "GPIO0";
- function = "adc";
- };
-};
-
-&example_node {
- pinctrl-names = "default";
- pinctrl-0 = <&gpio0_adc>;
-};
-
-GPIOs and their functions
--------------------------
-
-Each GPIO is independent from the other (i.e. GPIO0 in gpio_in function does
-not force GPIO1 and GPIO2 to be in gpio_in function as well).
-
-axp209
-------
-GPIO | Functions
-------------------------
-GPIO0 | gpio_in, gpio_out, ldo, adc
-GPIO1 | gpio_in, gpio_out, ldo, adc
-GPIO2 | gpio_in, gpio_out
-
-axp813
-------
-GPIO | Functions
-------------------------
-GPIO0 | gpio_in, gpio_out, ldo, adc
-GPIO1 | gpio_in, gpio_out, ldo
diff --git a/Documentation/devicetree/bindings/gpio/x-powers,axp209-gpio.yaml b/Documentation/devicetree/bindings/gpio/x-powers,axp209-gpio.yaml
new file mode 100644
index 000000000000..0f628b088cec
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/x-powers,axp209-gpio.yaml
@@ -0,0 +1,55 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/gpio/x-powers,axp209-gpio.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: X-Powers AXP209 GPIO Device Tree Bindings
+
+maintainers:
+ - Chen-Yu Tsai <we...@csie.org>
+
+properties:
+ "#gpio-cells":
+ const: 2
+ description: >
+ The first cell is the pin number and the second is the GPIO flags.
+
+ compatible:
+ oneOf:
+ - enum:
+ - x-powers,axp209-gpio
+ - x-powers,axp813-gpio
+ - items:
+ - const: x-powers,axp803-gpio
+ - const: x-powers,axp813-gpio
+
+ gpio-controller: true
+
+patternProperties:
+ "^.*-pins?$":
+ $ref: /schemas/pinctrl/pinmux-node.yaml#
+
+ properties:
+ pins:
+ items:
+ enum:
+ - GPIO0
+ - GPIO1
+ - GPIO2
+
+ function:
+ enum:
+ - adc
+ - ldo
+ - gpio_in
+ - gpio_out
+
+required:
+ - compatible
+ - "#gpio-cells"
+ - gpio-controller
+
+additionalProperties: false
+
+...
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:40 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Guenter Roeck, Jean Delvare, Jonathan Cameron, linux...@vger.kernel.org
Even though we had the iio-hwmon driver for some time and a number of
boards using it already, we never had a binding for it. Let's add it
based on what the driver expects and the boards are providing.

Cc: Guenter Roeck <li...@roeck-us.net>
Cc: Jean Delvare <jdel...@suse.com>
Cc: Jonathan Cameron <ji...@kernel.org>
Cc: linux...@vger.kernel.org
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Reduced the maximum number of io-channels, and added a comment for
the limitation
---
.../devicetree/bindings/hwmon/iio-hwmon.yaml | 37 +++++++++++++++++++
1 file changed, 37 insertions(+)
create mode 100644 Documentation/devicetree/bindings/hwmon/iio-hwmon.yaml

diff --git a/Documentation/devicetree/bindings/hwmon/iio-hwmon.yaml b/Documentation/devicetree/bindings/hwmon/iio-hwmon.yaml
new file mode 100644
index 000000000000..f5a6cc3efd33
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/iio-hwmon.yaml
@@ -0,0 +1,37 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/hwmon/iio-hwmon.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: ADC-attached Hardware Sensor Device Tree Bindings
+
+maintainers:
+ - Jonathan Cameron <ji...@kernel.org>
+
+description: >
+ Bindings for hardware monitoring devices connected to ADC controllers
+ supporting the Industrial I/O bindings.
+
+properties:
+ compatible:
+ const: iio-hwmon
+
+ io-channels:
+ minItems: 1
+ maxItems: 8 # Should be enough
+ description: >
+ List of phandles to ADC channels to read the monitoring values
+
+required:
+ - compatible
+ - io-channels
+
+additionalProperties: false
+
+examples:
+ - |
+ iio-hwmon {
+ compatible = "iio-hwmon";
+ io-channels = <&adc 1>, <&adc 2>;
+ };
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:41 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Dmitry Torokhov, linux...@vger.kernel.org
The Silead GSL1680 Touchscreen Controller is supported by Linux thanks
to its device tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Dmitry Torokhov <dmitry....@gmail.com>
Cc: linux...@vger.kernel.org
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Added maximum to the number of fingers
---
.../input/touchscreen/silead,gsl1680.yaml | 91 +++++++++++++++++++
.../input/touchscreen/silead_gsl1680.txt | 44 ---------
2 files changed, 91 insertions(+), 44 deletions(-)
create mode 100644 Documentation/devicetree/bindings/input/touchscreen/silead,gsl1680.yaml
delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt

diff --git a/Documentation/devicetree/bindings/input/touchscreen/silead,gsl1680.yaml b/Documentation/devicetree/bindings/input/touchscreen/silead,gsl1680.yaml
new file mode 100644
index 000000000000..cc064696ac28
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/silead,gsl1680.yaml
@@ -0,0 +1,91 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/touchscreen/silead,gsl1680.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Silead GSL1680 Touchscreen Controller Device Tree Bindings
+
+maintainers:
+ - Dmitry Torokhov <dmitry....@gmail.com>
+
+allOf:
+ - $ref: touchscreen.yaml#
+
+properties:
+ compatible:
+ enum:
+ - silead,gsl1680
+ - silead,gsl1688
+ - silead,gsl3670
+ - silead,gsl3675
+ - silead,gsl3692
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ power-gpios:
+ maxItems: 1
+
+ firmware:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: >
+ File basename for board specific firmware
+
+ silead,max-fingers:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ maximum: 5
+ description: >
+ Maximum number of fingers the touchscreen can detect
+
+ silead,home-button:
+ type: boolean
+ description: >
+ Does the device have a capacitive home-button build into the
+ touchscreen?
+
+ avdd-supply:
+ description: >
+ Regulator phandle for controller AVDD
+
+ vddio-supply:
+ description: >
+ Regulator phandle for controller VDDIO
+
+unevaluatedProperties: false
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - power-gpios
+ - touchscreen-size-x
+ - touchscreen-size-y
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ touchscreen@40 {
+ compatible = "silead,gsl1680";
+ reg = <0x40>;
+ interrupt-parent = <&pio>;
+ interrupts = <6 11 IRQ_TYPE_EDGE_FALLING>;
+ power-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>;
+ touchscreen-size-x = <480>;
+ touchscreen-size-y = <800>;
+ touchscreen-inverted-x;
+ touchscreen-swapped-x-y;
+ silead,max-fingers = <5>;
+ };
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt b/Documentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt
deleted file mode 100644
index d67e558e5ab5..000000000000
--- a/Documentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-* GSL 1680 touchscreen controller
-
-Required properties:
-- compatible : Must be one of the following, depending on the model:
- "silead,gsl1680"
- "silead,gsl1688"
- "silead,gsl3670"
- "silead,gsl3675"
- "silead,gsl3692"
-- reg : I2C slave address of the chip (0x40)
-- interrupts : interrupt specification for the gsl1680 interrupt
-- power-gpios : Specification for the pin connected to the gsl1680's
- shutdown input. This needs to be driven high to take the
- gsl1680 out of its low power state
-- touchscreen-size-x : See touchscreen.txt
-- touchscreen-size-y : See touchscreen.txt
-
-Optional properties:
-- firmware-name : File basename (string) for board specific firmware
-- touchscreen-inverted-x : See touchscreen.txt
-- touchscreen-inverted-y : See touchscreen.txt
-- touchscreen-swapped-x-y : See touchscreen.txt
-- silead,max-fingers : maximum number of fingers the touchscreen can detect
-- silead,home-button : Boolean, set to true on devices which have a
- capacitive home-button build into the touchscreen
-- vddio-supply : regulator phandle for controller VDDIO
-- avdd-supply : regulator phandle for controller AVDD
-
-Example:
-
-i2c@00000000 {
- gsl1680: touchscreen@40 {
- compatible = "silead,gsl1680";
- reg = <0x40>;
- interrupt-parent = <&pio>;
- interrupts = <6 11 IRQ_TYPE_EDGE_FALLING>;
- power-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>;
- touchscreen-size-x = <480>;
- touchscreen-size-y = <800>;
- touchscreen-inverted-x;
- touchscreen-swapped-x-y;
- silead,max-fingers = <5>;
- };
-};
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:43 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Rob Herring
The R40 MBUS compatible was introduced recently but it was never
documented.

Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml | 1 +
1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml
index e713a6fe4cf7..29c9961ee2d8 100644
--- a/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml
+++ b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml
@@ -30,6 +30,7 @@ properties:
enum:
- allwinner,sun5i-a13-mbus
- allwinner,sun8i-h3-mbus
+ - allwinner,sun8i-r40-mbus
- allwinner,sun50i-a64-mbus

reg:
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:44 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com
The OV5640 sensor used in the example doesn't follow the binding and
omits the regulators. Add some to make the example valid.

Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
Documentation/devicetree/bindings/media/ti,cal.yaml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/media/ti,cal.yaml b/Documentation/devicetree/bindings/media/ti,cal.yaml
index 65177cd69514..66c5d392fa75 100644
--- a/Documentation/devicetree/bindings/media/ti,cal.yaml
+++ b/Documentation/devicetree/bindings/media/ti,cal.yaml
@@ -154,7 +154,9 @@ examples:
camera-sensor@3c {
compatible = "ovti,ov5640";
reg = <0x3c>;
-
+ AVDD-supply = <&reg_2p8v>;
+ DOVDD-supply = <&reg_1p8v>;
+ DVDD-supply = <&reg_1p5v>;
clocks = <&clk_ov5640_fixed>;
clock-names = "xclk";

--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:46 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, linux...@vger.kernel.org, Mauro Carvalho Chehab, Steve Longerbeam
The Omnivision OV5640 is supported by Linux thanks to its device tree
binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: linux...@vger.kernel.org
Cc: Mauro Carvalho Chehab <mch...@kernel.org>
Cc: Steve Longerbeam <slong...@gmail.com>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../devicetree/bindings/media/i2c/ov5640.txt | 92 -----------
.../bindings/media/i2c/ovti,ov5640.yaml | 154 ++++++++++++++++++
2 files changed, 154 insertions(+), 92 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt
create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov5640.yaml

diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.txt b/Documentation/devicetree/bindings/media/i2c/ov5640.txt
deleted file mode 100644
index c97c2f2da12d..000000000000
--- a/Documentation/devicetree/bindings/media/i2c/ov5640.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-* Omnivision OV5640 MIPI CSI-2 / parallel sensor
-
-Required Properties:
-- compatible: should be "ovti,ov5640"
-- clocks: reference to the xclk input clock.
-- clock-names: should be "xclk".
-- DOVDD-supply: Digital I/O voltage supply, 1.8 volts
-- AVDD-supply: Analog voltage supply, 2.8 volts
-- DVDD-supply: Digital core voltage supply, 1.5 volts
-
-Optional Properties:
-- reset-gpios: reference to the GPIO connected to the reset pin, if any.
- This is an active low signal to the OV5640.
-- powerdown-gpios: reference to the GPIO connected to the powerdown pin,
- if any. This is an active high signal to the OV5640.
-- rotation: as defined in
- Documentation/devicetree/bindings/media/video-interfaces.txt,
- valid values are 0 (sensor mounted upright) and 180 (sensor
- mounted upside down).
-
-The device node must contain one 'port' child node for its digital output
-video port, in accordance with the video interface bindings defined in
-Documentation/devicetree/bindings/media/video-interfaces.txt.
-
-OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint.
-
-Endpoint node required properties for CSI-2 connection are:
-- remote-endpoint: a phandle to the bus receiver's endpoint node.
-- clock-lanes: should be set to <0> (clock lane on hardware lane 0)
-- data-lanes: should be set to <1> or <1 2> (one or two CSI-2 lanes supported)
-
-Endpoint node required properties for parallel connection are:
-- remote-endpoint: a phandle to the bus receiver's endpoint node.
-- bus-width: shall be set to <8> for 8 bits parallel bus
- or <10> for 10 bits parallel bus
-- data-shift: shall be set to <2> for 8 bits parallel bus
- (lines 9:2 are used) or <0> for 10 bits parallel bus
-- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively.
-- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively.
-- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock
- signal.
-
-Examples:
-
-&i2c1 {
- ov5640: camera@3c {
- compatible = "ovti,ov5640";
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_ov5640>;
- reg = <0x3c>;
- clocks = <&clks IMX6QDL_CLK_CKO>;
- clock-names = "xclk";
- DOVDD-supply = <&vgen4_reg>; /* 1.8v */
- AVDD-supply = <&vgen3_reg>; /* 2.8v */
- DVDD-supply = <&vgen2_reg>; /* 1.5v */
- powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
- reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
- rotation = <180>;
-
- port {
- /* MIPI CSI-2 bus endpoint */
- ov5640_to_mipi_csi2: endpoint {
- remote-endpoint = <&mipi_csi2_from_ov5640>;
- clock-lanes = <0>;
- data-lanes = <1 2>;
- };
- };
- };
-};
-
-&i2c1 {
- ov5640: camera@3c {
- compatible = "ovti,ov5640";
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_ov5640>;
- reg = <0x3c>;
- clocks = <&clk_ext_camera>;
- clock-names = "xclk";
-
- port {
- /* Parallel bus endpoint */
- ov5640_to_parallel: endpoint {
- remote-endpoint = <&parallel_from_ov5640>;
- bus-width = <8>;
- data-shift = <2>; /* lines 9:2 are used */
- hsync-active = <0>;
- vsync-active = <0>;
- pclk-sample = <1>;
- };
- };
- };
-};
diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5640.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov5640.yaml
new file mode 100644
index 000000000000..0283b1895a75
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5640.yaml
@@ -0,0 +1,154 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/ovti,ov5640.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: OmniVision OV5640 Image Sensor Device Tree Bindings
+
+maintainers:
+ - Steve Longerbeam <slong...@gmail.com>
+
+allOf:
+ - $ref: /schemas/media/video-interface-devices.yaml#
+
+properties:
+ compatible:
+ const: ovti,ov5640
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ description: XCLK Input Clock
+
+ clock-names:
+ const: xclk
+
+ AVDD-supply:
+ description: Analog voltage supply, 2.8 volts
+
+ DVDD-supply:
+ description: Digital core voltage supply, 1.5 volts
+
+ DOVDD-supply:
+ description: Digital I/O voltage supply, 1.8 volts
+
+ powerdown-gpios:
+ maxItems: 1
+ description: >
+ Reference to the GPIO connected to the powerdown pin, if any.
+
+ reset-gpios:
+ maxItems: 1
+ description: >
+ Reference to the GPIO connected to the reset pin, if any.
+
+ rotation:
+ enum:
+ - 0
+ - 180
+
+ port:
+ description: Digital Output Port
+ $ref: /schemas/graph.yaml#/properties/port
+ additionalProperties: false
+
+ properties:
+ endpoint:
+ $ref: /schemas/media/video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ clock-lanes:
+ const: 0
+
+ data-lanes:
+ minItems: 1
+ maxItems: 2
+ items:
+ enum: [1, 2]
+
+ bus-width:
+ enum: [8, 10]
+
+ data-shift:
+ enum: [0, 2]
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+ - AVDD-supply
+ - DVDD-supply
+ - DOVDD-supply
+ - port
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/imx6qdl-clock.h>
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ camera@3c {
+ compatible = "ovti,ov5640";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_ov5640>;
+ reg = <0x3c>;
+ clocks = <&clks IMX6QDL_CLK_CKO>;
+ clock-names = "xclk";
+ DOVDD-supply = <&vgen4_reg>; /* 1.8v */
+ AVDD-supply = <&vgen3_reg>; /* 2.8v */
+ DVDD-supply = <&vgen2_reg>; /* 1.5v */
+ powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
+ rotation = <180>;
+
+ port {
+ /* MIPI CSI-2 bus endpoint */
+ ov5640_to_mipi_csi2: endpoint {
+ remote-endpoint = <&mipi_csi2_from_ov5640>;
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ };
+ };
+ };
+ };
+
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ camera@3c {
+ compatible = "ovti,ov5640";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_ov5640>;
+ reg = <0x3c>;
+ clocks = <&clk_ext_camera>;
+ clock-names = "xclk";
+ DOVDD-supply = <&vgen4_reg>; /* 1.8v */
+ AVDD-supply = <&vgen3_reg>; /* 2.8v */
+ DVDD-supply = <&vgen2_reg>; /* 1.5v */
+
+ port {
+ /* Parallel bus endpoint */
+ ov5640_to_parallel: endpoint {
+ remote-endpoint = <&parallel_from_ov5640>;
+ bus-width = <8>;
+ data-shift = <2>; /* lines 9:2 are used */
+ hsync-active = <0>;
+ vsync-active = <0>;
+ pclk-sample = <1>;
+ };
+ };
+ };
+ };
+
+...
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:47 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Lee Jones
The X-Powers AC100 hybrid devices are supported by Linux thanks to its
device tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Lee Jones <lee....@linaro.org>
Acked-by: Chen-Yu Tsai <we...@csie.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Added maximum number of clocks properties
---
.../devicetree/bindings/mfd/ac100.txt | 50 --------
.../bindings/mfd/x-powers,ac100.yaml | 116 ++++++++++++++++++
2 files changed, 116 insertions(+), 50 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/mfd/ac100.txt
create mode 100644 Documentation/devicetree/bindings/mfd/x-powers,ac100.yaml

diff --git a/Documentation/devicetree/bindings/mfd/ac100.txt b/Documentation/devicetree/bindings/mfd/ac100.txt
deleted file mode 100644
index dff219f07493..000000000000
--- a/Documentation/devicetree/bindings/mfd/ac100.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-X-Powers AC100 Codec/RTC IC Device Tree bindings
-
-AC100 is a audio codec and RTC subsystem combo IC. The 2 parts are
-separated, including power supplies and interrupt lines, but share
-a common register address space and host interface.
-
-Required properties:
-- compatible: "x-powers,ac100"
-- reg: The I2C slave address or RSB hardware address for the chip
-- sub-nodes:
- - codec
- - compatible: "x-powers,ac100-codec"
- - interrupts: SoC NMI / GPIO interrupt connected to the
- IRQ_AUDIO pin
- - #clock-cells: Shall be 0
- - clock-output-names: "4M_adda"
-
- - see clock/clock-bindings.txt for common clock bindings
-
- - rtc
- - compatible: "x-powers,ac100-rtc"
- - clocks: A phandle to the codec's "4M_adda" clock
- - #clock-cells: Shall be 1
- - clock-output-names: "cko1_rtc", "cko2_rtc", "cko3_rtc"
-
- - see clock/clock-bindings.txt for common clock bindings
-
-Example:
-
-ac100: codec@e89 {
- compatible = "x-powers,ac100";
- reg = <0xe89>;
-
- ac100_codec: codec {
- compatible = "x-powers,ac100-codec";
- interrupt-parent = <&r_pio>;
- interrupts = <0 9 IRQ_TYPE_LEVEL_LOW>; /* PL9 */
- #clock-cells = <0>;
- clock-output-names = "4M_adda";
- };
-
- ac100_rtc: rtc {
- compatible = "x-powers,ac100-rtc";
- interrupt-parent = <&nmi_intc>;
- interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
- clocks = <&ac100_codec>;
- #clock-cells = <1>;
- clock-output-names = "cko1_rtc", "cko2_rtc", "cko3_rtc";
- };
-};
diff --git a/Documentation/devicetree/bindings/mfd/x-powers,ac100.yaml b/Documentation/devicetree/bindings/mfd/x-powers,ac100.yaml
new file mode 100644
index 000000000000..de330c9869ff
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/x-powers,ac100.yaml
@@ -0,0 +1,116 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/mfd/x-powers,ac100.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: X-Powers AC100 Device Tree Bindings
+
+maintainers:
+ - Chen-Yu Tsai <we...@csie.org>
+
+properties:
+ compatible:
+ const: x-powers,ac100
+
+ reg:
+ maxItems: 1
+
+ codec:
+ type: object
+
+ properties:
+ "#clock-cells":
+ const: 0
+
+ compatible:
+ const: x-powers,ac100-codec
+
+ interrupts:
+ maxItems: 1
+
+ clock-output-names:
+ maxItems: 1
+ description: >
+ Name of the 4M_adda clock exposed by the codec
+
+ required:
+ - "#clock-cells"
+ - compatible
+ - interrupts
+ - clock-output-names
+
+ additionalProperties: false
+
+ rtc:
+ type: object
+
+ properties:
+ "#clock-cells":
+ const: 1
+
+ compatible:
+ const: x-powers,ac100-rtc
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+ description: >
+ A phandle to the codec's "4M_adda" clock
+
+ clock-output-names:
+ maxItems: 3
+ description: >
+ Name of the cko1, cko2 and cko3 clocks exposed by the codec
+
+ required:
+ - "#clock-cells"
+ - compatible
+ - interrupts
+ - clocks
+ - clock-output-names
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - reg
+ - codec
+ - rtc
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ rsb {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ codec@e89 {
+ compatible = "x-powers,ac100";
+ reg = <0xe89>;
+
+ ac100_codec: codec {
+ compatible = "x-powers,ac100-codec";
+ interrupt-parent = <&r_pio>;
+ interrupts = <0 9 IRQ_TYPE_LEVEL_LOW>; /* PL9 */
+ #clock-cells = <0>;
+ clock-output-names = "4M_adda";
+ };
+
+ ac100_rtc: rtc {
+ compatible = "x-powers,ac100-rtc";
+ interrupt-parent = <&nmi_intc>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+ clocks = <&ac100_codec>;
+ #clock-cells = <1>;
+ clock-output-names = "cko1_rtc", "cko2_rtc", "cko3_rtc";

Maxime Ripard

unread,
Sep 1, 2021, 5:19:49 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Lee Jones
The X-Powers AXP PMICs are supported by Linux thanks to its device tree
binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Chen-Yu Tsai <we...@csie.org>
Cc: Lee Jones <lee....@linaro.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Add GPIO example
- Remove the limitation on regulator-ramp-delay
---
.../i2c/allwinner,sun6i-a31-p2wi.yaml | 2 +-
.../devicetree/bindings/mfd/axp20x.txt | 273 ------------
.../bindings/mfd/x-powers,axp152.yaml | 400 ++++++++++++++++++
3 files changed, 401 insertions(+), 274 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/mfd/axp20x.txt
create mode 100644 Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml

diff --git a/Documentation/devicetree/bindings/i2c/allwinner,sun6i-a31-p2wi.yaml b/Documentation/devicetree/bindings/i2c/allwinner,sun6i-a31-p2wi.yaml
index 6097e8ac46c1..1b03810d4b4d 100644
--- a/Documentation/devicetree/bindings/i2c/allwinner,sun6i-a31-p2wi.yaml
+++ b/Documentation/devicetree/bindings/i2c/allwinner,sun6i-a31-p2wi.yaml
@@ -55,7 +55,7 @@ examples:
#size-cells = <0>;

axp221: pmic@68 {
- compatible = "x-powers,axp221";
+ /* compatible = "x-powers,axp221"; */
reg = <0x68>;
};
};
diff --git a/Documentation/devicetree/bindings/mfd/axp20x.txt b/Documentation/devicetree/bindings/mfd/axp20x.txt
deleted file mode 100644
index 2b53dcc0ea61..000000000000
--- a/Documentation/devicetree/bindings/mfd/axp20x.txt
+++ /dev/null
@@ -1,273 +0,0 @@
-AXP family PMIC device tree bindings
-
-The axp20x family current members :
-axp152 (X-Powers)
-axp202 (X-Powers)
-axp209 (X-Powers)
-axp221 (X-Powers)
-axp223 (X-Powers)
-axp803 (X-Powers)
-axp806 (X-Powers)
-axp809 (X-Powers)
-axp813 (X-Powers)
-
-The AXP813 is 2 chips packaged into 1. The 2 chips do not share anything
-other than the packaging. Pins are routed separately. As such they should
-be treated as separate entities. The other half is an AC100 RTC/codec
-combo chip. Please see ./ac100.txt for its bindings.
-
-Required properties:
-- compatible: should be one of:
- * "x-powers,axp152"
- * "x-powers,axp202"
- * "x-powers,axp209"
- * "x-powers,axp221"
- * "x-powers,axp223"
- * "x-powers,axp803"
- * "x-powers,axp806"
- * "x-powers,axp805", "x-powers,axp806"
- * "x-powers,axp305", "x-powers,axp805", "x-powers,axp806"
- * "x-powers,axp809"
- * "x-powers,axp813"
-- reg: The I2C slave address or RSB hardware address for the AXP chip
-- interrupt-controller: The PMIC has its own internal IRQs
-- #interrupt-cells: Should be set to 1
-
-Supported common regulator properties, see ../regulator/regulator.txt for
-more information:
-- regulator-ramp-delay: sets the ramp up delay in uV/us
- AXP20x/DCDC2: 1600, 800
- AXP20x/LDO3: 1600, 800
-- regulator-soft-start: enable the output at the lowest possible voltage and
- only then set the desired voltage
- AXP20x/LDO3: software-based implementation
-
-Optional properties:
-- interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin
-- x-powers,dcdc-freq: defines the work frequency of DC-DC in KHz
- AXP152/20X: range: 750-1875, Default: 1.5 MHz
- AXP22X/8XX: range: 1800-4050, Default: 3 MHz
-
-- x-powers,drive-vbus-en: boolean, set this when the N_VBUSEN pin is
- used as an output pin to control an external
- regulator to drive the OTG VBus, rather then
- as an input pin which signals whether the
- board is driving OTG VBus or not.
- (axp221 / axp223 / axp803/ axp813 only)
-
-- x-powers,self-working-mode and
- x-powers,master-mode: Boolean (axp806 only). Set either of these when the
- PMIC is wired for self-working mode or master mode.
- If neither is set then slave mode is assumed.
- This corresponds to how the MODESET pin is wired.
-
-- <input>-supply: a phandle to the regulator supply node. May be omitted if
- inputs are unregulated, such as using the IPSOUT output
- from the PMIC.
-
-- regulators: A node that houses a sub-node for each regulator. Regulators
- not used but preferred to be managed by the OS should be
- listed as well.
- See Documentation/devicetree/bindings/regulator/regulator.txt
- for more information on standard regulator bindings.
-
-Optional properties for DCDC regulators:
-- x-powers,dcdc-workmode: 1 for PWM mode, 0 for AUTO (PWM/PFM) mode
- Default: Current hardware setting
- The DCDC regulators work in a mixed PWM/PFM mode,
- using PFM under light loads and switching to PWM
- for heavier loads. Forcing PWM mode trades efficiency
- under light loads for lower output noise. This
- probably makes sense for HiFi audio related
- applications that aren't battery constrained.
-
-AXP202/AXP209 regulators, type, and corresponding input supply names:
-
-Regulator Type Supply Name Notes
---------- ---- ----------- -----
-DCDC2 : DC-DC buck : vin2-supply
-DCDC3 : DC-DC buck : vin3-supply
-LDO1 : LDO : acin-supply : always on
-LDO2 : LDO : ldo24in-supply : shared supply
-LDO3 : LDO : ldo3in-supply
-LDO4 : LDO : ldo24in-supply : shared supply
-LDO5 : LDO : ldo5in-supply
-
-AXP221/AXP223 regulators, type, and corresponding input supply names:
-
-Regulator Type Supply Name Notes
---------- ---- ----------- -----
-DCDC1 : DC-DC buck : vin1-supply
-DCDC2 : DC-DC buck : vin2-supply
-DCDC3 : DC-DC buck : vin3-supply
-DCDC4 : DC-DC buck : vin4-supply
-DCDC5 : DC-DC buck : vin5-supply
-DC1SW : On/Off Switch : : DCDC1 secondary output
-DC5LDO : LDO : : input from DCDC5
-ALDO1 : LDO : aldoin-supply : shared supply
-ALDO2 : LDO : aldoin-supply : shared supply
-ALDO3 : LDO : aldoin-supply : shared supply
-DLDO1 : LDO : dldoin-supply : shared supply
-DLDO2 : LDO : dldoin-supply : shared supply
-DLDO3 : LDO : dldoin-supply : shared supply
-DLDO4 : LDO : dldoin-supply : shared supply
-ELDO1 : LDO : eldoin-supply : shared supply
-ELDO2 : LDO : eldoin-supply : shared supply
-ELDO3 : LDO : eldoin-supply : shared supply
-LDO_IO0 : LDO : ips-supply : GPIO 0
-LDO_IO1 : LDO : ips-supply : GPIO 1
-RTC_LDO : LDO : ips-supply : always on
-DRIVEVBUS : Enable output : drivevbus-supply : external regulator
-
-AXP803 regulators, type, and corresponding input supply names:
-
-Regulator Type Supply Name Notes
---------- ---- ----------- -----
-DCDC1 : DC-DC buck : vin1-supply
-DCDC2 : DC-DC buck : vin2-supply : poly-phase capable
-DCDC3 : DC-DC buck : vin3-supply : poly-phase capable
-DCDC4 : DC-DC buck : vin4-supply
-DCDC5 : DC-DC buck : vin5-supply : poly-phase capable
-DCDC6 : DC-DC buck : vin6-supply : poly-phase capable
-DC1SW : On/Off Switch : : DCDC1 secondary output
-ALDO1 : LDO : aldoin-supply : shared supply
-ALDO2 : LDO : aldoin-supply : shared supply
-ALDO3 : LDO : aldoin-supply : shared supply
-DLDO1 : LDO : dldoin-supply : shared supply
-DLDO2 : LDO : dldoin-supply : shared supply
-DLDO3 : LDO : dldoin-supply : shared supply
-DLDO4 : LDO : dldoin-supply : shared supply
-ELDO1 : LDO : eldoin-supply : shared supply
-ELDO2 : LDO : eldoin-supply : shared supply
-ELDO3 : LDO : eldoin-supply : shared supply
-FLDO1 : LDO : fldoin-supply : shared supply
-FLDO2 : LDO : fldoin-supply : shared supply
-LDO_IO0 : LDO : ips-supply : GPIO 0
-LDO_IO1 : LDO : ips-supply : GPIO 1
-RTC_LDO : LDO : ips-supply : always on
-DRIVEVBUS : Enable output : drivevbus-supply : external regulator
-
-AXP806 regulators, type, and corresponding input supply names:
-
-Regulator Type Supply Name Notes
---------- ---- ----------- -----
-DCDCA : DC-DC buck : vina-supply : poly-phase capable
-DCDCB : DC-DC buck : vinb-supply : poly-phase capable
-DCDCC : DC-DC buck : vinc-supply : poly-phase capable
-DCDCD : DC-DC buck : vind-supply : poly-phase capable
-DCDCE : DC-DC buck : vine-supply : poly-phase capable
-ALDO1 : LDO : aldoin-supply : shared supply
-ALDO2 : LDO : aldoin-supply : shared supply
-ALDO3 : LDO : aldoin-supply : shared supply
-BLDO1 : LDO : bldoin-supply : shared supply
-BLDO2 : LDO : bldoin-supply : shared supply
-BLDO3 : LDO : bldoin-supply : shared supply
-BLDO4 : LDO : bldoin-supply : shared supply
-CLDO1 : LDO : cldoin-supply : shared supply
-CLDO2 : LDO : cldoin-supply : shared supply
-CLDO3 : LDO : cldoin-supply : shared supply
-SW : On/Off Switch : swin-supply
-
-Additionally, the AXP806 DC-DC regulators support poly-phase arrangements
-for higher output current. The possible groupings are: A+B, A+B+C, D+E.
-
-AXP809 regulators, type, and corresponding input supply names:
-
-Regulator Type Supply Name Notes
---------- ---- ----------- -----
-DCDC1 : DC-DC buck : vin1-supply
-DCDC2 : DC-DC buck : vin2-supply
-DCDC3 : DC-DC buck : vin3-supply
-DCDC4 : DC-DC buck : vin4-supply
-DCDC5 : DC-DC buck : vin5-supply
-DC1SW : On/Off Switch : : DCDC1 secondary output
-DC5LDO : LDO : : input from DCDC5
-ALDO1 : LDO : aldoin-supply : shared supply
-ALDO2 : LDO : aldoin-supply : shared supply
-ALDO3 : LDO : aldoin-supply : shared supply
-DLDO1 : LDO : dldoin-supply : shared supply
-DLDO2 : LDO : dldoin-supply : shared supply
-ELDO1 : LDO : eldoin-supply : shared supply
-ELDO2 : LDO : eldoin-supply : shared supply
-ELDO3 : LDO : eldoin-supply : shared supply
-LDO_IO0 : LDO : ips-supply : GPIO 0
-LDO_IO1 : LDO : ips-supply : GPIO 1
-RTC_LDO : LDO : ips-supply : always on
-SW : On/Off Switch : swin-supply
-
-AXP813 regulators, type, and corresponding input supply names:
-
-Regulator Type Supply Name Notes
---------- ---- ----------- -----
-DCDC1 : DC-DC buck : vin1-supply
-DCDC2 : DC-DC buck : vin2-supply : poly-phase capable
-DCDC3 : DC-DC buck : vin3-supply : poly-phase capable
-DCDC4 : DC-DC buck : vin4-supply
-DCDC5 : DC-DC buck : vin5-supply : poly-phase capable
-DCDC6 : DC-DC buck : vin6-supply : poly-phase capable
-DCDC7 : DC-DC buck : vin7-supply
-ALDO1 : LDO : aldoin-supply : shared supply
-ALDO2 : LDO : aldoin-supply : shared supply
-ALDO3 : LDO : aldoin-supply : shared supply
-DLDO1 : LDO : dldoin-supply : shared supply
-DLDO2 : LDO : dldoin-supply : shared supply
-DLDO3 : LDO : dldoin-supply : shared supply
-DLDO4 : LDO : dldoin-supply : shared supply
-ELDO1 : LDO : eldoin-supply : shared supply
-ELDO2 : LDO : eldoin-supply : shared supply
-ELDO3 : LDO : eldoin-supply : shared supply
-FLDO1 : LDO : fldoin-supply : shared supply
-FLDO2 : LDO : fldoin-supply : shared supply
-FLDO3 : LDO : fldoin-supply : shared supply
-LDO_IO0 : LDO : ips-supply : GPIO 0
-LDO_IO1 : LDO : ips-supply : GPIO 1
-RTC_LDO : LDO : ips-supply : always on
-SW : On/Off Switch : swin-supply
-DRIVEVBUS : Enable output : drivevbus-supply : external regulator
-
-Example:
-
-axp209: pmic@34 {
- compatible = "x-powers,axp209";
- reg = <0x34>;
- interrupt-parent = <&nmi_intc>;
- interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
- interrupt-controller;
- #interrupt-cells = <1>;
-
- regulators {
- x-powers,dcdc-freq = <1500>;
-
- vdd_cpu: dcdc2 {
- regulator-always-on;
- regulator-min-microvolt = <1000000>;
- regulator-max-microvolt = <1450000>;
- regulator-name = "vdd-cpu";
- };
-
- vdd_int_dll: dcdc3 {
- regulator-always-on;
- regulator-min-microvolt = <1000000>;
- regulator-max-microvolt = <1400000>;
- regulator-name = "vdd-int-dll";
- };
-
- vdd_rtc: ldo1 {
- regulator-always-on;
- regulator-min-microvolt = <1200000>;
- regulator-max-microvolt = <1400000>;
- regulator-name = "vdd-rtc";
- };
-
- avcc: ldo2 {
- regulator-always-on;
- regulator-min-microvolt = <2700000>;
- regulator-max-microvolt = <3300000>;
- regulator-name = "avcc";
- };
-
- ldo3 {
- /* unused but preferred to be managed by OS */
- };
- };
-};
diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
new file mode 100644
index 000000000000..3a53bae611bc
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
@@ -0,0 +1,400 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: X-Powers AXP PMIC Device Tree Bindings
+
+maintainers:
+ - Chen-Yu Tsai <we...@csie.org>
+
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - x-powers,axp152
+ - x-powers,axp202
+ - x-powers,axp209
+
+ then:
+ properties:
+ regulators:
+ properties:
+ x-powers,dcdc-freq:
+ minimum: 750
+ maximum: 1875
+ default: 1500
+
+ else:
+ properties:
+ regulators:
+ properties:
+ x-powers,dcdc-freq:
+ minimum: 1800
+ maximum: 4050
+ default: 3000
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - x-powers,axp152
+ - x-powers,axp202
+ - x-powers,axp209
+
+ then:
+ not:
+ required:
+ - x-powers,drive-vbus-en
+
+ - if:
+ not:
+ properties:
+ compatible:
+ contains:
+ const: x-powers,axp806
+
+ then:
+ allOf:
+ - not:
+ required:
+ - x-powers,self-working-mode
+
+ - not:
+ required:
+ - x-powers,master-mode
+
+ - if:
+ not:
+ properties:
+ compatible:
+ contains:
+ const: x-powers,axp305
+
+ then:
+ required:
+ - interrupts
+
+properties:
+ compatible:
+ oneOf:
+ - enum:
+ - x-powers,axp152
+ - x-powers,axp202
+ - x-powers,axp209
+ - x-powers,axp221
+ - x-powers,axp223
+ - x-powers,axp803
+ - x-powers,axp806
+ - x-powers,axp809
+ - x-powers,axp813
+ - items:
+ - const: x-powers,axp805
+ - const: x-powers,axp806
+ - items:
+ - const: x-powers,axp305
+ - const: x-powers,axp805
+ - const: x-powers,axp806
+ - items:
+ - const: x-powers,axp818
+ - const: x-powers,axp813
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ interrupt-controller: true
+
+ "#interrupt-cells":
+ const: 1
+
+ x-powers,drive-vbus-en:
+ type: boolean
+ description: >
+ Set this when the N_VBUSEN pin is used as an output pin to control an
+ external regulator to drive the OTG VBus, rather then as an input pin
+ which signals whether the board is driving OTG VBus or not.
+
+ x-powers,self-working-mode:
+ type: boolean
+ description: >
+ Set this when the PMIC is wired for self-working mode through the MODESET
+ pin.
+
+ x-powers,master-mode:
+ type: boolean
+ description: >
+ Set this when the PMIC is wired for master mode through the MODESET pin.
+
+ vin1-supply:
+ description: >
+ DCDC1 power supply node, if present.
+
+ vin2-supply:
+ description: >
+ DCDC2 power supply node, if present.
+
+ vin3-supply:
+ description: >
+ DCDC3 power supply node, if present.
+
+ vin4-supply:
+ description: >
+ DCDC4 power supply node, if present.
+
+ vin5-supply:
+ description: >
+ DCDC5 power supply node, if present.
+
+ vin6-supply:
+ description: >
+ DCDC6 power supply node, if present.
+
+ vin7-supply:
+ description: >
+ DCDC7 power supply node, if present.
+
+ vina-supply:
+ description: >
+ DCDCA power supply node, if present.
+
+ vinb-supply:
+ description: >
+ DCDCB power supply node, if present.
+
+ vinc-supply:
+ description: >
+ DCDCC power supply node, if present.
+
+ vind-supply:
+ description: >
+ DCDCD power supply node, if present.
+
+ vine-supply:
+ description: >
+ DCDCE power supply node, if present.
+
+ acin-supply:
+ description: >
+ LDO1 power supply node, if present.
+
+ ldo24in-supply:
+ description: >
+ LDO2 and LDO4 power supply node, if present.
+
+ ldo3in-supply:
+ description: >
+ LDO3 power supply node, if present.
+
+ ldo5in-supply:
+ description: >
+ LDO5 power supply node, if present.
+
+ aldoin-supply:
+ description: >
+ ALDO* power supply node, if present.
+
+ bldoin-supply:
+ description: >
+ BLDO* power supply node, if present.
+
+ cldoin-supply:
+ description: >
+ CLDO* power supply node, if present.
+
+ dldoin-supply:
+ description: >
+ DLDO* power supply node, if present.
+
+ eldoin-supply:
+ description: >
+ ELDO* power supply node, if present.
+
+ fldoin-supply:
+ description: >
+ FLDO* power supply node, if present.
+
+ ips-supply:
+ description: >
+ LDO_IO0, LDO_IO1 and RTC_LDO power supply node, if present.
+
+ drivevbus-supply:
+ description: >
+ DRIVEVBUS power supply node, if present.
+
+ swin-supply:
+ description: >
+ SW power supply node, if present.
+
+ adc:
+ $ref: /schemas/iio/adc/x-powers,axp209-adc.yaml#
+
+ gpio:
+ $ref: /schemas/gpio/x-powers,axp209-gpio.yaml#
+
+ ac-power:
+ $ref: /schemas/power/supply/x-powers,axp20x-ac-power-supply.yaml#
+
+ battery-power:
+ $ref: /schemas/power/supply/x-powers,axp20x-battery-power-supply.yaml#
+
+ usb-power:
+ $ref: /schemas/power/supply/x-powers,axp20x-usb-power-supply.yaml#
+
+ regulators:
+ type: object
+
+ properties:
+ x-powers,dcdc-freq:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: >
+ Defines the work frequency of DC-DC in kHz.
+
+ patternProperties:
+ "^(([a-f])?ldo[0-9]|dcdc[0-7a-e]|ldo(_|-)io(0|1)|(dc1)?sw|rtc(_|-)ldo|drivevbus|dc5ldo)$":
+ $ref: /schemas/regulator/regulator.yaml#
+ type: object
+
+ properties:
+ regulator-ramp-delay:
+ description: >
+ Only 800 and 1600 are valid for the DCDC2 and LDO3 regulators on
+ the AXP209.
+
+ regulator-soft-start:
+ description: >
+ Only valid for the LDO3 regulator.
+
+ x-powers,dcdc-workmode:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [0, 1]
+ description: >
+ Only valid for DCDC regulators. Setup 1 for PWM mode, 0
+ for AUTO (PWM/PFM) mode. The DCDC regulators work in a
+ mixed PWM/PFM mode, using PFM under light loads and
+ switching to PWM for heavier loads. Forcing PWM mode
+ trades efficiency under light loads for lower output
+ noise. This probably makes sense for HiFi audio related
+ applications that aren't battery constrained.
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - reg
+ - "#interrupt-cells"
+ - interrupt-controller
+
+additionalProperties: false
+
+examples:
+ - |
+ i2c0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pmic@30 {
+ compatible = "x-powers,axp152";
+ reg = <0x30>;
+ interrupts = <0>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+ };
+
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ i2c0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pmic@34 {
+ compatible = "x-powers,axp209";
+ reg = <0x34>;
+ interrupt-parent = <&nmi_intc>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+
+ ac_power_supply: ac-power {
+ compatible = "x-powers,axp202-ac-power-supply";
+ };
+
+ axp_adc: adc {
+ compatible = "x-powers,axp209-adc";
+ #io-channel-cells = <1>;
+ };
+
+ axp_gpio: gpio {
+ compatible = "x-powers,axp209-gpio";
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio0-adc-pin {
+ pins = "GPIO0";
+ function = "adc";
+ };
+ };
+
+ battery_power_supply: battery-power {
+ compatible = "x-powers,axp209-battery-power-supply";
+ };
+
+ regulators {
+ /* Default work frequency for buck regulators */
+ x-powers,dcdc-freq = <1500>;
+
+ reg_dcdc2: dcdc2 {
+ regulator-always-on;
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1450000>;
+ regulator-name = "vdd-cpu";
+ };
+
+ reg_dcdc3: dcdc3 {
+ regulator-always-on;
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1400000>;
+ regulator-name = "vdd-int-dll";
+ };
+
+ reg_ldo1: ldo1 {
+ /* LDO1 is a fixed output regulator */
+ regulator-always-on;
+ regulator-min-microvolt = <1300000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-name = "vdd-rtc";
+ };
+
+ reg_ldo2: ldo2 {
+ regulator-always-on;
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ regulator-name = "avcc";
+ };
+
+ reg_ldo3: ldo3 {
+ regulator-name = "ldo3";
+ };
+
+ reg_ldo4: ldo4 {
+ regulator-name = "ldo4";
+ };
+
+ reg_ldo5: ldo5 {
+ regulator-name = "ldo5";
+ };
+ };
+
+ usb_power_supply: usb-power {
+ compatible = "x-powers,axp202-usb-power-supply";
+ };
+ };
+ };
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:51 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, linu...@vger.kernel.org, Ulf Hansson
MMC Cards can have an optional Device Tree binding to add
non-discoverable properties.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Some of these properties were already described in the MMC controller
binding, even though they are not generic and do not apply to any
device, so we took the occasion to fix this.

Cc: linu...@vger.kernel.org
Cc: Ulf Hansson <ulf.h...@linaro.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Fixed additionalProperties
---
.../devicetree/bindings/mmc/mmc-card.txt | 30 ------------
.../devicetree/bindings/mmc/mmc-card.yaml | 48 +++++++++++++++++++
.../bindings/mmc/mmc-controller.yaml | 6 ---
3 files changed, 48 insertions(+), 36 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/mmc/mmc-card.txt
create mode 100644 Documentation/devicetree/bindings/mmc/mmc-card.yaml

diff --git a/Documentation/devicetree/bindings/mmc/mmc-card.txt b/Documentation/devicetree/bindings/mmc/mmc-card.txt
deleted file mode 100644
index 8d2d71758907..000000000000
--- a/Documentation/devicetree/bindings/mmc/mmc-card.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-mmc-card / eMMC bindings
-------------------------
-
-This documents describes the devicetree bindings for a mmc-host controller
-child node describing a mmc-card / an eMMC, see "Use of Function subnodes"
-in mmc.txt
-
-Required properties:
--compatible : Must be "mmc-card"
--reg : Must be <0>
-
-Optional properties:
--broken-hpi : Use this to indicate that the mmc-card has a broken hpi
- implementation, and that hpi should not be used
-
-Example:
-
-&mmc2 {
- pinctrl-names = "default";
- pinctrl-0 = <&mmc2_pins_a>;
- vmmc-supply = <&reg_vcc3v3>;
- bus-width = <8>;
- non-removable;
-
- mmccard: mmccard@0 {
- reg = <0>;
- compatible = "mmc-card";
- broken-hpi;
- };
-};
diff --git a/Documentation/devicetree/bindings/mmc/mmc-card.yaml b/Documentation/devicetree/bindings/mmc/mmc-card.yaml
new file mode 100644
index 000000000000..b17d454442b3
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/mmc-card.yaml
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/mmc-card.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MMC Card / eMMC Generic Device Tree Bindings
+
+maintainers:
+ - Ulf Hansson <ulf.h...@linaro.org>
+
+description: |
+ This documents describes the devicetree bindings for a mmc-host controller
+ child node describing a mmc-card / an eMMC.
+
+properties:
+ compatible:
+ const: mmc-card
+
+ reg:
+ const: 0
+
+ broken-hpi:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description:
+ Use this to indicate that the mmc-card has a broken hpi
+ implementation, and that hpi should not be used.
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ mmc {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ card@0 {
+ compatible = "mmc-card";
+ reg = <0>;
+ broken-hpi;
+ };
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
index 25ac8e200970..513f3c8758aa 100644
--- a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
+++ b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
@@ -333,12 +333,6 @@ patternProperties:
subnode describes. A value of 0 denotes the memory SD
function, values from 1 to 7 denote the SDIO functions.

- broken-hpi:
- $ref: /schemas/types.yaml#/definitions/flag
- description:
- Use this to indicate that the mmc-card has a broken hpi
- implementation, and that hpi should not be used.
-
required:
- reg

--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:53 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Alexandre Torgue, David S. Miller, Giuseppe Cavallaro, Jakub Kicinski, Jose Abreu, net...@vger.kernel.org, Rob Herring
Even though both the driver and the device trees all use the
allwinner,sun8i-r40-gmac compatible, we documented the compatible as
allwinner,sun8i-r40-emac in the binding. Let's fix this.

Cc: Alexandre Torgue <alexandr...@st.com>
Cc: "David S. Miller" <da...@davemloft.net>
Cc: Giuseppe Cavallaro <peppe.c...@st.com>
Cc: Jakub Kicinski <ku...@kernel.org>
Cc: Jose Abreu <joa...@synopsys.com>
Cc: net...@vger.kernel.org
Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml | 4 ++--
Documentation/devicetree/bindings/net/snps,dwmac.yaml | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml b/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml
index 7f2578d48e3f..9919d1912cc1 100644
--- a/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml
+++ b/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml
@@ -15,7 +15,7 @@ properties:
oneOf:
- const: allwinner,sun8i-a83t-emac
- const: allwinner,sun8i-h3-emac
- - const: allwinner,sun8i-r40-emac
+ - const: allwinner,sun8i-r40-gmac
- const: allwinner,sun8i-v3s-emac
- const: allwinner,sun50i-a64-emac
- items:
@@ -91,7 +91,7 @@ allOf:
compatible:
contains:
enum:
- - allwinner,sun8i-r40-emac
+ - allwinner,sun8i-r40-gmac

then:
properties:
diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
index 42689b7d03a2..3de8bca418f0 100644
--- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml
+++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
@@ -49,7 +49,7 @@ properties:
- allwinner,sun7i-a20-gmac
- allwinner,sun8i-a83t-emac
- allwinner,sun8i-h3-emac
- - allwinner,sun8i-r40-emac
+ - allwinner,sun8i-r40-gmac
- allwinner,sun8i-v3s-emac
- allwinner,sun50i-a64-emac
- loongson,ls2k-dwmac
@@ -316,7 +316,7 @@ allOf:
- allwinner,sun7i-a20-gmac
- allwinner,sun8i-a83t-emac
- allwinner,sun8i-h3-emac
- - allwinner,sun8i-r40-emac
+ - allwinner,sun8i-r40-gmac
- allwinner,sun8i-v3s-emac
- allwinner,sun50i-a64-emac
- ingenic,jz4775-mac
@@ -364,7 +364,7 @@ allOf:
- allwinner,sun7i-a20-gmac
- allwinner,sun8i-a83t-emac
- allwinner,sun8i-h3-emac
- - allwinner,sun8i-r40-emac
+ - allwinner,sun8i-r40-gmac
- allwinner,sun8i-v3s-emac
- allwinner,sun50i-a64-emac
- loongson,ls2k-dwmac
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:19:54 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, David S. Miller, de Goede, Jakub Kicinski, Kalle Valo, linux-w...@vger.kernel.org, net...@vger.kernel.org, Rob Herring
The ESP8089 Wireless Chip is supported by Linux (through an out-of-tree
driver) thanks to its device tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: "David S. Miller" <da...@davemloft.net>
Cc: de Goede <hdeg...@redhat.com>
Cc: Jakub Kicinski <ku...@kernel.org>
Cc: Kalle Valo <kv...@codeaurora.org>
Cc: linux-w...@vger.kernel.org
Cc: net...@vger.kernel.org
Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/net/wireless/esp,esp8089.txt | 30 -------------
.../bindings/net/wireless/esp,esp8089.yaml | 43 +++++++++++++++++++
2 files changed, 43 insertions(+), 30 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/net/wireless/esp,esp8089.txt
create mode 100644 Documentation/devicetree/bindings/net/wireless/esp,esp8089.yaml

diff --git a/Documentation/devicetree/bindings/net/wireless/esp,esp8089.txt b/Documentation/devicetree/bindings/net/wireless/esp,esp8089.txt
deleted file mode 100644
index 6830c4786f8a..000000000000
--- a/Documentation/devicetree/bindings/net/wireless/esp,esp8089.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-Espressif ESP8089 wireless SDIO devices
-
-This node provides properties for controlling the ESP8089 wireless device.
-The node is expected to be specified as a child node to the SDIO controller
-that connects the device to the system.
-
-Required properties:
-
- - compatible : Should be "esp,esp8089".
-
-Optional properties:
- - esp,crystal-26M-en: Integer value for the crystal_26M_en firmware parameter
-
-Example:
-
-&mmc1 {
- #address-cells = <1>;
- #size-cells = <0>;
-
- vmmc-supply = <&reg_dldo1>;
- mmc-pwrseq = <&wifi_pwrseq>;
- bus-width = <4>;
- non-removable;
-
- esp8089: sdio_wifi@1 {
- compatible = "esp,esp8089";
- reg = <1>;
- esp,crystal-26M-en = <2>;
- };
-};
diff --git a/Documentation/devicetree/bindings/net/wireless/esp,esp8089.yaml b/Documentation/devicetree/bindings/net/wireless/esp,esp8089.yaml
new file mode 100644
index 000000000000..284ef45add99
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/wireless/esp,esp8089.yaml
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/wireless/esp,esp8089.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Espressif ESP8089 Device Tree Bindings
+
+maintainers:
+ - Hans de Goede <hdeg...@redhat.com>
+
+properties:
+ compatible:
+ const: esp,esp8089
+
+ reg:
+ maxItems: 1
+
+ esp,crystal-26M-en:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: >
+ Value for the crystal_26M_en firmware parameter
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ mmc {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ wifi@1 {
+ compatible = "esp,esp8089";
+ reg = <1>;
+ esp,crystal-26M-en = <2>;

Maxime Ripard

unread,
Sep 1, 2021, 5:19:57 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Icenowy Zheng, Liam Girdwood, Mark Brown, Ondrej Jirman, Rob Herring
The Silergy SY8106A is a regulator controlled through i2c supported by
Linux with a matching device tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Icenowy Zheng <ice...@aosc.io>
Cc: Liam Girdwood <lgir...@gmail.com>
Cc: Mark Brown <bro...@kernel.org>
Cc: Ondrej Jirman <meg...@megous.com>
Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../bindings/regulator/silergy,sy8106a.yaml | 52 +++++++++++++++++++
.../bindings/regulator/sy8106a-regulator.txt | 23 --------
2 files changed, 52 insertions(+), 23 deletions(-)
create mode 100644 Documentation/devicetree/bindings/regulator/silergy,sy8106a.yaml
delete mode 100644 Documentation/devicetree/bindings/regulator/sy8106a-regulator.txt

diff --git a/Documentation/devicetree/bindings/regulator/silergy,sy8106a.yaml b/Documentation/devicetree/bindings/regulator/silergy,sy8106a.yaml
new file mode 100644
index 000000000000..a52a67c869b5
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/silergy,sy8106a.yaml
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/regulator/silergy,sy8106a.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Silergy SY8106A Voltage Regulator Device Tree Bindings
+
+maintainers:
+ - Ondrej Jirman <meg...@megous.com>
+
+allOf:
+ - $ref: regulator.yaml#
+
+properties:
+ compatible:
+ const: silergy,sy8106a
+
+ reg:
+ maxItems: 1
+
+ silergy,fixed-microvolt:
+ description: >
+ The voltage when I2C regulating is disabled (set by external resistor
+ like a fixed voltage)
+
+required:
+ - compatible
+ - reg
+ - silergy,fixed-microvolt
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ regulator@65 {
+ compatible = "silergy,sy8106a";
+ reg = <0x65>;
+ regulator-name = "sy8106a-vdd";
+ silergy,fixed-microvolt = <1200000>;
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1400000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/regulator/sy8106a-regulator.txt b/Documentation/devicetree/bindings/regulator/sy8106a-regulator.txt
deleted file mode 100644
index 39a8ca73f572..000000000000
--- a/Documentation/devicetree/bindings/regulator/sy8106a-regulator.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-SY8106A Voltage regulator
-
-Required properties:
-- compatible: Must be "silergy,sy8106a"
-- reg: I2C slave address - must be <0x65>
-- silergy,fixed-microvolt - the voltage when I2C regulating is disabled (set
- by external resistor like a fixed voltage)
-
-Any property defined as part of the core regulator binding, defined in
-./regulator.txt, can also be used.
-
-Example:
-
- sy8106a {
- compatible = "silergy,sy8106a";
- reg = <0x65>;
- regulator-name = "sy8106a-vdd";
- silergy,fixed-microvolt = <1200000>;
- regulator-min-microvolt = <1000000>;
- regulator-max-microvolt = <1400000>;
- regulator-boot-on;
- regulator-always-on;
- };
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:20:00 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Rob Herring
Even though we've used the CPU configuration driver for some time and a
number of boards using it already, we never had a binding for it. Let's
add it based on what the driver expects and the boards are providing.

Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../sunxi/allwinner,sun6i-a31-cpuconfig.yaml | 38 +++++++++++++++++++
1 file changed, 38 insertions(+)
create mode 100644 Documentation/devicetree/bindings/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml

diff --git a/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml
new file mode 100644
index 000000000000..f3878e0b3cc4
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner CPU Configuration Controller Device Tree Bindings
+
+maintainers:
+ - Chen-Yu Tsai <we...@csie.org>
+ - Maxime Ripard <mri...@kernel.org>
+
+properties:
+ compatible:
+ enum:
+ - allwinner,sun6i-a31-cpuconfig
+ - allwinner,sun8i-a23-cpuconfig
+ - allwinner,sun8i-a83t-cpucfg
+ - allwinner,sun8i-a83t-r-cpucfg
+ - allwinner,sun9i-a80-cpucfg
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ cpucfg@1f01c00 {
+ compatible = "allwinner,sun6i-a31-cpuconfig";
+ reg = <0x01f01c00 0x300>;

Maxime Ripard

unread,
Sep 1, 2021, 5:20:00 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Rob Herring
Even though we've used the A80 PRCM driver for some time and a number of
boards using it already, we never had a binding for it. Let's add it
based on what the driver expects and the boards are providing.

Reviewed-by: Rob Herring <ro...@kernel.org>
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
.../arm/sunxi/allwinner,sun9i-a80-prcm.yaml | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 Documentation/devicetree/bindings/arm/sunxi/allwinner,sun9i-a80-prcm.yaml

diff --git a/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun9i-a80-prcm.yaml b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun9i-a80-prcm.yaml
new file mode 100644
index 000000000000..668aadbfe4c0
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun9i-a80-prcm.yaml
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/sunxi/allwinner,sun9i-a80-prcm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner A80 PRCM Device Tree Bindings
+
+maintainers:
+ - Chen-Yu Tsai <we...@csie.org>
+ - Maxime Ripard <mri...@kernel.org>
+
+properties:
+ compatible:
+ const: allwinner,sun9i-a80-prcm
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ prcm@8001400 {
+ compatible = "allwinner,sun9i-a80-prcm";
+ reg = <0x08001400 0x200>;

Maxime Ripard

unread,
Sep 1, 2021, 5:20:03 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Dongjin Kim, Greg Kroah-Hartman, linu...@vger.kernel.org
The SMSC USB3503 USB Hub Controller is supported by Linux thanks to
its device tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Dongjin Kim <tobe...@gmail.com>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
Cc: linu...@vger.kernel.org
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Added maximum number of items for clocks and gpios
- Fixed the example node name
---
.../devicetree/bindings/usb/smsc,usb3503.yaml | 108 ++++++++++++++++++
.../devicetree/bindings/usb/usb3503.txt | 39 -------
2 files changed, 108 insertions(+), 39 deletions(-)
create mode 100644 Documentation/devicetree/bindings/usb/smsc,usb3503.yaml
delete mode 100644 Documentation/devicetree/bindings/usb/usb3503.txt

diff --git a/Documentation/devicetree/bindings/usb/smsc,usb3503.yaml b/Documentation/devicetree/bindings/usb/smsc,usb3503.yaml
new file mode 100644
index 000000000000..39228a506b93
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/smsc,usb3503.yaml
@@ -0,0 +1,108 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/smsc,usb3503.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SMSC USB3503 High-Speed Hub Controller Device Tree Bindings
+
+maintainers:
+ - Dongjin Kim <tobe...@gmail.com>
+
+properties:
+ compatible:
+ enum:
+ - smsc,usb3503
+ - smsc,usb3503a
+
+ reg:
+ maxItems: 1
+
+ connect-gpios:
+ maxItems: 1
+ description: >
+ GPIO for connect
+
+ intn-gpios:
+ maxItems: 1
+ description: >
+ GPIO for interrupt
+
+ reset-gpios:
+ maxItems: 1
+ description: >
+ GPIO for reset
+
+ disabled-ports:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 1
+ maxItems: 3
+ items:
+ minimum: 1
+ maximum: 3
+ description: >
+ Specifies the ports unused using their port number. Do not describe this
+ property if all ports have to be enabled.
+
+ initial-mode:
+ enum: [1, 2]
+ description: >
+ Specifies initial mode. 1 for Hub mode, 2 for standby mode.
+
+ clocks:
+ maxItems: 1
+ description: >
+ Clock used for driving REFCLK signal. If not provided the driver assumes
+ that clock signal is always available, its rate is specified by REF_SEL
+ pins and a value from the primary reference clock frequencies table is
+ used.
+
+ clock-names:
+ const: refclk
+
+ refclk-frequency:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: >
+ Frequency of the REFCLK signal as defined by REF_SEL pins. If not
+ provided, driver will not set rate of the REFCLK signal and assume that a
+ value from the primary reference clock frequencies table is used.
+
+required:
+ - compatible
+
+additionalProperties: false
+
+examples:
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb-hub@8 {
+ compatible = "smsc,usb3503";
+ reg = <0x08>;
+ connect-gpios = <&gpx3 0 1>;
+ disabled-ports = <2 3>;
+ intn-gpios = <&gpx3 4 1>;
+ reset-gpios = <&gpx3 5 1>;
+ initial-mode = <1>;
+ clocks = <&clks 80>;
+ clock-names = "refclk";
+ };
+ };
+
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ usb-hub {
+ /* I2C is not connected */
+ compatible = "smsc,usb3503";
+ initial-mode = <1>; /* initialize in HUB mode */
+ disabled-ports = <1>;
+ intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+ reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */
+ connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
+ refclk-frequency = <19200000>;
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/usb/usb3503.txt b/Documentation/devicetree/bindings/usb/usb3503.txt
deleted file mode 100644
index 057dd384d473..000000000000
--- a/Documentation/devicetree/bindings/usb/usb3503.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-SMSC USB3503 High-Speed Hub Controller
-
-Required properties:
-- compatible: Should be "smsc,usb3503" or "smsc,usb3503a".
-
-Optional properties:
-- reg: Specifies the i2c slave address, it is required and should be 0x08
- if I2C is used.
-- connect-gpios: Should specify GPIO for connect.
-- disabled-ports: Should specify the ports unused.
- '1' or '2' or '3' are available for this property to describe the port
- number. 1~3 property values are possible to be described.
- Do not describe this property if all ports have to be enabled.
-- intn-gpios: Should specify GPIO for interrupt.
-- reset-gpios: Should specify GPIO for reset.
-- initial-mode: Should specify initial mode.
- (1 for HUB mode, 2 for STANDBY mode)
-- refclk: Clock used for driving REFCLK signal (optional, if not provided
- the driver assumes that clock signal is always available, its
- rate is specified by REF_SEL pins and a value from the primary
- reference clock frequencies table is used). Use clocks and
- clock-names in order to assign it
-- refclk-frequency: Frequency of the REFCLK signal as defined by REF_SEL
- pins (optional, if not provided, driver will not set rate of the
- REFCLK signal and assume that a value from the primary reference
- clock frequencies table is used)
-
-Examples:
- usb3503@8 {
- compatible = "smsc,usb3503";
- reg = <0x08>;
- connect-gpios = <&gpx3 0 1>;
- disabled-ports = <2 3>;
- intn-gpios = <&gpx3 4 1>;
- reset-gpios = <&gpx3 5 1>;
- initial-mode = <1>;
- clocks = <&clks 80>;
- clock-names = "refclk";
- };
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:20:05 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Felipe Balbi, Greg Kroah-Hartman, linu...@vger.kernel.org
The original binding was allowing any combination of usb2-phy and
usb3-phy in the phys and phy-names properties.

However, the current binding enforces that those properties must be a
list of usb2-phy and usb3-phy, with exactly one element, effectively
making usb2-phy the only value being valid.

Let's rework the properties description to allow either one or two
element picked with values either usb2-phy or usb3-phy. The rest of the
tooling makes sure that we don't get any duplicate value, so this should
be what we want.

Cc: Felipe Balbi <ba...@kernel.org>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
Cc: linu...@vger.kernel.org
Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
index 078fb7889593..c1c970073681 100644
--- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
+++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
@@ -73,15 +73,15 @@ properties:

phys:
minItems: 1
- items:
- - description: USB2/HS PHY
- - description: USB3/SS PHY
+ maxItems: 2

phy-names:
minItems: 1
+ maxItems: 2
items:
- - const: usb2-phy
- - const: usb3-phy
+ enum:
+ - usb2-phy
+ - usb3-phy

resets:
minItems: 1
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:20:06 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com, Daniel Mack, Evgeniy Polyakov
Bitbanged 1-Wire buses are supported by Linux thanks to their device
tree binding.

Now that we have the DT validation in place, let's convert the device
tree bindings for that driver over to a YAML schema.

Cc: Daniel Mack <zon...@gmail.com>
Cc: Evgeniy Polyakov <z...@ioremap.net>
Signed-off-by: Maxime Ripard <max...@cerno.tech>

---

Changes from v1:
- Changed additionalproperties to make sure all the other items in the
schema are nodes
---
.../devicetree/bindings/w1/w1-gpio.txt | 27 ------------
.../devicetree/bindings/w1/w1-gpio.yaml | 44 +++++++++++++++++++
2 files changed, 44 insertions(+), 27 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/w1/w1-gpio.txt
create mode 100644 Documentation/devicetree/bindings/w1/w1-gpio.yaml

diff --git a/Documentation/devicetree/bindings/w1/w1-gpio.txt b/Documentation/devicetree/bindings/w1/w1-gpio.txt
deleted file mode 100644
index 3d6554eac240..000000000000
--- a/Documentation/devicetree/bindings/w1/w1-gpio.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-w1-gpio devicetree bindings
-
-Required properties:
-
- - compatible: "w1-gpio"
- - gpios: one or two GPIO specs:
- - the first one is used as data I/O pin
- - the second one is optional. If specified, it is used as
- enable pin for an external pin pullup.
-
-Optional properties:
-
- - linux,open-drain: if specified, the data pin is considered in
- open-drain mode.
-
-Also refer to the generic w1.txt document.
-
-Examples:
-
- onewire {
- compatible = "w1-gpio";
- gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
-
- battery {
- // ...
- };
- };
diff --git a/Documentation/devicetree/bindings/w1/w1-gpio.yaml b/Documentation/devicetree/bindings/w1/w1-gpio.yaml
new file mode 100644
index 000000000000..7ba1c2fd4722
--- /dev/null
+++ b/Documentation/devicetree/bindings/w1/w1-gpio.yaml
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/w1/w1-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Bitbanged GPIO 1-Wire Bus Device Tree Bindings
+
+maintainers:
+ - Daniel Mack <zon...@gmail.com>
+
+properties:
+ compatible:
+ const: w1-gpio
+
+ gpios:
+ minItems: 1
+ maxItems: 2
+ items:
+ - description: Data I/O pin
+ - description: Enable pin for an external pull-up resistor
+
+ linux,open-drain:
+ type: boolean
+ description: >
+ If specified, the data pin is considered in open-drain mode.
+
+required:
+ - compatible
+ - gpios
+
+additionalProperties:
+ type: object
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ onewire {
+ compatible = "w1-gpio";
+ gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;

Maxime Ripard

unread,
Sep 1, 2021, 5:20:07 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com
The name of our PMIC power supply names conflict with the generic
regulator supply check that matches anything called *-supply, including
the nodes, and then makes sure it's a phandle.

A node is obviously not a phandle, so let's change our power supplies
names to avoid any conflict.

Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
arch/arm/boot/dts/axp209.dtsi | 6 +++---
arch/arm/boot/dts/axp22x.dtsi | 6 +++---
arch/arm/boot/dts/axp81x.dtsi | 6 +++---
arch/arm64/boot/dts/allwinner/axp803.dtsi | 6 +++---
4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/arch/arm/boot/dts/axp209.dtsi b/arch/arm/boot/dts/axp209.dtsi
index 0d9ff12bdf28..ca240cd6f6c3 100644
--- a/arch/arm/boot/dts/axp209.dtsi
+++ b/arch/arm/boot/dts/axp209.dtsi
@@ -53,7 +53,7 @@ &axp209 {
interrupt-controller;
#interrupt-cells = <1>;

- ac_power_supply: ac-power-supply {
+ ac_power_supply: ac-power {
compatible = "x-powers,axp202-ac-power-supply";
status = "disabled";
};
@@ -69,7 +69,7 @@ axp_gpio: gpio {
#gpio-cells = <2>;
};

- battery_power_supply: battery-power-supply {
+ battery_power_supply: battery-power {
compatible = "x-powers,axp209-battery-power-supply";
status = "disabled";
};
@@ -112,7 +112,7 @@ reg_ldo5: ldo5 {
};
};

- usb_power_supply: usb-power-supply {
+ usb_power_supply: usb-power {
compatible = "x-powers,axp202-usb-power-supply";
status = "disabled";
};
diff --git a/arch/arm/boot/dts/axp22x.dtsi b/arch/arm/boot/dts/axp22x.dtsi
index 65a07a67aca9..a020c12b2884 100644
--- a/arch/arm/boot/dts/axp22x.dtsi
+++ b/arch/arm/boot/dts/axp22x.dtsi
@@ -52,7 +52,7 @@ &axp22x {
interrupt-controller;
#interrupt-cells = <1>;

- ac_power_supply: ac-power-supply {
+ ac_power_supply: ac-power {
compatible = "x-powers,axp221-ac-power-supply";
status = "disabled";
};
@@ -62,7 +62,7 @@ axp_adc: adc {
#io-channel-cells = <1>;
};

- battery_power_supply: battery-power-supply {
+ battery_power_supply: battery-power {
compatible = "x-powers,axp221-battery-power-supply";
status = "disabled";
};
@@ -163,7 +163,7 @@ reg_drivevbus: drivevbus {
};
};

- usb_power_supply: usb_power_supply {
+ usb_power_supply: usb-power {
compatible = "x-powers,axp221-usb-power-supply";
status = "disabled";
};
diff --git a/arch/arm/boot/dts/axp81x.dtsi b/arch/arm/boot/dts/axp81x.dtsi
index 1dfeeceabf4c..63fb9811b453 100644
--- a/arch/arm/boot/dts/axp81x.dtsi
+++ b/arch/arm/boot/dts/axp81x.dtsi
@@ -48,7 +48,7 @@ &axp81x {
interrupt-controller;
#interrupt-cells = <1>;

- ac_power_supply: ac-power-supply {
+ ac_power_supply: ac-power {
compatible = "x-powers,axp813-ac-power-supply";
status = "disabled";
};
@@ -74,7 +74,7 @@ gpio1_ldo: gpio1-ldo {
};
};

- battery_power_supply: battery-power-supply {
+ battery_power_supply: battery-power {
compatible = "x-powers,axp813-battery-power-supply";
status = "disabled";
};
@@ -172,7 +172,7 @@ reg_drivevbus: drivevbus {
};
};

- usb_power_supply: usb-power-supply {
+ usb_power_supply: usb-power {
compatible = "x-powers,axp813-usb-power-supply";
};
};
diff --git a/arch/arm64/boot/dts/allwinner/axp803.dtsi b/arch/arm64/boot/dts/allwinner/axp803.dtsi
index 10e9186a76bf..61402057e107 100644
--- a/arch/arm64/boot/dts/allwinner/axp803.dtsi
+++ b/arch/arm64/boot/dts/allwinner/axp803.dtsi
@@ -10,7 +10,7 @@ &axp803 {
interrupt-controller;
#interrupt-cells = <1>;

- ac_power_supply: ac-power-supply {
+ ac_power_supply: ac-power {
compatible = "x-powers,axp803-ac-power-supply",
"x-powers,axp813-ac-power-supply";
status = "disabled";
@@ -37,7 +37,7 @@ gpio1_ldo: gpio1-ldo {
};
};

- battery_power_supply: battery-power-supply {
+ battery_power_supply: battery-power {
compatible = "x-powers,axp803-battery-power-supply",
"x-powers,axp813-battery-power-supply";
status = "disabled";
@@ -147,7 +147,7 @@ reg_drivevbus: drivevbus {
};
};

- usb_power_supply: usb-power-supply {
+ usb_power_supply: usb-power {
compatible = "x-powers,axp803-usb-power-supply",
"x-powers,axp813-usb-power-supply";
status = "disabled";
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:20:09 AM9/1/21
to devic...@vger.kernel.org, Rob Herring, Frank Rowand, Chen-Yu Tsai, Maxime Ripard, Jernej Škrabec, linux-ar...@lists.infradead.org, linux...@googlegroups.com
We've had a pinctrl node name convention for a while now, let's follow
it for the AXP pinctrl nodes as well.

Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
arch/arm/boot/dts/axp81x.dtsi | 4 ++--
arch/arm64/boot/dts/allwinner/axp803.dtsi | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/axp81x.dtsi b/arch/arm/boot/dts/axp81x.dtsi
index 63fb9811b453..b93387b0c1c3 100644
--- a/arch/arm/boot/dts/axp81x.dtsi
+++ b/arch/arm/boot/dts/axp81x.dtsi
@@ -63,12 +63,12 @@ axp_gpio: gpio {
gpio-controller;
#gpio-cells = <2>;

- gpio0_ldo: gpio0-ldo {
+ gpio0_ldo: gpio0-ldo-pin {
pins = "GPIO0";
function = "ldo";
};

- gpio1_ldo: gpio1-ldo {
+ gpio1_ldo: gpio1-ldo-pin {
pins = "GPIO1";
function = "ldo";
};
diff --git a/arch/arm64/boot/dts/allwinner/axp803.dtsi b/arch/arm64/boot/dts/allwinner/axp803.dtsi
index 61402057e107..578ef368e2b4 100644
--- a/arch/arm64/boot/dts/allwinner/axp803.dtsi
+++ b/arch/arm64/boot/dts/allwinner/axp803.dtsi
@@ -26,12 +26,12 @@ axp_gpio: gpio {
gpio-controller;
#gpio-cells = <2>;

- gpio0_ldo: gpio0-ldo {
+ gpio0_ldo: gpio0-ldo-pin {
pins = "GPIO0";
function = "ldo";
};

- gpio1_ldo: gpio1-ldo {
+ gpio1_ldo: gpio1-ldo-pin {
pins = "GPIO1";
function = "ldo";
};
--
2.31.1

Maxime Ripard

unread,
Sep 1, 2021, 5:20:11 AM9/1/21