On 11/20/20 1:45 AM, Krzysztof Kozlowski wrote: > So far all Exynos, S3C64xx and S5Pv210 clock units were selected by > respective SOC/ARCH Kconfig option. On a kernel built for selected > SoCs, this allowed to build only limited set of matching clock drivers. > However compile testing was not possible in such case as Makefile object > depent on SOC/ARCH option. > > Add separate Kconfig options for each of them to be able to compile > test. > > Signed-off-by: Krzysztof Kozlowski <krzk@xxxxxxxxxx> > --- > drivers/clk/samsung/Kconfig | 67 ++++++++++++++++++++++++++++++++++-- > drivers/clk/samsung/Makefile | 22 ++++++------ > include/linux/clk/samsung.h | 4 +-- > 3 files changed, 78 insertions(+), 15 deletions(-) > > diff --git a/drivers/clk/samsung/Kconfig b/drivers/clk/samsung/Kconfig > index 7e9c186e57ef..0441c4f73ac9 100644 > --- a/drivers/clk/samsung/Kconfig > +++ b/drivers/clk/samsung/Kconfig > @@ -2,10 +2,73 @@ > # Recent Exynos platforms should just select COMMON_CLK_SAMSUNG: > config COMMON_CLK_SAMSUNG > bool "Samsung Exynos clock controller support" if COMPILE_TEST > - # Clocks on ARM64 SoCs (e.g. Exynos5433, Exynos7) are chosen by > - # EXYNOS_ARM64_COMMON_CLK to avoid building them on ARMv7: > + select S3C64XX_COMMON_CLK if ARM && ARCH_S3C64XX > + select S5PV210_COMMON_CLK if ARM && ARCH_S5PV210 > + select EXYNOS_3250_COMMON_CLK if ARM && SOC_EXYNOS3250 > + select EXYNOS_4_COMMON_CLK if ARM && ARCH_EXYNOS4 > + select EXYNOS_5250_COMMON_CLK if ARM && SOC_EXYNOS5250 > + select EXYNOS_5260_COMMON_CLK if ARM && SOC_EXYNOS5260 > + select EXYNOS_5410_COMMON_CLK if ARM && SOC_EXYNOS5410 > + select EXYNOS_5420_COMMON_CLK if ARM && SOC_EXYNOS5420 > select EXYNOS_ARM64_COMMON_CLK if ARM64 && ARCH_EXYNOS > > +config S3C64XX_COMMON_CLK > + bool "Samsung S3C64xx clock controller support" if COMPILE_TEST > + depends on COMMON_CLK_SAMSUNG > + help > + Support for the clock controller present on the Samsung S3C64xx SoCs. > + Choose Y here only if you build for this SoC. > + > +config S5PV210_COMMON_CLK > + bool "Samsung S5Pv210 clock controller support" if COMPILE_TEST > + depends on COMMON_CLK_SAMSUNG > + help > + Support for the clock controller present on the Samsung S5Pv210 SoCs. > + Choose Y here only if you build for this SoC. > + > +config EXYNOS_3250_COMMON_CLK > + bool "Samsung Exynos3250 clock controller support" if COMPILE_TEST > + depends on COMMON_CLK_SAMSUNG > + help > + Support for the clock controller present on the Samsung > + Exynos3250 SoCs. Choose Y here only if you build for this SoC. > + > +config EXYNOS_4_COMMON_CLK > + bool "Samsung Exynos4 clock controller support" if COMPILE_TEST > + depends on COMMON_CLK_SAMSUNG > + help > + Support for the clock controller present on the Samsung > + Exynos4212 and Exynos4412 SoCs. Choose Y here only if you build for > + this SoC. > + > +config EXYNOS_5250_COMMON_CLK > + bool "Samsung Exynos5250 clock controller support" if COMPILE_TEST > + depends on COMMON_CLK_SAMSUNG > + help > + Support for the clock controller present on the Samsung > + Exynos5250 SoCs. Choose Y here only if you build for this SoC. > + > +config EXYNOS_5260_COMMON_CLK > + bool "Samsung Exynos5260 clock controller support" if COMPILE_TEST > + depends on COMMON_CLK_SAMSUNG > + help > + Support for the clock controller present on the Samsung > + Exynos5260 SoCs. Choose Y here only if you build for this SoC. > + > +config EXYNOS_5410_COMMON_CLK > + bool "Samsung Exynos5410 clock controller support" if COMPILE_TEST > + depends on COMMON_CLK_SAMSUNG > + help > + Support for the clock controller present on the Samsung > + Exynos5410 SoCs. Choose Y here only if you build for this SoC. > + > +config EXYNOS_5420_COMMON_CLK > + bool "Samsung Exynos5420 clock controller support" if COMPILE_TEST > + depends on COMMON_CLK_SAMSUNG > + help > + Support for the clock controller present on the Samsung > + Exynos5420 SoCs. Choose Y here only if you build for this SoC. > + > config EXYNOS_ARM64_COMMON_CLK > bool "Samsung Exynos ARMv8-family clock controller support" if COMPILE_TEST > depends on COMMON_CLK_SAMSUNG > diff --git a/drivers/clk/samsung/Makefile b/drivers/clk/samsung/Makefile > index 6891b087acff..028b2e27a37e 100644 > --- a/drivers/clk/samsung/Makefile > +++ b/drivers/clk/samsung/Makefile > @@ -4,15 +4,15 @@ > # > > obj-$(CONFIG_COMMON_CLK) += clk.o clk-pll.o clk-cpu.o > -obj-$(CONFIG_SOC_EXYNOS3250) += clk-exynos3250.o > -obj-$(CONFIG_ARCH_EXYNOS4) += clk-exynos4.o > -obj-$(CONFIG_ARCH_EXYNOS4) += clk-exynos4412-isp.o > -obj-$(CONFIG_SOC_EXYNOS5250) += clk-exynos5250.o > -obj-$(CONFIG_SOC_EXYNOS5250) += clk-exynos5-subcmu.o > -obj-$(CONFIG_SOC_EXYNOS5260) += clk-exynos5260.o > -obj-$(CONFIG_SOC_EXYNOS5410) += clk-exynos5410.o > -obj-$(CONFIG_SOC_EXYNOS5420) += clk-exynos5420.o > -obj-$(CONFIG_SOC_EXYNOS5420) += clk-exynos5-subcmu.o > +obj-$(CONFIG_EXYNOS_3250_COMMON_CLK) += clk-exynos3250.o > +obj-$(CONFIG_EXYNOS_4_COMMON_CLK) += clk-exynos4.o > +obj-$(CONFIG_EXYNOS_4_COMMON_CLK) += clk-exynos4412-isp.o > +obj-$(CONFIG_EXYNOS_5250_COMMON_CLK) += clk-exynos5250.o > +obj-$(CONFIG_EXYNOS_5250_COMMON_CLK) += clk-exynos5-subcmu.o > +obj-$(CONFIG_EXYNOS_5260_COMMON_CLK) += clk-exynos5260.o > +obj-$(CONFIG_EXYNOS_5410_COMMON_CLK) += clk-exynos5410.o > +obj-$(CONFIG_EXYNOS_5420_COMMON_CLK) += clk-exynos5420.o > +obj-$(CONFIG_EXYNOS_5420_COMMON_CLK) += clk-exynos5-subcmu.o > obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK) += clk-exynos5433.o > obj-$(CONFIG_EXYNOS_AUDSS_CLK_CON) += clk-exynos-audss.o > obj-$(CONFIG_EXYNOS_CLKOUT) += clk-exynos-clkout.o > @@ -21,5 +21,5 @@ obj-$(CONFIG_S3C2410_COMMON_CLK)+= clk-s3c2410.o > obj-$(CONFIG_S3C2410_COMMON_DCLK)+= clk-s3c2410-dclk.o > obj-$(CONFIG_S3C2412_COMMON_CLK)+= clk-s3c2412.o > obj-$(CONFIG_S3C2443_COMMON_CLK)+= clk-s3c2443.o > -obj-$(CONFIG_ARCH_S3C64XX) += clk-s3c64xx.o > -obj-$(CONFIG_ARCH_S5PV210) += clk-s5pv210.o clk-s5pv210-audss.o > +obj-$(CONFIG_S3C64XX_COMMON_CLK) += clk-s3c64xx.o > +obj-$(CONFIG_S5PV210_COMMON_CLK) += clk-s5pv210.o clk-s5pv210-audss.o > diff --git a/include/linux/clk/samsung.h b/include/linux/clk/samsung.h > index 79097e365f7f..38b774001712 100644 > --- a/include/linux/clk/samsung.h > +++ b/include/linux/clk/samsung.h > @@ -10,7 +10,7 @@ > > struct device_node; > > -#ifdef CONFIG_ARCH_S3C64XX > +#ifdef CONFIG_S3C64XX_COMMON_CLK > void s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f, > unsigned long xusbxti_f, bool s3c6400, > void __iomem *base); > @@ -19,7 +19,7 @@ static inline void s3c64xx_clk_init(struct device_node *np, > unsigned long xtal_f, > unsigned long xusbxti_f, > bool s3c6400, void __iomem *base) { } > -#endif /* CONFIG_ARCH_S3C64XX */ > +#endif /* CONFIG_S3C64XX_COMMON_CLK */ > > #ifdef CONFIG_S3C2410_COMMON_CLK > void s3c2410_common_clk_init(struct device_node *np, unsigned long xti_f, > It looks good to me for compile testing. Thanks. Acked-by: Chanwoo Choi <cw00.choi@xxxxxxxxxxx> -- Best Regards, Chanwoo Choi Samsung Electronics