aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/powerpc/fsl/pmc.yaml
blob: 276ece7f01dbafe0accbb9d884f5611e75193ca2 (plain) (blame)
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
150
151
152
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/powerpc/fsl/pmc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Power Management Controller

maintainers:
  - J. Neuschäfer <j.ne@posteo.net>

description: |
  The Power Management Controller in several MPC8xxx SoCs helps save power by
  controlling chip-wide low-power states as well as peripheral clock gating.

  Sleep of peripheral devices is configured by the `sleep` property, for
  example `sleep = <&pmc 0x00000030>`. Any cells after the &pmc phandle are
  called a sleep specifier.

  For "fsl,mpc8349-pmc", sleep specifiers consist of one cell.  For each bit that
  is set in the cell, the corresponding bit in SCCR will be saved and cleared
  on suspend, and restored on resume.  This sleep controller supports disabling
  and resuming devices at any time.

  For "fsl,mpc8536-pmc", sleep specifiers consist of three cells, the third of
  which will be ORed into PMCDR upon suspend, and cleared from PMCDR upon
  resume.  The first two cells are as described for fsl,mpc8548-pmc.  This
  sleep controller only supports disabling devices during system sleep, or
  permanently.

  For "fsl,mpc8548-pmc" or "fsl,mpc8641d-pmc", Sleep specifiers consist of one
  or two cells, the first of which will be ORed into DEVDISR (and the second
  into DEVDISR2, if present -- this cell should be zero or absent if the
  hardware does not have DEVDISR2) upon a request for permanent device
  disabling.  This sleep controller does not support configuring devices to
  disable during system sleep (unless supported by another compatible match),
  or dynamically.

properties:
  compatible:
    oneOf:
      - items:
          - const: fsl,mpc8315-pmc
          - const: fsl,mpc8313-pmc
          - const: fsl,mpc8349-pmc

      - items:
          - enum:
              - fsl,mpc8313-pmc
              - fsl,mpc8323-pmc
              - fsl,mpc8360-pmc
              - fsl,mpc8377-pmc
              - fsl,mpc8378-pmc
              - fsl,mpc8379-pmc
          - const: fsl,mpc8349-pmc

      - items:
          - const: fsl,p1022-pmc
          - const: fsl,mpc8536-pmc
          - const: fsl,mpc8548-pmc

      - items:
          - enum:
              - fsl,mpc8536-pmc
              - fsl,mpc8568-pmc
              - fsl,mpc8569-pmc
          - const: fsl,mpc8548-pmc

      - enum:
          - fsl,mpc8548-pmc
          - fsl,mpc8641d-pmc

    description: |
      "fsl,mpc8349-pmc" should be listed for any chip whose PMC is
      compatible.  "fsl,mpc8313-pmc" should also be listed for any chip
      whose PMC is compatible, and implies deep-sleep capability.

      "fsl,mpc8548-pmc" should be listed for any chip whose PMC is
      compatible.  "fsl,mpc8536-pmc" should also be listed for any chip
      whose PMC is compatible, and implies deep-sleep capability.

      "fsl,mpc8641d-pmc" should be listed for any chip whose PMC is
      compatible; all statements below that apply to "fsl,mpc8548-pmc" also
      apply to "fsl,mpc8641d-pmc".

      Compatibility does not include bit assignments in SCCR/PMCDR/DEVDISR; these
      bit assignments are indicated via the sleep specifier in each device's
      sleep property.

  reg:
    minItems: 1
    maxItems: 2

  interrupts:
    maxItems: 1

  fsl,mpc8313-wakeup-timer:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      For "fsl,mpc8313-pmc"-compatible devices, this is a phandle to an
      "fsl,gtm" node on which timer 4 can be used as a wakeup source from deep
      sleep.

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: fsl,mpc8349-pmc
    then:
      properties:
        reg:
          items:
            - description: PMC block
            - description: Clock Configuration block

  - if:
      properties:
        compatible:
          contains:
            enum:
              - fsl,mpc8548-pmc
              - fsl,mpc8641d-pmc
    then:
      properties:
        reg:
          items:
            - description: 32-byte block beginning with DEVDISR

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    pmc: power@b00 {
        compatible = "fsl,mpc8377-pmc", "fsl,mpc8349-pmc";
        reg = <0xb00 0x100>, <0xa00 0x100>;
        interrupts = <80 IRQ_TYPE_LEVEL_LOW>;
    };

  - |
    power@e0070 {
        compatible = "fsl,mpc8548-pmc";
        reg = <0xe0070 0x20>;
    };

...