Changed V3:
remove select
change unevaluatedProperties
add separate schemas for each 'if' subset
Changed V2:
add rockchip,rk3328-grf-gpio.yaml
rename grf-gpio nodename
Johan Jonker (4):
dt-bindings: gpio: convert rk3328-grf-gpio.txt to YAML
dt-bindings: soc: rockchip: convert grf.txt to YAML
ARM: dts: rockchip: add grf register compatible for rk3066/rk3188
arm64: dts: rename grf-gpio nodename in rk3328.dtsi
.../bindings/gpio/rockchip,rk3328-grf-gpio.txt | 32 ---
.../bindings/gpio/rockchip,rk3328-grf-gpio.yaml | 51 ++++
.../devicetree/bindings/soc/rockchip/grf.txt | 61 -----
.../devicetree/bindings/soc/rockchip/grf.yaml | 262 +++++++++++++++++++++
arch/arm/boot/dts/rk3xxx.dtsi | 2 +-
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 2 +-
6 files changed, 315 insertions(+), 95 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.txt
create mode 100644 Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.yaml
delete mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.txt
create mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.yaml
--
2.11.0
With the conversion of syscon.yaml minItems for compatibles
was set to 2. Current Rockchip rk3xxx.dtsi file only uses "syscon"
for the grf registers. Add "rockchip,rk3066-grf", "syscon"
compatible for rk3066/rk3188 to reduce notifications produced with:
make ARCH=arm dtbs_check
DT_SCHEMA_FILES=Documentation/devicetree/bindings/mfd/syscon.yaml
Signed-off-by: Johan Jonker <[email protected]>
---
arch/arm/boot/dts/rk3xxx.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/rk3xxx.dtsi b/arch/arm/boot/dts/rk3xxx.dtsi
index 755c946f1..c34bc59c9 100644
--- a/arch/arm/boot/dts/rk3xxx.dtsi
+++ b/arch/arm/boot/dts/rk3xxx.dtsi
@@ -256,7 +256,7 @@
};
grf: grf@20008000 {
- compatible = "syscon";
+ compatible = "rockchip,rk3066-grf", "syscon";
reg = <0x20008000 0x200>;
};
--
2.11.0
A test with the command below gives this error:
/arch/arm64/boot/dts/rockchip/rk3328-a1.dt.yaml: syscon@ff100000:
grf-gpio: {'compatible': ['rockchip,rk3328-grf-gpio'],
'gpio-controller': True, '#gpio-cells': [[2]], 'phandle': [[68]]} is not
of type 'array'
From schema:
~/.local/lib/python3.5/site-packages/dtschema/schemas/gpio/gpio-consumer.yaml
Due to the regex "(?<!,nr)-gpios?$" anything that ends on
'-gpio', '-gpios' gives a match.
Rename 'grf-gpio' nodename to generic 'gpio'
make ARCH=arm64 dtbs_check
DT_SCHEMA_FILES=~/.local/lib/python3.5/site-packages/dtschema/
schemas/gpio/gpio-consumer.yaml
Signed-off-by: Johan Jonker <[email protected]>
---
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
index 4ce49aae7..2e458fb87 100644
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
@@ -291,7 +291,7 @@
status = "disabled";
};
- grf_gpio: grf-gpio {
+ grf_gpio: gpio {
compatible = "rockchip,rk3328-grf-gpio";
gpio-controller;
#gpio-cells = <2>;
--
2.11.0
Current dts files with RK3328 GRF 'gpio' nodes are manually verified.
In order to automate this process rk3328-grf-gpio.txt has to be
converted to YAML.
Rename 'grf-gpio' nodename to 'gpio'.
Signed-off-by: Johan Jonker <[email protected]>
Reviewed-by: Rob Herring <[email protected]>
Reviewed-by: Linus Walleij <[email protected]>
---
.../bindings/gpio/rockchip,rk3328-grf-gpio.txt | 32 --------------
.../bindings/gpio/rockchip,rk3328-grf-gpio.yaml | 51 ++++++++++++++++++++++
2 files changed, 51 insertions(+), 32 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.txt
create mode 100644 Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.yaml
diff --git a/Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.txt b/Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.txt
deleted file mode 100644
index f9231df17..000000000
--- a/Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-Rockchip RK3328 GRF (General Register Files) GPIO controller.
-
-In Rockchip RK3328, the output only GPIO_MUTE pin, originally for codec mute
-control, can also be used for general purpose. It is manipulated by the
-GRF_SOC_CON10 register in GRF. Aside from the GPIO_MUTE pin, the HDMI pins can
-also be set in the same way.
-
-Currently this GPIO controller only supports the mute pin. If needed in the
-future, the HDMI pins support can also be added.
-
-Required properties:
-- compatible: Should contain "rockchip,rk3328-grf-gpio".
-- gpio-controller: Marks the device node as a gpio controller.
-- #gpio-cells: Should be 2. The first cell is the pin number and
- the second cell is used to specify the gpio polarity:
- 0 = Active high,
- 1 = Active low.
-
-Example:
-
- grf: syscon@ff100000 {
- compatible = "rockchip,rk3328-grf", "syscon", "simple-mfd";
-
- grf_gpio: grf-gpio {
- compatible = "rockchip,rk3328-grf-gpio";
- gpio-controller;
- #gpio-cells = <2>;
- };
- };
-
-Note: The grf_gpio node should be declared as the child of the GRF (General
-Register File) node. The GPIO_MUTE pin is referred to as <&grf_gpio 0>.
diff --git a/Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.yaml b/Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.yaml
new file mode 100644
index 000000000..ea169f6fb
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/rockchip,rk3328-grf-gpio.yaml
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/rockchip,rk3328-grf-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip RK3328 General Register Files GPIO controller
+
+description:
+ The Rockchip RK3328 General Register File (GRF) outputs only the
+ GPIO_MUTE pin, originally for codec mute control, but it can also be used
+ for general purpose. It is manipulated by the GRF_SOC_CON10 register.
+ If needed in the future support for the HDMI pins can also be added.
+ The GPIO node should be declared as the child of the GRF node.
+
+ The GPIO_MUTE pin is referred to in the format
+
+ <&grf_gpio 0 GPIO_ACTIVE_LOW>
+
+ The first cell is the pin number and
+ the second cell is used to specify the GPIO polarity
+ 0 = Active high
+ 1 = Active low
+
+maintainers:
+ - Heiko Stuebner <[email protected]>
+
+properties:
+ compatible:
+ const: rockchip,rk3328-grf-gpio
+
+ gpio-controller: true
+
+ "#gpio-cells":
+ const: 2
+
+required:
+ - compatible
+ - gpio-controller
+ - "#gpio-cells"
+
+additionalProperties: false
+
+examples:
+ - |
+ grf_gpio: gpio {
+ compatible = "rockchip,rk3328-grf-gpio";
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
--
2.11.0
Current dts files with 'grf' nodes are manually verified.
In order to automate this process grf.txt has to be
converted to YAML.
Most compatibility strings are in use with "simple-mfd" added.
Add description already in use:
"rockchip,rv1108-pmugrf", "syscon"
Add new descriptions for:
"rockchip,rk3568-grf", "syscon", "simple-mfd"
"rockchip,rk3568-pmugrf", "syscon", "simple-mfd"
Signed-off-by: Johan Jonker <[email protected]>
---
Changed V3:
remove select
change unevaluatedProperties
add separate schemas for each 'if' subset
Changed V2:
add rockchip,rk3328-grf-gpio.yaml
rename grf-gpio nodename
---
.../devicetree/bindings/soc/rockchip/grf.txt | 61 -----
.../devicetree/bindings/soc/rockchip/grf.yaml | 262 +++++++++++++++++++++
2 files changed, 262 insertions(+), 61 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.txt
create mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.yaml
diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.txt b/Documentation/devicetree/bindings/soc/rockchip/grf.txt
deleted file mode 100644
index f96511aa3..000000000
--- a/Documentation/devicetree/bindings/soc/rockchip/grf.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-* Rockchip General Register Files (GRF)
-
-The general register file will be used to do static set by software, which
-is composed of many registers for system control.
-
-From RK3368 SoCs, the GRF is divided into two sections,
-- GRF, used for general non-secure system,
-- SGRF, used for general secure system,
-- PMUGRF, used for always on system
-
-On RK3328 SoCs, the GRF adds a section for USB2PHYGRF,
-
-ON RK3308 SoC, the GRF is divided into four sections:
-- GRF, used for general non-secure system,
-- SGRF, used for general secure system,
-- DETECTGRF, used for audio codec system,
-- COREGRF, used for pvtm,
-
-Required Properties:
-
-- compatible: GRF should be one of the following:
- - "rockchip,px30-grf", "syscon": for px30
- - "rockchip,rk3036-grf", "syscon": for rk3036
- - "rockchip,rk3066-grf", "syscon": for rk3066
- - "rockchip,rk3188-grf", "syscon": for rk3188
- - "rockchip,rk3228-grf", "syscon": for rk3228
- - "rockchip,rk3288-grf", "syscon": for rk3288
- - "rockchip,rk3308-grf", "syscon": for rk3308
- - "rockchip,rk3328-grf", "syscon": for rk3328
- - "rockchip,rk3368-grf", "syscon": for rk3368
- - "rockchip,rk3399-grf", "syscon": for rk3399
- - "rockchip,rv1108-grf", "syscon": for rv1108
-- compatible: DETECTGRF should be one of the following:
- - "rockchip,rk3308-detect-grf", "syscon": for rk3308
-- compatilbe: COREGRF should be one of the following:
- - "rockchip,rk3308-core-grf", "syscon": for rk3308
-- compatible: PMUGRF should be one of the following:
- - "rockchip,px30-pmugrf", "syscon": for px30
- - "rockchip,rk3368-pmugrf", "syscon": for rk3368
- - "rockchip,rk3399-pmugrf", "syscon": for rk3399
-- compatible: SGRF should be one of the following:
- - "rockchip,rk3288-sgrf", "syscon": for rk3288
-- compatible: USB2PHYGRF should be one of the following:
- - "rockchip,px30-usb2phy-grf", "syscon": for px30
- - "rockchip,rk3328-usb2phy-grf", "syscon": for rk3328
-- compatible: USBGRF should be one of the following:
- - "rockchip,rv1108-usbgrf", "syscon": for rv1108
-- reg: physical base address of the controller and length of memory mapped
- region.
-
-Example: GRF and PMUGRF of RK3399 SoCs
-
- pmugrf: syscon@ff320000 {
- compatible = "rockchip,rk3399-pmugrf", "syscon";
- reg = <0x0 0xff320000 0x0 0x1000>;
- };
-
- grf: syscon@ff770000 {
- compatible = "rockchip,rk3399-grf", "syscon";
- reg = <0x0 0xff770000 0x0 0x10000>;
- };
diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
new file mode 100644
index 000000000..264e2e5ff
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
@@ -0,0 +1,262 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/rockchip/grf.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip General Register Files (GRF)
+
+maintainers:
+ - Heiko Stuebner <[email protected]>
+
+properties:
+ compatible:
+ oneOf:
+ - items:
+ - enum:
+ - rockchip,rk3066-grf
+ - rockchip,rk3188-grf
+ - rockchip,rk3288-sgrf
+ - rockchip,rv1108-pmugrf
+ - rockchip,rv1108-usbgrf
+ - const: syscon
+ - items:
+ - enum:
+ - rockchip,px30-grf
+ - rockchip,px30-pmugrf
+ - rockchip,px30-usb2phy-grf
+ - rockchip,rk3036-grf
+ - rockchip,rk3228-grf
+ - rockchip,rk3288-grf
+ - rockchip,rk3308-core-grf
+ - rockchip,rk3308-detect-grf
+ - rockchip,rk3308-grf
+ - rockchip,rk3328-grf
+ - rockchip,rk3328-usb2phy-grf
+ - rockchip,rk3368-grf
+ - rockchip,rk3368-pmugrf
+ - rockchip,rk3399-grf
+ - rockchip,rk3399-pmugrf
+ - rockchip,rk3568-grf
+ - rockchip,rk3568-pmugrf
+ - rockchip,rv1108-grf
+ - const: syscon
+ - const: simple-mfd
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+unevaluatedProperties: false
+
+allOf:
+ - $ref: "#/$defs/px30-grf"
+ - $ref: "#/$defs/rk3288-grf"
+ - $ref: "#/$defs/rk3328-grf"
+ - $ref: "#/$defs/rk3399-grf"
+ - $ref: "#/$defs/reboot"
+ - $ref: "#/$defs/usb2"
+ - $ref: "#/$defs/domains"
+
+$defs:
+ px30-grf:
+ if:
+ properties:
+ compatible:
+ contains:
+ const: rockchip,px30-grf
+
+ then:
+ properties:
+ lvds:
+ description:
+ Documentation/devicetree/bindings/display/rockchip/rockchip-lvds.txt
+
+ rk3288-grf:
+ if:
+ properties:
+ compatible:
+ contains:
+ const: rockchip,rk3288-grf
+
+ then:
+ properties:
+ edp-phy:
+ description:
+ Documentation/devicetree/bindings/phy/rockchip-dp-phy.txt
+
+ usbphy:
+ description:
+ Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt
+
+ rk3328-grf:
+ if:
+ properties:
+ compatible:
+ contains:
+ const: rockchip,rk3328-grf
+
+ then:
+ properties:
+ gpio:
+ type: object
+
+ $ref: "/schemas/gpio/rockchip,rk3328-grf-gpio.yaml#"
+
+ unevaluatedProperties: false
+
+ power-controller:
+ type: object
+
+ $ref: "/schemas/power/rockchip,power-controller.yaml#"
+
+ unevaluatedProperties: false
+
+ rk3399-grf:
+ if:
+ properties:
+ compatible:
+ contains:
+ const: rockchip,rk3399-grf
+
+ then:
+ properties:
+ mipi-dphy-rx0:
+ type: object
+
+ $ref: "/schemas/phy/rockchip-mipi-dphy-rx0.yaml#"
+
+ unevaluatedProperties: false
+
+ pcie-phy:
+ description:
+ Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
+
+ patternProperties:
+ "phy@[0-9a-f]+$":
+ description:
+ Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
+
+ reboot:
+ if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - rockchip,px30-pmugrf
+ - rockchip,rk3036-grf
+ - rockchip,rk3308-grf
+ - rockchip,rk3368-pmugrf
+
+ then:
+ properties:
+ reboot-mode:
+ type: object
+
+ $ref: "/schemas/power/reset/syscon-reboot-mode.yaml#"
+
+ unevaluatedProperties: false
+
+ usb2:
+ if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - rockchip,px30-usb2phy-grf
+ - rockchip,rk3228-grf
+ - rockchip,rk3328-usb2phy-grf
+ - rockchip,rk3399-grf
+ - rockchip,rv1108-grf
+
+ then:
+ properties:
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 1
+
+ required:
+ - "#address-cells"
+ - "#size-cells"
+
+ patternProperties:
+ "usb2-phy@[0-9a-f]+$":
+ type: object
+
+ $ref: "/schemas/phy/phy-rockchip-inno-usb2.yaml#"
+
+ unevaluatedProperties: false
+
+ domains:
+ if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - rockchip,px30-pmugrf
+ - rockchip,px30-grf
+ - rockchip,rk3228-grf
+ - rockchip,rk3288-grf
+ - rockchip,rk3328-grf
+ - rockchip,rk3368-pmugrf
+ - rockchip,rk3368-grf
+ - rockchip,rk3399-pmugrf
+ - rockchip,rk3399-grf
+
+ then:
+ properties:
+ io-domains:
+ description:
+ Documentation/devicetree/bindings/power/rockchip-io-domain.txt
+
+examples:
+ - |
+ #include <dt-bindings/clock/rk3399-cru.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/power/rk3399-power.h>
+ grf: syscon@ff770000 {
+ compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
+ reg = <0xff770000 0x10000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ mipi_dphy_rx0: mipi-dphy-rx0 {
+ compatible = "rockchip,rk3399-mipi-dphy-rx0";
+ clocks = <&cru SCLK_MIPIDPHY_REF>,
+ <&cru SCLK_DPHY_RX0_CFG>,
+ <&cru PCLK_VIO_GRF>;
+ clock-names = "dphy-ref", "dphy-cfg", "grf";
+ power-domains = <&power RK3399_PD_VIO>;
+ #phy-cells = <0>;
+ };
+
+ u2phy0: usb2-phy@e450 {
+ compatible = "rockchip,rk3399-usb2phy";
+ reg = <0xe450 0x10>;
+ clocks = <&cru SCLK_USB2PHY0_REF>;
+ clock-names = "phyclk";
+ #clock-cells = <0>;
+ clock-output-names = "clk_usbphy0_480m";
+ #phy-cells = <0>;
+
+ u2phy0_host: host-port {
+ #phy-cells = <0>;
+ interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>;
+ interrupt-names = "linestate";
+ };
+
+ u2phy0_otg: otg-port {
+ #phy-cells = <0>;
+ interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>;
+ interrupt-names = "otg-bvalid", "otg-id",
+ "linestate";
+ };
+ };
+ };
--
2.11.0
On Sat, May 08, 2021 at 02:37:41PM +0200, Johan Jonker wrote:
> Current dts files with 'grf' nodes are manually verified.
> In order to automate this process grf.txt has to be
> converted to YAML.
>
> Most compatibility strings are in use with "simple-mfd" added.
>
> Add description already in use:
> "rockchip,rv1108-pmugrf", "syscon"
>
> Add new descriptions for:
> "rockchip,rk3568-grf", "syscon", "simple-mfd"
> "rockchip,rk3568-pmugrf", "syscon", "simple-mfd"
>
> Signed-off-by: Johan Jonker <[email protected]>
> ---
>
> Changed V3:
> remove select
> change unevaluatedProperties
> add separate schemas for each 'if' subset
Sorry, but by separate I meant different files. But you don't *have* to
do that.
>
> Changed V2:
> add rockchip,rk3328-grf-gpio.yaml
> rename grf-gpio nodename
> ---
> .../devicetree/bindings/soc/rockchip/grf.txt | 61 -----
> .../devicetree/bindings/soc/rockchip/grf.yaml | 262 +++++++++++++++++++++
> 2 files changed, 262 insertions(+), 61 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.txt
> create mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>
> diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.txt b/Documentation/devicetree/bindings/soc/rockchip/grf.txt
> deleted file mode 100644
> index f96511aa3..000000000
> --- a/Documentation/devicetree/bindings/soc/rockchip/grf.txt
> +++ /dev/null
> @@ -1,61 +0,0 @@
> -* Rockchip General Register Files (GRF)
> -
> -The general register file will be used to do static set by software, which
> -is composed of many registers for system control.
> -
> -From RK3368 SoCs, the GRF is divided into two sections,
> -- GRF, used for general non-secure system,
> -- SGRF, used for general secure system,
> -- PMUGRF, used for always on system
> -
> -On RK3328 SoCs, the GRF adds a section for USB2PHYGRF,
> -
> -ON RK3308 SoC, the GRF is divided into four sections:
> -- GRF, used for general non-secure system,
> -- SGRF, used for general secure system,
> -- DETECTGRF, used for audio codec system,
> -- COREGRF, used for pvtm,
> -
> -Required Properties:
> -
> -- compatible: GRF should be one of the following:
> - - "rockchip,px30-grf", "syscon": for px30
> - - "rockchip,rk3036-grf", "syscon": for rk3036
> - - "rockchip,rk3066-grf", "syscon": for rk3066
> - - "rockchip,rk3188-grf", "syscon": for rk3188
> - - "rockchip,rk3228-grf", "syscon": for rk3228
> - - "rockchip,rk3288-grf", "syscon": for rk3288
> - - "rockchip,rk3308-grf", "syscon": for rk3308
> - - "rockchip,rk3328-grf", "syscon": for rk3328
> - - "rockchip,rk3368-grf", "syscon": for rk3368
> - - "rockchip,rk3399-grf", "syscon": for rk3399
> - - "rockchip,rv1108-grf", "syscon": for rv1108
> -- compatible: DETECTGRF should be one of the following:
> - - "rockchip,rk3308-detect-grf", "syscon": for rk3308
> -- compatilbe: COREGRF should be one of the following:
> - - "rockchip,rk3308-core-grf", "syscon": for rk3308
> -- compatible: PMUGRF should be one of the following:
> - - "rockchip,px30-pmugrf", "syscon": for px30
> - - "rockchip,rk3368-pmugrf", "syscon": for rk3368
> - - "rockchip,rk3399-pmugrf", "syscon": for rk3399
> -- compatible: SGRF should be one of the following:
> - - "rockchip,rk3288-sgrf", "syscon": for rk3288
> -- compatible: USB2PHYGRF should be one of the following:
> - - "rockchip,px30-usb2phy-grf", "syscon": for px30
> - - "rockchip,rk3328-usb2phy-grf", "syscon": for rk3328
> -- compatible: USBGRF should be one of the following:
> - - "rockchip,rv1108-usbgrf", "syscon": for rv1108
> -- reg: physical base address of the controller and length of memory mapped
> - region.
> -
> -Example: GRF and PMUGRF of RK3399 SoCs
> -
> - pmugrf: syscon@ff320000 {
> - compatible = "rockchip,rk3399-pmugrf", "syscon";
> - reg = <0x0 0xff320000 0x0 0x1000>;
> - };
> -
> - grf: syscon@ff770000 {
> - compatible = "rockchip,rk3399-grf", "syscon";
> - reg = <0x0 0xff770000 0x0 0x10000>;
> - };
> diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> new file mode 100644
> index 000000000..264e2e5ff
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> @@ -0,0 +1,262 @@
> +# SPDX-License-Identifier: GPL-2.0
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/soc/rockchip/grf.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Rockchip General Register Files (GRF)
> +
> +maintainers:
> + - Heiko Stuebner <[email protected]>
> +
> +properties:
> + compatible:
> + oneOf:
> + - items:
> + - enum:
> + - rockchip,rk3066-grf
> + - rockchip,rk3188-grf
> + - rockchip,rk3288-sgrf
> + - rockchip,rv1108-pmugrf
> + - rockchip,rv1108-usbgrf
> + - const: syscon
> + - items:
> + - enum:
> + - rockchip,px30-grf
> + - rockchip,px30-pmugrf
> + - rockchip,px30-usb2phy-grf
> + - rockchip,rk3036-grf
> + - rockchip,rk3228-grf
> + - rockchip,rk3288-grf
> + - rockchip,rk3308-core-grf
> + - rockchip,rk3308-detect-grf
> + - rockchip,rk3308-grf
> + - rockchip,rk3328-grf
> + - rockchip,rk3328-usb2phy-grf
> + - rockchip,rk3368-grf
> + - rockchip,rk3368-pmugrf
> + - rockchip,rk3399-grf
> + - rockchip,rk3399-pmugrf
> + - rockchip,rk3568-grf
> + - rockchip,rk3568-pmugrf
> + - rockchip,rv1108-grf
> + - const: syscon
> + - const: simple-mfd
> +
> + reg:
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> +
> +unevaluatedProperties: false
> +
> +allOf:
> + - $ref: "#/$defs/px30-grf"
> + - $ref: "#/$defs/rk3288-grf"
> + - $ref: "#/$defs/rk3328-grf"
> + - $ref: "#/$defs/rk3399-grf"
> + - $ref: "#/$defs/reboot"
> + - $ref: "#/$defs/usb2"
> + - $ref: "#/$defs/domains"
> +
> +$defs:
There's not really any point to using '$defs' unless you have 2 or more
references to them.
> + px30-grf:
> + if:
> + properties:
> + compatible:
> + contains:
> + const: rockchip,px30-grf
> +
> + then:
> + properties:
> + lvds:
> + description:
> + Documentation/devicetree/bindings/display/rockchip/rockchip-lvds.txt
> +
> + rk3288-grf:
> + if:
> + properties:
> + compatible:
> + contains:
> + const: rockchip,rk3288-grf
> +
> + then:
> + properties:
> + edp-phy:
> + description:
> + Documentation/devicetree/bindings/phy/rockchip-dp-phy.txt
> +
> + usbphy:
> + description:
> + Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt
> +
> + rk3328-grf:
> + if:
> + properties:
> + compatible:
> + contains:
> + const: rockchip,rk3328-grf
> +
> + then:
> + properties:
> + gpio:
> + type: object
> +
> + $ref: "/schemas/gpio/rockchip,rk3328-grf-gpio.yaml#"
> +
> + unevaluatedProperties: false
> +
> + power-controller:
> + type: object
> +
> + $ref: "/schemas/power/rockchip,power-controller.yaml#"
> +
> + unevaluatedProperties: false
> +
> + rk3399-grf:
> + if:
> + properties:
> + compatible:
> + contains:
> + const: rockchip,rk3399-grf
> +
> + then:
> + properties:
> + mipi-dphy-rx0:
> + type: object
> +
> + $ref: "/schemas/phy/rockchip-mipi-dphy-rx0.yaml#"
> +
> + unevaluatedProperties: false
> +
> + pcie-phy:
> + description:
> + Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
> +
> + patternProperties:
> + "phy@[0-9a-f]+$":
> + description:
> + Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
> +
> + reboot:
> + if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - rockchip,px30-pmugrf
> + - rockchip,rk3036-grf
> + - rockchip,rk3308-grf
> + - rockchip,rk3368-pmugrf
> +
> + then:
> + properties:
> + reboot-mode:
> + type: object
> +
> + $ref: "/schemas/power/reset/syscon-reboot-mode.yaml#"
> +
> + unevaluatedProperties: false
> +
> + usb2:
> + if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - rockchip,px30-usb2phy-grf
> + - rockchip,rk3228-grf
> + - rockchip,rk3328-usb2phy-grf
> + - rockchip,rk3399-grf
> + - rockchip,rv1108-grf
> +
> + then:
> + properties:
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 1
> +
> + required:
> + - "#address-cells"
> + - "#size-cells"
> +
> + patternProperties:
> + "usb2-phy@[0-9a-f]+$":
> + type: object
> +
> + $ref: "/schemas/phy/phy-rockchip-inno-usb2.yaml#"
> +
> + unevaluatedProperties: false
> +
> + domains:
> + if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - rockchip,px30-pmugrf
> + - rockchip,px30-grf
> + - rockchip,rk3228-grf
> + - rockchip,rk3288-grf
> + - rockchip,rk3328-grf
> + - rockchip,rk3368-pmugrf
> + - rockchip,rk3368-grf
> + - rockchip,rk3399-pmugrf
> + - rockchip,rk3399-grf
> +
> + then:
> + properties:
> + io-domains:
> + description:
> + Documentation/devicetree/bindings/power/rockchip-io-domain.txt
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/rk3399-cru.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/power/rk3399-power.h>
> + grf: syscon@ff770000 {
> + compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
> + reg = <0xff770000 0x10000>;
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + mipi_dphy_rx0: mipi-dphy-rx0 {
> + compatible = "rockchip,rk3399-mipi-dphy-rx0";
> + clocks = <&cru SCLK_MIPIDPHY_REF>,
> + <&cru SCLK_DPHY_RX0_CFG>,
> + <&cru PCLK_VIO_GRF>;
> + clock-names = "dphy-ref", "dphy-cfg", "grf";
> + power-domains = <&power RK3399_PD_VIO>;
> + #phy-cells = <0>;
> + };
> +
> + u2phy0: usb2-phy@e450 {
> + compatible = "rockchip,rk3399-usb2phy";
> + reg = <0xe450 0x10>;
> + clocks = <&cru SCLK_USB2PHY0_REF>;
> + clock-names = "phyclk";
> + #clock-cells = <0>;
> + clock-output-names = "clk_usbphy0_480m";
> + #phy-cells = <0>;
> +
> + u2phy0_host: host-port {
> + #phy-cells = <0>;
> + interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>;
> + interrupt-names = "linestate";
> + };
> +
> + u2phy0_otg: otg-port {
> + #phy-cells = <0>;
> + interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>;
> + interrupt-names = "otg-bvalid", "otg-id",
> + "linestate";
> + };
> + };
> + };
> --
> 2.11.0
>
On 5/10/21 6:12 PM, Rob Herring wrote:
> On Sat, May 08, 2021 at 02:37:41PM +0200, Johan Jonker wrote:
>> Current dts files with 'grf' nodes are manually verified.
>> In order to automate this process grf.txt has to be
>> converted to YAML.
>>
>> Most compatibility strings are in use with "simple-mfd" added.
>>
>> Add description already in use:
>> "rockchip,rv1108-pmugrf", "syscon"
>>
>> Add new descriptions for:
>> "rockchip,rk3568-grf", "syscon", "simple-mfd"
>> "rockchip,rk3568-pmugrf", "syscon", "simple-mfd"
>>
>> Signed-off-by: Johan Jonker <[email protected]>
>> ---
>>
>> Changed V3:
>> remove select
>> change unevaluatedProperties
>> add separate schemas for each 'if' subset
>
> Sorry, but by separate I meant different files. But you don't *have* to
> do that.
>
>>
>> Changed V2:
>> add rockchip,rk3328-grf-gpio.yaml
>> rename grf-gpio nodename
>> ---
>> .../devicetree/bindings/soc/rockchip/grf.txt | 61 -----
>> .../devicetree/bindings/soc/rockchip/grf.yaml | 262 +++++++++++++++++++++
>> 2 files changed, 262 insertions(+), 61 deletions(-)
>> delete mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.txt
>> create mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.txt b/Documentation/devicetree/bindings/soc/rockchip/grf.txt
>> deleted file mode 100644
>> index f96511aa3..000000000
>> --- a/Documentation/devicetree/bindings/soc/rockchip/grf.txt
>> +++ /dev/null
>> @@ -1,61 +0,0 @@
>> -* Rockchip General Register Files (GRF)
>> -
>> -The general register file will be used to do static set by software, which
>> -is composed of many registers for system control.
>> -
>> -From RK3368 SoCs, the GRF is divided into two sections,
>> -- GRF, used for general non-secure system,
>> -- SGRF, used for general secure system,
>> -- PMUGRF, used for always on system
>> -
>> -On RK3328 SoCs, the GRF adds a section for USB2PHYGRF,
>> -
>> -ON RK3308 SoC, the GRF is divided into four sections:
>> -- GRF, used for general non-secure system,
>> -- SGRF, used for general secure system,
>> -- DETECTGRF, used for audio codec system,
>> -- COREGRF, used for pvtm,
>> -
>> -Required Properties:
>> -
>> -- compatible: GRF should be one of the following:
>> - - "rockchip,px30-grf", "syscon": for px30
>> - - "rockchip,rk3036-grf", "syscon": for rk3036
>> - - "rockchip,rk3066-grf", "syscon": for rk3066
>> - - "rockchip,rk3188-grf", "syscon": for rk3188
>> - - "rockchip,rk3228-grf", "syscon": for rk3228
>> - - "rockchip,rk3288-grf", "syscon": for rk3288
>> - - "rockchip,rk3308-grf", "syscon": for rk3308
>> - - "rockchip,rk3328-grf", "syscon": for rk3328
>> - - "rockchip,rk3368-grf", "syscon": for rk3368
>> - - "rockchip,rk3399-grf", "syscon": for rk3399
>> - - "rockchip,rv1108-grf", "syscon": for rv1108
>> -- compatible: DETECTGRF should be one of the following:
>> - - "rockchip,rk3308-detect-grf", "syscon": for rk3308
>> -- compatilbe: COREGRF should be one of the following:
>> - - "rockchip,rk3308-core-grf", "syscon": for rk3308
>> -- compatible: PMUGRF should be one of the following:
>> - - "rockchip,px30-pmugrf", "syscon": for px30
>> - - "rockchip,rk3368-pmugrf", "syscon": for rk3368
>> - - "rockchip,rk3399-pmugrf", "syscon": for rk3399
>> -- compatible: SGRF should be one of the following:
>> - - "rockchip,rk3288-sgrf", "syscon": for rk3288
>> -- compatible: USB2PHYGRF should be one of the following:
>> - - "rockchip,px30-usb2phy-grf", "syscon": for px30
>> - - "rockchip,rk3328-usb2phy-grf", "syscon": for rk3328
>> -- compatible: USBGRF should be one of the following:
>> - - "rockchip,rv1108-usbgrf", "syscon": for rv1108
>> -- reg: physical base address of the controller and length of memory mapped
>> - region.
>> -
>> -Example: GRF and PMUGRF of RK3399 SoCs
>> -
>> - pmugrf: syscon@ff320000 {
>> - compatible = "rockchip,rk3399-pmugrf", "syscon";
>> - reg = <0x0 0xff320000 0x0 0x1000>;
>> - };
>> -
>> - grf: syscon@ff770000 {
>> - compatible = "rockchip,rk3399-grf", "syscon";
>> - reg = <0x0 0xff770000 0x0 0x10000>;
>> - };
>> diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>> new file mode 100644
>> index 000000000..264e2e5ff
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>> @@ -0,0 +1,262 @@
>> +# SPDX-License-Identifier: GPL-2.0
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/soc/rockchip/grf.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Rockchip General Register Files (GRF)
>> +
>> +maintainers:
>> + - Heiko Stuebner <[email protected]>
>> +
>> +properties:
>> + compatible:
>> + oneOf:
>> + - items:
>> + - enum:
>> + - rockchip,rk3066-grf
>> + - rockchip,rk3188-grf
>> + - rockchip,rk3288-sgrf
>> + - rockchip,rv1108-pmugrf
>> + - rockchip,rv1108-usbgrf
>> + - const: syscon
>> + - items:
>> + - enum:
>> + - rockchip,px30-grf
>> + - rockchip,px30-pmugrf
>> + - rockchip,px30-usb2phy-grf
>> + - rockchip,rk3036-grf
>> + - rockchip,rk3228-grf
>> + - rockchip,rk3288-grf
>> + - rockchip,rk3308-core-grf
>> + - rockchip,rk3308-detect-grf
>> + - rockchip,rk3308-grf
>> + - rockchip,rk3328-grf
>> + - rockchip,rk3328-usb2phy-grf
>> + - rockchip,rk3368-grf
>> + - rockchip,rk3368-pmugrf
>> + - rockchip,rk3399-grf
>> + - rockchip,rk3399-pmugrf
>> + - rockchip,rk3568-grf
>> + - rockchip,rk3568-pmugrf
>> + - rockchip,rv1108-grf
>> + - const: syscon
>> + - const: simple-mfd
>> +
>> + reg:
>> + maxItems: 1
>> +
>> +required:
>> + - compatible
>> + - reg
>> +
>> +unevaluatedProperties: false
Hi Rob,
I've tried without '$defs' and I can't get dt_binding_check error free with:
allOf:
- if:
[etc..]
- if:
[etc..]
That's why this construction.
Could you test with patch below.
Please advise.
Johan
===
/Documentation/devicetree/bindings/soc/rockchip/grf.yaml: ignoring,
error in schema:
warning: no schema found in file:
./Documentation/devicetree/bindings/soc/rockchip/grf.yaml
DTEX Documentation/devicetree/bindings/soc/rockchip/grf.example.dts
DTC Documentation/devicetree/bindings/soc/rockchip/grf.example.dt.yaml
CHECK Documentation/devicetree/bindings/soc/rockchip/grf.example.dt.yaml
/Documentation/devicetree/bindings/soc/rockchip/grf.example.dt.yaml:
syscon@ff770000: compatible:0: 'anyOf' conditional failed, one must be
fixed:
'rockchip,rk3399-grf' is not one of [....]
===
>> +
>> +allOf:
>> + - $ref: "#/$defs/px30-grf"
>> + - $ref: "#/$defs/rk3288-grf"
>> + - $ref: "#/$defs/rk3328-grf"
>> + - $ref: "#/$defs/rk3399-grf"
>> + - $ref: "#/$defs/reboot"
>> + - $ref: "#/$defs/usb2"
>> + - $ref: "#/$defs/domains"
>> +
>> +$defs:
>
> There's not really any point to using '$defs' unless you have 2 or more
> references to them.
>
>> + px30-grf:
>> + if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: rockchip,px30-grf
>> +
>> + then:
>> + properties:
>> + lvds:
>> + description:
>> + Documentation/devicetree/bindings/display/rockchip/rockchip-lvds.txt
>> +
>> + rk3288-grf:
>> + if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: rockchip,rk3288-grf
>> +
>> + then:
>> + properties:
>> + edp-phy:
>> + description:
>> + Documentation/devicetree/bindings/phy/rockchip-dp-phy.txt
>> +
>> + usbphy:
>> + description:
>> + Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt
>> +
>> + rk3328-grf:
>> + if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: rockchip,rk3328-grf
>> +
>> + then:
>> + properties:
>> + gpio:
>> + type: object
>> +
>> + $ref: "/schemas/gpio/rockchip,rk3328-grf-gpio.yaml#"
>> +
>> + unevaluatedProperties: false
>> +
>> + power-controller:
>> + type: object
>> +
>> + $ref: "/schemas/power/rockchip,power-controller.yaml#"
>> +
>> + unevaluatedProperties: false
>> +
>> + rk3399-grf:
>> + if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: rockchip,rk3399-grf
>> +
>> + then:
>> + properties:
>> + mipi-dphy-rx0:
>> + type: object
>> +
>> + $ref: "/schemas/phy/rockchip-mipi-dphy-rx0.yaml#"
>> +
>> + unevaluatedProperties: false
>> +
>> + pcie-phy:
>> + description:
>> + Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
>> +
>> + patternProperties:
>> + "phy@[0-9a-f]+$":
>> + description:
>> + Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
>> +
>> + reboot:
>> + if:
>> + properties:
>> + compatible:
>> + contains:
>> + enum:
>> + - rockchip,px30-pmugrf
>> + - rockchip,rk3036-grf
>> + - rockchip,rk3308-grf
>> + - rockchip,rk3368-pmugrf
>> +
>> + then:
>> + properties:
>> + reboot-mode:
>> + type: object
>> +
>> + $ref: "/schemas/power/reset/syscon-reboot-mode.yaml#"
>> +
>> + unevaluatedProperties: false
>> +
>> + usb2:
>> + if:
>> + properties:
>> + compatible:
>> + contains:
>> + enum:
>> + - rockchip,px30-usb2phy-grf
>> + - rockchip,rk3228-grf
>> + - rockchip,rk3328-usb2phy-grf
>> + - rockchip,rk3399-grf
>> + - rockchip,rv1108-grf
>> +
>> + then:
>> + properties:
>> + "#address-cells":
>> + const: 1
>> +
>> + "#size-cells":
>> + const: 1
>> +
>> + required:
>> + - "#address-cells"
>> + - "#size-cells"
>> +
>> + patternProperties:
>> + "usb2-phy@[0-9a-f]+$":
>> + type: object
>> +
>> + $ref: "/schemas/phy/phy-rockchip-inno-usb2.yaml#"
>> +
>> + unevaluatedProperties: false
>> +
>> + domains:
>> + if:
>> + properties:
>> + compatible:
>> + contains:
>> + enum:
>> + - rockchip,px30-pmugrf
>> + - rockchip,px30-grf
>> + - rockchip,rk3228-grf
>> + - rockchip,rk3288-grf
>> + - rockchip,rk3328-grf
>> + - rockchip,rk3368-pmugrf
>> + - rockchip,rk3368-grf
>> + - rockchip,rk3399-pmugrf
>> + - rockchip,rk3399-grf
>> +
>> + then:
>> + properties:
>> + io-domains:
>> + description:
>> + Documentation/devicetree/bindings/power/rockchip-io-domain.txt
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/clock/rk3399-cru.h>
>> + #include <dt-bindings/interrupt-controller/arm-gic.h>
>> + #include <dt-bindings/power/rk3399-power.h>
>> + grf: syscon@ff770000 {
>> + compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
>> + reg = <0xff770000 0x10000>;
>> + #address-cells = <1>;
>> + #size-cells = <1>;
>> +
>> + mipi_dphy_rx0: mipi-dphy-rx0 {
>> + compatible = "rockchip,rk3399-mipi-dphy-rx0";
>> + clocks = <&cru SCLK_MIPIDPHY_REF>,
>> + <&cru SCLK_DPHY_RX0_CFG>,
>> + <&cru PCLK_VIO_GRF>;
>> + clock-names = "dphy-ref", "dphy-cfg", "grf";
>> + power-domains = <&power RK3399_PD_VIO>;
>> + #phy-cells = <0>;
>> + };
>> +
>> + u2phy0: usb2-phy@e450 {
>> + compatible = "rockchip,rk3399-usb2phy";
>> + reg = <0xe450 0x10>;
>> + clocks = <&cru SCLK_USB2PHY0_REF>;
>> + clock-names = "phyclk";
>> + #clock-cells = <0>;
>> + clock-output-names = "clk_usbphy0_480m";
>> + #phy-cells = <0>;
>> +
>> + u2phy0_host: host-port {
>> + #phy-cells = <0>;
>> + interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>;
>> + interrupt-names = "linestate";
>> + };
>> +
>> + u2phy0_otg: otg-port {
>> + #phy-cells = <0>;
>> + interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>,
>> + <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>,
>> + <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>;
>> + interrupt-names = "otg-bvalid", "otg-id",
>> + "linestate";
>> + };
>> + };
>> + };
>> --
>> 2.11.0
>>====
From c7d3c5abc51f2aaed01081570c5954c3973537d0 Mon Sep 17 00:00:00 2001
From: Johan Jonker <[email protected]>
Date: Mon, 10 May 2021 18:24:49 +0200
Subject: [PATCH] revert $ref fix
---
.../devicetree/bindings/soc/rockchip/grf.yaml | 30
+++++-----------------
1 file changed, 7 insertions(+), 23 deletions(-)
diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
index 264e2e5ff..8a8943317 100644
--- a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
+++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
@@ -53,17 +53,7 @@ required:
unevaluatedProperties: false
allOf:
- - $ref: "#/$defs/px30-grf"
- - $ref: "#/$defs/rk3288-grf"
- - $ref: "#/$defs/rk3328-grf"
- - $ref: "#/$defs/rk3399-grf"
- - $ref: "#/$defs/reboot"
- - $ref: "#/$defs/usb2"
- - $ref: "#/$defs/domains"
-
-$defs:
- px30-grf:
- if:
+ - if:
properties:
compatible:
contains:
@@ -75,8 +65,7 @@ $defs:
description:
Documentation/devicetree/bindings/display/rockchip/rockchip-lvds.txt
- rk3288-grf:
- if:
+ - if:
properties:
compatible:
contains:
@@ -92,8 +81,7 @@ $defs:
description:
Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt
- rk3328-grf:
- if:
+ - if:
properties:
compatible:
contains:
@@ -115,8 +103,7 @@ $defs:
unevaluatedProperties: false
- rk3399-grf:
- if:
+ - if:
properties:
compatible:
contains:
@@ -140,8 +127,7 @@ $defs:
description:
Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
- reboot:
- if:
+ - if:
properties:
compatible:
contains:
@@ -160,8 +146,7 @@ $defs:
unevaluatedProperties: false
- usb2:
- if:
+ - if:
properties:
compatible:
contains:
@@ -192,8 +177,7 @@ $defs:
unevaluatedProperties: false
- domains:
- if:
+ - if:
properties:
compatible:
contains:
--
2.11.0
On Mon, May 10, 2021 at 11:32 AM Johan Jonker <[email protected]> wrote:
>
>
>
> On 5/10/21 6:12 PM, Rob Herring wrote:
> > On Sat, May 08, 2021 at 02:37:41PM +0200, Johan Jonker wrote:
> >> Current dts files with 'grf' nodes are manually verified.
> >> In order to automate this process grf.txt has to be
> >> converted to YAML.
> >>
> >> Most compatibility strings are in use with "simple-mfd" added.
> >>
> >> Add description already in use:
> >> "rockchip,rv1108-pmugrf", "syscon"
> >>
> >> Add new descriptions for:
> >> "rockchip,rk3568-grf", "syscon", "simple-mfd"
> >> "rockchip,rk3568-pmugrf", "syscon", "simple-mfd"
> >>
> >> Signed-off-by: Johan Jonker <[email protected]>
> >> ---
> >>
> >> Changed V3:
> >> remove select
> >> change unevaluatedProperties
> >> add separate schemas for each 'if' subset
> >
> > Sorry, but by separate I meant different files. But you don't *have* to
> > do that.
> >
> >>
> >> Changed V2:
> >> add rockchip,rk3328-grf-gpio.yaml
> >> rename grf-gpio nodename
> >> ---
> >> .../devicetree/bindings/soc/rockchip/grf.txt | 61 -----
> >> .../devicetree/bindings/soc/rockchip/grf.yaml | 262 +++++++++++++++++++++
> >> 2 files changed, 262 insertions(+), 61 deletions(-)
> >> delete mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.txt
> >> create mode 100644 Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> >>
> >> diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.txt b/Documentation/devicetree/bindings/soc/rockchip/grf.txt
> >> deleted file mode 100644
> >> index f96511aa3..000000000
> >> --- a/Documentation/devicetree/bindings/soc/rockchip/grf.txt
> >> +++ /dev/null
> >> @@ -1,61 +0,0 @@
> >> -* Rockchip General Register Files (GRF)
> >> -
> >> -The general register file will be used to do static set by software, which
> >> -is composed of many registers for system control.
> >> -
> >> -From RK3368 SoCs, the GRF is divided into two sections,
> >> -- GRF, used for general non-secure system,
> >> -- SGRF, used for general secure system,
> >> -- PMUGRF, used for always on system
> >> -
> >> -On RK3328 SoCs, the GRF adds a section for USB2PHYGRF,
> >> -
> >> -ON RK3308 SoC, the GRF is divided into four sections:
> >> -- GRF, used for general non-secure system,
> >> -- SGRF, used for general secure system,
> >> -- DETECTGRF, used for audio codec system,
> >> -- COREGRF, used for pvtm,
> >> -
> >> -Required Properties:
> >> -
> >> -- compatible: GRF should be one of the following:
> >> - - "rockchip,px30-grf", "syscon": for px30
> >> - - "rockchip,rk3036-grf", "syscon": for rk3036
> >> - - "rockchip,rk3066-grf", "syscon": for rk3066
> >> - - "rockchip,rk3188-grf", "syscon": for rk3188
> >> - - "rockchip,rk3228-grf", "syscon": for rk3228
> >> - - "rockchip,rk3288-grf", "syscon": for rk3288
> >> - - "rockchip,rk3308-grf", "syscon": for rk3308
> >> - - "rockchip,rk3328-grf", "syscon": for rk3328
> >> - - "rockchip,rk3368-grf", "syscon": for rk3368
> >> - - "rockchip,rk3399-grf", "syscon": for rk3399
> >> - - "rockchip,rv1108-grf", "syscon": for rv1108
> >> -- compatible: DETECTGRF should be one of the following:
> >> - - "rockchip,rk3308-detect-grf", "syscon": for rk3308
> >> -- compatilbe: COREGRF should be one of the following:
> >> - - "rockchip,rk3308-core-grf", "syscon": for rk3308
> >> -- compatible: PMUGRF should be one of the following:
> >> - - "rockchip,px30-pmugrf", "syscon": for px30
> >> - - "rockchip,rk3368-pmugrf", "syscon": for rk3368
> >> - - "rockchip,rk3399-pmugrf", "syscon": for rk3399
> >> -- compatible: SGRF should be one of the following:
> >> - - "rockchip,rk3288-sgrf", "syscon": for rk3288
> >> -- compatible: USB2PHYGRF should be one of the following:
> >> - - "rockchip,px30-usb2phy-grf", "syscon": for px30
> >> - - "rockchip,rk3328-usb2phy-grf", "syscon": for rk3328
> >> -- compatible: USBGRF should be one of the following:
> >> - - "rockchip,rv1108-usbgrf", "syscon": for rv1108
> >> -- reg: physical base address of the controller and length of memory mapped
> >> - region.
> >> -
> >> -Example: GRF and PMUGRF of RK3399 SoCs
> >> -
> >> - pmugrf: syscon@ff320000 {
> >> - compatible = "rockchip,rk3399-pmugrf", "syscon";
> >> - reg = <0x0 0xff320000 0x0 0x1000>;
> >> - };
> >> -
> >> - grf: syscon@ff770000 {
> >> - compatible = "rockchip,rk3399-grf", "syscon";
> >> - reg = <0x0 0xff770000 0x0 0x10000>;
> >> - };
> >> diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> >> new file mode 100644
> >> index 000000000..264e2e5ff
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> >> @@ -0,0 +1,262 @@
> >> +# SPDX-License-Identifier: GPL-2.0
> >> +%YAML 1.2
> >> +---
> >> +$id: http://devicetree.org/schemas/soc/rockchip/grf.yaml#
> >> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >> +
> >> +title: Rockchip General Register Files (GRF)
> >> +
> >> +maintainers:
> >> + - Heiko Stuebner <[email protected]>
> >> +
> >> +properties:
> >> + compatible:
> >> + oneOf:
> >> + - items:
> >> + - enum:
> >> + - rockchip,rk3066-grf
> >> + - rockchip,rk3188-grf
> >> + - rockchip,rk3288-sgrf
> >> + - rockchip,rv1108-pmugrf
> >> + - rockchip,rv1108-usbgrf
> >> + - const: syscon
> >> + - items:
> >> + - enum:
> >> + - rockchip,px30-grf
> >> + - rockchip,px30-pmugrf
> >> + - rockchip,px30-usb2phy-grf
> >> + - rockchip,rk3036-grf
> >> + - rockchip,rk3228-grf
> >> + - rockchip,rk3288-grf
> >> + - rockchip,rk3308-core-grf
> >> + - rockchip,rk3308-detect-grf
> >> + - rockchip,rk3308-grf
> >> + - rockchip,rk3328-grf
> >> + - rockchip,rk3328-usb2phy-grf
> >> + - rockchip,rk3368-grf
> >> + - rockchip,rk3368-pmugrf
> >> + - rockchip,rk3399-grf
> >> + - rockchip,rk3399-pmugrf
> >> + - rockchip,rk3568-grf
> >> + - rockchip,rk3568-pmugrf
> >> + - rockchip,rv1108-grf
> >> + - const: syscon
> >> + - const: simple-mfd
> >> +
> >> + reg:
> >> + maxItems: 1
> >> +
> >> +required:
> >> + - compatible
> >> + - reg
> >> +
> >> +unevaluatedProperties: false
>
> Hi Rob,
>
> I've tried without '$defs' and I can't get dt_binding_check error free with:
> allOf:
> - if:
> [etc..]
> - if:
> [etc..]
> That's why this construction.
> Could you test with patch below.
> Please advise.
There's a requirement that all the properties be defined at the top
level. If 'unevaluatedProperties' was actually implemented, we
wouldn't need that. So you need something like this:
diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
index 8a8943317544..8034458fb969 100644
--- a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
+++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
@@ -46,11 +46,18 @@ properties:
reg:
maxItems: 1
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 1
+
required:
- compatible
- reg
-unevaluatedProperties: false
+additionalProperties:
+ type: object
allOf:
- if:
@@ -158,13 +165,6 @@ allOf:
- rockchip,rv1108-grf
then:
- properties:
- "#address-cells":
- const: 1
-
- "#size-cells":
- const: 1
-
required:
- "#address-cells"
- "#size-cells"