# SPDX-License-Identifier: GPL-2.0-only

config CLK_BCM2711_DVP
	tristate "Broadcom BCM2711 DVP support"
	depends on ARCH_BCM2835 ||COMPILE_TEST
	depends on COMMON_CLK
	default ARCH_BCM2835
	select RESET_CONTROLLER
	select RESET_SIMPLE
	help
	  Enable common clock framework support for the Broadcom BCM2711
	  DVP Controller.

config CLK_BCM2835
	bool "Broadcom BCM2835 clock support"
	depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
	depends on COMMON_CLK
	default ARCH_BCM2835 || ARCH_BRCMSTB
	help
	  Enable common clock framework support for Broadcom BCM2835
	  SoCs.

config CLK_BCM_63XX
	bool "Broadcom BCM63xx clock support"
	depends on ARCH_BCMBCA || COMPILE_TEST
	select COMMON_CLK_IPROC
	default ARCH_BCMBCA
	help
	  Enable common clock framework support for Broadcom BCM63xx DSL SoCs
	  based on the ARM architecture

config CLK_BCM_63XX_GATE
	bool "Broadcom BCM63xx gated clock support"
	depends on BMIPS_GENERIC || COMPILE_TEST
	default BMIPS_GENERIC
	help
	  Enable common clock framework support for Broadcom BCM63xx DSL SoCs
	  based on the MIPS architecture

config CLK_BCM_KONA
	bool "Broadcom Kona CCU clock support"
	depends on ARCH_BCM_MOBILE || COMPILE_TEST
	default ARCH_BCM_MOBILE
	help
	  Enable common clock framework support for Broadcom SoCs
	  using "Kona" style clock control units, including those
	  in the BCM281xx and BCM21664 families.

config COMMON_CLK_IPROC
	bool
	help
	  Enable common clock framework support for Broadcom SoCs
	  based on the iProc architecture

config CLK_BCM_CYGNUS
	bool "Broadcom Cygnus clock support"
	depends on ARCH_BCM_CYGNUS || COMPILE_TEST
	select COMMON_CLK_IPROC
	default ARCH_BCM_CYGNUS
	help
	  Enable common clock framework support for the Broadcom Cygnus SoC

config CLK_BCM_HR2
	bool "Broadcom Hurricane 2 clock support"
	depends on ARCH_BCM_HR2 || COMPILE_TEST
	select COMMON_CLK_IPROC
	default ARCH_BCM_HR2
	help
	  Enable common clock framework support for the Broadcom Hurricane 2
	  SoC

config CLK_BCM_NSP
	bool "Broadcom Northstar/Northstar Plus clock support"
	depends on ARCH_BCM_5301X || ARCH_BCM_NSP || COMPILE_TEST
	select COMMON_CLK_IPROC
	default ARCH_BCM_5301X || ARCH_BCM_NSP
	help
	  Enable common clock framework support for the Broadcom Northstar and
	  Northstar Plus SoCs

config CLK_BCM_NS2
	bool "Broadcom Northstar 2 clock support"
	depends on ARCH_BCM_IPROC || COMPILE_TEST
	select COMMON_CLK_IPROC
	default ARCH_BCM_IPROC
	help
	  Enable common clock framework support for the Broadcom Northstar 2 SoC

config CLK_BCM_SR
	bool "Broadcom Stingray clock support"
	depends on ARCH_BCM_IPROC || COMPILE_TEST
	select COMMON_CLK_IPROC
	default ARCH_BCM_IPROC
	help
	  Enable common clock framework support for the Broadcom Stingray SoC

config CLK_RASPBERRYPI
	tristate "Raspberry Pi firmware based clock support"
	depends on RASPBERRYPI_FIRMWARE || (COMPILE_TEST && !RASPBERRYPI_FIRMWARE)
	help
	  Enable common clock framework support for Raspberry Pi's firmware
	  dependent clocks
