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,pms405-pon
23      - qcom,pm8998-pon
24      - qcom,pmk8350-pon
25
26  reg:
27    description: |
28      Specifies the SPMI base address for the PON (power-on) peripheral.  For
29      PMICs that have the PON peripheral (GEN3) split into PON_HLOS and PON_PBS
30      (e.g. PMK8350), this can hold addresses of both PON_HLOS and PON_PBS
31      peripherals.  In that case, the PON_PBS address needs to be specified to
32      facilitate software debouncing on some PMIC.
33    minItems: 1
34    maxItems: 2
35
36  reg-names:
37    minItems: 1
38    maxItems: 2
39
40  pwrkey:
41    type: object
42    $ref: /schemas/input/qcom,pm8941-pwrkey.yaml#
43
44  resin:
45    type: object
46    $ref: /schemas/input/qcom,pm8941-pwrkey.yaml#
47
48  watchdog:
49    type: object
50    $ref: /schemas/watchdog/qcom,pm8916-wdt.yaml
51
52required:
53  - compatible
54  - reg
55
56unevaluatedProperties: false
57
58allOf:
59  - $ref: reboot-mode.yaml#
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      properties:
70        reg:
71          maxItems: 1
72        reg-names:
73          items:
74            - const: pon
75  - if:
76      properties:
77        compatible:
78          contains:
79            const: qcom,pmk8350-pon
80    then:
81      properties:
82        reg:
83          minItems: 1
84          maxItems: 2
85        reg-names:
86          minItems: 1
87          items:
88            - const: hlos
89            - const: pbs
90
91examples:
92  - |
93   #include <dt-bindings/interrupt-controller/irq.h>
94   #include <dt-bindings/input/linux-event-codes.h>
95   #include <dt-bindings/spmi/spmi.h>
96   spmi_bus: spmi@c440000 {
97     reg = <0x0c440000 0x1100>;
98     #address-cells = <2>;
99     #size-cells = <0>;
100     pmk8350: pmic@0 {
101       reg = <0x0 SPMI_USID>;
102       #address-cells = <1>;
103       #size-cells = <0>;
104       pmk8350_pon: pon_hlos@1300 {
105         reg = <0x1300>;
106         compatible = "qcom,pm8998-pon";
107
108         pwrkey {
109            compatible = "qcom,pm8941-pwrkey";
110            interrupts = < 0x0 0x8 0 IRQ_TYPE_EDGE_BOTH >;
111            debounce = <15625>;
112            bias-pull-up;
113            linux,code = <KEY_POWER>;
114         };
115
116         resin {
117            compatible = "qcom,pm8941-resin";
118            interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
119            debounce = <15625>;
120            bias-pull-up;
121            linux,code = <KEY_VOLUMEDOWN>;
122         };
123       };
124     };
125   };
126...
127