# SPDX-License-Identifier: GPL-2.0-only
config KRAIT_CLOCKS
	bool
	select KRAIT_L2_ACCESSORS

config QCOM_GDSC
	bool
	select PM_GENERIC_DOMAINS if PM

config QCOM_RPMCC
	bool

menuconfig COMMON_CLK_QCOM
	tristate "Support for Qualcomm's clock controllers"
	depends on OF
	depends on ARCH_QCOM || COMPILE_TEST
	select RATIONAL
	select REGMAP_MMIO
	select RESET_CONTROLLER

if COMMON_CLK_QCOM

config QCOM_A53PLL
	tristate "MSM8916 A53 PLL"
	help
	  Support for the A53 PLL on MSM8916 devices. It provides
	  the CPU with frequencies above 1GHz.
	  Say Y if you want to support higher CPU frequencies on MSM8916
	  devices.

config QCOM_CLK_APCS_MSM8916
	tristate "MSM8916 APCS Clock Controller"
	depends on QCOM_APCS_IPC || COMPILE_TEST
	help
	  Support for the APCS Clock Controller on msm8916 devices. The
	  APCS is managing the mux and divider which feeds the CPUs.
	  Say Y if you want to support CPU frequency scaling on devices
	  such as msm8916.

config QCOM_CLK_APCC_MSM8996
	tristate "MSM8996 CPU Clock Controller"
	select QCOM_KRYO_L2_ACCESSORS
	depends on ARM64
	help
	  Support for the CPU clock controller on msm8996 devices.
	  Say Y if you want to support CPU clock scaling using CPUfreq
	  drivers for dyanmic power management.

config QCOM_CLK_RPM
	tristate "RPM based Clock Controller"
	depends on MFD_QCOM_RPM
	select QCOM_RPMCC
	help
	  The RPM (Resource Power Manager) is a dedicated hardware engine for
	  managing the shared SoC resources in order to keep the lowest power
	  profile. It communicates with other hardware subsystems via shared
	  memory and accepts clock requests, aggregates the requests and turns
	  the clocks on/off or scales them on demand.
	  Say Y if you want to support the clocks exposed by the RPM on
	  platforms such as apq8064, msm8660, msm8960 etc.

config QCOM_CLK_SMD_RPM
	tristate "RPM over SMD based Clock Controller"
	depends on QCOM_SMD_RPM
	select QCOM_RPMCC
	help
	  The RPM (Resource Power Manager) is a dedicated hardware engine for
	  managing the shared SoC resources in order to keep the lowest power
	  profile. It communicates with other hardware subsystems via shared
	  memory and accepts clock requests, aggregates the requests and turns
	  the clocks on/off or scales them on demand.
	  Say Y if you want to support the clocks exposed by the RPM on
	  platforms such as apq8016, apq8084, msm8974 etc.

config QCOM_CLK_RPMH
	tristate "RPMh Clock Driver"
	depends on QCOM_RPMH
	help
	 RPMh manages shared resources on some Qualcomm Technologies, Inc.
	 SoCs. It accepts requests from other hardware subsystems via RSC.
	 Say Y if you want to support the clocks exposed by RPMh on
	 platforms such as SDM845.

config APQ_GCC_8084
	tristate "APQ8084 Global Clock Controller"
	select QCOM_GDSC
	help
	  Support for the global clock controller on apq8084 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, SD/eMMC, SATA, PCIe, etc.

config APQ_MMCC_8084
	tristate "APQ8084 Multimedia Clock Controller"
	select APQ_GCC_8084
	select QCOM_GDSC
	help
	  Support for the multimedia clock controller on apq8084 devices.
	  Say Y if you want to support multimedia devices such as display,
	  graphics, video encode/decode, camera, etc.

config IPQ_APSS_PLL
	tristate "IPQ APSS PLL"
	help
	  Support for APSS PLL on ipq devices. The APSS PLL is the main
	  clock that feeds the CPUs on ipq based devices.
	  Say Y if you want to support CPU frequency scaling on ipq based
	  devices.

config IPQ_APSS_6018
	tristate "IPQ APSS Clock Controller"
	select IPQ_APSS_PLL
	depends on QCOM_APCS_IPC || COMPILE_TEST
	help
	  Support for APSS clock controller on IPQ platforms. The
	  APSS clock controller manages the Mux and enable block that feeds the
	  CPUs.
	  Say Y if you want to support CPU frequency scaling on
	  ipq based devices.

config IPQ_GCC_4019
	tristate "IPQ4019 Global Clock Controller"
	help
	  Support for the global clock controller on ipq4019 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, SD/eMMC, etc.

config IPQ_GCC_6018
	tristate "IPQ6018 Global Clock Controller"
	help
	  Support for global clock controller on ipq6018 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, SD/eMMC, etc. Select this for the root clock
	  of ipq6018.

config IPQ_GCC_806X
	tristate "IPQ806x Global Clock Controller"
	help
	  Support for the global clock controller on ipq806x devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, SD/eMMC, etc.

config IPQ_LCC_806X
	tristate "IPQ806x LPASS Clock Controller"
	select IPQ_GCC_806X
	help
	  Support for the LPASS clock controller on ipq806x devices.
	  Say Y if you want to use audio devices such as i2s, pcm,
	  S/PDIF, etc.

config IPQ_GCC_8074
	tristate "IPQ8074 Global Clock Controller"
	help
	  Support for global clock controller on ipq8074 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, SD/eMMC, etc. Select this for the root clock
	  of ipq8074.

config MSM_GCC_8660
	tristate "MSM8660 Global Clock Controller"
	help
	  Support for the global clock controller on msm8660 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, SD/eMMC, etc.

config MSM_GCC_8916
	tristate "MSM8916 Global Clock Controller"
	select QCOM_GDSC
	help
	  Support for the global clock controller on msm8916 devices.
	  Say Y if you want to use devices such as UART, SPI i2c, USB,
	  SD/eMMC, display, graphics, camera etc.

config MSM_GCC_8939
	tristate "MSM8939 Global Clock Controller"
	select QCOM_GDSC
	help
	  Support for the global clock controller on msm8939 devices.
	  Say Y if you want to use devices such as UART, SPI i2c, USB,
	  SD/eMMC, display, graphics, camera etc.

config MSM_GCC_8960
	tristate "APQ8064/MSM8960 Global Clock Controller"
	help
	  Support for the global clock controller on apq8064/msm8960 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, SD/eMMC, SATA, PCIe, etc.

config MSM_LCC_8960
	tristate "APQ8064/MSM8960 LPASS Clock Controller"
	select MSM_GCC_8960
	help
	  Support for the LPASS clock controller on apq8064/msm8960 devices.
	  Say Y if you want to use audio devices such as i2s, pcm,
	  SLIMBus, etc.

config MDM_GCC_9615
	tristate "MDM9615 Global Clock Controller"
	help
	  Support for the global clock controller on mdm9615 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, SD/eMMC, etc.

config MDM_LCC_9615
	tristate "MDM9615 LPASS Clock Controller"
	select MDM_GCC_9615
	help
	  Support for the LPASS clock controller on mdm9615 devices.
	  Say Y if you want to use audio devices such as i2s, pcm,
	  SLIMBus, etc.

config MSM_MMCC_8960
	tristate "MSM8960 Multimedia Clock Controller"
	select MSM_GCC_8960
	help
	  Support for the multimedia clock controller on msm8960 devices.
	  Say Y if you want to support multimedia devices such as display,
	  graphics, video encode/decode, camera, etc.

config MSM_GCC_8974
	tristate "MSM8974 Global Clock Controller"
	select QCOM_GDSC
	help
	  Support for the global clock controller on msm8974 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, SD/eMMC, SATA, PCIe, etc.

config MSM_MMCC_8974
	tristate "MSM8974 Multimedia Clock Controller"
	select MSM_GCC_8974
	select QCOM_GDSC
	help
	  Support for the multimedia clock controller on msm8974 devices.
	  Say Y if you want to support multimedia devices such as display,
	  graphics, video encode/decode, camera, etc.

config MSM_GCC_8994
	tristate "MSM8994 Global Clock Controller"
	help
	  Support for the global clock controller on msm8994 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, UFS, SD/eMMC, PCIe, etc.

config MSM_GCC_8996
	tristate "MSM8996 Global Clock Controller"
	select QCOM_GDSC
	help
	  Support for the global clock controller on msm8996 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, UFS, SD/eMMC, PCIe, etc.

config MSM_MMCC_8996
	tristate "MSM8996 Multimedia Clock Controller"
	select MSM_GCC_8996
	select QCOM_GDSC
	help
	  Support for the multimedia clock controller on msm8996 devices.
	  Say Y if you want to support multimedia devices such as display,
	  graphics, video encode/decode, camera, etc.

config MSM_GCC_8998
	tristate "MSM8998 Global Clock Controller"
	select QCOM_GDSC
	help
	  Support for the global clock controller on msm8998 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2c, USB, UFS, SD/eMMC, PCIe, etc.

config MSM_GPUCC_8998
	tristate "MSM8998 Graphics Clock Controller"
	select MSM_GCC_8998
	select QCOM_GDSC
	help
	  Support for the graphics clock controller on MSM8998 devices.
	  Say Y if you want to support graphics controller devices and
	  functionality such as 3D graphics.

config MSM_MMCC_8998
	tristate "MSM8998 Multimedia Clock Controller"
	select MSM_GCC_8998
	select QCOM_GDSC
	help
	  Support for the multimedia clock controller on msm8998 devices.
	  Say Y if you want to support multimedia devices such as display,
	  graphics, video encode/decode, camera, etc.

config QCS_GCC_404
	tristate "QCS404 Global Clock Controller"
	help
	  Support for the global clock controller on QCS404 devices.
	  Say Y if you want to use multimedia devices or peripheral
	  devices such as UART, SPI, I2C, USB, SD/eMMC, PCIe etc.

config SC_DISPCC_7180
	tristate "SC7180 Display Clock Controller"
	select SC_GCC_7180
	help
	  Support for the display clock controller on Qualcomm Technologies, Inc
	  SC7180 devices.
	  Say Y if you want to support display devices and functionality such as
	  splash screen.

config SC_GCC_7180
	tristate "SC7180 Global Clock Controller"
	select QCOM_GDSC
	depends on COMMON_CLK_QCOM
	help
	  Support for the global clock controller on SC7180 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  I2C, USB, UFS, SDCC, etc.

config SC_LPASS_CORECC_7180
	tristate "SC7180 LPASS Core Clock Controller"
	select SC_GCC_7180
	help
	  Support for the LPASS(Low Power Audio Subsystem) core clock controller
	  on SC7180 devices.
	  Say Y if you want to use LPASS clocks and power domains of the LPASS
	  core clock controller.

config SC_GPUCC_7180
	tristate "SC7180 Graphics Clock Controller"
	select SC_GCC_7180
	help
	  Support for the graphics clock controller on SC7180 devices.
	  Say Y if you want to support graphics controller devices and
	  functionality such as 3D graphics.

config SC_MSS_7180
	tristate "SC7180 Modem Clock Controller"
	select SC_GCC_7180
	help
	  Support for the Modem Subsystem clock controller on Qualcomm
	  Technologies, Inc on SC7180 devices.
	  Say Y if you want to use the Modem branch clocks of the Modem
	  subsystem clock controller to reset the MSS subsystem.

config SC_VIDEOCC_7180
	tristate "SC7180 Video Clock Controller"
	select SC_GCC_7180
	help
	  Support for the video clock controller on SC7180 devices.
	  Say Y if you want to support video devices and functionality such as
	  video encode and decode.

config SDM_CAMCC_845
	tristate "SDM845 Camera Clock Controller"
	select SDM_GCC_845
	help
	  Support for the camera clock controller on SDM845 devices.
	  Say Y if you want to support camera devices and camera functionality.

config SDM_GCC_660
	tristate "SDM660 Global Clock Controller"
	select QCOM_GDSC
	help
	  Support for the global clock controller on SDM660 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2C, USB, UFS, SDDC, PCIe, etc.

config QCS_TURING_404
	tristate "QCS404 Turing Clock Controller"
	help
	  Support for the Turing Clock Controller on QCS404, provides clocks
	  and resets for the Turing subsystem.

config QCS_Q6SSTOP_404
	tristate "QCS404 Q6SSTOP Clock Controller"
	select QCS_GCC_404
	help
	  Support for the Q6SSTOP clock controller on QCS404 devices.
	  Say Y if you want to use the Q6SSTOP branch clocks of the WCSS clock
	  controller to reset the Q6SSTOP subsystem.

config SDM_GCC_845
	tristate "SDM845 Global Clock Controller"
	select QCOM_GDSC
	help
	  Support for the global clock controller on SDM845 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI,
	  i2C, USB, UFS, SDDC, PCIe, etc.

config SDM_GPUCC_845
	tristate "SDM845 Graphics Clock Controller"
	select SDM_GCC_845
	help
	  Support for the graphics clock controller on SDM845 devices.
	  Say Y if you want to support graphics controller devices and
	  functionality such as 3D graphics.

config SDM_VIDEOCC_845
	tristate "SDM845 Video Clock Controller"
	select SDM_GCC_845
	select QCOM_GDSC
	help
	  Support for the video clock controller on SDM845 devices.
	  Say Y if you want to support video devices and functionality such as
	  video encode and decode.

config SDM_DISPCC_845
	tristate "SDM845 Display Clock Controller"
	select SDM_GCC_845
	help
	  Support for the display clock controller on Qualcomm Technologies, Inc
	  SDM845 devices.
	  Say Y if you want to support display devices and functionality such as
	  splash screen.

config SDM_LPASSCC_845
	tristate "SDM845 Low Power Audio Subsystem (LPAAS) Clock Controller"
	select SDM_GCC_845
	help
	  Support for the LPASS clock controller on SDM845 devices.
	  Say Y if you want to use the LPASS branch clocks of the LPASS clock
	  controller to reset the LPASS subsystem.

config SM_GCC_8150
	tristate "SM8150 Global Clock Controller"
	help
	  Support for the global clock controller on SM8150 devices.
	  Say Y if you want to use peripheral devices such as UART,
	  SPI, I2C, USB, SD/UFS, PCIe etc.

config SM_GCC_8250
	tristate "SM8250 Global Clock Controller"
	select QCOM_GDSC
	help
	  Support for the global clock controller on SM8250 devices.
	  Say Y if you want to use peripheral devices such as UART,
	  SPI, I2C, USB, SD/UFS, PCIe etc.

config SM_GPUCC_8150
	tristate "SM8150 Graphics Clock Controller"
	select SM_GCC_8150
	help
	  Support for the graphics clock controller on SM8150 devices.
	  Say Y if you want to support graphics controller devices and
	  functionality such as 3D graphics.

config SM_GPUCC_8250
	tristate "SM8250 Graphics Clock Controller"
	select SM_GCC_8250
	help
	  Support for the graphics clock controller on SM8250 devices.
	  Say Y if you want to support graphics controller devices and
	  functionality such as 3D graphics.

config SPMI_PMIC_CLKDIV
	tristate "SPMI PMIC clkdiv Support"
	depends on SPMI || COMPILE_TEST
	help
	  This driver supports the clkdiv functionality on the Qualcomm
	  Technologies, Inc. SPMI PMIC. It configures the frequency of
	  clkdiv outputs of the PMIC. These clocks are typically wired
	  through alternate functions on GPIO pins.

config QCOM_HFPLL
	tristate "High-Frequency PLL (HFPLL) Clock Controller"
	help
	  Support for the high-frequency PLLs present on Qualcomm devices.
	  Say Y if you want to support CPU frequency scaling on devices
	  such as MSM8974, APQ8084, etc.

config KPSS_XCC
	tristate "KPSS Clock Controller"
	help
	  Support for the Krait ACC and GCC clock controllers. Say Y
	  if you want to support CPU frequency scaling on devices such
	  as MSM8960, APQ8064, etc.

config KRAITCC
	tristate "Krait Clock Controller"
	depends on ARM
	select KRAIT_CLOCKS
	help
	  Support for the Krait CPU clocks on Qualcomm devices.
	  Say Y if you want to support CPU frequency scaling.

endif
