162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/canaan,k210-sysctl.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Canaan Kendryte K210 System Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Damien Le Moal <dlemoal@kernel.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  Canaan Inc. Kendryte K210 SoC system controller which provides a
1462306a36Sopenharmony_ci  register map for controlling the clocks, reset signals and pin power
1562306a36Sopenharmony_ci  domains of the SoC.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciproperties:
1862306a36Sopenharmony_ci  compatible:
1962306a36Sopenharmony_ci    items:
2062306a36Sopenharmony_ci      - const: canaan,k210-sysctl
2162306a36Sopenharmony_ci      - const: syscon
2262306a36Sopenharmony_ci      - const: simple-mfd
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  clocks:
2562306a36Sopenharmony_ci    maxItems: 1
2662306a36Sopenharmony_ci    description:
2762306a36Sopenharmony_ci      System controller Advanced Power Bus (APB) interface clock source.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  clock-names:
3062306a36Sopenharmony_ci    items:
3162306a36Sopenharmony_ci      - const: pclk
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  reg:
3462306a36Sopenharmony_ci    maxItems: 1
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  clock-controller:
3762306a36Sopenharmony_ci    # Child node
3862306a36Sopenharmony_ci    type: object
3962306a36Sopenharmony_ci    $ref: ../clock/canaan,k210-clk.yaml
4062306a36Sopenharmony_ci    description:
4162306a36Sopenharmony_ci      Clock controller for the SoC clocks. This child node definition
4262306a36Sopenharmony_ci      should follow the bindings specified in
4362306a36Sopenharmony_ci      Documentation/devicetree/bindings/clock/canaan,k210-clk.yaml.
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  reset-controller:
4662306a36Sopenharmony_ci    # Child node
4762306a36Sopenharmony_ci    type: object
4862306a36Sopenharmony_ci    $ref: ../reset/canaan,k210-rst.yaml
4962306a36Sopenharmony_ci    description:
5062306a36Sopenharmony_ci      Reset controller for the SoC. This child node definition
5162306a36Sopenharmony_ci      should follow the bindings specified in
5262306a36Sopenharmony_ci      Documentation/devicetree/bindings/reset/canaan,k210-rst.yaml.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  syscon-reboot:
5562306a36Sopenharmony_ci    # Child node
5662306a36Sopenharmony_ci    type: object
5762306a36Sopenharmony_ci    $ref: ../power/reset/syscon-reboot.yaml
5862306a36Sopenharmony_ci    description:
5962306a36Sopenharmony_ci      Reboot method for the SoC. This child node definition
6062306a36Sopenharmony_ci      should follow the bindings specified in
6162306a36Sopenharmony_ci      Documentation/devicetree/bindings/power/reset/syscon-reboot.yaml.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_cirequired:
6462306a36Sopenharmony_ci  - compatible
6562306a36Sopenharmony_ci  - clocks
6662306a36Sopenharmony_ci  - reg
6762306a36Sopenharmony_ci  - clock-controller
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciadditionalProperties: false
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciexamples:
7262306a36Sopenharmony_ci  - |
7362306a36Sopenharmony_ci    #include <dt-bindings/clock/k210-clk.h>
7462306a36Sopenharmony_ci    #include <dt-bindings/reset/k210-rst.h>
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci    clocks {
7762306a36Sopenharmony_ci      in0: oscllator {
7862306a36Sopenharmony_ci        compatible = "fixed-clock";
7962306a36Sopenharmony_ci        #clock-cells = <0>;
8062306a36Sopenharmony_ci        clock-frequency = <26000000>;
8162306a36Sopenharmony_ci      };
8262306a36Sopenharmony_ci    };
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci    sysctl: syscon@50440000 {
8562306a36Sopenharmony_ci      compatible = "canaan,k210-sysctl",
8662306a36Sopenharmony_ci                   "syscon", "simple-mfd";
8762306a36Sopenharmony_ci      reg = <0x50440000 0x100>;
8862306a36Sopenharmony_ci      clocks = <&sysclk K210_CLK_APB1>;
8962306a36Sopenharmony_ci      clock-names = "pclk";
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci      sysclk: clock-controller {
9262306a36Sopenharmony_ci        #clock-cells = <1>;
9362306a36Sopenharmony_ci        compatible = "canaan,k210-clk";
9462306a36Sopenharmony_ci        clocks = <&in0>;
9562306a36Sopenharmony_ci      };
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci      sysrst: reset-controller {
9862306a36Sopenharmony_ci        compatible = "canaan,k210-rst";
9962306a36Sopenharmony_ci        #reset-cells = <1>;
10062306a36Sopenharmony_ci      };
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci      reboot: syscon-reboot {
10362306a36Sopenharmony_ci        compatible = "syscon-reboot";
10462306a36Sopenharmony_ci        regmap = <&sysctl>;
10562306a36Sopenharmony_ci        offset = <48>;
10662306a36Sopenharmony_ci        mask = <1>;
10762306a36Sopenharmony_ci        value = <1>;
10862306a36Sopenharmony_ci      };
10962306a36Sopenharmony_ci    };
110