xref: /linux/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml (revision 2eff01ee2881becc9daaa0d53477ec202136b1f4)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/power/reset/qcom,pon.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm PON Device
8
9maintainers:
10  - Vinod Koul <vkoul@kernel.org>
11
12description: |
13  The Power On device for Qualcomm PM8xxx is MFD supporting pwrkey
14  and resin along with the Android reboot-mode.
15
16  This DT node has pwrkey and resin as sub nodes.
17
18properties:
19  compatible:
20    enum:
21      - qcom,pm8916-pon
22      - qcom,pm8941-pon
23      - qcom,pms405-pon
24      - qcom,pm8998-pon
25      - qcom,pmk8350-pon
26
27  reg:
28    description: |
29      Specifies the SPMI base address for the PON (power-on) peripheral.  For
30      PMICs that have the PON peripheral (GEN3) split into PON_HLOS and PON_PBS
31      (e.g. PMK8350), this can hold addresses of both PON_HLOS and PON_PBS
32      peripherals.  In that case, the PON_PBS address needs to be specified to
33      facilitate software debouncing on some PMIC.
34    minItems: 1
35    maxItems: 2
36
37  reg-names:
38    minItems: 1
39    maxItems: 2
40
41  pwrkey:
42    type: object
43    $ref: /schemas/input/qcom,pm8941-pwrkey.yaml#
44
45  resin:
46    type: object
47    $ref: /schemas/input/qcom,pm8941-pwrkey.yaml#
48
49  watchdog:
50    type: object
51    $ref: /schemas/watchdog/qcom,pm8916-wdt.yaml
52
53required:
54  - compatible
55  - reg
56
57patternProperties:
58  "^mode-.*$":
59    maxItems: 1
60
61unevaluatedProperties: false
62
63allOf:
64  - if:
65      properties:
66        compatible:
67          contains:
68            enum:
69              - qcom,pm8916-pon
70              - qcom,pms405-pon
71              - qcom,pm8998-pon
72    then:
73      allOf:
74        - $ref: reboot-mode.yaml#
75
76      properties:
77        reg:
78          maxItems: 1
79        reg-names:
80          items:
81            - const: pon
82    else:
83      patternProperties:
84        "^mode-.*$": false
85
86    # Special case for pm8941, which doesn't store reset mode
87  - if:
88      properties:
89        compatible:
90          contains:
91            const: qcom,pm8941-pon
92    then:
93      properties:
94        reg:
95          maxItems: 1
96        reg-names:
97          items:
98            - const: pon
99
100  - if:
101      properties:
102        compatible:
103          contains:
104            const: qcom,pmk8350-pon
105    then:
106      properties:
107        reg:
108          minItems: 1
109          maxItems: 2
110        reg-names:
111          minItems: 1
112          items:
113            - const: hlos
114            - const: pbs
115
116examples:
117  - |
118   #include <dt-bindings/interrupt-controller/irq.h>
119   #include <dt-bindings/input/linux-event-codes.h>
120   #include <dt-bindings/spmi/spmi.h>
121
122   spmi@c440000 {
123     reg = <0x0c440000 0x1100>;
124     #address-cells = <2>;
125     #size-cells = <0>;
126
127     pmic@0 {
128       reg = <0x0 SPMI_USID>;
129       #address-cells = <1>;
130       #size-cells = <0>;
131
132       pon@800 {
133         compatible = "qcom,pm8998-pon";
134         reg = <0x800>;
135
136         pwrkey {
137            compatible = "qcom,pm8941-pwrkey";
138            interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
139            debounce = <15625>;
140            bias-pull-up;
141            linux,code = <KEY_POWER>;
142         };
143
144         resin {
145            compatible = "qcom,pm8941-resin";
146            interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
147            debounce = <15625>;
148            bias-pull-up;
149            linux,code = <KEY_VOLUMEDOWN>;
150         };
151       };
152     };
153   };
154...
155