Skip to content

Commit c0979bc

Browse files
committed
Merge branch 'for-v6.12/clk-dt-bindings' into next/clk
2 parents 011a9de + 997daa8 commit c0979bc

File tree

2 files changed

+353
-0
lines changed

2 files changed

+353
-0
lines changed
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/clock/samsung,exynosautov920-clock.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Samsung ExynosAuto v920 SoC clock controller
8+
9+
maintainers:
10+
- Sunyeal Hong <[email protected]>
11+
- Chanwoo Choi <[email protected]>
12+
- Krzysztof Kozlowski <[email protected]>
13+
- Sylwester Nawrocki <[email protected]>
14+
15+
description: |
16+
ExynosAuto v920 clock controller is comprised of several CMU units, generating
17+
clocks for different domains. Those CMU units are modeled as separate device
18+
tree nodes, and might depend on each other. Root clocks in that clock tree are
19+
two external clocks:: OSCCLK/XTCXO (38.4 MHz) and RTCCLK/XrtcXTI (32768 Hz).
20+
The external OSCCLK must be defined as fixed-rate clock in dts.
21+
22+
CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
23+
dividers; all other clocks of function blocks (other CMUs) are usually
24+
derived from CMU_TOP.
25+
26+
Each clock is assigned an identifier and client nodes can use this identifier
27+
to specify the clock which they consume. All clocks available for usage
28+
in clock consumer nodes are defined as preprocessor macros in
29+
'include/dt-bindings/clock/samsung,exynosautov920.h' header.
30+
31+
properties:
32+
compatible:
33+
enum:
34+
- samsung,exynosautov920-cmu-top
35+
- samsung,exynosautov920-cmu-peric0
36+
- samsung,exynosautov920-cmu-peric1
37+
- samsung,exynosautov920-cmu-misc
38+
- samsung,exynosautov920-cmu-hsi0
39+
- samsung,exynosautov920-cmu-hsi1
40+
41+
clocks:
42+
minItems: 1
43+
maxItems: 4
44+
45+
clock-names:
46+
minItems: 1
47+
maxItems: 4
48+
49+
"#clock-cells":
50+
const: 1
51+
52+
reg:
53+
maxItems: 1
54+
55+
allOf:
56+
- if:
57+
properties:
58+
compatible:
59+
contains:
60+
const: samsung,exynosautov920-cmu-top
61+
62+
then:
63+
properties:
64+
clocks:
65+
items:
66+
- description: External reference clock (38.4 MHz)
67+
68+
clock-names:
69+
items:
70+
- const: oscclk
71+
72+
- if:
73+
properties:
74+
compatible:
75+
contains:
76+
enum:
77+
- samsung,exynosautov920-cmu-peric0
78+
- samsung,exynosautov920-cmu-peric1
79+
80+
then:
81+
properties:
82+
clocks:
83+
items:
84+
- description: External reference clock (38.4 MHz)
85+
- description: CMU_PERICn NOC clock (from CMU_TOP)
86+
- description: CMU_PERICn IP clock (from CMU_TOP)
87+
88+
clock-names:
89+
items:
90+
- const: oscclk
91+
- const: noc
92+
- const: ip
93+
94+
- if:
95+
properties:
96+
compatible:
97+
enum:
98+
- samsung,exynosautov920-cmu-misc
99+
- samsung,exynosautov920-cmu-hsi0
100+
101+
then:
102+
properties:
103+
clocks:
104+
items:
105+
- description: External reference clock (38.4 MHz)
106+
- description: CMU_MISC/CMU_HSI0 NOC clock (from CMU_TOP)
107+
108+
clock-names:
109+
items:
110+
- const: oscclk
111+
- const: noc
112+
113+
- if:
114+
properties:
115+
compatible:
116+
contains:
117+
const: samsung,exynosautov920-cmu-hsi1
118+
119+
then:
120+
properties:
121+
clocks:
122+
items:
123+
- description: External reference clock (38.4 MHz)
124+
- description: CMU_HSI1 NOC clock (from CMU_TOP)
125+
- description: CMU_HSI1 USBDRD clock (from CMU_TOP)
126+
- description: CMU_HSI1 MMC_CARD clock (from CMU_TOP)
127+
128+
clock-names:
129+
items:
130+
- const: oscclk
131+
- const: noc
132+
- const: usbdrd
133+
- const: mmc_card
134+
135+
required:
136+
- compatible
137+
- "#clock-cells"
138+
- clocks
139+
- clock-names
140+
- reg
141+
142+
additionalProperties: false
143+
144+
examples:
145+
# Clock controller node for CMU_PERIC0
146+
- |
147+
#include <dt-bindings/clock/samsung,exynosautov920.h>
148+
149+
cmu_peric0: clock-controller@10800000 {
150+
compatible = "samsung,exynosautov920-cmu-peric0";
151+
reg = <0x10800000 0x8000>;
152+
#clock-cells = <1>;
153+
154+
clocks = <&xtcxo>,
155+
<&cmu_top DOUT_CLKCMU_PERIC0_NOC>,
156+
<&cmu_top DOUT_CLKCMU_PERIC0_IP>;
157+
clock-names = "oscclk",
158+
"noc",
159+
"ip";
160+
};
161+
162+
...
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
2+
/*
3+
* Copyright (c) 2024 Samsung Electronics Co., Ltd.
4+
* Author: Sunyeal Hong <[email protected]>
5+
*
6+
* Device Tree binding constants for ExynosAuto v920 clock controller.
7+
*/
8+
9+
#ifndef _DT_BINDINGS_CLOCK_EXYNOSAUTOV920_H
10+
#define _DT_BINDINGS_CLOCK_EXYNOSAUTOV920_H
11+
12+
/* CMU_TOP */
13+
#define FOUT_SHARED0_PLL 1
14+
#define FOUT_SHARED1_PLL 2
15+
#define FOUT_SHARED2_PLL 3
16+
#define FOUT_SHARED3_PLL 4
17+
#define FOUT_SHARED4_PLL 5
18+
#define FOUT_SHARED5_PLL 6
19+
#define FOUT_MMC_PLL 7
20+
21+
/* MUX in CMU_TOP */
22+
#define MOUT_SHARED0_PLL 8
23+
#define MOUT_SHARED1_PLL 9
24+
#define MOUT_SHARED2_PLL 10
25+
#define MOUT_SHARED3_PLL 11
26+
#define MOUT_SHARED4_PLL 12
27+
#define MOUT_SHARED5_PLL 13
28+
#define MOUT_MMC_PLL 14
29+
#define MOUT_CLKCMU_CMU_BOOST 15
30+
#define MOUT_CLKCMU_CMU_CMUREF 16
31+
#define MOUT_CLKCMU_ACC_NOC 17
32+
#define MOUT_CLKCMU_ACC_ORB 18
33+
#define MOUT_CLKCMU_APM_NOC 19
34+
#define MOUT_CLKCMU_AUD_CPU 20
35+
#define MOUT_CLKCMU_AUD_NOC 21
36+
#define MOUT_CLKCMU_CPUCL0_SWITCH 22
37+
#define MOUT_CLKCMU_CPUCL0_CLUSTER 23
38+
#define MOUT_CLKCMU_CPUCL0_DBG 24
39+
#define MOUT_CLKCMU_CPUCL1_SWITCH 25
40+
#define MOUT_CLKCMU_CPUCL1_CLUSTER 26
41+
#define MOUT_CLKCMU_CPUCL2_SWITCH 27
42+
#define MOUT_CLKCMU_CPUCL2_CLUSTER 28
43+
#define MOUT_CLKCMU_DNC_NOC 29
44+
#define MOUT_CLKCMU_DPTX_NOC 30
45+
#define MOUT_CLKCMU_DPTX_DPGTC 31
46+
#define MOUT_CLKCMU_DPTX_DPOSC 32
47+
#define MOUT_CLKCMU_DPUB_NOC 33
48+
#define MOUT_CLKCMU_DPUB_DSIM 34
49+
#define MOUT_CLKCMU_DPUF0_NOC 35
50+
#define MOUT_CLKCMU_DPUF1_NOC 36
51+
#define MOUT_CLKCMU_DPUF2_NOC 37
52+
#define MOUT_CLKCMU_DSP_NOC 38
53+
#define MOUT_CLKCMU_G3D_SWITCH 39
54+
#define MOUT_CLKCMU_G3D_NOCP 40
55+
#define MOUT_CLKCMU_GNPU_NOC 41
56+
#define MOUT_CLKCMU_HSI0_NOC 42
57+
#define MOUT_CLKCMU_HSI1_NOC 43
58+
#define MOUT_CLKCMU_HSI1_USBDRD 44
59+
#define MOUT_CLKCMU_HSI1_MMC_CARD 45
60+
#define MOUT_CLKCMU_HSI2_NOC 46
61+
#define MOUT_CLKCMU_HSI2_NOC_UFS 47
62+
#define MOUT_CLKCMU_HSI2_UFS_EMBD 48
63+
#define MOUT_CLKCMU_HSI2_ETHERNET 49
64+
#define MOUT_CLKCMU_ISP_NOC 50
65+
#define MOUT_CLKCMU_M2M_NOC 51
66+
#define MOUT_CLKCMU_M2M_JPEG 52
67+
#define MOUT_CLKCMU_MFC_MFC 53
68+
#define MOUT_CLKCMU_MFC_WFD 54
69+
#define MOUT_CLKCMU_MFD_NOC 55
70+
#define MOUT_CLKCMU_MIF_SWITCH 56
71+
#define MOUT_CLKCMU_MIF_NOCP 57
72+
#define MOUT_CLKCMU_MISC_NOC 58
73+
#define MOUT_CLKCMU_NOCL0_NOC 59
74+
#define MOUT_CLKCMU_NOCL1_NOC 60
75+
#define MOUT_CLKCMU_NOCL2_NOC 61
76+
#define MOUT_CLKCMU_PERIC0_NOC 62
77+
#define MOUT_CLKCMU_PERIC0_IP 63
78+
#define MOUT_CLKCMU_PERIC1_NOC 64
79+
#define MOUT_CLKCMU_PERIC1_IP 65
80+
#define MOUT_CLKCMU_SDMA_NOC 66
81+
#define MOUT_CLKCMU_SNW_NOC 67
82+
#define MOUT_CLKCMU_SSP_NOC 68
83+
#define MOUT_CLKCMU_TAA_NOC 69
84+
85+
/* DIV in CMU_TOP */
86+
#define DOUT_SHARED0_DIV1 70
87+
#define DOUT_SHARED0_DIV2 71
88+
#define DOUT_SHARED0_DIV3 72
89+
#define DOUT_SHARED0_DIV4 73
90+
#define DOUT_SHARED1_DIV1 74
91+
#define DOUT_SHARED1_DIV2 75
92+
#define DOUT_SHARED1_DIV3 76
93+
#define DOUT_SHARED1_DIV4 77
94+
#define DOUT_SHARED2_DIV1 78
95+
#define DOUT_SHARED2_DIV2 79
96+
#define DOUT_SHARED2_DIV3 80
97+
#define DOUT_SHARED2_DIV4 81
98+
#define DOUT_SHARED3_DIV1 82
99+
#define DOUT_SHARED3_DIV2 83
100+
#define DOUT_SHARED3_DIV3 84
101+
#define DOUT_SHARED3_DIV4 85
102+
#define DOUT_SHARED4_DIV1 86
103+
#define DOUT_SHARED4_DIV2 87
104+
#define DOUT_SHARED4_DIV3 88
105+
#define DOUT_SHARED4_DIV4 89
106+
#define DOUT_SHARED5_DIV1 90
107+
#define DOUT_SHARED5_DIV2 91
108+
#define DOUT_SHARED5_DIV3 92
109+
#define DOUT_SHARED5_DIV4 93
110+
#define DOUT_CLKCMU_CMU_BOOST 94
111+
#define DOUT_CLKCMU_ACC_NOC 95
112+
#define DOUT_CLKCMU_ACC_ORB 96
113+
#define DOUT_CLKCMU_APM_NOC 97
114+
#define DOUT_CLKCMU_AUD_CPU 98
115+
#define DOUT_CLKCMU_AUD_NOC 99
116+
#define DOUT_CLKCMU_CPUCL0_SWITCH 100
117+
#define DOUT_CLKCMU_CPUCL0_CLUSTER 101
118+
#define DOUT_CLKCMU_CPUCL0_DBG 102
119+
#define DOUT_CLKCMU_CPUCL1_SWITCH 103
120+
#define DOUT_CLKCMU_CPUCL1_CLUSTER 104
121+
#define DOUT_CLKCMU_CPUCL2_SWITCH 105
122+
#define DOUT_CLKCMU_CPUCL2_CLUSTER 106
123+
#define DOUT_CLKCMU_DNC_NOC 107
124+
#define DOUT_CLKCMU_DPTX_NOC 108
125+
#define DOUT_CLKCMU_DPTX_DPGTC 109
126+
#define DOUT_CLKCMU_DPTX_DPOSC 110
127+
#define DOUT_CLKCMU_DPUB_NOC 111
128+
#define DOUT_CLKCMU_DPUB_DSIM 112
129+
#define DOUT_CLKCMU_DPUF0_NOC 113
130+
#define DOUT_CLKCMU_DPUF1_NOC 114
131+
#define DOUT_CLKCMU_DPUF2_NOC 115
132+
#define DOUT_CLKCMU_DSP_NOC 116
133+
#define DOUT_CLKCMU_G3D_SWITCH 117
134+
#define DOUT_CLKCMU_G3D_NOCP 118
135+
#define DOUT_CLKCMU_GNPU_NOC 119
136+
#define DOUT_CLKCMU_HSI0_NOC 120
137+
#define DOUT_CLKCMU_HSI1_NOC 121
138+
#define DOUT_CLKCMU_HSI1_USBDRD 122
139+
#define DOUT_CLKCMU_HSI1_MMC_CARD 123
140+
#define DOUT_CLKCMU_HSI2_NOC 124
141+
#define DOUT_CLKCMU_HSI2_NOC_UFS 125
142+
#define DOUT_CLKCMU_HSI2_UFS_EMBD 126
143+
#define DOUT_CLKCMU_HSI2_ETHERNET 127
144+
#define DOUT_CLKCMU_ISP_NOC 128
145+
#define DOUT_CLKCMU_M2M_NOC 129
146+
#define DOUT_CLKCMU_M2M_JPEG 130
147+
#define DOUT_CLKCMU_MFC_MFC 131
148+
#define DOUT_CLKCMU_MFC_WFD 132
149+
#define DOUT_CLKCMU_MFD_NOC 133
150+
#define DOUT_CLKCMU_MIF_NOCP 134
151+
#define DOUT_CLKCMU_MISC_NOC 135
152+
#define DOUT_CLKCMU_NOCL0_NOC 136
153+
#define DOUT_CLKCMU_NOCL1_NOC 137
154+
#define DOUT_CLKCMU_NOCL2_NOC 138
155+
#define DOUT_CLKCMU_PERIC0_NOC 139
156+
#define DOUT_CLKCMU_PERIC0_IP 140
157+
#define DOUT_CLKCMU_PERIC1_NOC 141
158+
#define DOUT_CLKCMU_PERIC1_IP 142
159+
#define DOUT_CLKCMU_SDMA_NOC 143
160+
#define DOUT_CLKCMU_SNW_NOC 144
161+
#define DOUT_CLKCMU_SSP_NOC 145
162+
#define DOUT_CLKCMU_TAA_NOC 146
163+
164+
/* CMU_PERIC0 */
165+
#define CLK_MOUT_PERIC0_IP_USER 1
166+
#define CLK_MOUT_PERIC0_NOC_USER 2
167+
#define CLK_MOUT_PERIC0_USI00_USI 3
168+
#define CLK_MOUT_PERIC0_USI01_USI 4
169+
#define CLK_MOUT_PERIC0_USI02_USI 5
170+
#define CLK_MOUT_PERIC0_USI03_USI 6
171+
#define CLK_MOUT_PERIC0_USI04_USI 7
172+
#define CLK_MOUT_PERIC0_USI05_USI 8
173+
#define CLK_MOUT_PERIC0_USI06_USI 9
174+
#define CLK_MOUT_PERIC0_USI07_USI 10
175+
#define CLK_MOUT_PERIC0_USI08_USI 11
176+
#define CLK_MOUT_PERIC0_USI_I2C 12
177+
#define CLK_MOUT_PERIC0_I3C 13
178+
179+
#define CLK_DOUT_PERIC0_USI00_USI 14
180+
#define CLK_DOUT_PERIC0_USI01_USI 15
181+
#define CLK_DOUT_PERIC0_USI02_USI 16
182+
#define CLK_DOUT_PERIC0_USI03_USI 17
183+
#define CLK_DOUT_PERIC0_USI04_USI 18
184+
#define CLK_DOUT_PERIC0_USI05_USI 19
185+
#define CLK_DOUT_PERIC0_USI06_USI 20
186+
#define CLK_DOUT_PERIC0_USI07_USI 21
187+
#define CLK_DOUT_PERIC0_USI08_USI 22
188+
#define CLK_DOUT_PERIC0_USI_I2C 23
189+
#define CLK_DOUT_PERIC0_I3C 24
190+
191+
#endif /* _DT_BINDINGS_CLOCK_EXYNOSAUTOV920_H */

0 commit comments

Comments
 (0)