1# SPDX-License-Identifier: GPL-2.0-only
2config KRAIT_CLOCKS
3       bool
4       select KRAIT_L2_ACCESSORS
5
6config QCOM_GDSC
7	bool
8	select PM_GENERIC_DOMAINS if PM
9
10config QCOM_RPMCC
11	bool
12
13menuconfig COMMON_CLK_QCOM
14	tristate "Support for Qualcomm's clock controllers"
15	depends on OF
16	depends on ARCH_QCOM || COMPILE_TEST
17	select REGMAP_MMIO
18	select RESET_CONTROLLER
19
20if COMMON_CLK_QCOM
21
22config QCOM_A53PLL
23	tristate "MSM8916 A53 PLL"
24	help
25	  Support for the A53 PLL on MSM8916 devices. It provides
26	  the CPU with frequencies above 1GHz.
27	  Say Y if you want to support higher CPU frequencies on MSM8916
28	  devices.
29
30config QCOM_CLK_APCS_MSM8916
31	tristate "MSM8916 APCS Clock Controller"
32	depends on QCOM_APCS_IPC || COMPILE_TEST
33	help
34	  Support for the APCS Clock Controller on msm8916 devices. The
35	  APCS is managing the mux and divider which feeds the CPUs.
36	  Say Y if you want to support CPU frequency scaling on devices
37	  such as msm8916.
38
39config QCOM_CLK_RPM
40	tristate "RPM based Clock Controller"
41	depends on MFD_QCOM_RPM
42	select QCOM_RPMCC
43	help
44	  The RPM (Resource Power Manager) is a dedicated hardware engine for
45	  managing the shared SoC resources in order to keep the lowest power
46	  profile. It communicates with other hardware subsystems via shared
47	  memory and accepts clock requests, aggregates the requests and turns
48	  the clocks on/off or scales them on demand.
49	  Say Y if you want to support the clocks exposed by the RPM on
50	  platforms such as apq8064, msm8660, msm8960 etc.
51
52config QCOM_CLK_SMD_RPM
53	tristate "RPM over SMD based Clock Controller"
54	depends on QCOM_SMD_RPM
55	select QCOM_RPMCC
56	help
57	  The RPM (Resource Power Manager) is a dedicated hardware engine for
58	  managing the shared SoC resources in order to keep the lowest power
59	  profile. It communicates with other hardware subsystems via shared
60	  memory and accepts clock requests, aggregates the requests and turns
61	  the clocks on/off or scales them on demand.
62	  Say Y if you want to support the clocks exposed by the RPM on
63	  platforms such as apq8016, apq8084, msm8974 etc.
64
65config QCOM_CLK_RPMH
66	tristate "RPMh Clock Driver"
67	depends on QCOM_RPMH
68	help
69	 RPMh manages shared resources on some Qualcomm Technologies, Inc.
70	 SoCs. It accepts requests from other hardware subsystems via RSC.
71	 Say Y if you want to support the clocks exposed by RPMh on
72	 platforms such as SDM845.
73
74config APQ_GCC_8084
75	tristate "APQ8084 Global Clock Controller"
76	select QCOM_GDSC
77	help
78	  Support for the global clock controller on apq8084 devices.
79	  Say Y if you want to use peripheral devices such as UART, SPI,
80	  i2c, USB, SD/eMMC, SATA, PCIe, etc.
81
82config APQ_MMCC_8084
83	tristate "APQ8084 Multimedia Clock Controller"
84	select APQ_GCC_8084
85	select QCOM_GDSC
86	help
87	  Support for the multimedia clock controller on apq8084 devices.
88	  Say Y if you want to support multimedia devices such as display,
89	  graphics, video encode/decode, camera, etc.
90
91config IPQ_GCC_4019
92	tristate "IPQ4019 Global Clock Controller"
93	help
94	  Support for the global clock controller on ipq4019 devices.
95	  Say Y if you want to use peripheral devices such as UART, SPI,
96	  i2c, USB, SD/eMMC, etc.
97
98config IPQ_GCC_806X
99	tristate "IPQ806x Global Clock Controller"
100	help
101	  Support for the global clock controller on ipq806x devices.
102	  Say Y if you want to use peripheral devices such as UART, SPI,
103	  i2c, USB, SD/eMMC, etc.
104
105config IPQ_LCC_806X
106	tristate "IPQ806x LPASS Clock Controller"
107	select IPQ_GCC_806X
108	help
109	  Support for the LPASS clock controller on ipq806x devices.
110	  Say Y if you want to use audio devices such as i2s, pcm,
111	  S/PDIF, etc.
112
113config IPQ_GCC_8074
114	tristate "IPQ8074 Global Clock Controller"
115	help
116	  Support for global clock controller on ipq8074 devices.
117	  Say Y if you want to use peripheral devices such as UART, SPI,
118	  i2c, USB, SD/eMMC, etc. Select this for the root clock
119	  of ipq8074.
120
121config MSM_GCC_8660
122	tristate "MSM8660 Global Clock Controller"
123	help
124	  Support for the global clock controller on msm8660 devices.
125	  Say Y if you want to use peripheral devices such as UART, SPI,
126	  i2c, USB, SD/eMMC, etc.
127
128config MSM_GCC_8916
129	tristate "MSM8916 Global Clock Controller"
130	select QCOM_GDSC
131	help
132	  Support for the global clock controller on msm8916 devices.
133	  Say Y if you want to use devices such as UART, SPI i2c, USB,
134	  SD/eMMC, display, graphics, camera etc.
135
136config MSM_GCC_8960
137	tristate "APQ8064/MSM8960 Global Clock Controller"
138	help
139	  Support for the global clock controller on apq8064/msm8960 devices.
140	  Say Y if you want to use peripheral devices such as UART, SPI,
141	  i2c, USB, SD/eMMC, SATA, PCIe, etc.
142
143config MSM_LCC_8960
144	tristate "APQ8064/MSM8960 LPASS Clock Controller"
145	select MSM_GCC_8960
146	help
147	  Support for the LPASS clock controller on apq8064/msm8960 devices.
148	  Say Y if you want to use audio devices such as i2s, pcm,
149	  SLIMBus, etc.
150
151config MDM_GCC_9615
152	tristate "MDM9615 Global Clock Controller"
153	help
154	  Support for the global clock controller on mdm9615 devices.
155	  Say Y if you want to use peripheral devices such as UART, SPI,
156	  i2c, USB, SD/eMMC, etc.
157
158config MDM_LCC_9615
159	tristate "MDM9615 LPASS Clock Controller"
160	select MDM_GCC_9615
161	help
162	  Support for the LPASS clock controller on mdm9615 devices.
163	  Say Y if you want to use audio devices such as i2s, pcm,
164	  SLIMBus, etc.
165
166config MSM_MMCC_8960
167	tristate "MSM8960 Multimedia Clock Controller"
168	select MSM_GCC_8960
169	help
170	  Support for the multimedia clock controller on msm8960 devices.
171	  Say Y if you want to support multimedia devices such as display,
172	  graphics, video encode/decode, camera, etc.
173
174config MSM_GCC_8974
175	tristate "MSM8974 Global Clock Controller"
176	select QCOM_GDSC
177	help
178	  Support for the global clock controller on msm8974 devices.
179	  Say Y if you want to use peripheral devices such as UART, SPI,
180	  i2c, USB, SD/eMMC, SATA, PCIe, etc.
181
182config MSM_MMCC_8974
183	tristate "MSM8974 Multimedia Clock Controller"
184	select MSM_GCC_8974
185	select QCOM_GDSC
186	help
187	  Support for the multimedia clock controller on msm8974 devices.
188	  Say Y if you want to support multimedia devices such as display,
189	  graphics, video encode/decode, camera, etc.
190
191config MSM_GCC_8994
192	tristate "MSM8994 Global Clock Controller"
193	help
194	  Support for the global clock controller on msm8994 devices.
195	  Say Y if you want to use peripheral devices such as UART, SPI,
196	  i2c, USB, UFS, SD/eMMC, PCIe, etc.
197
198config MSM_GCC_8996
199	tristate "MSM8996 Global Clock Controller"
200	select QCOM_GDSC
201	help
202	  Support for the global clock controller on msm8996 devices.
203	  Say Y if you want to use peripheral devices such as UART, SPI,
204	  i2c, USB, UFS, SD/eMMC, PCIe, etc.
205
206config MSM_MMCC_8996
207	tristate "MSM8996 Multimedia Clock Controller"
208	select MSM_GCC_8996
209	select QCOM_GDSC
210	help
211	  Support for the multimedia clock controller on msm8996 devices.
212	  Say Y if you want to support multimedia devices such as display,
213	  graphics, video encode/decode, camera, etc.
214
215config MSM_GCC_8998
216	tristate "MSM8998 Global Clock Controller"
217	select QCOM_GDSC
218	help
219	  Support for the global clock controller on msm8998 devices.
220	  Say Y if you want to use peripheral devices such as UART, SPI,
221	  i2c, USB, UFS, SD/eMMC, PCIe, etc.
222
223config QCS_GCC_404
224	tristate "QCS404 Global Clock Controller"
225	help
226	  Support for the global clock controller on QCS404 devices.
227	  Say Y if you want to use multimedia devices or peripheral
228	  devices such as UART, SPI, I2C, USB, SD/eMMC, PCIe etc.
229
230config SDM_CAMCC_845
231	tristate "SDM845 Camera Clock Controller"
232	select SDM_GCC_845
233	help
234	  Support for the camera clock controller on SDM845 devices.
235	  Say Y if you want to support camera devices and camera functionality.
236
237config SDM_GCC_660
238	tristate "SDM660 Global Clock Controller"
239	select QCOM_GDSC
240	help
241	  Support for the global clock controller on SDM660 devices.
242	  Say Y if you want to use peripheral devices such as UART, SPI,
243	  i2C, USB, UFS, SDDC, PCIe, etc.
244
245config QCS_TURING_404
246	tristate "QCS404 Turing Clock Controller"
247	help
248	  Support for the Turing Clock Controller on QCS404, provides clocks
249	  and resets for the Turing subsystem.
250
251config SDM_GCC_845
252	tristate "SDM845 Global Clock Controller"
253	select QCOM_GDSC
254	help
255	  Support for the global clock controller on SDM845 devices.
256	  Say Y if you want to use peripheral devices such as UART, SPI,
257	  i2C, USB, UFS, SDDC, PCIe, etc.
258
259config SDM_GPUCC_845
260	tristate "SDM845 Graphics Clock Controller"
261	select SDM_GCC_845
262	help
263	  Support for the graphics clock controller on SDM845 devices.
264	  Say Y if you want to support graphics controller devices and
265	  functionality such as 3D graphics.
266
267config SDM_VIDEOCC_845
268	tristate "SDM845 Video Clock Controller"
269	select SDM_GCC_845
270	select QCOM_GDSC
271	help
272	  Support for the video clock controller on SDM845 devices.
273	  Say Y if you want to support video devices and functionality such as
274	  video encode and decode.
275
276config SDM_DISPCC_845
277	tristate "SDM845 Display Clock Controller"
278	select SDM_GCC_845
279	help
280	  Support for the display clock controller on Qualcomm Technologies, Inc
281	  SDM845 devices.
282	  Say Y if you want to support display devices and functionality such as
283	  splash screen.
284
285config SDM_LPASSCC_845
286	tristate "SDM845 Low Power Audio Subsystem (LPAAS) Clock Controller"
287	select SDM_GCC_845
288	help
289	  Support for the LPASS clock controller on SDM845 devices.
290	  Say Y if you want to use the LPASS branch clocks of the LPASS clock
291	  controller to reset the LPASS subsystem.
292
293config SM_GCC_8150
294	tristate "SM8150 Global Clock Controller"
295	help
296	  Support for the global clock controller on SM8150 devices.
297	  Say Y if you want to use peripheral devices such as UART,
298	  SPI, I2C, USB, SD/UFS, PCIe etc.
299
300config SPMI_PMIC_CLKDIV
301	tristate "SPMI PMIC clkdiv Support"
302	depends on SPMI || COMPILE_TEST
303	help
304	  This driver supports the clkdiv functionality on the Qualcomm
305	  Technologies, Inc. SPMI PMIC. It configures the frequency of
306	  clkdiv outputs of the PMIC. These clocks are typically wired
307	  through alternate functions on GPIO pins.
308
309config QCOM_HFPLL
310	tristate "High-Frequency PLL (HFPLL) Clock Controller"
311	help
312	  Support for the high-frequency PLLs present on Qualcomm devices.
313	  Say Y if you want to support CPU frequency scaling on devices
314	  such as MSM8974, APQ8084, etc.
315
316config KPSS_XCC
317	tristate "KPSS Clock Controller"
318	help
319	  Support for the Krait ACC and GCC clock controllers. Say Y
320	  if you want to support CPU frequency scaling on devices such
321	  as MSM8960, APQ8064, etc.
322
323config KRAITCC
324	tristate "Krait Clock Controller"
325	depends on ARM
326	select KRAIT_CLOCKS
327	help
328	  Support for the Krait CPU clocks on Qualcomm devices.
329	  Say Y if you want to support CPU frequency scaling.
330
331endif
332