Message ID | 20190823145356.6341-5-krzk@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RFC,1/9] dt-bindings: arm: samsung: Convert Samsung board/soc bindings to json-schema | expand |
On Fri, Aug 23, 2019 at 9:54 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > Convert Samsung Exynos Power Management Unit (PMU) bindings to DT schema > format using json-schema. > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> > --- > .../devicetree/bindings/arm/samsung/pmu.txt | 72 -------------- > .../devicetree/bindings/arm/samsung/pmu.yaml | 93 +++++++++++++++++++ > 2 files changed, 93 insertions(+), 72 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.txt > create mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.yaml > diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.yaml b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > new file mode 100644 > index 000000000000..818c6f3488ef > --- /dev/null > +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > @@ -0,0 +1,93 @@ > +# SPDX-License-Identifier: GPL-2.0 > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/arm/samsung/pmu.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Samsung Exynos SoC series Power Management Unit (PMU) > + > +maintainers: > + - Krzysztof Kozlowski <krzk@kernel.org> > + > +properties: > + compatible: > + items: > + - enum: > + - samsung,exynos3250-pmu > + - samsung,exynos4210-pmu > + - samsung,exynos4412-pmu > + - samsung,exynos5250-pmu > + - samsung,exynos5260-pmu > + - samsung,exynos5410-pmu > + - samsung,exynos5420-pmu > + - samsung,exynos5433-pmu > + - samsung,exynos7-pmu > + - const: syscon > + > + reg: > + maxItems: 1 > + > + '#clock-cells': > + const: 1 > + > + clock-names: > + description: > + list of clock names for particular CLKOUT mux inputs > + # TODO: what is the maximum number of elements (mux inputs)? > + minItems: 1 > + maxItems: 32 > + items: > + - enum: This isn't correct as you are only defining possible names for the first item. Drop the '-' (making items a schema instead of a list) and then it applies to all. However, doing that will cause a meta-schema error which I need to fix to allow. Or if there's a small set of possibilities of number of inputs, you can list them under a 'oneOf' list. > + - clkout0 > + - clkout1 > + - clkout2 > + - clkout3 > + - clkout4 > + - clkout5 > + - clkout6 > + - clkout7 > + - clkout8 > + - clkout9 > + - clkout10 > + - clkout11 > + - clkout12 > + - clkout13 > + - clkout14 > + - clkout15 > + - clkout16 > + > + clocks: > + minItems: 1 > + maxItems: 32 > + > + interrupt-controller: > + description: > + Some PMUs are capable of behaving as an interrupt controller (mostly > + to wake up a suspended PMU). > + > + '#interrupt-cells': > + # TODO: must be identical to the that of the parent interrupt controller. There's not really a way to express that. Just state that in the description if you want. > + const: 3 > + > + # TODO: Mark interrupt-controller and #interrupt-cells as required, if one is present No need, the core schemas handle that dependency. It would be good to define for which compatibles the properties are required. You can do this with if/then schema. There's several examples in the tree. > + # TODO: nodes defining the restart and poweroff syscon children > + > +required: > + - compatible > + - reg > + - '#clock-cells' > + - clock-names > + - clocks > + > +examples: > + - | > + pmu_system_controller: system-controller@10040000 { > + compatible = "samsung,exynos5250-pmu", "syscon"; > + reg = <0x10040000 0x5000>; > + interrupt-controller; > + #interrupt-cells = <3>; > + interrupt-parent = <&gic>; > + #clock-cells = <1>; > + clock-names = "clkout16"; > + clocks = <&clock 0>; // CLK_FIN_PLL > + }; > -- > 2.17.1 >
On Mon, 26 Aug 2019 at 13:54, Rob Herring <robh+dt@kernel.org> wrote: > > On Fri, Aug 23, 2019 at 9:54 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > > Convert Samsung Exynos Power Management Unit (PMU) bindings to DT schema > > format using json-schema. > > > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> > > --- > > .../devicetree/bindings/arm/samsung/pmu.txt | 72 -------------- > > .../devicetree/bindings/arm/samsung/pmu.yaml | 93 +++++++++++++++++++ > > 2 files changed, 93 insertions(+), 72 deletions(-) > > delete mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.txt > > create mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > > diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.yaml b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > new file mode 100644 > > index 000000000000..818c6f3488ef > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > @@ -0,0 +1,93 @@ > > +# SPDX-License-Identifier: GPL-2.0 > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/arm/samsung/pmu.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Samsung Exynos SoC series Power Management Unit (PMU) > > + > > +maintainers: > > + - Krzysztof Kozlowski <krzk@kernel.org> > > + > > +properties: > > + compatible: > > + items: > > + - enum: > > + - samsung,exynos3250-pmu > > + - samsung,exynos4210-pmu > > + - samsung,exynos4412-pmu > > + - samsung,exynos5250-pmu > > + - samsung,exynos5260-pmu > > + - samsung,exynos5410-pmu > > + - samsung,exynos5420-pmu > > + - samsung,exynos5433-pmu > > + - samsung,exynos7-pmu > > + - const: syscon > > + > > + reg: > > + maxItems: 1 > > + > > + '#clock-cells': > > + const: 1 > > + > > + clock-names: > > + description: > > + list of clock names for particular CLKOUT mux inputs > > + # TODO: what is the maximum number of elements (mux inputs)? > > + minItems: 1 > > + maxItems: 32 > > + items: > > + - enum: > > This isn't correct as you are only defining possible names for the > first item. Drop the '-' (making items a schema instead of a list) and > then it applies to all. However, doing that will cause a meta-schema > error which I need to fix to allow. Or if there's a small set of > possibilities of number of inputs, you can list them under a 'oneOf' > list. Mhmm, I cannot test it or I have an error in the schema. if I understand correctly, this would be: clock-names: description: List of clock names for particular CLKOUT mux inputs minItems: 1 maxItems: 16 items: clkout0 clkout1 clkout2 clkout3 clkout4 clkout5 clkout6 clkout7 clkout8 clkout9 clkout10 clkout11 clkout12 clkout13 clkout14 clkout15 clkout16 Now it produces the error "ignoring, error in schema 'items'" but maybe it is expected with current meta-schema? Best regards, Krzysztof
On Tue, Sep 3, 2019 at 8:58 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > On Mon, 26 Aug 2019 at 13:54, Rob Herring <robh+dt@kernel.org> wrote: > > > > On Fri, Aug 23, 2019 at 9:54 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > > > > Convert Samsung Exynos Power Management Unit (PMU) bindings to DT schema > > > format using json-schema. > > > > > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> > > > --- > > > .../devicetree/bindings/arm/samsung/pmu.txt | 72 -------------- > > > .../devicetree/bindings/arm/samsung/pmu.yaml | 93 +++++++++++++++++++ > > > 2 files changed, 93 insertions(+), 72 deletions(-) > > > delete mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.txt > > > create mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > > > > > diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.yaml b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > new file mode 100644 > > > index 000000000000..818c6f3488ef > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > @@ -0,0 +1,93 @@ > > > +# SPDX-License-Identifier: GPL-2.0 > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/arm/samsung/pmu.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Samsung Exynos SoC series Power Management Unit (PMU) > > > + > > > +maintainers: > > > + - Krzysztof Kozlowski <krzk@kernel.org> > > > + > > > +properties: > > > + compatible: > > > + items: > > > + - enum: > > > + - samsung,exynos3250-pmu > > > + - samsung,exynos4210-pmu > > > + - samsung,exynos4412-pmu > > > + - samsung,exynos5250-pmu > > > + - samsung,exynos5260-pmu > > > + - samsung,exynos5410-pmu > > > + - samsung,exynos5420-pmu > > > + - samsung,exynos5433-pmu > > > + - samsung,exynos7-pmu > > > + - const: syscon > > > + > > > + reg: > > > + maxItems: 1 > > > + > > > + '#clock-cells': > > > + const: 1 > > > + > > > + clock-names: > > > + description: > > > + list of clock names for particular CLKOUT mux inputs > > > + # TODO: what is the maximum number of elements (mux inputs)? > > > + minItems: 1 > > > + maxItems: 32 > > > + items: > > > + - enum: > > > > This isn't correct as you are only defining possible names for the > > first item. Drop the '-' (making items a schema instead of a list) and > > then it applies to all. However, doing that will cause a meta-schema > > error which I need to fix to allow. Or if there's a small set of > > possibilities of number of inputs, you can list them under a 'oneOf' > > list. > > Mhmm, I cannot test it or I have an error in the schema. if I > understand correctly, this would be: > > clock-names: > description: > List of clock names for particular CLKOUT mux inputs > minItems: 1 > maxItems: 16 > items: > clkout0 > clkout1 > clkout2 > clkout3 > clkout4 > clkout5 > clkout6 > clkout7 > clkout8 > clkout9 > clkout10 > clkout11 > clkout12 > clkout13 > clkout14 > clkout15 > clkout16 > > Now it produces the error "ignoring, error in schema 'items'" but > maybe it is expected with current meta-schema? 'make dt_binding_check' will give more detailed errors. Are the inputs always contiguous 0-N? If so, you want: items: - const: clkout0 - const: clkout1 - const: clkout2 ... If you want to express any number and order of strings is valid, then you need: items: enum: - clkout0 - clkout1 - clkout2 Doing that is discouraged for bindings though. Currently, it will generate an error from the meta-schema, but we could change that. Rob
On Tue, 3 Sep 2019 at 10:25, Rob Herring <robh+dt@kernel.org> wrote: > > On Tue, Sep 3, 2019 at 8:58 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > > On Mon, 26 Aug 2019 at 13:54, Rob Herring <robh+dt@kernel.org> wrote: > > > > > > On Fri, Aug 23, 2019 at 9:54 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > > > > > > Convert Samsung Exynos Power Management Unit (PMU) bindings to DT schema > > > > format using json-schema. > > > > > > > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> > > > > --- > > > > .../devicetree/bindings/arm/samsung/pmu.txt | 72 -------------- > > > > .../devicetree/bindings/arm/samsung/pmu.yaml | 93 +++++++++++++++++++ > > > > 2 files changed, 93 insertions(+), 72 deletions(-) > > > > delete mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.txt > > > > create mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.yaml b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > > new file mode 100644 > > > > index 000000000000..818c6f3488ef > > > > --- /dev/null > > > > +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > > @@ -0,0 +1,93 @@ > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > +%YAML 1.2 > > > > +--- > > > > +$id: http://devicetree.org/schemas/arm/samsung/pmu.yaml# > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > + > > > > +title: Samsung Exynos SoC series Power Management Unit (PMU) > > > > + > > > > +maintainers: > > > > + - Krzysztof Kozlowski <krzk@kernel.org> > > > > + > > > > +properties: > > > > + compatible: > > > > + items: > > > > + - enum: > > > > + - samsung,exynos3250-pmu > > > > + - samsung,exynos4210-pmu > > > > + - samsung,exynos4412-pmu > > > > + - samsung,exynos5250-pmu > > > > + - samsung,exynos5260-pmu > > > > + - samsung,exynos5410-pmu > > > > + - samsung,exynos5420-pmu > > > > + - samsung,exynos5433-pmu > > > > + - samsung,exynos7-pmu > > > > + - const: syscon > > > > + > > > > + reg: > > > > + maxItems: 1 > > > > + > > > > + '#clock-cells': > > > > + const: 1 > > > > + > > > > + clock-names: > > > > + description: > > > > + list of clock names for particular CLKOUT mux inputs > > > > + # TODO: what is the maximum number of elements (mux inputs)? > > > > + minItems: 1 > > > > + maxItems: 32 > > > > + items: > > > > + - enum: > > > > > > This isn't correct as you are only defining possible names for the > > > first item. Drop the '-' (making items a schema instead of a list) and > > > then it applies to all. However, doing that will cause a meta-schema > > > error which I need to fix to allow. Or if there's a small set of > > > possibilities of number of inputs, you can list them under a 'oneOf' > > > list. > > > > Mhmm, I cannot test it or I have an error in the schema. if I > > understand correctly, this would be: > > > > clock-names: > > description: > > List of clock names for particular CLKOUT mux inputs > > minItems: 1 > > maxItems: 16 > > items: > > clkout0 > > clkout1 > > clkout2 > > clkout3 > > clkout4 > > clkout5 > > clkout6 > > clkout7 > > clkout8 > > clkout9 > > clkout10 > > clkout11 > > clkout12 > > clkout13 > > clkout14 > > clkout15 > > clkout16 > > > > Now it produces the error "ignoring, error in schema 'items'" but > > maybe it is expected with current meta-schema? > > 'make dt_binding_check' will give more detailed errors. > > Are the inputs always contiguous 0-N? If so, you want: > > items: > - const: clkout0 > - const: clkout1 > - const: clkout2 > ... > > If you want to express any number and order of strings is valid, then you need: > > items: > enum: > - clkout0 > - clkout1 > - clkout2 > > Doing that is discouraged for bindings though. Currently, it will > generate an error from the meta-schema, but we could change that. It's the second case. The inputs are not contiguous. Examples: system-controller { compatible = "samsung,exynos3250-pmu", "syscon"; clock-names = "clkout8"; clocks = <&cmu CLK_FIN_PLL>; } system-controller { compatible = "samsung,exynos4412-pmu", "syscon"; clock-names = "clkout0", "clkout1", "clkout2", "clkout3", "clkout4", "clkout8", "clkout9"; clocks = <&clock CLK_OUT_DMC>, <&clock CLK_OUT_TOP>, <&clock CLK_OUT_LEFTBUS>, <&clock CLK_OUT_RIGHTBUS>, <&clock CLK_OUT_CPU>, <&clock CLK_XXTI>, <&clock CLK_XUSBXTI>; } The bindings never required any specific ordering. Also the driver just go through all indices and parses them. Your second syntax fails: Documentation/devicetree/bindings/arm/samsung/pmu.yaml: properties:clock-names:items: {'enum': ['clkout0', 'clkout1', 'clkout2', 'clkout3', 'clkout4', 'clkout5', 'clkout6', 'clkout7', 'clkout8', 'clkout9', 'clkout10', 'clkout11', 'clkout12', 'clkout13', 'clkout14', 'clkout15', 'clkout16']} is not of type 'array' Best regards, Krzysztof
On Tue, Sep 3, 2019 at 12:03 PM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > On Tue, 3 Sep 2019 at 10:25, Rob Herring <robh+dt@kernel.org> wrote: > > > > On Tue, Sep 3, 2019 at 8:58 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > > > > On Mon, 26 Aug 2019 at 13:54, Rob Herring <robh+dt@kernel.org> wrote: > > > > > > > > On Fri, Aug 23, 2019 at 9:54 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > > > > > > > > Convert Samsung Exynos Power Management Unit (PMU) bindings to DT schema > > > > > format using json-schema. > > > > > > > > > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> > > > > > --- > > > > > .../devicetree/bindings/arm/samsung/pmu.txt | 72 -------------- > > > > > .../devicetree/bindings/arm/samsung/pmu.yaml | 93 +++++++++++++++++++ > > > > > 2 files changed, 93 insertions(+), 72 deletions(-) > > > > > delete mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.txt > > > > > create mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.yaml b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > > > new file mode 100644 > > > > > index 000000000000..818c6f3488ef > > > > > --- /dev/null > > > > > +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml > > > > > @@ -0,0 +1,93 @@ > > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > > +%YAML 1.2 > > > > > +--- > > > > > +$id: http://devicetree.org/schemas/arm/samsung/pmu.yaml# > > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > > + > > > > > +title: Samsung Exynos SoC series Power Management Unit (PMU) > > > > > + > > > > > +maintainers: > > > > > + - Krzysztof Kozlowski <krzk@kernel.org> > > > > > + > > > > > +properties: > > > > > + compatible: > > > > > + items: > > > > > + - enum: > > > > > + - samsung,exynos3250-pmu > > > > > + - samsung,exynos4210-pmu > > > > > + - samsung,exynos4412-pmu > > > > > + - samsung,exynos5250-pmu > > > > > + - samsung,exynos5260-pmu > > > > > + - samsung,exynos5410-pmu > > > > > + - samsung,exynos5420-pmu > > > > > + - samsung,exynos5433-pmu > > > > > + - samsung,exynos7-pmu > > > > > + - const: syscon > > > > > + > > > > > + reg: > > > > > + maxItems: 1 > > > > > + > > > > > + '#clock-cells': > > > > > + const: 1 > > > > > + > > > > > + clock-names: > > > > > + description: > > > > > + list of clock names for particular CLKOUT mux inputs > > > > > + # TODO: what is the maximum number of elements (mux inputs)? > > > > > + minItems: 1 > > > > > + maxItems: 32 > > > > > + items: > > > > > + - enum: > > > > > > > > This isn't correct as you are only defining possible names for the > > > > first item. Drop the '-' (making items a schema instead of a list) and > > > > then it applies to all. However, doing that will cause a meta-schema > > > > error which I need to fix to allow. Or if there's a small set of > > > > possibilities of number of inputs, you can list them under a 'oneOf' > > > > list. > > > > > > Mhmm, I cannot test it or I have an error in the schema. if I > > > understand correctly, this would be: > > > > > > clock-names: > > > description: > > > List of clock names for particular CLKOUT mux inputs > > > minItems: 1 > > > maxItems: 16 > > > items: > > > clkout0 > > > clkout1 > > > clkout2 > > > clkout3 > > > clkout4 > > > clkout5 > > > clkout6 > > > clkout7 > > > clkout8 > > > clkout9 > > > clkout10 > > > clkout11 > > > clkout12 > > > clkout13 > > > clkout14 > > > clkout15 > > > clkout16 > > > > > > Now it produces the error "ignoring, error in schema 'items'" but > > > maybe it is expected with current meta-schema? > > > > 'make dt_binding_check' will give more detailed errors. > > > > Are the inputs always contiguous 0-N? If so, you want: > > > > items: > > - const: clkout0 > > - const: clkout1 > > - const: clkout2 > > ... > > > > If you want to express any number and order of strings is valid, then you need: > > > > items: > > enum: > > - clkout0 > > - clkout1 > > - clkout2 > > > > Doing that is discouraged for bindings though. Currently, it will > > generate an error from the meta-schema, but we could change that. > > It's the second case. The inputs are not contiguous. Examples: > > system-controller { > compatible = "samsung,exynos3250-pmu", "syscon"; > clock-names = "clkout8"; > clocks = <&cmu CLK_FIN_PLL>; > } > > system-controller { > compatible = "samsung,exynos4412-pmu", "syscon"; > clock-names = "clkout0", "clkout1", "clkout2", "clkout3", > "clkout4", "clkout8", "clkout9"; > clocks = <&clock CLK_OUT_DMC>, <&clock CLK_OUT_TOP>, > <&clock CLK_OUT_LEFTBUS>, <&clock CLK_OUT_RIGHTBUS>, > <&clock CLK_OUT_CPU>, <&clock CLK_XXTI>, <&clock CLK_XUSBXTI>; > } > > The bindings never required any specific ordering. Also the driver > just go through all indices and parses them. > > Your second syntax fails: > Documentation/devicetree/bindings/arm/samsung/pmu.yaml: > properties:clock-names:items: {'enum': ['clkout0', 'clkout1', > 'clkout2', 'clkout3', 'clkout4', 'clkout5', 'clkout6', 'clkout7', > 'clkout8', 'clkout9', 'clkout10', 'clkout11', 'clkout12', 'clkout13', > 'clkout14', 'clkout15', 'clkout16']} is not of type 'array' Update dt-schema and try again. It should be allowed now. You'll also need to define minItems and maxItems though. Rob
On Fri, 6 Sep 2019 at 17:49, Rob Herring <robh+dt@kernel.org> wrote: > > > > The bindings never required any specific ordering. Also the driver > > just go through all indices and parses them. > > > > Your second syntax fails: > > Documentation/devicetree/bindings/arm/samsung/pmu.yaml: > > properties:clock-names:items: {'enum': ['clkout0', 'clkout1', > > 'clkout2', 'clkout3', 'clkout4', 'clkout5', 'clkout6', 'clkout7', > > 'clkout8', 'clkout9', 'clkout10', 'clkout11', 'clkout12', 'clkout13', > > 'clkout14', 'clkout15', 'clkout16']} is not of type 'array' > > Update dt-schema and try again. It should be allowed now. You'll also > need to define minItems and maxItems though. Thanks, works! Best regards, Krzysztof
diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.txt b/Documentation/devicetree/bindings/arm/samsung/pmu.txt deleted file mode 100644 index 433bfd7593ac..000000000000 --- a/Documentation/devicetree/bindings/arm/samsung/pmu.txt +++ /dev/null @@ -1,72 +0,0 @@ -SAMSUNG Exynos SoC series PMU Registers - -Properties: - - compatible : should contain two values. First value must be one from following list: - - "samsung,exynos3250-pmu" - for Exynos3250 SoC, - - "samsung,exynos4210-pmu" - for Exynos4210 SoC, - - "samsung,exynos4412-pmu" - for Exynos4412 SoC, - - "samsung,exynos5250-pmu" - for Exynos5250 SoC, - - "samsung,exynos5260-pmu" - for Exynos5260 SoC. - - "samsung,exynos5410-pmu" - for Exynos5410 SoC, - - "samsung,exynos5420-pmu" - for Exynos5420 SoC. - - "samsung,exynos5433-pmu" - for Exynos5433 SoC. - - "samsung,exynos7-pmu" - for Exynos7 SoC. - second value must be always "syscon". - - - reg : offset and length of the register set. - - - #clock-cells : must be <1>, since PMU requires once cell as clock specifier. - The single specifier cell is used as index to list of clocks - provided by PMU, which is currently: - 0 : SoC clock output (CLKOUT pin) - - - clock-names : list of clock names for particular CLKOUT mux inputs in - following format: - "clkoutN", where N is a decimal number corresponding to - CLKOUT mux control bits value for given input, e.g. - "clkout0", "clkout7", "clkout15". - - - clocks : list of phandles and specifiers to all input clocks listed in - clock-names property. - -Optional properties: - -Some PMUs are capable of behaving as an interrupt controller (mostly -to wake up a suspended PMU). In which case, they can have the -following properties: - -- interrupt-controller: indicate that said PMU is an interrupt controller - -- #interrupt-cells: must be identical to the that of the parent interrupt - controller. - - -Optional nodes: - -- nodes defining the restart and poweroff syscon children - - -Example : -pmu_system_controller: system-controller@10040000 { - compatible = "samsung,exynos5250-pmu", "syscon"; - reg = <0x10040000 0x5000>; - interrupt-controller; - #interrupt-cells = <3>; - interrupt-parent = <&gic>; - #clock-cells = <1>; - clock-names = "clkout0", "clkout1", "clkout2", "clkout3", - "clkout4", "clkout8", "clkout9"; - clocks = <&clock CLK_OUT_DMC>, <&clock CLK_OUT_TOP>, - <&clock CLK_OUT_LEFTBUS>, <&clock CLK_OUT_RIGHTBUS>, - <&clock CLK_OUT_CPU>, <&clock CLK_XXTI>, - <&clock CLK_XUSBXTI>; -}; - -Example of clock consumer : - -usb3503: usb3503@8 { - /* ... */ - clock-names = "refclk"; - clocks = <&pmu_system_controller 0>; - /* ... */ -}; diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.yaml b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml new file mode 100644 index 000000000000..818c6f3488ef --- /dev/null +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.yaml @@ -0,0 +1,93 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/arm/samsung/pmu.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Samsung Exynos SoC series Power Management Unit (PMU) + +maintainers: + - Krzysztof Kozlowski <krzk@kernel.org> + +properties: + compatible: + items: + - enum: + - samsung,exynos3250-pmu + - samsung,exynos4210-pmu + - samsung,exynos4412-pmu + - samsung,exynos5250-pmu + - samsung,exynos5260-pmu + - samsung,exynos5410-pmu + - samsung,exynos5420-pmu + - samsung,exynos5433-pmu + - samsung,exynos7-pmu + - const: syscon + + reg: + maxItems: 1 + + '#clock-cells': + const: 1 + + clock-names: + description: + list of clock names for particular CLKOUT mux inputs + # TODO: what is the maximum number of elements (mux inputs)? + minItems: 1 + maxItems: 32 + items: + - enum: + - clkout0 + - clkout1 + - clkout2 + - clkout3 + - clkout4 + - clkout5 + - clkout6 + - clkout7 + - clkout8 + - clkout9 + - clkout10 + - clkout11 + - clkout12 + - clkout13 + - clkout14 + - clkout15 + - clkout16 + + clocks: + minItems: 1 + maxItems: 32 + + interrupt-controller: + description: + Some PMUs are capable of behaving as an interrupt controller (mostly + to wake up a suspended PMU). + + '#interrupt-cells': + # TODO: must be identical to the that of the parent interrupt controller. + const: 3 + + # TODO: Mark interrupt-controller and #interrupt-cells as required, if one is present + # TODO: nodes defining the restart and poweroff syscon children + +required: + - compatible + - reg + - '#clock-cells' + - clock-names + - clocks + +examples: + - | + pmu_system_controller: system-controller@10040000 { + compatible = "samsung,exynos5250-pmu", "syscon"; + reg = <0x10040000 0x5000>; + interrupt-controller; + #interrupt-cells = <3>; + interrupt-parent = <&gic>; + #clock-cells = <1>; + clock-names = "clkout16"; + clocks = <&clock 0>; // CLK_FIN_PLL + };
Convert Samsung Exynos Power Management Unit (PMU) bindings to DT schema format using json-schema. Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> --- .../devicetree/bindings/arm/samsung/pmu.txt | 72 -------------- .../devicetree/bindings/arm/samsung/pmu.yaml | 93 +++++++++++++++++++ 2 files changed, 93 insertions(+), 72 deletions(-) delete mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.txt create mode 100644 Documentation/devicetree/bindings/arm/samsung/pmu.yaml