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