diff mbox series

[v4,07/20] dt-bindings: arm: hisilicon: convert system controller bindings to json-schema

Message ID 20200928151324.2134-8-thunder.leizhen@huawei.com
State Superseded
Headers show
Series add support for Hisilicon SD5203 SoC | expand

Commit Message

Leizhen (ThunderTown) Sept. 28, 2020, 3:13 p.m. UTC
Convert the Hisilicon system controller and its variants binding to DT
schema format using json-schema. All of them are grouped into one yaml
file, to help users understand differences and avoid repeated
descriptions.

Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>

---
 .../controller/hisilicon,hi6220-sysctrl.txt        |  19 ----
 .../controller/hisilicon,hip01-sysctrl.txt         |  19 ----
 .../arm/hisilicon/controller/hisilicon,sysctrl.txt |  25 -----
 .../hisilicon/controller/hisilicon,sysctrl.yaml    | 115 +++++++++++++++++++++
 .../bindings/arm/hisilicon/hi3519-sysctrl.txt      |  14 ---
 5 files changed, 115 insertions(+), 77 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt
 delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt
 delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt
 create mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml
 delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt

-- 
1.8.3

Comments

Rob Herring (Arm) Sept. 28, 2020, 7:13 p.m. UTC | #1
On Mon, Sep 28, 2020 at 11:13:11PM +0800, Zhen Lei wrote:
> Convert the Hisilicon system controller and its variants binding to DT

> schema format using json-schema. All of them are grouped into one yaml

> file, to help users understand differences and avoid repeated

> descriptions.

> 

> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>

> ---

>  .../controller/hisilicon,hi6220-sysctrl.txt        |  19 ----

>  .../controller/hisilicon,hip01-sysctrl.txt         |  19 ----

>  .../arm/hisilicon/controller/hisilicon,sysctrl.txt |  25 -----

>  .../hisilicon/controller/hisilicon,sysctrl.yaml    | 115 +++++++++++++++++++++

>  .../bindings/arm/hisilicon/hi3519-sysctrl.txt      |  14 ---

>  5 files changed, 115 insertions(+), 77 deletions(-)

>  delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt

>  delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt

>  delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt

>  create mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml

>  delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt

> 

> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt

> deleted file mode 100644

> index 07e318eda254f52..000000000000000

> --- a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt

> +++ /dev/null

> @@ -1,19 +0,0 @@

> -Hisilicon Hi6220 system controller

> -

> -Required properties:

> -- compatible : "hisilicon,hi6220-sysctrl"

> -- reg : Register address and size

> -- #clock-cells: should be set to 1, many clock registers are defined

> -  under this controller and this property must be present.

> -

> -Hisilicon designs this controller as one of the system controllers,

> -its main functions are the same as Hisilicon system controller, but

> -the register offset of some core modules are different.

> -

> -Example:

> -	/*for Hi6220*/

> -	sys_ctrl: sys_ctrl@f7030000 {

> -		compatible = "hisilicon,hi6220-sysctrl", "syscon";

> -		reg = <0x0 0xf7030000 0x0 0x2000>;

> -		#clock-cells = <1>;

> -	};

> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt

> deleted file mode 100644

> index db2dfdce799db91..000000000000000

> --- a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt

> +++ /dev/null

> @@ -1,19 +0,0 @@

> -Hisilicon HiP01 system controller

> -

> -Required properties:

> -- compatible : "hisilicon,hip01-sysctrl"

> -- reg : Register address and size

> -

> -The HiP01 system controller is mostly compatible with hisilicon

> -system controller,but it has some specific control registers for

> -HIP01 SoC family, such as slave core boot, and also some same

> -registers located at different offset.

> -

> -Example:

> -

> -	/* for hip01-ca9x2 */

> -	sysctrl: system-controller@10000000 {

> -		compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl";

> -		reg = <0x10000000 0x1000>;

> -		reboot-offset = <0x4>;

> -	};

> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt

> deleted file mode 100644

> index 963f7f1ca7a2f0c..000000000000000

> --- a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt

> +++ /dev/null

> @@ -1,25 +0,0 @@

> -Hisilicon system controller

> -

> -Required properties:

> -- compatible : "hisilicon,sysctrl"

> -- reg : Register address and size

> -

> -Optional properties:

> -- smp-offset : offset in sysctrl for notifying slave cpu booting

> -		cpu 1, reg;

> -		cpu 2, reg + 0x4;

> -		cpu 3, reg + 0x8;

> -		If reg value is not zero, cpun exit wfi and go

> -- resume-offset : offset in sysctrl for notifying cpu0 when resume

> -- reboot-offset : offset in sysctrl for system reboot

> -

> -Example:

> -

> -	/* for Hi3620 */

> -	sysctrl: system-controller@fc802000 {

> -		compatible = "hisilicon,sysctrl";

> -		reg = <0xfc802000 0x1000>;

> -		smp-offset = <0x31c>;

> -		resume-offset = <0x308>;

> -		reboot-offset = <0x4>;

> -	};

> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml

> new file mode 100644

> index 000000000000000..37b214e0a401d7d

> --- /dev/null

> +++ b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml

> @@ -0,0 +1,115 @@

> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

> +%YAML 1.2

> +---

> +$id: http://devicetree.org/schemas/arm/hisilicon/controller/hisilicon,sysctrl.yaml#

> +$schema: http://devicetree.org/meta-schemas/core.yaml#

> +

> +title: Hisilicon system controller

> +

> +maintainers:

> +  - Wei Xu <xuwei5@hisilicon.com>

> +

> +description: |

> +  The Hisilicon system controller is used on many Hisilicon boards, it can be

> +  used to assist the slave core startup, reboot the system, etc.

> +

> +  There are some variants of the Hisilicon system controller, such as HiP01,

> +  Hi3519, Hi6220 system controller, each of them is mostly compatible with the

> +  Hisilicon system controller, but some same registers located at different

> +  offset. In addition, the HiP01 system controller has some specific control

> +  registers for HIP01 SoC family, such as slave core boot.

> +

> +  The compatible names of each system controller are as follows:

> +  Hisilicon system controller   --> hisilicon,sysctrl

> +  HiP01     system controller   --> hisilicon,hip01-sysctrl

> +  Hi6220    system controller   --> hisilicon,hi6220-sysctrl

> +  Hi3519    system controller   --> hisilicon,hi3519-sysctrl

> +

> +allOf:

> +  - if:

> +      properties:

> +        compatible:

> +          contains:

> +            const: hisilicon,hi6220-sysctrl

> +    then:

> +      required:

> +        - '#clock-cells'

> +

> +properties:

> +  compatible:

> +    oneOf:

> +      - items:

> +          - const: hisilicon,sysctrl

> +      - items:

> +          - const: hisilicon,sysctrl

> +          - const: syscon


Of these 2, the 1st case should be fixed (add 'syscon' in the dts 
files).

> +      - items:

> +          - const: hisilicon,hip01-sysctrl

> +          - const: hisilicon,sysctrl

> +      - items:

> +          - const: hisilicon,hi6220-sysctrl

> +          - const: syscon

> +      - items:

> +          - const: hisilicon,hi3519-sysctrl

> +          - const: syscon


All the cases with 'syscon' can be a single entry. Use 'enum' for the 
1st string.

> +

> +  reg:

> +    description: Register address and size


That's every 'reg' property. Drop it.

> +    maxItems: 1

> +

> +  smp-offset:

> +    description: |

> +      offset in sysctrl for notifying slave cpu booting

> +      cpu 1, reg;

> +      cpu 2, reg + 0x4;

> +      cpu 3, reg + 0x8;

> +      If reg value is not zero, cpun exit wfi and go

> +    $ref: /schemas/types.yaml#/definitions/uint32

> +

> +  resume-offset:

> +    description: offset in sysctrl for notifying cpu0 when resume

> +    $ref: /schemas/types.yaml#/definitions/uint32

> +

> +  reboot-offset:

> +    description: offset in sysctrl for system reboot

> +    $ref: /schemas/types.yaml#/definitions/uint32

> +

> +  '#clock-cells':

> +    description: the number of cells occupied by one clock ID.


Drop.

> +    const: 1

> +

> +required:

> +  - compatible

> +  - reg


additionalProperties: false

(and in other patches)

> +

> +examples:

> +  - |

> +    /* Hisilicon system controller */

> +    system-controller@fc802000 {

> +        compatible = "hisilicon,sysctrl";

> +        reg = <0xfc802000 0x1000>;

> +        smp-offset = <0x31c>;

> +        resume-offset = <0x308>;

> +        reboot-offset = <0x4>;

> +    };

> +

> +    /* HiP01 system controller */

> +    system-controller@10000000 {

> +        compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl";

> +        reg = <0x10000000 0x1000>;

> +        reboot-offset = <0x4>;

> +    };

> +

> +    /* Hi6220 system controller */

> +    system-controller@f7030000 {

> +        compatible = "hisilicon,hi6220-sysctrl", "syscon";

> +        reg = <0xf7030000 0x2000>;

> +        #clock-cells = <1>;

> +    };

> +

> +    /* Hi3519 system controller */

> +    system-controller@12010000 {

> +        compatible = "hisilicon,hi3519-sysctrl", "syscon";

> +        reg = <0x12010000 0x1000>;

> +    };

> +...

> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt

> deleted file mode 100644

> index 8defacc44dd5b9e..000000000000000

> --- a/Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt

> +++ /dev/null

> @@ -1,14 +0,0 @@

> -* Hisilicon Hi3519 System Controller Block

> -

> -This bindings use the following binding:

> -Documentation/devicetree/bindings/mfd/syscon.yaml

> -

> -Required properties:

> -- compatible: "hisilicon,hi3519-sysctrl".

> -- reg: the register region of this block

> -

> -Examples:

> -sysctrl: system-controller@12010000 {

> -	compatible = "hisilicon,hi3519-sysctrl", "syscon";

> -	reg = <0x12010000 0x1000>;

> -};

> -- 

> 1.8.3

> 

>
Leizhen (ThunderTown) Sept. 29, 2020, 3:09 a.m. UTC | #2
On 2020/9/29 3:13, Rob Herring wrote:
> On Mon, Sep 28, 2020 at 11:13:11PM +0800, Zhen Lei wrote:

>> Convert the Hisilicon system controller and its variants binding to DT

>> schema format using json-schema. All of them are grouped into one yaml

>> file, to help users understand differences and avoid repeated

>> descriptions.

>>

>> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>

>> ---

>>  .../controller/hisilicon,hi6220-sysctrl.txt        |  19 ----

>>  .../controller/hisilicon,hip01-sysctrl.txt         |  19 ----

>>  .../arm/hisilicon/controller/hisilicon,sysctrl.txt |  25 -----

>>  .../hisilicon/controller/hisilicon,sysctrl.yaml    | 115 +++++++++++++++++++++

>>  .../bindings/arm/hisilicon/hi3519-sysctrl.txt      |  14 ---

>>  5 files changed, 115 insertions(+), 77 deletions(-)

>>  delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt

>>  delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt

>>  delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt

>>  create mode 100644 Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml

>>  delete mode 100644 Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt

>>

>> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt

>> deleted file mode 100644

>> index 07e318eda254f52..000000000000000

>> --- a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt

>> +++ /dev/null

>> @@ -1,19 +0,0 @@

>> -Hisilicon Hi6220 system controller

>> -

>> -Required properties:

>> -- compatible : "hisilicon,hi6220-sysctrl"

>> -- reg : Register address and size

>> -- #clock-cells: should be set to 1, many clock registers are defined

>> -  under this controller and this property must be present.

>> -

>> -Hisilicon designs this controller as one of the system controllers,

>> -its main functions are the same as Hisilicon system controller, but

>> -the register offset of some core modules are different.

>> -

>> -Example:

>> -	/*for Hi6220*/

>> -	sys_ctrl: sys_ctrl@f7030000 {

>> -		compatible = "hisilicon,hi6220-sysctrl", "syscon";

>> -		reg = <0x0 0xf7030000 0x0 0x2000>;

>> -		#clock-cells = <1>;

>> -	};

>> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt

>> deleted file mode 100644

>> index db2dfdce799db91..000000000000000

>> --- a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt

>> +++ /dev/null

>> @@ -1,19 +0,0 @@

>> -Hisilicon HiP01 system controller

>> -

>> -Required properties:

>> -- compatible : "hisilicon,hip01-sysctrl"

>> -- reg : Register address and size

>> -

>> -The HiP01 system controller is mostly compatible with hisilicon

>> -system controller,but it has some specific control registers for

>> -HIP01 SoC family, such as slave core boot, and also some same

>> -registers located at different offset.

>> -

>> -Example:

>> -

>> -	/* for hip01-ca9x2 */

>> -	sysctrl: system-controller@10000000 {

>> -		compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl";

>> -		reg = <0x10000000 0x1000>;

>> -		reboot-offset = <0x4>;

>> -	};

>> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt

>> deleted file mode 100644

>> index 963f7f1ca7a2f0c..000000000000000

>> --- a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt

>> +++ /dev/null

>> @@ -1,25 +0,0 @@

>> -Hisilicon system controller

>> -

>> -Required properties:

>> -- compatible : "hisilicon,sysctrl"

>> -- reg : Register address and size

>> -

>> -Optional properties:

>> -- smp-offset : offset in sysctrl for notifying slave cpu booting

>> -		cpu 1, reg;

>> -		cpu 2, reg + 0x4;

>> -		cpu 3, reg + 0x8;

>> -		If reg value is not zero, cpun exit wfi and go

>> -- resume-offset : offset in sysctrl for notifying cpu0 when resume

>> -- reboot-offset : offset in sysctrl for system reboot

>> -

>> -Example:

>> -

>> -	/* for Hi3620 */

>> -	sysctrl: system-controller@fc802000 {

>> -		compatible = "hisilicon,sysctrl";

>> -		reg = <0xfc802000 0x1000>;

>> -		smp-offset = <0x31c>;

>> -		resume-offset = <0x308>;

>> -		reboot-offset = <0x4>;

>> -	};

>> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml

>> new file mode 100644

>> index 000000000000000..37b214e0a401d7d

>> --- /dev/null

>> +++ b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml

>> @@ -0,0 +1,115 @@

>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

>> +%YAML 1.2

>> +---

>> +$id: http://devicetree.org/schemas/arm/hisilicon/controller/hisilicon,sysctrl.yaml#

>> +$schema: http://devicetree.org/meta-schemas/core.yaml#

>> +

>> +title: Hisilicon system controller

>> +

>> +maintainers:

>> +  - Wei Xu <xuwei5@hisilicon.com>

>> +

>> +description: |

>> +  The Hisilicon system controller is used on many Hisilicon boards, it can be

>> +  used to assist the slave core startup, reboot the system, etc.

>> +

>> +  There are some variants of the Hisilicon system controller, such as HiP01,

>> +  Hi3519, Hi6220 system controller, each of them is mostly compatible with the

>> +  Hisilicon system controller, but some same registers located at different

>> +  offset. In addition, the HiP01 system controller has some specific control

>> +  registers for HIP01 SoC family, such as slave core boot.

>> +

>> +  The compatible names of each system controller are as follows:

>> +  Hisilicon system controller   --> hisilicon,sysctrl

>> +  HiP01     system controller   --> hisilicon,hip01-sysctrl

>> +  Hi6220    system controller   --> hisilicon,hi6220-sysctrl

>> +  Hi3519    system controller   --> hisilicon,hi3519-sysctrl

>> +

>> +allOf:

>> +  - if:

>> +      properties:

>> +        compatible:

>> +          contains:

>> +            const: hisilicon,hi6220-sysctrl

>> +    then:

>> +      required:

>> +        - '#clock-cells'

>> +

>> +properties:

>> +  compatible:

>> +    oneOf:

>> +      - items:

>> +          - const: hisilicon,sysctrl

>> +      - items:

>> +          - const: hisilicon,sysctrl

>> +          - const: syscon

> 

> Of these 2, the 1st case should be fixed (add 'syscon' in the dts 

> files).


OK, I will fix it.

> 

>> +      - items:

>> +          - const: hisilicon,hip01-sysctrl

>> +          - const: hisilicon,sysctrl

>> +      - items:

>> +          - const: hisilicon,hi6220-sysctrl

>> +          - const: syscon

>> +      - items:

>> +          - const: hisilicon,hi3519-sysctrl

>> +          - const: syscon

> 

> All the cases with 'syscon' can be a single entry. Use 'enum' for the 

> 1st string.


OK, I will do it.

> 

>> +

>> +  reg:

>> +    description: Register address and size

> 

> That's every 'reg' property. Drop it.


OK, I will drop the description.

> 

>> +    maxItems: 1

>> +

>> +  smp-offset:

>> +    description: |

>> +      offset in sysctrl for notifying slave cpu booting

>> +      cpu 1, reg;

>> +      cpu 2, reg + 0x4;

>> +      cpu 3, reg + 0x8;

>> +      If reg value is not zero, cpun exit wfi and go

>> +    $ref: /schemas/types.yaml#/definitions/uint32

>> +

>> +  resume-offset:

>> +    description: offset in sysctrl for notifying cpu0 when resume

>> +    $ref: /schemas/types.yaml#/definitions/uint32

>> +

>> +  reboot-offset:

>> +    description: offset in sysctrl for system reboot

>> +    $ref: /schemas/types.yaml#/definitions/uint32

>> +

>> +  '#clock-cells':

>> +    description: the number of cells occupied by one clock ID.

> 

> Drop.


OK, I will drop the description.

> 

>> +    const: 1

>> +

>> +required:

>> +  - compatible

>> +  - reg

> 

> additionalProperties: false

> 

> (and in other patches)


OK, I will do it.

> 

>> +

>> +examples:

>> +  - |

>> +    /* Hisilicon system controller */

>> +    system-controller@fc802000 {

>> +        compatible = "hisilicon,sysctrl";

>> +        reg = <0xfc802000 0x1000>;

>> +        smp-offset = <0x31c>;

>> +        resume-offset = <0x308>;

>> +        reboot-offset = <0x4>;

>> +    };

>> +

>> +    /* HiP01 system controller */

>> +    system-controller@10000000 {

>> +        compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl";

>> +        reg = <0x10000000 0x1000>;

>> +        reboot-offset = <0x4>;

>> +    };

>> +

>> +    /* Hi6220 system controller */

>> +    system-controller@f7030000 {

>> +        compatible = "hisilicon,hi6220-sysctrl", "syscon";

>> +        reg = <0xf7030000 0x2000>;

>> +        #clock-cells = <1>;

>> +    };

>> +

>> +    /* Hi3519 system controller */

>> +    system-controller@12010000 {

>> +        compatible = "hisilicon,hi3519-sysctrl", "syscon";

>> +        reg = <0x12010000 0x1000>;

>> +    };

>> +...

>> diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt

>> deleted file mode 100644

>> index 8defacc44dd5b9e..000000000000000

>> --- a/Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt

>> +++ /dev/null

>> @@ -1,14 +0,0 @@

>> -* Hisilicon Hi3519 System Controller Block

>> -

>> -This bindings use the following binding:

>> -Documentation/devicetree/bindings/mfd/syscon.yaml

>> -

>> -Required properties:

>> -- compatible: "hisilicon,hi3519-sysctrl".

>> -- reg: the register region of this block

>> -

>> -Examples:

>> -sysctrl: system-controller@12010000 {

>> -	compatible = "hisilicon,hi3519-sysctrl", "syscon";

>> -	reg = <0x12010000 0x1000>;

>> -};

>> -- 

>> 1.8.3

>>

>>

> 

> .

>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt
deleted file mode 100644
index 07e318eda254f52..000000000000000
--- a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hi6220-sysctrl.txt
+++ /dev/null
@@ -1,19 +0,0 @@ 
-Hisilicon Hi6220 system controller
-
-Required properties:
-- compatible : "hisilicon,hi6220-sysctrl"
-- reg : Register address and size
-- #clock-cells: should be set to 1, many clock registers are defined
-  under this controller and this property must be present.
-
-Hisilicon designs this controller as one of the system controllers,
-its main functions are the same as Hisilicon system controller, but
-the register offset of some core modules are different.
-
-Example:
-	/*for Hi6220*/
-	sys_ctrl: sys_ctrl@f7030000 {
-		compatible = "hisilicon,hi6220-sysctrl", "syscon";
-		reg = <0x0 0xf7030000 0x0 0x2000>;
-		#clock-cells = <1>;
-	};
diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt
deleted file mode 100644
index db2dfdce799db91..000000000000000
--- a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,hip01-sysctrl.txt
+++ /dev/null
@@ -1,19 +0,0 @@ 
-Hisilicon HiP01 system controller
-
-Required properties:
-- compatible : "hisilicon,hip01-sysctrl"
-- reg : Register address and size
-
-The HiP01 system controller is mostly compatible with hisilicon
-system controller,but it has some specific control registers for
-HIP01 SoC family, such as slave core boot, and also some same
-registers located at different offset.
-
-Example:
-
-	/* for hip01-ca9x2 */
-	sysctrl: system-controller@10000000 {
-		compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl";
-		reg = <0x10000000 0x1000>;
-		reboot-offset = <0x4>;
-	};
diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt
deleted file mode 100644
index 963f7f1ca7a2f0c..000000000000000
--- a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.txt
+++ /dev/null
@@ -1,25 +0,0 @@ 
-Hisilicon system controller
-
-Required properties:
-- compatible : "hisilicon,sysctrl"
-- reg : Register address and size
-
-Optional properties:
-- smp-offset : offset in sysctrl for notifying slave cpu booting
-		cpu 1, reg;
-		cpu 2, reg + 0x4;
-		cpu 3, reg + 0x8;
-		If reg value is not zero, cpun exit wfi and go
-- resume-offset : offset in sysctrl for notifying cpu0 when resume
-- reboot-offset : offset in sysctrl for system reboot
-
-Example:
-
-	/* for Hi3620 */
-	sysctrl: system-controller@fc802000 {
-		compatible = "hisilicon,sysctrl";
-		reg = <0xfc802000 0x1000>;
-		smp-offset = <0x31c>;
-		resume-offset = <0x308>;
-		reboot-offset = <0x4>;
-	};
diff --git a/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml
new file mode 100644
index 000000000000000..37b214e0a401d7d
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/hisilicon/controller/hisilicon,sysctrl.yaml
@@ -0,0 +1,115 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/hisilicon/controller/hisilicon,sysctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Hisilicon system controller
+
+maintainers:
+  - Wei Xu <xuwei5@hisilicon.com>
+
+description: |
+  The Hisilicon system controller is used on many Hisilicon boards, it can be
+  used to assist the slave core startup, reboot the system, etc.
+
+  There are some variants of the Hisilicon system controller, such as HiP01,
+  Hi3519, Hi6220 system controller, each of them is mostly compatible with the
+  Hisilicon system controller, but some same registers located at different
+  offset. In addition, the HiP01 system controller has some specific control
+  registers for HIP01 SoC family, such as slave core boot.
+
+  The compatible names of each system controller are as follows:
+  Hisilicon system controller   --> hisilicon,sysctrl
+  HiP01     system controller   --> hisilicon,hip01-sysctrl
+  Hi6220    system controller   --> hisilicon,hi6220-sysctrl
+  Hi3519    system controller   --> hisilicon,hi3519-sysctrl
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: hisilicon,hi6220-sysctrl
+    then:
+      required:
+        - '#clock-cells'
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: hisilicon,sysctrl
+      - items:
+          - const: hisilicon,sysctrl
+          - const: syscon
+      - items:
+          - const: hisilicon,hip01-sysctrl
+          - const: hisilicon,sysctrl
+      - items:
+          - const: hisilicon,hi6220-sysctrl
+          - const: syscon
+      - items:
+          - const: hisilicon,hi3519-sysctrl
+          - const: syscon
+
+  reg:
+    description: Register address and size
+    maxItems: 1
+
+  smp-offset:
+    description: |
+      offset in sysctrl for notifying slave cpu booting
+      cpu 1, reg;
+      cpu 2, reg + 0x4;
+      cpu 3, reg + 0x8;
+      If reg value is not zero, cpun exit wfi and go
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  resume-offset:
+    description: offset in sysctrl for notifying cpu0 when resume
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  reboot-offset:
+    description: offset in sysctrl for system reboot
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  '#clock-cells':
+    description: the number of cells occupied by one clock ID.
+    const: 1
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    /* Hisilicon system controller */
+    system-controller@fc802000 {
+        compatible = "hisilicon,sysctrl";
+        reg = <0xfc802000 0x1000>;
+        smp-offset = <0x31c>;
+        resume-offset = <0x308>;
+        reboot-offset = <0x4>;
+    };
+
+    /* HiP01 system controller */
+    system-controller@10000000 {
+        compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl";
+        reg = <0x10000000 0x1000>;
+        reboot-offset = <0x4>;
+    };
+
+    /* Hi6220 system controller */
+    system-controller@f7030000 {
+        compatible = "hisilicon,hi6220-sysctrl", "syscon";
+        reg = <0xf7030000 0x2000>;
+        #clock-cells = <1>;
+    };
+
+    /* Hi3519 system controller */
+    system-controller@12010000 {
+        compatible = "hisilicon,hi3519-sysctrl", "syscon";
+        reg = <0x12010000 0x1000>;
+    };
+...
diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt b/Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt
deleted file mode 100644
index 8defacc44dd5b9e..000000000000000
--- a/Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt
+++ /dev/null
@@ -1,14 +0,0 @@ 
-* Hisilicon Hi3519 System Controller Block
-
-This bindings use the following binding:
-Documentation/devicetree/bindings/mfd/syscon.yaml
-
-Required properties:
-- compatible: "hisilicon,hi3519-sysctrl".
-- reg: the register region of this block
-
-Examples:
-sysctrl: system-controller@12010000 {
-	compatible = "hisilicon,hi3519-sysctrl", "syscon";
-	reg = <0x12010000 0x1000>;
-};