1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/watchdog/qcom-wdt.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Krait Processor Sub-system (KPSS) Watchdog timer
8
9maintainers:
10  - Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
11
12properties:
13  $nodename:
14    pattern: "^(watchdog|timer)@[0-9a-f]+$"
15
16  compatible:
17    oneOf:
18      - items:
19          - enum:
20              - qcom,kpss-wdt-ipq4019
21              - qcom,apss-wdt-ipq5332
22              - qcom,apss-wdt-ipq9574
23              - qcom,apss-wdt-msm8994
24              - qcom,apss-wdt-qcm2290
25              - qcom,apss-wdt-qcs404
26              - qcom,apss-wdt-sa8775p
27              - qcom,apss-wdt-sc7180
28              - qcom,apss-wdt-sc7280
29              - qcom,apss-wdt-sc8180x
30              - qcom,apss-wdt-sc8280xp
31              - qcom,apss-wdt-sdm845
32              - qcom,apss-wdt-sdx55
33              - qcom,apss-wdt-sdx65
34              - qcom,apss-wdt-sm6115
35              - qcom,apss-wdt-sm6350
36              - qcom,apss-wdt-sm8150
37              - qcom,apss-wdt-sm8250
38          - const: qcom,kpss-wdt
39      - const: qcom,kpss-wdt
40        deprecated: true
41      - items:
42          - const: qcom,scss-timer
43          - const: qcom,msm-timer
44      - items:
45          - enum:
46              - qcom,kpss-wdt-apq8064
47              - qcom,kpss-wdt-ipq8064
48              - qcom,kpss-wdt-mdm9615
49              - qcom,kpss-wdt-msm8960
50          - const: qcom,kpss-timer
51          - const: qcom,msm-timer
52
53  reg:
54    maxItems: 1
55
56  clocks:
57    maxItems: 1
58
59  clock-names:
60    items:
61      - const: sleep
62
63  clock-frequency:
64    description:
65      The frequency of the general purpose timer in Hz.
66
67  cpu-offset:
68    $ref: /schemas/types.yaml#/definitions/uint32
69    description:
70      Per-CPU offset used when the timer is accessed without the CPU remapping
71      facilities. The offset is cpu-offset + (0x10000 * cpu-nr).
72
73  interrupts:
74    minItems: 1
75    maxItems: 5
76
77required:
78  - compatible
79  - reg
80  - clocks
81
82allOf:
83  - $ref: watchdog.yaml#
84
85  - if:
86      properties:
87        compatible:
88          contains:
89            const: qcom,kpss-wdt
90    then:
91      properties:
92        clock-frequency: false
93        cpu-offset: false
94        interrupts:
95          minItems: 1
96          items:
97            - description: Bark
98            - description: Bite
99
100    else:
101      properties:
102        interrupts:
103          minItems: 3
104          items:
105            - description: Debug
106            - description: First general purpose timer
107            - description: Second general purpose timer
108            - description: First watchdog
109            - description: Second watchdog
110      required:
111        - clock-frequency
112
113unevaluatedProperties: false
114
115examples:
116  - |
117    #include <dt-bindings/interrupt-controller/arm-gic.h>
118
119    watchdog@17c10000 {
120        compatible = "qcom,apss-wdt-sm8150", "qcom,kpss-wdt";
121        reg = <0x17c10000 0x1000>;
122        clocks = <&sleep_clk>;
123        interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
124        timeout-sec = <10>;
125    };
126
127  - |
128    #include <dt-bindings/interrupt-controller/arm-gic.h>
129
130    watchdog@200a000 {
131        compatible = "qcom,kpss-wdt-ipq8064", "qcom,kpss-timer", "qcom,msm-timer";
132        interrupts = <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>,
133                     <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>,
134                     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>,
135                     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>,
136                     <GIC_PPI 5 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
137        reg = <0x0200a000 0x100>;
138        clock-frequency = <25000000>;
139        clocks = <&sleep_clk>;
140        clock-names = "sleep";
141        cpu-offset = <0x80000>;
142    };
143