xref: /freebsd/sys/contrib/device-tree/Bindings/arm/hisilicon/controller/sysctrl.yaml (revision 8d13bc63c0e1d50bc9e47ac1f26329c999bfecf0)
16be33864SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
26be33864SEmmanuel Vadot%YAML 1.2
36be33864SEmmanuel Vadot---
46be33864SEmmanuel Vadot$id: http://devicetree.org/schemas/arm/hisilicon/controller/sysctrl.yaml#
56be33864SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
66be33864SEmmanuel Vadot
76be33864SEmmanuel Vadottitle: Hisilicon system controller
86be33864SEmmanuel Vadot
96be33864SEmmanuel Vadotmaintainers:
106be33864SEmmanuel Vadot  - Wei Xu <xuwei5@hisilicon.com>
116be33864SEmmanuel Vadot
126be33864SEmmanuel Vadotdescription: |
136be33864SEmmanuel Vadot  The Hisilicon system controller is used on many Hisilicon boards, it can be
146be33864SEmmanuel Vadot  used to assist the slave core startup, reboot the system, etc.
156be33864SEmmanuel Vadot
166be33864SEmmanuel Vadot  There are some variants of the Hisilicon system controller, such as HiP01,
176be33864SEmmanuel Vadot  Hi3519, Hi6220 system controller, each of them is mostly compatible with the
186be33864SEmmanuel Vadot  Hisilicon system controller, but some same registers located at different
196be33864SEmmanuel Vadot  offset. In addition, the HiP01 system controller has some specific control
206be33864SEmmanuel Vadot  registers for HIP01 SoC family, such as slave core boot.
216be33864SEmmanuel Vadot
226be33864SEmmanuel Vadot  The compatible names of each system controller are as follows:
236be33864SEmmanuel Vadot  Hisilicon system controller   --> hisilicon,sysctrl
246be33864SEmmanuel Vadot  HiP01     system controller   --> hisilicon,hip01-sysctrl
256be33864SEmmanuel Vadot  Hi6220    system controller   --> hisilicon,hi6220-sysctrl
266be33864SEmmanuel Vadot  Hi3519    system controller   --> hisilicon,hi3519-sysctrl
276be33864SEmmanuel Vadot
286be33864SEmmanuel VadotallOf:
296be33864SEmmanuel Vadot  - if:
306be33864SEmmanuel Vadot      properties:
316be33864SEmmanuel Vadot        compatible:
326be33864SEmmanuel Vadot          contains:
336be33864SEmmanuel Vadot            const: hisilicon,hi6220-sysctrl
346be33864SEmmanuel Vadot    then:
356be33864SEmmanuel Vadot      required:
366be33864SEmmanuel Vadot        - '#clock-cells'
376be33864SEmmanuel Vadot
386be33864SEmmanuel Vadotproperties:
396be33864SEmmanuel Vadot  compatible:
406be33864SEmmanuel Vadot    oneOf:
416be33864SEmmanuel Vadot      - items:
426be33864SEmmanuel Vadot          - enum:
436be33864SEmmanuel Vadot              - hisilicon,sysctrl
446be33864SEmmanuel Vadot              - hisilicon,hi6220-sysctrl
456be33864SEmmanuel Vadot              - hisilicon,hi3519-sysctrl
466be33864SEmmanuel Vadot          - const: syscon
476be33864SEmmanuel Vadot      - items:
486be33864SEmmanuel Vadot          - const: hisilicon,hip01-sysctrl
496be33864SEmmanuel Vadot          - const: hisilicon,sysctrl
506be33864SEmmanuel Vadot
516be33864SEmmanuel Vadot  reg:
526be33864SEmmanuel Vadot    maxItems: 1
536be33864SEmmanuel Vadot
546be33864SEmmanuel Vadot  smp-offset:
556be33864SEmmanuel Vadot    description: |
566be33864SEmmanuel Vadot      offset in sysctrl for notifying slave cpu booting
576be33864SEmmanuel Vadot      cpu 1, reg;
586be33864SEmmanuel Vadot      cpu 2, reg + 0x4;
596be33864SEmmanuel Vadot      cpu 3, reg + 0x8;
606be33864SEmmanuel Vadot      If reg value is not zero, cpun exit wfi and go
616be33864SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
626be33864SEmmanuel Vadot
636be33864SEmmanuel Vadot  resume-offset:
646be33864SEmmanuel Vadot    description: offset in sysctrl for notifying cpu0 when resume
656be33864SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
666be33864SEmmanuel Vadot
676be33864SEmmanuel Vadot  reboot-offset:
686be33864SEmmanuel Vadot    description: offset in sysctrl for system reboot
696be33864SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
706be33864SEmmanuel Vadot
716be33864SEmmanuel Vadot  '#clock-cells':
726be33864SEmmanuel Vadot    const: 1
736be33864SEmmanuel Vadot
746be33864SEmmanuel Vadot  '#reset-cells':
756be33864SEmmanuel Vadot    const: 1
766be33864SEmmanuel Vadot
776be33864SEmmanuel Vadot  '#address-cells':
786be33864SEmmanuel Vadot    const: 1
796be33864SEmmanuel Vadot
806be33864SEmmanuel Vadot  '#size-cells':
816be33864SEmmanuel Vadot    const: 1
826be33864SEmmanuel Vadot
836be33864SEmmanuel Vadot  ranges: true
846be33864SEmmanuel Vadot
85*8d13bc63SEmmanuel VadotpatternProperties:
86*8d13bc63SEmmanuel Vadot  '^clock@':
87*8d13bc63SEmmanuel Vadot    type: object
88*8d13bc63SEmmanuel Vadot    additionalProperties: false
89*8d13bc63SEmmanuel Vadot
90*8d13bc63SEmmanuel Vadot    properties:
91*8d13bc63SEmmanuel Vadot      compatible:
92*8d13bc63SEmmanuel Vadot        enum:
93*8d13bc63SEmmanuel Vadot          - hisilicon,hi3620-clock
94*8d13bc63SEmmanuel Vadot          - hisilicon,hi3620-mmc-clock
95*8d13bc63SEmmanuel Vadot
96*8d13bc63SEmmanuel Vadot      reg:
97*8d13bc63SEmmanuel Vadot        maxItems: 1
98*8d13bc63SEmmanuel Vadot
99*8d13bc63SEmmanuel Vadot      '#clock-cells':
100*8d13bc63SEmmanuel Vadot        const: 1
101*8d13bc63SEmmanuel Vadot
1026be33864SEmmanuel Vadotrequired:
1036be33864SEmmanuel Vadot  - compatible
1046be33864SEmmanuel Vadot  - reg
1056be33864SEmmanuel Vadot
1066be33864SEmmanuel VadotadditionalProperties:
1076be33864SEmmanuel Vadot  type: object
1086be33864SEmmanuel Vadot
1096be33864SEmmanuel Vadotexamples:
1106be33864SEmmanuel Vadot  - |
1116be33864SEmmanuel Vadot    /* Hisilicon system controller */
1126be33864SEmmanuel Vadot    system-controller@802000 {
1136be33864SEmmanuel Vadot        compatible = "hisilicon,sysctrl", "syscon";
1146be33864SEmmanuel Vadot        #address-cells = <1>;
1156be33864SEmmanuel Vadot        #size-cells = <1>;
1166be33864SEmmanuel Vadot        ranges = <0 0x802000 0x1000>;
1176be33864SEmmanuel Vadot        reg = <0x802000 0x1000>;
1186be33864SEmmanuel Vadot
1196be33864SEmmanuel Vadot        smp-offset = <0x31c>;
1206be33864SEmmanuel Vadot        resume-offset = <0x308>;
1216be33864SEmmanuel Vadot        reboot-offset = <0x4>;
1226be33864SEmmanuel Vadot
1236be33864SEmmanuel Vadot        clock: clock@0 {
1246be33864SEmmanuel Vadot            compatible = "hisilicon,hi3620-clock";
1256be33864SEmmanuel Vadot            reg = <0 0x10000>;
1266be33864SEmmanuel Vadot            #clock-cells = <1>;
1276be33864SEmmanuel Vadot        };
1286be33864SEmmanuel Vadot    };
1296be33864SEmmanuel Vadot
1306be33864SEmmanuel Vadot    /* HiP01 system controller */
1316be33864SEmmanuel Vadot    system-controller@10000000 {
1326be33864SEmmanuel Vadot        compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl";
1336be33864SEmmanuel Vadot        reg = <0x10000000 0x1000>;
1346be33864SEmmanuel Vadot        reboot-offset = <0x4>;
1356be33864SEmmanuel Vadot    };
1366be33864SEmmanuel Vadot
1376be33864SEmmanuel Vadot    /* Hi6220 system controller */
1386be33864SEmmanuel Vadot    system-controller@f7030000 {
1396be33864SEmmanuel Vadot        compatible = "hisilicon,hi6220-sysctrl", "syscon";
1406be33864SEmmanuel Vadot        reg = <0xf7030000 0x2000>;
1416be33864SEmmanuel Vadot        #clock-cells = <1>;
1426be33864SEmmanuel Vadot    };
1436be33864SEmmanuel Vadot
1446be33864SEmmanuel Vadot    /* Hi3519 system controller */
1456be33864SEmmanuel Vadot    system-controller@12010000 {
1466be33864SEmmanuel Vadot        compatible = "hisilicon,hi3519-sysctrl", "syscon";
1476be33864SEmmanuel Vadot        reg = <0x12010000 0x1000>;
1486be33864SEmmanuel Vadot    };
1496be33864SEmmanuel Vadot...
150