Commit c83eeec7 authored by Hector Martin's avatar Hector Martin
Browse files

dt-bindings: arm: apple: Add apple,pmgr binding



The PMGR block in Apple Silicon SoCs is responsible for SoC power
management. There are two PMGRs in T8103, with different register
layouts but compatible registers. In order to support this as well
as future SoC generations with backwards-compatible registers, we
declare these blocks as syscons and bind to individual registers
in child nodes. Each register controls one SoC device.

The respective apple compatibles are defined in case device-specific
quirks are necessary in the future, but currently these nodes are
expected to be bound by the generic syscon driver.

Reviewed-by: default avatarMark Kettenis <kettenis@openbsd.org>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarHector Martin <marcan@marcan.st>
parent e8117f85
Loading
Loading
Loading
Loading
+134 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/apple/apple,pmgr.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Apple SoC Power Manager (PMGR)

maintainers:
  - Hector Martin <marcan@marcan.st>

description: |
  Apple SoCs include PMGR blocks responsible for power management,
  which can control various clocks, resets, power states, and
  performance features. This node represents the PMGR as a syscon,
  with sub-nodes representing individual features.

properties:
  $nodename:
    pattern: "^power-management@[0-9a-f]+$"

  compatible:
    items:
      - enum:
          - apple,t8103-pmgr
          - apple,t6000-pmgr
      - const: apple,pmgr
      - const: syscon
      - const: simple-mfd

  reg:
    maxItems: 1

  "#address-cells":
    const: 1

  "#size-cells":
    const: 1

patternProperties:
  "power-controller@[0-9a-f]+$":
    description:
      The individual power management domains within this controller
    type: object
    $ref: /power/apple,pmgr-pwrstate.yaml#

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        power-management@23b700000 {
            compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
            #address-cells = <1>;
            #size-cells = <1>;
            reg = <0x2 0x3b700000 0x0 0x14000>;

            ps_sio: power-controller@1c0 {
                compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
                reg = <0x1c0 8>;
                #power-domain-cells = <0>;
                #reset-cells = <0>;
                label = "sio";
                apple,always-on;
            };

            ps_uart_p: power-controller@220 {
                compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
                reg = <0x220 8>;
                #power-domain-cells = <0>;
                #reset-cells = <0>;
                label = "uart_p";
                power-domains = <&ps_sio>;
            };

            ps_uart0: power-controller@270 {
                compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
                reg = <0x270 8>;
                #power-domain-cells = <0>;
                #reset-cells = <0>;
                label = "uart0";
                power-domains = <&ps_uart_p>;
            };
        };

        power-management@23d280000 {
            compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
            #address-cells = <1>;
            #size-cells = <1>;
            reg = <0x2 0x3d280000 0x0 0xc000>;

            ps_aop_filter: power-controller@4000 {
                compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
                reg = <0x4000 8>;
                #power-domain-cells = <0>;
                #reset-cells = <0>;
                label = "aop_filter";
            };

            ps_aop_base: power-controller@4010 {
                compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
                reg = <0x4010 8>;
                #power-domain-cells = <0>;
                #reset-cells = <0>;
                label = "aop_base";
                power-domains = <&ps_aop_filter>;
            };

            ps_aop_shim: power-controller@4038 {
                compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
                reg = <0x4038 8>;
                #power-domain-cells = <0>;
                #reset-cells = <0>;
                label = "aop_shim";
                power-domains = <&ps_aop_base>;
            };

            ps_aop_uart0: power-controller@4048 {
                compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
                reg = <0x4048 8>;
                #power-domain-cells = <0>;
                #reset-cells = <0>;
                label = "aop_uart0";
                power-domains = <&ps_aop_shim>;
            };
        };
    };