diff mbox series

[v4,3/5] dt-bindings: arm: msm: Rework kpss-gcc driver Documentation to yaml

Message ID 20220629121441.6552-4-ansuelsmth@gmail.com (mailing list archive)
State Changes Requested, archived
Headers show
Series Krait Documentation conversion | expand

Commit Message

Christian Marangi June 29, 2022, 12:14 p.m. UTC
Rework kpss-gcc driver Documentation to yaml Documentation.
The current kpss-gcc Documentation have major problems and can't be
converted directly. Introduce various changes to the original
Documentation.

Add #clock-cells additional binding as this clock outputs a static clk
named acpu_l2_aux with supported compatible.
Only some compatible require and outputs a clock, for the others, set
only the reg as a required binding to correctly export the kpss-gcc
registers. As the reg is shared also add the required syscon compatible.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
 .../bindings/arm/msm/qcom,kpss-gcc.txt        | 44 ---------
 .../bindings/arm/msm/qcom,kpss-gcc.yaml       | 90 +++++++++++++++++++
 2 files changed, 90 insertions(+), 44 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
 create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml

Comments

Rob Herring June 29, 2022, 10:36 p.m. UTC | #1
On Wed, 29 Jun 2022 14:14:39 +0200, Christian Marangi wrote:
> Rework kpss-gcc driver Documentation to yaml Documentation.
> The current kpss-gcc Documentation have major problems and can't be
> converted directly. Introduce various changes to the original
> Documentation.
> 
> Add #clock-cells additional binding as this clock outputs a static clk
> named acpu_l2_aux with supported compatible.
> Only some compatible require and outputs a clock, for the others, set
> only the reg as a required binding to correctly export the kpss-gcc
> registers. As the reg is shared also add the required syscon compatible.
> 
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> ---
>  .../bindings/arm/msm/qcom,kpss-gcc.txt        | 44 ---------
>  .../bindings/arm/msm/qcom,kpss-gcc.yaml       | 90 +++++++++++++++++++
>  2 files changed, 90 insertions(+), 44 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
>  create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
> 

Running 'make dtbs_check' with the schema in this patch gives the
following warnings. Consider if they are expected or the schema is
incorrect. These may not be new warnings.

Note that it is not yet a requirement to have 0 warnings for dtbs_check.
This will change in the future.

Full log is available here: https://patchwork.ozlabs.org/patch/


clock-controller@2011000: clock-names: False schema does not allow ['pll8_vote', 'pxo']
	arch/arm/boot/dts/qcom-ipq8064-ap148.dtb
	arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb

clock-controller@2011000: 'clock-output-names' does not match any of the regexes: 'pinctrl-[0-9]+'
	arch/arm/boot/dts/qcom-ipq8064-ap148.dtb
	arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb

clock-controller@2011000: compatible:0: 'qcom,kpss-gcc' is not one of ['qcom,kpss-gcc-ipq8064', 'qcom,kpss-gcc-apq8064', 'qcom,kpss-gcc-msm8974', 'qcom,kpss-gcc-msm8960', 'qcom,kpss-gcc-msm8660', 'qcom,kpss-gcc-mdm9615']
	arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dtb
	arch/arm/boot/dts/qcom-apq8064-cm-qs600.dtb
	arch/arm/boot/dts/qcom-apq8064-ifc6410.dtb
	arch/arm/boot/dts/qcom-apq8064-sony-xperia-lagan-yuga.dtb
	arch/arm/boot/dts/qcom-ipq8064-ap148.dtb
	arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb
	arch/arm/boot/dts/qcom-mdm9615-wp8548-mangoh-green.dtb
	arch/arm/boot/dts/qcom-msm8960-cdp.dtb

clock-controller@2011000: compatible:1: 'qcom,kpss-gcc' was expected
	arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dtb
	arch/arm/boot/dts/qcom-apq8064-cm-qs600.dtb
	arch/arm/boot/dts/qcom-apq8064-ifc6410.dtb
	arch/arm/boot/dts/qcom-apq8064-sony-xperia-lagan-yuga.dtb
	arch/arm/boot/dts/qcom-ipq8064-ap148.dtb
	arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb
	arch/arm/boot/dts/qcom-mdm9615-wp8548-mangoh-green.dtb
	arch/arm/boot/dts/qcom-msm8960-cdp.dtb

clock-controller@2011000: compatible: ['qcom,kpss-gcc', 'syscon'] is too short
	arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dtb
	arch/arm/boot/dts/qcom-apq8064-cm-qs600.dtb
	arch/arm/boot/dts/qcom-apq8064-ifc6410.dtb
	arch/arm/boot/dts/qcom-apq8064-sony-xperia-lagan-yuga.dtb
	arch/arm/boot/dts/qcom-ipq8064-ap148.dtb
	arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb
	arch/arm/boot/dts/qcom-mdm9615-wp8548-mangoh-green.dtb
	arch/arm/boot/dts/qcom-msm8960-cdp.dtb

clock-controller@2082000: compatible:0: 'qcom,kpss-gcc' is not one of ['qcom,kpss-gcc-ipq8064', 'qcom,kpss-gcc-apq8064', 'qcom,kpss-gcc-msm8974', 'qcom,kpss-gcc-msm8960', 'qcom,kpss-gcc-msm8660', 'qcom,kpss-gcc-mdm9615']
	arch/arm/boot/dts/qcom-apq8060-dragonboard.dtb
	arch/arm/boot/dts/qcom-msm8660-surf.dtb

clock-controller@2082000: compatible:1: 'qcom,kpss-gcc' was expected
	arch/arm/boot/dts/qcom-apq8060-dragonboard.dtb
	arch/arm/boot/dts/qcom-msm8660-surf.dtb

clock-controller@2082000: compatible: ['qcom,kpss-gcc', 'syscon'] is too short
	arch/arm/boot/dts/qcom-apq8060-dragonboard.dtb
	arch/arm/boot/dts/qcom-msm8660-surf.dtb
Dmitry Baryshkov June 30, 2022, 6:43 a.m. UTC | #2
On 29 June 2022 15:14:39 GMT+03:00, Christian Marangi <ansuelsmth@gmail.com> wrote:
>Rework kpss-gcc driver Documentation to yaml Documentation.
>The current kpss-gcc Documentation have major problems and can't be
>converted directly. Introduce various changes to the original
>Documentation.
>
>Add #clock-cells additional binding as this clock outputs a static clk
>named acpu_l2_aux with supported compatible.
>Only some compatible require and outputs a clock, for the others, set
>only the reg as a required binding to correctly export the kpss-gcc
>registers. As the reg is shared also add the required syscon compatible.
>
>Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
>---
> .../bindings/arm/msm/qcom,kpss-gcc.txt        | 44 ---------
> .../bindings/arm/msm/qcom,kpss-gcc.yaml       | 90 +++++++++++++++++++
> 2 files changed, 90 insertions(+), 44 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
> create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
>
>diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
>deleted file mode 100644
>index e628758950e1..000000000000
>--- a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
>+++ /dev/null
>@@ -1,44 +0,0 @@
>-Krait Processor Sub-system (KPSS) Global Clock Controller (GCC)
>-
>-PROPERTIES
>-
>-- compatible:
>-	Usage: required
>-	Value type: <string>
>-	Definition: should be one of the following. The generic compatible
>-			"qcom,kpss-gcc" should also be included.
>-			"qcom,kpss-gcc-ipq8064", "qcom,kpss-gcc"
>-			"qcom,kpss-gcc-apq8064", "qcom,kpss-gcc"
>-			"qcom,kpss-gcc-msm8974", "qcom,kpss-gcc"
>-			"qcom,kpss-gcc-msm8960", "qcom,kpss-gcc"
>-
>-- reg:
>-	Usage: required
>-	Value type: <prop-encoded-array>
>-	Definition: base address and size of the register region
>-
>-- clocks:
>-	Usage: required
>-	Value type: <prop-encoded-array>
>-	Definition: reference to the pll parents.
>-
>-- clock-names:
>-	Usage: required
>-	Value type: <stringlist>
>-	Definition: must be "pll8_vote", "pxo".
>-
>-- clock-output-names:
>-	Usage: required
>-	Value type: <string>
>-	Definition: Name of the output clock. Typically acpu_l2_aux indicating
>-		    an L2 cache auxiliary clock.
>-
>-Example:
>-
>-	l2cc: clock-controller@2011000 {
>-		compatible = "qcom,kpss-gcc-ipq8064", "qcom,kpss-gcc";
>-		reg = <0x2011000 0x1000>;
>-		clocks = <&gcc PLL8_VOTE>, <&gcc PXO_SRC>;
>-		clock-names = "pll8_vote", "pxo";
>-		clock-output-names = "acpu_l2_aux";
>-	};
>diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
>new file mode 100644
>index 000000000000..27f7df7e3ec4
>--- /dev/null
>+++ b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
>@@ -0,0 +1,90 @@
>+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>+%YAML 1.2
>+---
>+$id: http://devicetree.org/schemas/arm/msm/qcom,kpss-gcc.yaml#
>+$schema: http://devicetree.org/meta-schemas/core.yaml#
>+
>+title: Krait Processor Sub-system (KPSS) Global Clock Controller (GCC)
>+
>+maintainers:
>+  - Christian Marangi <ansuelsmth@gmail.com>
>+
>+description: |
>+  Krait Processor Sub-system (KPSS) Global Clock Controller (GCC). Used
>+  to control L2 mux (in the current implementation) and provide access
>+  to the kpss-gcc registers.
>+
>+properties:
>+  compatible:
>+    items:
>+      - enum:
>+          - qcom,kpss-gcc-ipq8064
>+          - qcom,kpss-gcc-apq8064
>+          - qcom,kpss-gcc-msm8974
>+          - qcom,kpss-gcc-msm8960
>+          - qcom,kpss-gcc-msm8660
>+          - qcom,kpss-gcc-mdm9615
>+      - const: qcom,kpss-gcc
>+      - const: syscon
>+
>+  reg:
>+    maxItems: 1
>+
>+  clocks:
>+    items:
>+      - description: phandle to pll8_vote
>+      - description: phandle to pxo_board
>+
>+  clock-names:
>+    items:
>+      - const: pll8_vote
>+      - const: pxo
>+
>+  '#clock-cells':
>+    const: 0
>+
>+required:
>+  - compatible
>+  - reg
>+
>+if:
>+  properties:
>+    compatible:
>+      contains:
>+        enum:
>+          - qcom,kpss-gcc-ipq8064
>+          - qcom,kpss-gcc-apq8064
>+          - qcom,kpss-gcc-msm8974
>+          - qcom,kpss-gcc-msm8960
>+then:
>+  required:
>+    - clocks
>+    - clock-names
>+    - '#clock-cells'
>+else:
>+  properties:
>+    clock: false
>+    clock-names: false
>+    '#clock-cells': false

I suppose this chunk is not so correct. We can not describe these properties as required since current DTs do not have them. Also if somebody decides to fix the mdm9615 or msm8660 platforms, he works have to change this (again). Thus I'd just leave this whole chunk out.

>+
>+additionalProperties: false
>+
>+examples:
>+  - |
>+    #include <dt-bindings/clock/qcom,gcc-ipq806x.h>
>+
>+    clock-controller@2011000 {
>+      compatible = "qcom,kpss-gcc-ipq8064", "qcom,kpss-gcc", "syscon";
>+      reg = <0x2011000 0x1000>;
>+      clocks = <&gcc PLL8_VOTE>, <&pxo_board>;
>+      clock-names = "pll8_vote", "pxo";
>+      #clock-cells = <0>;
>+    };
>+
>+  - |
>+    clock-controller@2011000 {
>+      compatible = "qcom,kpss-gcc-mdm9615", "qcom,kpss-gcc", "syscon";
>+      reg = <0x02011000 0x1000>;
>+    };
>+...
>+
Christian Marangi June 30, 2022, 11:20 a.m. UTC | #3
On Thu, Jun 30, 2022 at 09:43:05AM +0300, Dmitry Baryshkov wrote:
> 
> 
> On 29 June 2022 15:14:39 GMT+03:00, Christian Marangi <ansuelsmth@gmail.com> wrote:
> >Rework kpss-gcc driver Documentation to yaml Documentation.
> >The current kpss-gcc Documentation have major problems and can't be
> >converted directly. Introduce various changes to the original
> >Documentation.
> >
> >Add #clock-cells additional binding as this clock outputs a static clk
> >named acpu_l2_aux with supported compatible.
> >Only some compatible require and outputs a clock, for the others, set
> >only the reg as a required binding to correctly export the kpss-gcc
> >registers. As the reg is shared also add the required syscon compatible.
> >
> >Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> >---
> > .../bindings/arm/msm/qcom,kpss-gcc.txt        | 44 ---------
> > .../bindings/arm/msm/qcom,kpss-gcc.yaml       | 90 +++++++++++++++++++
> > 2 files changed, 90 insertions(+), 44 deletions(-)
> > delete mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
> > create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
> >
> >diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
> >deleted file mode 100644
> >index e628758950e1..000000000000
> >--- a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
> >+++ /dev/null
> >@@ -1,44 +0,0 @@
> >-Krait Processor Sub-system (KPSS) Global Clock Controller (GCC)
> >-
> >-PROPERTIES
> >-
> >-- compatible:
> >-	Usage: required
> >-	Value type: <string>
> >-	Definition: should be one of the following. The generic compatible
> >-			"qcom,kpss-gcc" should also be included.
> >-			"qcom,kpss-gcc-ipq8064", "qcom,kpss-gcc"
> >-			"qcom,kpss-gcc-apq8064", "qcom,kpss-gcc"
> >-			"qcom,kpss-gcc-msm8974", "qcom,kpss-gcc"
> >-			"qcom,kpss-gcc-msm8960", "qcom,kpss-gcc"
> >-
> >-- reg:
> >-	Usage: required
> >-	Value type: <prop-encoded-array>
> >-	Definition: base address and size of the register region
> >-
> >-- clocks:
> >-	Usage: required
> >-	Value type: <prop-encoded-array>
> >-	Definition: reference to the pll parents.
> >-
> >-- clock-names:
> >-	Usage: required
> >-	Value type: <stringlist>
> >-	Definition: must be "pll8_vote", "pxo".
> >-
> >-- clock-output-names:
> >-	Usage: required
> >-	Value type: <string>
> >-	Definition: Name of the output clock. Typically acpu_l2_aux indicating
> >-		    an L2 cache auxiliary clock.
> >-
> >-Example:
> >-
> >-	l2cc: clock-controller@2011000 {
> >-		compatible = "qcom,kpss-gcc-ipq8064", "qcom,kpss-gcc";
> >-		reg = <0x2011000 0x1000>;
> >-		clocks = <&gcc PLL8_VOTE>, <&gcc PXO_SRC>;
> >-		clock-names = "pll8_vote", "pxo";
> >-		clock-output-names = "acpu_l2_aux";
> >-	};
> >diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
> >new file mode 100644
> >index 000000000000..27f7df7e3ec4
> >--- /dev/null
> >+++ b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
> >@@ -0,0 +1,90 @@
> >+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> >+%YAML 1.2
> >+---
> >+$id: http://devicetree.org/schemas/arm/msm/qcom,kpss-gcc.yaml#
> >+$schema: http://devicetree.org/meta-schemas/core.yaml#
> >+
> >+title: Krait Processor Sub-system (KPSS) Global Clock Controller (GCC)
> >+
> >+maintainers:
> >+  - Christian Marangi <ansuelsmth@gmail.com>
> >+
> >+description: |
> >+  Krait Processor Sub-system (KPSS) Global Clock Controller (GCC). Used
> >+  to control L2 mux (in the current implementation) and provide access
> >+  to the kpss-gcc registers.
> >+
> >+properties:
> >+  compatible:
> >+    items:
> >+      - enum:
> >+          - qcom,kpss-gcc-ipq8064
> >+          - qcom,kpss-gcc-apq8064
> >+          - qcom,kpss-gcc-msm8974
> >+          - qcom,kpss-gcc-msm8960
> >+          - qcom,kpss-gcc-msm8660
> >+          - qcom,kpss-gcc-mdm9615
> >+      - const: qcom,kpss-gcc
> >+      - const: syscon
> >+
> >+  reg:
> >+    maxItems: 1
> >+
> >+  clocks:
> >+    items:
> >+      - description: phandle to pll8_vote
> >+      - description: phandle to pxo_board
> >+
> >+  clock-names:
> >+    items:
> >+      - const: pll8_vote
> >+      - const: pxo
> >+
> >+  '#clock-cells':
> >+    const: 0
> >+
> >+required:
> >+  - compatible
> >+  - reg
> >+
> >+if:
> >+  properties:
> >+    compatible:
> >+      contains:
> >+        enum:
> >+          - qcom,kpss-gcc-ipq8064
> >+          - qcom,kpss-gcc-apq8064
> >+          - qcom,kpss-gcc-msm8974
> >+          - qcom,kpss-gcc-msm8960
> >+then:
> >+  required:
> >+    - clocks
> >+    - clock-names
> >+    - '#clock-cells'
> >+else:
> >+  properties:
> >+    clock: false
> >+    clock-names: false
> >+    '#clock-cells': false
> 
> I suppose this chunk is not so correct. We can not describe these properties as required since current DTs do not have them. Also if somebody decides to fix the mdm9615 or msm8660 platforms, he works have to change this (again). Thus I'd just leave this whole chunk out.
>

With a quick check I notice that all the other platform doesn't have
pxo_board or PLL8_VOTE clk so they wouln't work with the current
driver... to me it seems they are just exposing the kpss-gcc reg with
syscon and they are used in the rpm driver... This is very similar to
the acc-v1 and acc-v2 separation where acc-v2 only provide the reg and
nothing else. Wonder if we should do the same here or add clk support
only for the specific compatible as I did here...

In both case dts changes are required and a similar chunk is necessary.

> >+
> >+additionalProperties: false
> >+
> >+examples:
> >+  - |
> >+    #include <dt-bindings/clock/qcom,gcc-ipq806x.h>
> >+
> >+    clock-controller@2011000 {
> >+      compatible = "qcom,kpss-gcc-ipq8064", "qcom,kpss-gcc", "syscon";
> >+      reg = <0x2011000 0x1000>;
> >+      clocks = <&gcc PLL8_VOTE>, <&pxo_board>;
> >+      clock-names = "pll8_vote", "pxo";
> >+      #clock-cells = <0>;
> >+    };
> >+
> >+  - |
> >+    clock-controller@2011000 {
> >+      compatible = "qcom,kpss-gcc-mdm9615", "qcom,kpss-gcc", "syscon";
> >+      reg = <0x02011000 0x1000>;
> >+    };
> >+...
> >+
> 
> -- 
> With best wishes
> Dmitry
Christian Marangi July 1, 2022, 5:32 p.m. UTC | #4
On Fri, Jul 01, 2022 at 11:32:38AM -0600, Rob Herring wrote:
> On Wed, Jun 29, 2022 at 02:14:39PM +0200, Christian Marangi wrote:
> > Rework kpss-gcc driver Documentation to yaml Documentation.
> 
> It's not 'driver Documentation'. It's a DT binding for h/w.
> 
> Lot's of things are YAML. I prefer 'DT schema'
> 
> The subjects are bit long and get cut off as well. For the subject, 
> something like:
> 
> dt-bindings: arm: msm: Convert kpss-gcc to DT schema
> 
> And similar for the other patch.
>

It was pointed out that since this have additional change than simple
conversion, using "Convert" can be confusing.
Is Rework or Refactor a better naming for this single patch?

> > The current kpss-gcc Documentation have major problems and can't be
> > converted directly. Introduce various changes to the original
> > Documentation.
> > 
> > Add #clock-cells additional binding as this clock outputs a static clk
> > named acpu_l2_aux with supported compatible.
> > Only some compatible require and outputs a clock, for the others, set
> > only the reg as a required binding to correctly export the kpss-gcc
> > registers. As the reg is shared also add the required syscon compatible.
> > 
> > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> > ---
> >  .../bindings/arm/msm/qcom,kpss-gcc.txt        | 44 ---------
> >  .../bindings/arm/msm/qcom,kpss-gcc.yaml       | 90 +++++++++++++++++++
> >  2 files changed, 90 insertions(+), 44 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
> >  create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
Rob Herring July 1, 2022, 5:32 p.m. UTC | #5
On Wed, Jun 29, 2022 at 02:14:39PM +0200, Christian Marangi wrote:
> Rework kpss-gcc driver Documentation to yaml Documentation.

It's not 'driver Documentation'. It's a DT binding for h/w.

Lot's of things are YAML. I prefer 'DT schema'

The subjects are bit long and get cut off as well. For the subject, 
something like:

dt-bindings: arm: msm: Convert kpss-gcc to DT schema

And similar for the other patch.

> The current kpss-gcc Documentation have major problems and can't be
> converted directly. Introduce various changes to the original
> Documentation.
> 
> Add #clock-cells additional binding as this clock outputs a static clk
> named acpu_l2_aux with supported compatible.
> Only some compatible require and outputs a clock, for the others, set
> only the reg as a required binding to correctly export the kpss-gcc
> registers. As the reg is shared also add the required syscon compatible.
> 
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> ---
>  .../bindings/arm/msm/qcom,kpss-gcc.txt        | 44 ---------
>  .../bindings/arm/msm/qcom,kpss-gcc.yaml       | 90 +++++++++++++++++++
>  2 files changed, 90 insertions(+), 44 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
>  create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
deleted file mode 100644
index e628758950e1..000000000000
--- a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.txt
+++ /dev/null
@@ -1,44 +0,0 @@ 
-Krait Processor Sub-system (KPSS) Global Clock Controller (GCC)
-
-PROPERTIES
-
-- compatible:
-	Usage: required
-	Value type: <string>
-	Definition: should be one of the following. The generic compatible
-			"qcom,kpss-gcc" should also be included.
-			"qcom,kpss-gcc-ipq8064", "qcom,kpss-gcc"
-			"qcom,kpss-gcc-apq8064", "qcom,kpss-gcc"
-			"qcom,kpss-gcc-msm8974", "qcom,kpss-gcc"
-			"qcom,kpss-gcc-msm8960", "qcom,kpss-gcc"
-
-- reg:
-	Usage: required
-	Value type: <prop-encoded-array>
-	Definition: base address and size of the register region
-
-- clocks:
-	Usage: required
-	Value type: <prop-encoded-array>
-	Definition: reference to the pll parents.
-
-- clock-names:
-	Usage: required
-	Value type: <stringlist>
-	Definition: must be "pll8_vote", "pxo".
-
-- clock-output-names:
-	Usage: required
-	Value type: <string>
-	Definition: Name of the output clock. Typically acpu_l2_aux indicating
-		    an L2 cache auxiliary clock.
-
-Example:
-
-	l2cc: clock-controller@2011000 {
-		compatible = "qcom,kpss-gcc-ipq8064", "qcom,kpss-gcc";
-		reg = <0x2011000 0x1000>;
-		clocks = <&gcc PLL8_VOTE>, <&gcc PXO_SRC>;
-		clock-names = "pll8_vote", "pxo";
-		clock-output-names = "acpu_l2_aux";
-	};
diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
new file mode 100644
index 000000000000..27f7df7e3ec4
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-gcc.yaml
@@ -0,0 +1,90 @@ 
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/msm/qcom,kpss-gcc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Krait Processor Sub-system (KPSS) Global Clock Controller (GCC)
+
+maintainers:
+  - Christian Marangi <ansuelsmth@gmail.com>
+
+description: |
+  Krait Processor Sub-system (KPSS) Global Clock Controller (GCC). Used
+  to control L2 mux (in the current implementation) and provide access
+  to the kpss-gcc registers.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - qcom,kpss-gcc-ipq8064
+          - qcom,kpss-gcc-apq8064
+          - qcom,kpss-gcc-msm8974
+          - qcom,kpss-gcc-msm8960
+          - qcom,kpss-gcc-msm8660
+          - qcom,kpss-gcc-mdm9615
+      - const: qcom,kpss-gcc
+      - const: syscon
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: phandle to pll8_vote
+      - description: phandle to pxo_board
+
+  clock-names:
+    items:
+      - const: pll8_vote
+      - const: pxo
+
+  '#clock-cells':
+    const: 0
+
+required:
+  - compatible
+  - reg
+
+if:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - qcom,kpss-gcc-ipq8064
+          - qcom,kpss-gcc-apq8064
+          - qcom,kpss-gcc-msm8974
+          - qcom,kpss-gcc-msm8960
+then:
+  required:
+    - clocks
+    - clock-names
+    - '#clock-cells'
+else:
+  properties:
+    clock: false
+    clock-names: false
+    '#clock-cells': false
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,gcc-ipq806x.h>
+
+    clock-controller@2011000 {
+      compatible = "qcom,kpss-gcc-ipq8064", "qcom,kpss-gcc", "syscon";
+      reg = <0x2011000 0x1000>;
+      clocks = <&gcc PLL8_VOTE>, <&pxo_board>;
+      clock-names = "pll8_vote", "pxo";
+      #clock-cells = <0>;
+    };
+
+  - |
+    clock-controller@2011000 {
+      compatible = "qcom,kpss-gcc-mdm9615", "qcom,kpss-gcc", "syscon";
+      reg = <0x02011000 0x1000>;
+    };
+...
+