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
57unevaluatedProperties: false
58
59allOf:
60  - if:
61      properties:
62        compatible:
63          contains:
64            enum:
65              - qcom,pm8916-pon
66              - qcom,pms405-pon
67              - qcom,pm8998-pon
68    then:
69      allOf:
70        - $ref: reboot-mode.yaml#
71
72      properties:
73        reg:
74          maxItems: 1
75        reg-names:
76          items:
77            - const: pon
78
79    # Special case for pm8941, which doesn't store reset mode
80  - if:
81      properties:
82        compatible:
83          contains:
84            const: qcom,pm8941-pon
85    then:
86      properties:
87        reg:
88          maxItems: 1
89        reg-names:
90          items:
91            - const: pon
92
93  - if:
94      properties:
95        compatible:
96          contains:
97            const: qcom,pmk8350-pon
98    then:
99      properties:
100        reg:
101          minItems: 1
102          maxItems: 2
103        reg-names:
104          minItems: 1
105          items:
106            - const: hlos
107            - const: pbs
108
109examples:
110  - |
111   #include <dt-bindings/interrupt-controller/irq.h>
112   #include <dt-bindings/input/linux-event-codes.h>
113   #include <dt-bindings/spmi/spmi.h>
114   spmi_bus: spmi@c440000 {
115     reg = <0x0c440000 0x1100>;
116     #address-cells = <2>;
117     #size-cells = <0>;
118     pmk8350: pmic@0 {
119       reg = <0x0 SPMI_USID>;
120       #address-cells = <1>;
121       #size-cells = <0>;
122       pmk8350_pon: pon_hlos@1300 {
123         reg = <0x1300>;
124         compatible = "qcom,pm8998-pon";
125
126         pwrkey {
127            compatible = "qcom,pm8941-pwrkey";
128            interrupts = < 0x0 0x8 0 IRQ_TYPE_EDGE_BOTH >;
129            debounce = <15625>;
130            bias-pull-up;
131            linux,code = <KEY_POWER>;
132         };
133
134         resin {
135            compatible = "qcom,pm8941-resin";
136            interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
137            debounce = <15625>;
138            bias-pull-up;
139            linux,code = <KEY_VOLUMEDOWN>;
140         };
141       };
142     };
143   };
144...
145