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 RATIONAL
18	select REGMAP_MMIO
19	select RESET_CONTROLLER
20
21if COMMON_CLK_QCOM
22
23config QCOM_A53PLL
24	tristate "MSM8916 A53 PLL"
25	help
26	  Support for the A53 PLL on MSM8916 devices. It provides
27	  the CPU with frequencies above 1GHz.
28	  Say Y if you want to support higher CPU frequencies on MSM8916
29	  devices.
30
31config QCOM_CLK_APCS_MSM8916
32	tristate "MSM8916 APCS Clock Controller"
33	depends on QCOM_APCS_IPC || COMPILE_TEST
34	help
35	  Support for the APCS Clock Controller on msm8916 devices. The
36	  APCS is managing the mux and divider which feeds the CPUs.
37	  Say Y if you want to support CPU frequency scaling on devices
38	  such as msm8916.
39
40config QCOM_CLK_APCC_MSM8996
41	tristate "MSM8996 CPU Clock Controller"
42	select QCOM_KRYO_L2_ACCESSORS
43	depends on ARM64
44	help
45	  Support for the CPU clock controller on msm8996 devices.
46	  Say Y if you want to support CPU clock scaling using CPUfreq
47	  drivers for dyanmic power management.
48
49config QCOM_CLK_RPM
50	tristate "RPM based Clock Controller"
51	depends on MFD_QCOM_RPM
52	select QCOM_RPMCC
53	help
54	  The RPM (Resource Power Manager) is a dedicated hardware engine for
55	  managing the shared SoC resources in order to keep the lowest power
56	  profile. It communicates with other hardware subsystems via shared
57	  memory and accepts clock requests, aggregates the requests and turns
58	  the clocks on/off or scales them on demand.
59	  Say Y if you want to support the clocks exposed by the RPM on
60	  platforms such as apq8064, msm8660, msm8960 etc.
61
62config QCOM_CLK_SMD_RPM
63	tristate "RPM over SMD based Clock Controller"
64	depends on QCOM_SMD_RPM
65	select QCOM_RPMCC
66	help
67	  The RPM (Resource Power Manager) is a dedicated hardware engine for
68	  managing the shared SoC resources in order to keep the lowest power
69	  profile. It communicates with other hardware subsystems via shared
70	  memory and accepts clock requests, aggregates the requests and turns
71	  the clocks on/off or scales them on demand.
72	  Say Y if you want to support the clocks exposed by the RPM on
73	  platforms such as apq8016, apq8084, msm8974 etc.
74
75config QCOM_CLK_RPMH
76	tristate "RPMh Clock Driver"
77	depends on QCOM_RPMH
78	help
79	 RPMh manages shared resources on some Qualcomm Technologies, Inc.
80	 SoCs. It accepts requests from other hardware subsystems via RSC.
81	 Say Y if you want to support the clocks exposed by RPMh on
82	 platforms such as SDM845.
83
84config APQ_GCC_8084
85	tristate "APQ8084 Global Clock Controller"
86	select QCOM_GDSC
87	help
88	  Support for the global clock controller on apq8084 devices.
89	  Say Y if you want to use peripheral devices such as UART, SPI,
90	  i2c, USB, SD/eMMC, SATA, PCIe, etc.
91
92config APQ_MMCC_8084
93	tristate "APQ8084 Multimedia Clock Controller"
94	select APQ_GCC_8084
95	select QCOM_GDSC
96	help
97	  Support for the multimedia clock controller on apq8084 devices.
98	  Say Y if you want to support multimedia devices such as display,
99	  graphics, video encode/decode, camera, etc.
100
101config IPQ_APSS_PLL
102	tristate "IPQ APSS PLL"
103	help
104	  Support for APSS PLL on ipq devices. The APSS PLL is the main
105	  clock that feeds the CPUs on ipq based devices.
106	  Say Y if you want to support CPU frequency scaling on ipq based
107	  devices.
108
109config IPQ_APSS_6018
110	tristate "IPQ APSS Clock Controller"
111	select IPQ_APSS_PLL
112	depends on QCOM_APCS_IPC || COMPILE_TEST
113	help
114	  Support for APSS clock controller on IPQ platforms. The
115	  APSS clock controller manages the Mux and enable block that feeds the
116	  CPUs.
117	  Say Y if you want to support CPU frequency scaling on
118	  ipq based devices.
119
120config IPQ_GCC_4019
121	tristate "IPQ4019 Global Clock Controller"
122	help
123	  Support for the global clock controller on ipq4019 devices.
124	  Say Y if you want to use peripheral devices such as UART, SPI,
125	  i2c, USB, SD/eMMC, etc.
126
127config IPQ_GCC_6018
128	tristate "IPQ6018 Global Clock Controller"
129	help
130	  Support for global clock controller on ipq6018 devices.
131	  Say Y if you want to use peripheral devices such as UART, SPI,
132	  i2c, USB, SD/eMMC, etc. Select this for the root clock
133	  of ipq6018.
134
135config IPQ_GCC_806X
136	tristate "IPQ806x Global Clock Controller"
137	help
138	  Support for the global clock controller on ipq806x devices.
139	  Say Y if you want to use peripheral devices such as UART, SPI,
140	  i2c, USB, SD/eMMC, etc.
141
142config IPQ_LCC_806X
143	tristate "IPQ806x LPASS Clock Controller"
144	select IPQ_GCC_806X
145	help
146	  Support for the LPASS clock controller on ipq806x devices.
147	  Say Y if you want to use audio devices such as i2s, pcm,
148	  S/PDIF, etc.
149
150config IPQ_GCC_8074
151	tristate "IPQ8074 Global Clock Controller"
152	help
153	  Support for global clock controller on ipq8074 devices.
154	  Say Y if you want to use peripheral devices such as UART, SPI,
155	  i2c, USB, SD/eMMC, etc. Select this for the root clock
156	  of ipq8074.
157
158config MSM_GCC_8660
159	tristate "MSM8660 Global Clock Controller"
160	help
161	  Support for the global clock controller on msm8660 devices.
162	  Say Y if you want to use peripheral devices such as UART, SPI,
163	  i2c, USB, SD/eMMC, etc.
164
165config MSM_GCC_8916
166	tristate "MSM8916 Global Clock Controller"
167	select QCOM_GDSC
168	help
169	  Support for the global clock controller on msm8916 devices.
170	  Say Y if you want to use devices such as UART, SPI i2c, USB,
171	  SD/eMMC, display, graphics, camera etc.
172
173config MSM_GCC_8939
174	tristate "MSM8939 Global Clock Controller"
175	select QCOM_GDSC
176	help
177	  Support for the global clock controller on msm8939 devices.
178	  Say Y if you want to use devices such as UART, SPI i2c, USB,
179	  SD/eMMC, display, graphics, camera etc.
180
181config MSM_GCC_8960
182	tristate "APQ8064/MSM8960 Global Clock Controller"
183	help
184	  Support for the global clock controller on apq8064/msm8960 devices.
185	  Say Y if you want to use peripheral devices such as UART, SPI,
186	  i2c, USB, SD/eMMC, SATA, PCIe, etc.
187
188config MSM_LCC_8960
189	tristate "APQ8064/MSM8960 LPASS Clock Controller"
190	select MSM_GCC_8960
191	help
192	  Support for the LPASS clock controller on apq8064/msm8960 devices.
193	  Say Y if you want to use audio devices such as i2s, pcm,
194	  SLIMBus, etc.
195
196config MDM_GCC_9615
197	tristate "MDM9615 Global Clock Controller"
198	help
199	  Support for the global clock controller on mdm9615 devices.
200	  Say Y if you want to use peripheral devices such as UART, SPI,
201	  i2c, USB, SD/eMMC, etc.
202
203config MDM_LCC_9615
204	tristate "MDM9615 LPASS Clock Controller"
205	select MDM_GCC_9615
206	help
207	  Support for the LPASS clock controller on mdm9615 devices.
208	  Say Y if you want to use audio devices such as i2s, pcm,
209	  SLIMBus, etc.
210
211config MSM_MMCC_8960
212	tristate "MSM8960 Multimedia Clock Controller"
213	select MSM_GCC_8960
214	help
215	  Support for the multimedia clock controller on msm8960 devices.
216	  Say Y if you want to support multimedia devices such as display,
217	  graphics, video encode/decode, camera, etc.
218
219config MSM_GCC_8974
220	tristate "MSM8974 Global Clock Controller"
221	select QCOM_GDSC
222	help
223	  Support for the global clock controller on msm8974 devices.
224	  Say Y if you want to use peripheral devices such as UART, SPI,
225	  i2c, USB, SD/eMMC, SATA, PCIe, etc.
226
227config MSM_MMCC_8974
228	tristate "MSM8974 Multimedia Clock Controller"
229	select MSM_GCC_8974
230	select QCOM_GDSC
231	help
232	  Support for the multimedia clock controller on msm8974 devices.
233	  Say Y if you want to support multimedia devices such as display,
234	  graphics, video encode/decode, camera, etc.
235
236config MSM_GCC_8994
237	tristate "MSM8994 Global Clock Controller"
238	help
239	  Support for the global clock controller on msm8994 devices.
240	  Say Y if you want to use peripheral devices such as UART, SPI,
241	  i2c, USB, UFS, SD/eMMC, PCIe, etc.
242
243config MSM_GCC_8996
244	tristate "MSM8996 Global Clock Controller"
245	select QCOM_GDSC
246	help
247	  Support for the global clock controller on msm8996 devices.
248	  Say Y if you want to use peripheral devices such as UART, SPI,
249	  i2c, USB, UFS, SD/eMMC, PCIe, etc.
250
251config MSM_MMCC_8996
252	tristate "MSM8996 Multimedia Clock Controller"
253	select MSM_GCC_8996
254	select QCOM_GDSC
255	help
256	  Support for the multimedia clock controller on msm8996 devices.
257	  Say Y if you want to support multimedia devices such as display,
258	  graphics, video encode/decode, camera, etc.
259
260config MSM_GCC_8998
261	tristate "MSM8998 Global Clock Controller"
262	select QCOM_GDSC
263	help
264	  Support for the global clock controller on msm8998 devices.
265	  Say Y if you want to use peripheral devices such as UART, SPI,
266	  i2c, USB, UFS, SD/eMMC, PCIe, etc.
267
268config MSM_GPUCC_8998
269	tristate "MSM8998 Graphics Clock Controller"
270	select MSM_GCC_8998
271	select QCOM_GDSC
272	help
273	  Support for the graphics clock controller on MSM8998 devices.
274	  Say Y if you want to support graphics controller devices and
275	  functionality such as 3D graphics.
276
277config MSM_MMCC_8998
278	tristate "MSM8998 Multimedia Clock Controller"
279	select MSM_GCC_8998
280	select QCOM_GDSC
281	help
282	  Support for the multimedia clock controller on msm8998 devices.
283	  Say Y if you want to support multimedia devices such as display,
284	  graphics, video encode/decode, camera, etc.
285
286config QCS_GCC_404
287	tristate "QCS404 Global Clock Controller"
288	help
289	  Support for the global clock controller on QCS404 devices.
290	  Say Y if you want to use multimedia devices or peripheral
291	  devices such as UART, SPI, I2C, USB, SD/eMMC, PCIe etc.
292
293config SC_DISPCC_7180
294	tristate "SC7180 Display Clock Controller"
295	select SC_GCC_7180
296	help
297	  Support for the display clock controller on Qualcomm Technologies, Inc
298	  SC7180 devices.
299	  Say Y if you want to support display devices and functionality such as
300	  splash screen.
301
302config SC_GCC_7180
303	tristate "SC7180 Global Clock Controller"
304	select QCOM_GDSC
305	depends on COMMON_CLK_QCOM
306	help
307	  Support for the global clock controller on SC7180 devices.
308	  Say Y if you want to use peripheral devices such as UART, SPI,
309	  I2C, USB, UFS, SDCC, etc.
310
311config SC_LPASS_CORECC_7180
312	tristate "SC7180 LPASS Core Clock Controller"
313	select SC_GCC_7180
314	help
315	  Support for the LPASS(Low Power Audio Subsystem) core clock controller
316	  on SC7180 devices.
317	  Say Y if you want to use LPASS clocks and power domains of the LPASS
318	  core clock controller.
319
320config SC_GPUCC_7180
321	tristate "SC7180 Graphics Clock Controller"
322	select SC_GCC_7180
323	help
324	  Support for the graphics clock controller on SC7180 devices.
325	  Say Y if you want to support graphics controller devices and
326	  functionality such as 3D graphics.
327
328config SC_MSS_7180
329	tristate "SC7180 Modem Clock Controller"
330	select SC_GCC_7180
331	help
332	  Support for the Modem Subsystem clock controller on Qualcomm
333	  Technologies, Inc on SC7180 devices.
334	  Say Y if you want to use the Modem branch clocks of the Modem
335	  subsystem clock controller to reset the MSS subsystem.
336
337config SC_VIDEOCC_7180
338	tristate "SC7180 Video Clock Controller"
339	select SC_GCC_7180
340	help
341	  Support for the video clock controller on SC7180 devices.
342	  Say Y if you want to support video devices and functionality such as
343	  video encode and decode.
344
345config SDM_CAMCC_845
346	tristate "SDM845 Camera Clock Controller"
347	select SDM_GCC_845
348	help
349	  Support for the camera clock controller on SDM845 devices.
350	  Say Y if you want to support camera devices and camera functionality.
351
352config SDM_GCC_660
353	tristate "SDM660 Global Clock Controller"
354	select QCOM_GDSC
355	help
356	  Support for the global clock controller on SDM660 devices.
357	  Say Y if you want to use peripheral devices such as UART, SPI,
358	  i2C, USB, UFS, SDDC, PCIe, etc.
359
360config QCS_TURING_404
361	tristate "QCS404 Turing Clock Controller"
362	help
363	  Support for the Turing Clock Controller on QCS404, provides clocks
364	  and resets for the Turing subsystem.
365
366config QCS_Q6SSTOP_404
367	tristate "QCS404 Q6SSTOP Clock Controller"
368	select QCS_GCC_404
369	help
370	  Support for the Q6SSTOP clock controller on QCS404 devices.
371	  Say Y if you want to use the Q6SSTOP branch clocks of the WCSS clock
372	  controller to reset the Q6SSTOP subsystem.
373
374config SDM_GCC_845
375	tristate "SDM845 Global Clock Controller"
376	select QCOM_GDSC
377	help
378	  Support for the global clock controller on SDM845 devices.
379	  Say Y if you want to use peripheral devices such as UART, SPI,
380	  i2C, USB, UFS, SDDC, PCIe, etc.
381
382config SDM_GPUCC_845
383	tristate "SDM845 Graphics Clock Controller"
384	select SDM_GCC_845
385	help
386	  Support for the graphics clock controller on SDM845 devices.
387	  Say Y if you want to support graphics controller devices and
388	  functionality such as 3D graphics.
389
390config SDM_VIDEOCC_845
391	tristate "SDM845 Video Clock Controller"
392	select SDM_GCC_845
393	select QCOM_GDSC
394	help
395	  Support for the video clock controller on SDM845 devices.
396	  Say Y if you want to support video devices and functionality such as
397	  video encode and decode.
398
399config SDM_DISPCC_845
400	tristate "SDM845 Display Clock Controller"
401	select SDM_GCC_845
402	help
403	  Support for the display clock controller on Qualcomm Technologies, Inc
404	  SDM845 devices.
405	  Say Y if you want to support display devices and functionality such as
406	  splash screen.
407
408config SDM_LPASSCC_845
409	tristate "SDM845 Low Power Audio Subsystem (LPAAS) Clock Controller"
410	select SDM_GCC_845
411	help
412	  Support for the LPASS clock controller on SDM845 devices.
413	  Say Y if you want to use the LPASS branch clocks of the LPASS clock
414	  controller to reset the LPASS subsystem.
415
416config SM_DISPCC_8250
417	tristate "SM8150 and SM8250 Display Clock Controller"
418	depends on SM_GCC_8150 || SM_GCC_8250
419	help
420	  Support for the display clock controller on Qualcomm Technologies, Inc
421	  SM8150 and SM8250 devices.
422	  Say Y if you want to support display devices and functionality such as
423	  splash screen.
424
425config SM_GCC_8150
426	tristate "SM8150 Global Clock Controller"
427	help
428	  Support for the global clock controller on SM8150 devices.
429	  Say Y if you want to use peripheral devices such as UART,
430	  SPI, I2C, USB, SD/UFS, PCIe etc.
431
432config SM_GCC_8250
433	tristate "SM8250 Global Clock Controller"
434	select QCOM_GDSC
435	help
436	  Support for the global clock controller on SM8250 devices.
437	  Say Y if you want to use peripheral devices such as UART,
438	  SPI, I2C, USB, SD/UFS, PCIe etc.
439
440config SM_GPUCC_8150
441	tristate "SM8150 Graphics Clock Controller"
442	select SM_GCC_8150
443	help
444	  Support for the graphics clock controller on SM8150 devices.
445	  Say Y if you want to support graphics controller devices and
446	  functionality such as 3D graphics.
447
448config SM_GPUCC_8250
449	tristate "SM8250 Graphics Clock Controller"
450	select SM_GCC_8250
451	help
452	  Support for the graphics clock controller on SM8250 devices.
453	  Say Y if you want to support graphics controller devices and
454	  functionality such as 3D graphics.
455
456config SM_VIDEOCC_8150
457	tristate "SM8150 Video Clock Controller"
458	select SDM_GCC_8150
459	select QCOM_GDSC
460	help
461	  Support for the video clock controller on SM8150 devices.
462	  Say Y if you want to support video devices and functionality such as
463	  video encode and decode.
464
465config SM_VIDEOCC_8250
466	tristate "SM8250 Video Clock Controller"
467	select SDM_GCC_8250
468	select QCOM_GDSC
469	help
470	  Support for the video clock controller on SM8250 devices.
471	  Say Y if you want to support video devices and functionality such as
472	  video encode and decode.
473
474config SPMI_PMIC_CLKDIV
475	tristate "SPMI PMIC clkdiv Support"
476	depends on SPMI || COMPILE_TEST
477	help
478	  This driver supports the clkdiv functionality on the Qualcomm
479	  Technologies, Inc. SPMI PMIC. It configures the frequency of
480	  clkdiv outputs of the PMIC. These clocks are typically wired
481	  through alternate functions on GPIO pins.
482
483config QCOM_HFPLL
484	tristate "High-Frequency PLL (HFPLL) Clock Controller"
485	help
486	  Support for the high-frequency PLLs present on Qualcomm devices.
487	  Say Y if you want to support CPU frequency scaling on devices
488	  such as MSM8974, APQ8084, etc.
489
490config KPSS_XCC
491	tristate "KPSS Clock Controller"
492	help
493	  Support for the Krait ACC and GCC clock controllers. Say Y
494	  if you want to support CPU frequency scaling on devices such
495	  as MSM8960, APQ8064, etc.
496
497config KRAITCC
498	tristate "Krait Clock Controller"
499	depends on ARM
500	select KRAIT_CLOCKS
501	help
502	  Support for the Krait CPU clocks on Qualcomm devices.
503	  Say Y if you want to support CPU frequency scaling.
504
505endif
506