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_GPUCC_7180 312 tristate "SC7180 Graphics Clock Controller" 313 select SC_GCC_7180 314 help 315 Support for the graphics clock controller on SC7180 devices. 316 Say Y if you want to support graphics controller devices and 317 functionality such as 3D graphics. 318 319config SC_MSS_7180 320 tristate "SC7180 Modem Clock Controller" 321 select SC_GCC_7180 322 help 323 Support for the Modem Subsystem clock controller on Qualcomm 324 Technologies, Inc on SC7180 devices. 325 Say Y if you want to use the Modem branch clocks of the Modem 326 subsystem clock controller to reset the MSS subsystem. 327 328config SC_VIDEOCC_7180 329 tristate "SC7180 Video Clock Controller" 330 select SC_GCC_7180 331 help 332 Support for the video clock controller on SC7180 devices. 333 Say Y if you want to support video devices and functionality such as 334 video encode and decode. 335 336config SDM_CAMCC_845 337 tristate "SDM845 Camera Clock Controller" 338 select SDM_GCC_845 339 help 340 Support for the camera clock controller on SDM845 devices. 341 Say Y if you want to support camera devices and camera functionality. 342 343config SDM_GCC_660 344 tristate "SDM660 Global Clock Controller" 345 select QCOM_GDSC 346 help 347 Support for the global clock controller on SDM660 devices. 348 Say Y if you want to use peripheral devices such as UART, SPI, 349 i2C, USB, UFS, SDDC, PCIe, etc. 350 351config QCS_TURING_404 352 tristate "QCS404 Turing Clock Controller" 353 help 354 Support for the Turing Clock Controller on QCS404, provides clocks 355 and resets for the Turing subsystem. 356 357config QCS_Q6SSTOP_404 358 tristate "QCS404 Q6SSTOP Clock Controller" 359 select QCS_GCC_404 360 help 361 Support for the Q6SSTOP clock controller on QCS404 devices. 362 Say Y if you want to use the Q6SSTOP branch clocks of the WCSS clock 363 controller to reset the Q6SSTOP subsystem. 364 365config SDM_GCC_845 366 tristate "SDM845 Global Clock Controller" 367 select QCOM_GDSC 368 help 369 Support for the global clock controller on SDM845 devices. 370 Say Y if you want to use peripheral devices such as UART, SPI, 371 i2C, USB, UFS, SDDC, PCIe, etc. 372 373config SDM_GPUCC_845 374 tristate "SDM845 Graphics Clock Controller" 375 select SDM_GCC_845 376 help 377 Support for the graphics clock controller on SDM845 devices. 378 Say Y if you want to support graphics controller devices and 379 functionality such as 3D graphics. 380 381config SDM_VIDEOCC_845 382 tristate "SDM845 Video Clock Controller" 383 select SDM_GCC_845 384 select QCOM_GDSC 385 help 386 Support for the video clock controller on SDM845 devices. 387 Say Y if you want to support video devices and functionality such as 388 video encode and decode. 389 390config SDM_DISPCC_845 391 tristate "SDM845 Display Clock Controller" 392 select SDM_GCC_845 393 help 394 Support for the display clock controller on Qualcomm Technologies, Inc 395 SDM845 devices. 396 Say Y if you want to support display devices and functionality such as 397 splash screen. 398 399config SDM_LPASSCC_845 400 tristate "SDM845 Low Power Audio Subsystem (LPAAS) Clock Controller" 401 select SDM_GCC_845 402 help 403 Support for the LPASS clock controller on SDM845 devices. 404 Say Y if you want to use the LPASS branch clocks of the LPASS clock 405 controller to reset the LPASS subsystem. 406 407config SM_GCC_8150 408 tristate "SM8150 Global Clock Controller" 409 help 410 Support for the global clock controller on SM8150 devices. 411 Say Y if you want to use peripheral devices such as UART, 412 SPI, I2C, USB, SD/UFS, PCIe etc. 413 414config SM_GCC_8250 415 tristate "SM8250 Global Clock Controller" 416 select QCOM_GDSC 417 help 418 Support for the global clock controller on SM8250 devices. 419 Say Y if you want to use peripheral devices such as UART, 420 SPI, I2C, USB, SD/UFS, PCIe etc. 421 422config SPMI_PMIC_CLKDIV 423 tristate "SPMI PMIC clkdiv Support" 424 depends on SPMI || COMPILE_TEST 425 help 426 This driver supports the clkdiv functionality on the Qualcomm 427 Technologies, Inc. SPMI PMIC. It configures the frequency of 428 clkdiv outputs of the PMIC. These clocks are typically wired 429 through alternate functions on GPIO pins. 430 431config QCOM_HFPLL 432 tristate "High-Frequency PLL (HFPLL) Clock Controller" 433 help 434 Support for the high-frequency PLLs present on Qualcomm devices. 435 Say Y if you want to support CPU frequency scaling on devices 436 such as MSM8974, APQ8084, etc. 437 438config KPSS_XCC 439 tristate "KPSS Clock Controller" 440 help 441 Support for the Krait ACC and GCC clock controllers. Say Y 442 if you want to support CPU frequency scaling on devices such 443 as MSM8960, APQ8064, etc. 444 445config KRAITCC 446 tristate "Krait Clock Controller" 447 depends on ARM 448 select KRAIT_CLOCKS 449 help 450 Support for the Krait CPU clocks on Qualcomm devices. 451 Say Y if you want to support CPU frequency scaling. 452 453endif 454