Documentation / devicetree / bindings / arm / hisilicon / controller / sysctrl.yaml


Based on kernel version 6.9. Page generated on 2024-05-14 10:02 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/hisilicon/controller/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:
          - enum:
              - hisilicon,sysctrl
              - hisilicon,hi6220-sysctrl
              - hisilicon,hi3519-sysctrl
          - const: syscon
      - items:
          - const: hisilicon,hip01-sysctrl
          - const: hisilicon,sysctrl

  reg:
    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':
    const: 1
 
  '#reset-cells':
    const: 1
 
  '#address-cells':
    const: 1
 
  '#size-cells':
    const: 1

  ranges: true

patternProperties:
  '^clock@':
    type: object
    additionalProperties: false

    properties:
      compatible:
        enum:
          - hisilicon,hi3620-clock
          - hisilicon,hi3620-mmc-clock

      reg:
        maxItems: 1
 
      '#clock-cells':
        const: 1

required:
  - compatible
  - reg

additionalProperties:
  type: object

examples:
  - |
    /* Hisilicon system controller */
    system-controller@802000 {
        compatible = "hisilicon,sysctrl", "syscon";
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0 0x802000 0x1000>;
        reg = <0x802000 0x1000>;
 
        smp-offset = <0x31c>;
        resume-offset = <0x308>;
        reboot-offset = <0x4>;
 
        clock: clock@0 {
            compatible = "hisilicon,hi3620-clock";
            reg = <0 0x10000>;
            #clock-cells = <1>;
        };
    };
 
    /* 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>;
    };
...