Commit bbd7ffdb authored by Stephen Boyd's avatar Stephen Boyd

clk: Allow the common clk framework to be selectable

Enable build testing and configuration control of the common clk
framework so that more code coverage and testing can be done on the
common clk framework across various architectures. This also nicely
removes the requirement that architectures must select the framework
when they don't use it in architecture code.

There's one snag with doing this, and that's making sure that randconfig
builds don't select this option when some architecture or platform
implements 'struct clk' outside of the common clk framework. Introduce a
new config option 'HAVE_LEGACY_CLK' to indicate those platforms that
haven't migrated to the common clk framework and therefore shouldn't be
allowed to select this new config option. Also add a note that we hope
one day to remove this config entirely.

Based on a patch by Mark Brown <broonie@kernel.org>.

Cc: Mark Brown <broonie@kernel.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Mark Salter <msalter@redhat.com>
Cc: Aurelien Jacquiot <jacquiot.aurelien@gmail.com>
Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
Cc: Guan Xuetao <gxt@pku.edu.cn>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Rich Felker <dalias@libc.org>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: <linux-mips@vger.kernel.org>
Cc: <linux-c6x-dev@linux-c6x.org>
Cc: <linux-m68k@lists.linux-m68k.org>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: <linux-sh@vger.kernel.org>
Link: https://lore.kernel.org/r/1470915049-15249-1-git-send-email-broonie@kernel.orgSigned-off-by: default avatarStephen Boyd <sboyd@kernel.org>
Link: https://lkml.kernel.org/r/20200409064416.83340-8-sboyd@kernel.orgReviewed-by: default avatarMark Brown <broonie@kernel.org>
Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 3fd2fdb3
...@@ -363,6 +363,7 @@ config ARCH_EP93XX ...@@ -363,6 +363,7 @@ config ARCH_EP93XX
select CPU_ARM920T select CPU_ARM920T
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GPIOLIB select GPIOLIB
select HAVE_LEGACY_CLK
help help
This enables support for the Cirrus EP93xx series of CPUs. This enables support for the Cirrus EP93xx series of CPUs.
...@@ -521,6 +522,7 @@ config ARCH_OMAP1 ...@@ -521,6 +522,7 @@ config ARCH_OMAP1
select GENERIC_IRQ_MULTI_HANDLER select GENERIC_IRQ_MULTI_HANDLER
select GPIOLIB select GPIOLIB
select HAVE_IDE select HAVE_IDE
select HAVE_LEGACY_CLK
select IRQ_DOMAIN select IRQ_DOMAIN
select NEED_MACH_IO_H if PCCARD select NEED_MACH_IO_H if PCCARD
select NEED_MACH_MEMORY_H select NEED_MACH_MEMORY_H
......
...@@ -11,6 +11,7 @@ config C6X ...@@ -11,6 +11,7 @@ config C6X
select ARCH_HAS_SYNC_DMA_FOR_CPU select ARCH_HAS_SYNC_DMA_FOR_CPU
select ARCH_HAS_SYNC_DMA_FOR_DEVICE select ARCH_HAS_SYNC_DMA_FOR_DEVICE
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select HAVE_LEGACY_CLK
select GENERIC_ATOMIC64 select GENERIC_ATOMIC64
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_TRACEHOOK
......
...@@ -28,7 +28,7 @@ config COLDFIRE ...@@ -28,7 +28,7 @@ config COLDFIRE
select CPU_HAS_NO_MULDIV64 select CPU_HAS_NO_MULDIV64
select GENERIC_CSUM select GENERIC_CSUM
select GPIOLIB select GPIOLIB
select HAVE_CLK select HAVE_LEGACY_CLK
endchoice endchoice
......
...@@ -181,7 +181,7 @@ config AR7 ...@@ -181,7 +181,7 @@ config AR7
select SYS_SUPPORTS_ZBOOT_UART16550 select SYS_SUPPORTS_ZBOOT_UART16550
select GPIOLIB select GPIOLIB
select VLYNQ select VLYNQ
select HAVE_CLK select HAVE_LEGACY_CLK
help help
Support for the Texas Instruments AR7 System-on-a-Chip Support for the Texas Instruments AR7 System-on-a-Chip
family: TNETD7100, 7200 and 7300. family: TNETD7100, 7200 and 7300.
...@@ -296,9 +296,9 @@ config BCM63XX ...@@ -296,9 +296,9 @@ config BCM63XX
select SYS_HAS_EARLY_PRINTK select SYS_HAS_EARLY_PRINTK
select SWAP_IO_SPACE select SWAP_IO_SPACE
select GPIOLIB select GPIOLIB
select HAVE_CLK
select MIPS_L1_CACHE_SHIFT_4 select MIPS_L1_CACHE_SHIFT_4
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select HAVE_LEGACY_CLK
help help
Support for BCM63XX based boards Support for BCM63XX based boards
...@@ -419,6 +419,7 @@ config LANTIQ ...@@ -419,6 +419,7 @@ config LANTIQ
select SWAP_IO_SPACE select SWAP_IO_SPACE
select BOOT_RAW select BOOT_RAW
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select HAVE_LEGACY_CLK
select USE_OF select USE_OF
select PINCTRL select PINCTRL
select PINCTRL_LANTIQ select PINCTRL_LANTIQ
......
...@@ -46,7 +46,7 @@ config LEMOTE_MACH2F ...@@ -46,7 +46,7 @@ config LEMOTE_MACH2F
select CSRC_R4K if ! MIPS_EXTERNAL_TIMER select CSRC_R4K if ! MIPS_EXTERNAL_TIMER
select DMA_NONCOHERENT select DMA_NONCOHERENT
select GENERIC_ISA_DMA_SUPPORT_BROKEN select GENERIC_ISA_DMA_SUPPORT_BROKEN
select HAVE_CLK select HAVE_LEGACY_CLK
select FORCE_PCI select FORCE_PCI
select I8259 select I8259
select IRQ_MIPS_CPU select IRQ_MIPS_CPU
......
...@@ -27,18 +27,22 @@ choice ...@@ -27,18 +27,22 @@ choice
config SOC_RT288X config SOC_RT288X
bool "RT288x" bool "RT288x"
select MIPS_L1_CACHE_SHIFT_4 select MIPS_L1_CACHE_SHIFT_4
select HAVE_LEGACY_CLK
select HAVE_PCI select HAVE_PCI
config SOC_RT305X config SOC_RT305X
bool "RT305x" bool "RT305x"
select HAVE_LEGACY_CLK
config SOC_RT3883 config SOC_RT3883
bool "RT3883" bool "RT3883"
select HAVE_LEGACY_CLK
select HAVE_PCI select HAVE_PCI
config SOC_MT7620 config SOC_MT7620
bool "MT7620/8" bool "MT7620/8"
select CPU_MIPSR2_IRQ_VI select CPU_MIPSR2_IRQ_VI
select HAVE_LEGACY_CLK
select HAVE_PCI select HAVE_PCI
config SOC_MT7621 config SOC_MT7621
......
...@@ -7,6 +7,11 @@ config SOLUTION_ENGINE ...@@ -7,6 +7,11 @@ config SOLUTION_ENGINE
config SH_ALPHA_BOARD config SH_ALPHA_BOARD
bool bool
config SH_CUSTOM_CLK
def_bool y
depends on !SH_DEVICE_TREE
select HAVE_LEGACY_CLK
config SH_DEVICE_TREE config SH_DEVICE_TREE
bool bool
select OF select OF
......
...@@ -70,7 +70,7 @@ config ARCH_PUV3 ...@@ -70,7 +70,7 @@ config ARCH_PUV3
def_bool y def_bool y
select CPU_UCV2 select CPU_UCV2
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select HAVE_CLK select HAVE_LEGACY_CLK
select GPIOLIB select GPIOLIB
# CONFIGs for ARCH_PUV3 # CONFIGs for ARCH_PUV3
......
...@@ -7,8 +7,18 @@ config CLKDEV_LOOKUP ...@@ -7,8 +7,18 @@ config CLKDEV_LOOKUP
config HAVE_CLK_PREPARE config HAVE_CLK_PREPARE
bool bool
config COMMON_CLK config HAVE_LEGACY_CLK # TODO: Remove once all legacy users are migrated
bool bool
select HAVE_CLK
help
Select this option when the clock API in <linux/clk.h> is implemented
by platform/architecture code. This method is deprecated. Modern
code should select COMMON_CLK instead and not define a custom
'struct clk'.
menuconfig COMMON_CLK
bool "Common Clock Framework"
depends on !HAVE_LEGACY_CLK
select HAVE_CLK_PREPARE select HAVE_CLK_PREPARE
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select SRCU select SRCU
...@@ -20,8 +30,7 @@ config COMMON_CLK ...@@ -20,8 +30,7 @@ config COMMON_CLK
Architectures utilizing the common struct clk should select Architectures utilizing the common struct clk should select
this option. this option.
menu "Common Clock Framework" if COMMON_CLK
depends on COMMON_CLK
config COMMON_CLK_WM831X config COMMON_CLK_WM831X
tristate "Clock driver for WM831x/2x PMICs" tristate "Clock driver for WM831x/2x PMICs"
...@@ -362,4 +371,4 @@ source "drivers/clk/ti/Kconfig" ...@@ -362,4 +371,4 @@ source "drivers/clk/ti/Kconfig"
source "drivers/clk/uniphier/Kconfig" source "drivers/clk/uniphier/Kconfig"
source "drivers/clk/zynqmp/Kconfig" source "drivers/clk/zynqmp/Kconfig"
endmenu endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment