# SPDX-License-Identifier: GPL-2.0-only
menu "Clock support for Amlogic platforms"
	depends on ARCH_MESON || COMPILE_TEST

config COMMON_CLK_MESON_REGMAP
	tristate
	select REGMAP

config COMMON_CLK_MESON_DUALDIV
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_MPLL
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_PHASE
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_PLL
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_SCLK_DIV
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_VID_PLL_DIV
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_CLKC_UTILS
	tristate

config COMMON_CLK_MESON_AO_CLKC
	tristate
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_CLKC_UTILS
	select RESET_CONTROLLER

config COMMON_CLK_MESON_EE_CLKC
	tristate
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_CLKC_UTILS

config COMMON_CLK_MESON_CPU_DYNDIV
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON8B
	bool "Meson8 SoC Clock controller support"
	depends on ARM
	default y
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_CLKC_UTILS
	select COMMON_CLK_MESON_MPLL
	select COMMON_CLK_MESON_PLL
	select MFD_SYSCON
	select RESET_CONTROLLER
	help
	  Support for the clock controller on AmLogic S802 (Meson8),
	  S805 (Meson8b) and S812 (Meson8m2) devices. Say Y if you
	  want peripherals and CPU frequency scaling to work.

config COMMON_CLK_GXBB
	tristate "GXBB and GXL SoC clock controllers support"
	depends on ARM64
	default y
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_DUALDIV
	select COMMON_CLK_MESON_VID_PLL_DIV
	select COMMON_CLK_MESON_MPLL
	select COMMON_CLK_MESON_PLL
	select COMMON_CLK_MESON_AO_CLKC
	select COMMON_CLK_MESON_EE_CLKC
	select MFD_SYSCON
	help
	  Support for the clock controller on AmLogic S905 devices, aka gxbb.
	  Say Y if you want peripherals and CPU frequency scaling to work.

config COMMON_CLK_AXG
	tristate "AXG SoC clock controllers support"
	depends on ARM64
	default y
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_DUALDIV
	select COMMON_CLK_MESON_MPLL
	select COMMON_CLK_MESON_PLL
	select COMMON_CLK_MESON_AO_CLKC
	select COMMON_CLK_MESON_EE_CLKC
	select MFD_SYSCON
	help
	  Support for the clock controller on AmLogic A113D devices, aka axg.
	  Say Y if you want peripherals and CPU frequency scaling to work.

config COMMON_CLK_AXG_AUDIO
	tristate "Meson AXG Audio Clock Controller Driver"
	depends on ARM64
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_PHASE
	select COMMON_CLK_MESON_SCLK_DIV
	select COMMON_CLK_MESON_CLKC_UTILS
	select REGMAP_MMIO
	help
	  Support for the audio clock controller on AmLogic A113D devices,
	  aka axg, Say Y if you want audio subsystem to work.

config COMMON_CLK_A1_PLL
	tristate "Amlogic A1 SoC PLL controller support"
	depends on ARM64
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_CLKC_UTILS
	select COMMON_CLK_MESON_PLL
	help
	  Support for the PLL clock controller on Amlogic A113L based
	  device, A1 SoC Family. Say Y if you want A1 PLL clock controller
	  to work.

config COMMON_CLK_A1_PERIPHERALS
	tristate "Amlogic A1 SoC Peripherals clock controller support"
	depends on ARM64
	select COMMON_CLK_MESON_DUALDIV
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_CLKC_UTILS
	help
	  Support for the Peripherals clock controller on Amlogic A113L based
	  device, A1 SoC Family. Say Y if you want A1 Peripherals clock
	  controller to work.

config COMMON_CLK_G12A
	tristate "G12 and SM1 SoC clock controllers support"
	depends on ARM64
	default y
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_DUALDIV
	select COMMON_CLK_MESON_MPLL
	select COMMON_CLK_MESON_PLL
	select COMMON_CLK_MESON_AO_CLKC
	select COMMON_CLK_MESON_EE_CLKC
	select COMMON_CLK_MESON_CPU_DYNDIV
	select COMMON_CLK_MESON_VID_PLL_DIV
	select MFD_SYSCON
	help
	  Support for the clock controller on Amlogic S905D2, S905X2 and S905Y2
	  devices, aka g12a. Say Y if you want peripherals to work.

config COMMON_CLK_S4_PLL
	tristate "S4 SoC PLL clock controllers support"
	depends on ARM64
	default y
	select COMMON_CLK_MESON_CLKC_UTILS
	select COMMON_CLK_MESON_MPLL
	select COMMON_CLK_MESON_PLL
	select COMMON_CLK_MESON_REGMAP
	help
	  Support for the PLL clock controller on Amlogic S805X2 and S905Y4 devices,
	  AKA S4. Say Y if you want the board to work, because PLLs are the parent of
	  most peripherals.

config COMMON_CLK_S4_PERIPHERALS
	tristate "S4 SoC peripherals clock controllers support"
	depends on ARM64
	default y
	select COMMON_CLK_MESON_CLKC_UTILS
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_DUALDIV
	select COMMON_CLK_MESON_VID_PLL_DIV
	help
	  Support for the peripherals clock controller on Amlogic S805X2 and S905Y4
	  devices, AKA S4. Say Y if you want S4 peripherals clock controller to work.
endmenu
