1f2b883bbSLinus Walleij# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2f2b883bbSLinus Walleij%YAML 1.2
3f2b883bbSLinus Walleij---
4f2b883bbSLinus Walleij$id: http://devicetree.org/schemas/clock/stericsson,u8500-clks.yaml#
5f2b883bbSLinus Walleij$schema: http://devicetree.org/meta-schemas/core.yaml#
6f2b883bbSLinus Walleij
7f2b883bbSLinus Walleijtitle: ST-Ericsson DB8500 (U8500) clocks
8f2b883bbSLinus Walleij
9f2b883bbSLinus Walleijmaintainers:
10f2b883bbSLinus Walleij  - Ulf Hansson <ulf.hansson@linaro.org>
11f2b883bbSLinus Walleij  - Linus Walleij <linus.walleij@linaro.org>
12f2b883bbSLinus Walleij
13f2b883bbSLinus Walleijdescription: While named "U8500 clocks" these clocks are inside the
14f2b883bbSLinus Walleij  DB8500 digital baseband system-on-chip and its siblings such as
15f2b883bbSLinus Walleij  DB8520. These bindings consider the clocks present in the SoC
16f2b883bbSLinus Walleij  itself, not off-chip clocks. There are four different on-chip
17f2b883bbSLinus Walleij  clocks - RTC (32 kHz), CPU clock (SMP TWD), PRCMU (power reset and
18f2b883bbSLinus Walleij  control management unit) clocks and PRCC (peripheral reset and
19f2b883bbSLinus Walleij  clock controller) clocks. For some reason PRCC 4 does not exist so
20f2b883bbSLinus Walleij  the itemization can be a bit unintuitive.
21f2b883bbSLinus Walleij
22f2b883bbSLinus Walleijproperties:
23f2b883bbSLinus Walleij  compatible:
24f2b883bbSLinus Walleij    enum:
25f2b883bbSLinus Walleij      - stericsson,u8500-clks
26f2b883bbSLinus Walleij      - stericsson,u8540-clks
27f2b883bbSLinus Walleij      - stericsson,u9540-clks
28f2b883bbSLinus Walleij
29f2b883bbSLinus Walleij  reg:
30f2b883bbSLinus Walleij    items:
31f2b883bbSLinus Walleij      - description: PRCC 1 register area
32f2b883bbSLinus Walleij      - description: PRCC 2 register area
33f2b883bbSLinus Walleij      - description: PRCC 3 register area
34f2b883bbSLinus Walleij      - description: PRCC 5 register area
35f2b883bbSLinus Walleij      - description: PRCC 6 register area
36f2b883bbSLinus Walleij
37f2b883bbSLinus Walleij  prcmu-clock:
38f2b883bbSLinus Walleij    description: A subnode with one clock cell for PRCMU (power, reset, control
39f2b883bbSLinus Walleij      management unit) clocks. The cell indicates which PRCMU clock in the
40f2b883bbSLinus Walleij      prcmu-clock node the consumer wants to use.
41f2b883bbSLinus Walleij    type: object
42f2b883bbSLinus Walleij
43f2b883bbSLinus Walleij    properties:
44f2b883bbSLinus Walleij      '#clock-cells':
45f2b883bbSLinus Walleij        const: 1
46f2b883bbSLinus Walleij
47f2b883bbSLinus Walleij    additionalProperties: false
48f2b883bbSLinus Walleij
49f2b883bbSLinus Walleij  prcc-periph-clock:
50f2b883bbSLinus Walleij    description: A subnode with two clock cells for PRCC (peripheral
51f2b883bbSLinus Walleij      reset and clock controller) peripheral clocks. The first cell indicates
52f2b883bbSLinus Walleij      which PRCC block the consumer wants to use, possible values are 1, 2, 3,
53f2b883bbSLinus Walleij      5, 6. The second cell indicates which clock inside the PRCC block it
54f2b883bbSLinus Walleij      wants, possible values are 0 thru 31.
55f2b883bbSLinus Walleij    type: object
56f2b883bbSLinus Walleij
57f2b883bbSLinus Walleij    properties:
58f2b883bbSLinus Walleij      '#clock-cells':
59f2b883bbSLinus Walleij        const: 2
60f2b883bbSLinus Walleij
61f2b883bbSLinus Walleij    additionalProperties: false
62f2b883bbSLinus Walleij
63f2b883bbSLinus Walleij  prcc-kernel-clock:
64f2b883bbSLinus Walleij    description: A subnode with two clock cells for PRCC (peripheral reset
65f2b883bbSLinus Walleij      and clock controller) kernel clocks. The first cell indicates which PRCC
66f2b883bbSLinus Walleij      block the consumer wants to use, possible values are 1, 2, 3, 5, 6. The
67f2b883bbSLinus Walleij      second cell indicates which clock inside the PRCC block it wants, possible
68f2b883bbSLinus Walleij      values are 0 thru 31.
69f2b883bbSLinus Walleij    type: object
70f2b883bbSLinus Walleij
71f2b883bbSLinus Walleij    properties:
72f2b883bbSLinus Walleij      '#clock-cells':
73f2b883bbSLinus Walleij        const: 2
74f2b883bbSLinus Walleij
75f2b883bbSLinus Walleij    additionalProperties: false
76f2b883bbSLinus Walleij
77f2b883bbSLinus Walleij  prcc-reset-controller:
78f2b883bbSLinus Walleij    description: A subnode with two reset cells for the reset portions of the
79f2b883bbSLinus Walleij      PRCC (peripheral reset and clock controller). The first cell indicates
80f2b883bbSLinus Walleij      which PRCC block the consumer wants to use, possible values are 1, 2, 3
81f2b883bbSLinus Walleij      5 and 6. The second cell indicates which reset line inside the PRCC block
82f2b883bbSLinus Walleij      it wants to control, possible values are 0 thru 31.
83f2b883bbSLinus Walleij    type: object
84f2b883bbSLinus Walleij
85f2b883bbSLinus Walleij    properties:
86f2b883bbSLinus Walleij      '#reset-cells':
87f2b883bbSLinus Walleij        const: 2
88f2b883bbSLinus Walleij
89f2b883bbSLinus Walleij    additionalProperties: false
90f2b883bbSLinus Walleij
91f2b883bbSLinus Walleij  rtc32k-clock:
92f2b883bbSLinus Walleij    description: A subnode with zero clock cells for the 32kHz RTC clock.
93f2b883bbSLinus Walleij    type: object
94f2b883bbSLinus Walleij
95f2b883bbSLinus Walleij    properties:
96f2b883bbSLinus Walleij      '#clock-cells':
97f2b883bbSLinus Walleij        const: 0
98f2b883bbSLinus Walleij
99f2b883bbSLinus Walleij    additionalProperties: false
100f2b883bbSLinus Walleij
101f2b883bbSLinus Walleij  smp-twd-clock:
102f2b883bbSLinus Walleij    description: A subnode for the ARM SMP Timer Watchdog cluster with zero
103f2b883bbSLinus Walleij      clock cells.
104f2b883bbSLinus Walleij    type: object
105f2b883bbSLinus Walleij
106f2b883bbSLinus Walleij    properties:
107f2b883bbSLinus Walleij      '#clock-cells':
108f2b883bbSLinus Walleij        const: 0
109f2b883bbSLinus Walleij
110f2b883bbSLinus Walleij    additionalProperties: false
111f2b883bbSLinus Walleij
112*7335631fSLinus Walleij  clkout-clock:
113*7335631fSLinus Walleij    description: A subnode with three clock cells for externally routed clocks,
114*7335631fSLinus Walleij      output clocks. These are two PRCMU-internal clocks that can be divided and
115*7335631fSLinus Walleij      muxed out on the pads of the DB8500 SoC.
116*7335631fSLinus Walleij    type: object
117*7335631fSLinus Walleij
118*7335631fSLinus Walleij    properties:
119*7335631fSLinus Walleij      '#clock-cells':
120*7335631fSLinus Walleij        description:
121*7335631fSLinus Walleij          The first cell indicates which output clock we are using,
122*7335631fSLinus Walleij          possible values are 0 (CLKOUT1) and 1 (CLKOUT2).
123*7335631fSLinus Walleij          The second cell indicates which clock we want to use as source,
124*7335631fSLinus Walleij          possible values are 0 thru 7, see the defines for the different
125*7335631fSLinus Walleij          source clocks.
126*7335631fSLinus Walleij          The third cell is a divider, legal values are 1 thru 63.
127*7335631fSLinus Walleij        const: 3
128*7335631fSLinus Walleij
129*7335631fSLinus Walleij    additionalProperties: false
130*7335631fSLinus Walleij
131f2b883bbSLinus Walleijrequired:
132f2b883bbSLinus Walleij  - compatible
133f2b883bbSLinus Walleij  - reg
134f2b883bbSLinus Walleij  - prcmu-clock
135f2b883bbSLinus Walleij  - prcc-periph-clock
136f2b883bbSLinus Walleij  - prcc-kernel-clock
137f2b883bbSLinus Walleij  - rtc32k-clock
138f2b883bbSLinus Walleij  - smp-twd-clock
139f2b883bbSLinus Walleij
140f2b883bbSLinus WalleijadditionalProperties: false
141*7335631fSLinus Walleij
142*7335631fSLinus Walleijexamples:
143*7335631fSLinus Walleij  - |
144*7335631fSLinus Walleij    #include <dt-bindings/clock/ste-db8500-clkout.h>
145*7335631fSLinus Walleij    clocks@8012 {
146*7335631fSLinus Walleij      compatible = "stericsson,u8500-clks";
147*7335631fSLinus Walleij      reg = <0x8012f000 0x1000>, <0x8011f000 0x1000>,
148*7335631fSLinus Walleij            <0x8000f000 0x1000>, <0xa03ff000 0x1000>,
149*7335631fSLinus Walleij            <0xa03cf000 0x1000>;
150*7335631fSLinus Walleij
151*7335631fSLinus Walleij      prcmu_clk: prcmu-clock {
152*7335631fSLinus Walleij        #clock-cells = <1>;
153*7335631fSLinus Walleij      };
154*7335631fSLinus Walleij
155*7335631fSLinus Walleij      prcc_pclk: prcc-periph-clock {
156*7335631fSLinus Walleij        #clock-cells = <2>;
157*7335631fSLinus Walleij      };
158*7335631fSLinus Walleij
159*7335631fSLinus Walleij      prcc_kclk: prcc-kernel-clock {
160*7335631fSLinus Walleij        #clock-cells = <2>;
161*7335631fSLinus Walleij      };
162*7335631fSLinus Walleij
163*7335631fSLinus Walleij      prcc_reset: prcc-reset-controller {
164*7335631fSLinus Walleij        #reset-cells = <2>;
165*7335631fSLinus Walleij      };
166*7335631fSLinus Walleij
167*7335631fSLinus Walleij      rtc_clk: rtc32k-clock {
168*7335631fSLinus Walleij        #clock-cells = <0>;
169*7335631fSLinus Walleij      };
170*7335631fSLinus Walleij
171*7335631fSLinus Walleij      smp_twd_clk: smp-twd-clock {
172*7335631fSLinus Walleij        #clock-cells = <0>;
173*7335631fSLinus Walleij      };
174*7335631fSLinus Walleij
175*7335631fSLinus Walleij      clkout_clk: clkout-clock {
176*7335631fSLinus Walleij        #clock-cells = <3>;
177*7335631fSLinus Walleij      };
178*7335631fSLinus Walleij    };
179