2012-10-22 13:03:04

by Mark Brown

[permalink] [raw]
Subject: [PATCH] clk: Make the generic clock API available by default

Rather than requiring platforms to select the generic clock API to make
it available make the API available as a user selectable option unless the
user either selects HAVE_CUSTOM_CLK (if they have their own implementation)
or selects COMMON_CLK (if they depend on the generic implementation).

All current architectures that HAVE_CLK but don't use the common clock
framework have selects of HAVE_CUSTOM_CLK added.

This allows drivers to use the generic API on platforms which have no need
for the clock API at platform level.

Signed-off-by: Mark Brown <[email protected]>
Acked-by: Hans-Christian Egtvedt <[email protected]>
Acked-by: Benjamin Herrenschmidt <[email protected]>
---

Mike, the patch to provide a defualt clkdev.h went in during the merge
window so it should now be safe to merge this.

arch/arm/Kconfig | 13 +++++++++++++
arch/avr32/Kconfig | 1 +
arch/mips/Kconfig | 4 ++++
arch/mips/loongson/Kconfig | 1 +
arch/mips/loongson1/Kconfig | 1 +
arch/mips/txx9/Kconfig | 1 +
arch/powerpc/Kconfig | 1 +
arch/unicore32/Kconfig | 1 +
drivers/clk/Kconfig | 13 ++++++++++---
9 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index fe90e60..2248940 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -314,6 +314,7 @@ config ARCH_VERSATILE
select CLKDEV_LOOKUP
select GENERIC_CLOCKEVENTS
select HAVE_MACH_CLKDEV
+ select HAVE_CUSTOM_CLK
select ICST
select PLAT_VERSATILE
select PLAT_VERSATILE_CLCD
@@ -327,6 +328,7 @@ config ARCH_AT91
select ARCH_REQUIRE_GPIOLIB
select CLKDEV_LOOKUP
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select IRQ_DOMAIN
select NEED_MACH_GPIO_H
select NEED_MACH_IO_H if PCCARD
@@ -632,6 +634,7 @@ config ARCH_TEGRA
select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HAVE_SMP
select MIGHT_HAVE_CACHE_L2X0
select SPARSE_IRQ
@@ -666,6 +669,7 @@ config ARCH_MSM
select CLKDEV_LOOKUP
select GENERIC_CLOCKEVENTS
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
help
Support for Qualcomm MSM/QSD based systems. This runs on the
apps processor of the MSM/QSD and depends on a shared memory
@@ -678,6 +682,7 @@ config ARCH_SHMOBILE
select CLKDEV_LOOKUP
select GENERIC_CLOCKEVENTS
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HAVE_MACH_CLKDEV
select HAVE_SMP
select MIGHT_HAVE_CACHE_L2X0
@@ -728,10 +733,12 @@ config ARCH_SA1100
config ARCH_S3C24XX
bool "Samsung S3C24XX SoCs"
select ARCH_HAS_CPUFREQ
+ select CLKDEV_LOOKUP
select ARCH_USES_GETTIMEOFFSET
select CLKDEV_LOOKUP
select GENERIC_GPIO
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select HAVE_S3C_RTC if RTC_CLASS
@@ -752,6 +759,7 @@ config ARCH_S3C64XX
select CLKDEV_LOOKUP
select CPU_V6
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select HAVE_TCM
@@ -775,6 +783,7 @@ config ARCH_S5P64X0
select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select HAVE_S3C_RTC if RTC_CLASS
@@ -790,6 +799,7 @@ config ARCH_S5PC100
select CPU_V7
select GENERIC_GPIO
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select HAVE_S3C_RTC if RTC_CLASS
@@ -808,6 +818,7 @@ config ARCH_S5PV210
select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select HAVE_S3C_RTC if RTC_CLASS
@@ -826,6 +837,7 @@ config ARCH_EXYNOS
select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select HAVE_S3C_RTC if RTC_CLASS
@@ -928,6 +940,7 @@ config ARCH_OMAP
select CLKSRC_MMIO
select GENERIC_CLOCKEVENTS
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select NEED_MACH_GPIO_H
help
Support for TI's OMAP platform (OMAP1/2/3/4).
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig
index 06e73bf..bfeb9cc 100644
--- a/arch/avr32/Kconfig
+++ b/arch/avr32/Kconfig
@@ -4,6 +4,7 @@ config AVR32
# that we usually don't need on AVR32.
select EXPERT
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HAVE_OPROFILE
select HAVE_KPROBES
select HAVE_GENERIC_HARDIRQS
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index ce6c9a6..e0be02f 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -85,6 +85,7 @@ config AR7
select ARCH_REQUIRE_GPIOLIB
select VLYNQ
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
help
Support for the Texas Instruments AR7 System-on-a-Chip
family: TNETD7100, 7200 and 7300.
@@ -97,6 +98,7 @@ config ATH79
select CSRC_R4K
select DMA_NONCOHERENT
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select IRQ_CPU
select MIPS_MACHINE
select SYS_HAS_CPU_MIPS32_R2
@@ -134,6 +136,7 @@ config BCM63XX
select SWAP_IO_SPACE
select ARCH_REQUIRE_GPIOLIB
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
help
Support for BCM63XX based boards

@@ -229,6 +232,7 @@ config MACH_JZ4740
select SYS_HAS_EARLY_PRINTK
select HAVE_PWM
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select GENERIC_IRQ_CHIP

config LANTIQ
diff --git a/arch/mips/loongson/Kconfig b/arch/mips/loongson/Kconfig
index 263beb9..ed42be1 100644
--- a/arch/mips/loongson/Kconfig
+++ b/arch/mips/loongson/Kconfig
@@ -42,6 +42,7 @@ config LEMOTE_MACH2F
select DMA_NONCOHERENT
select GENERIC_ISA_DMA_SUPPORT_BROKEN
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select HW_HAS_PCI
select I8259
select IRQ_CPU
diff --git a/arch/mips/loongson1/Kconfig b/arch/mips/loongson1/Kconfig
index a9a14d6..ddaa7d0 100644
--- a/arch/mips/loongson1/Kconfig
+++ b/arch/mips/loongson1/Kconfig
@@ -16,6 +16,7 @@ config LOONGSON1_LS1B
select SYS_SUPPORTS_HIGHMEM
select SYS_HAS_EARLY_PRINTK
select HAVE_CLK
+ select HAVE_CUSTOM_CLK

endchoice

diff --git a/arch/mips/txx9/Kconfig b/arch/mips/txx9/Kconfig
index 6d40bc7..04e3cdb 100644
--- a/arch/mips/txx9/Kconfig
+++ b/arch/mips/txx9/Kconfig
@@ -21,6 +21,7 @@ config MACH_TXX9
select SYS_SUPPORTS_LITTLE_ENDIAN
select SYS_SUPPORTS_BIG_ENDIAN
select HAVE_CLK
+ select HAVE_CUSTOM_CLK

config TOSHIBA_JMR3927
bool "Toshiba JMR-TX3927 board"
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 5af5aa7..da4ea6c 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -1028,6 +1028,7 @@ config PPC_CLOCK
bool
default n
select HAVE_CLK
+ select HAVE_CUSTOM_CLK

config PPC_LIB_RHEAP
bool
diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig
index fda37c9..8247d69 100644
--- a/arch/unicore32/Kconfig
+++ b/arch/unicore32/Kconfig
@@ -89,6 +89,7 @@ config ARCH_PUV3
select CPU_UCV2
select GENERIC_CLOCKEVENTS
select HAVE_CLK
+ select HAVE_CUSTOM_CLK
select ARCH_REQUIRE_GPIOLIB
select ARCH_HAS_CPUFREQ

diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index bace9e9..8dc8391 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -9,16 +9,23 @@ config HAVE_CLK_PREPARE
config HAVE_MACH_CLKDEV
bool

-config COMMON_CLK
+config HAVE_CUSTOM_CLK
bool
+ ---help---
+ Architectures which provide a custom clk API should select
+ this to disable the common clock API.
+
+config COMMON_CLK
+ bool "Common clock framework"
+ depends on !HAVE_CUSTOM_CLK
select HAVE_CLK_PREPARE
select CLKDEV_LOOKUP
---help---
The common clock framework is a single definition of struct
clk, useful across many platforms, as well as an
implementation of the clock API in include/linux/clk.h.
- Architectures utilizing the common struct clk should select
- this option.
+ This provides a generic way for drivers to provide and use
+ clocks without hard coded relationships in the drivers.

menu "Common Clock Framework"
depends on COMMON_CLK
--
1.7.10.4


2012-10-22 13:06:45

by Russell King - ARM Linux

[permalink] [raw]
Subject: Re: [PATCH] clk: Make the generic clock API available by default

On Mon, Oct 22, 2012 at 02:02:50PM +0100, Mark Brown wrote:
> @@ -327,6 +328,7 @@ config ARCH_AT91
> select ARCH_REQUIRE_GPIOLIB
> select CLKDEV_LOOKUP
> select HAVE_CLK
> + select HAVE_CUSTOM_CLK

This is silly. If you select "HAVE_CUSTOM_CLK" then isn't it true that
"HAVE_CLK" should also be selected? If so, why not have "HAVE_CUSTOM_CLK"
do that selection and remove it from all these entries?

2012-10-22 13:27:16

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] clk: Make the generic clock API available by default

On Mon, Oct 22, 2012 at 02:05:57PM +0100, Russell King - ARM Linux wrote:
> On Mon, Oct 22, 2012 at 02:02:50PM +0100, Mark Brown wrote:
> > @@ -327,6 +328,7 @@ config ARCH_AT91
> > select ARCH_REQUIRE_GPIOLIB
> > select CLKDEV_LOOKUP
> > select HAVE_CLK
> > + select HAVE_CUSTOM_CLK

> This is silly. If you select "HAVE_CUSTOM_CLK" then isn't it true that
> "HAVE_CLK" should also be selected? If so, why not have "HAVE_CUSTOM_CLK"
> do that selection and remove it from all these entries?

If we're worrying about that there's the larger point that the effect of
this patch is to make HAVE_CLK meaningless as there will be no platform
for which it's not true. I was just leaving HAVE_CLK alone for now
ready to circle around on it if we ever manage to get the enabling bit
sorted.

2012-10-22 13:51:00

by Russell King - ARM Linux

[permalink] [raw]
Subject: Re: [PATCH] clk: Make the generic clock API available by default

On Mon, Oct 22, 2012 at 02:27:11PM +0100, Mark Brown wrote:
> On Mon, Oct 22, 2012 at 02:05:57PM +0100, Russell King - ARM Linux wrote:
> > On Mon, Oct 22, 2012 at 02:02:50PM +0100, Mark Brown wrote:
> > > @@ -327,6 +328,7 @@ config ARCH_AT91
> > > select ARCH_REQUIRE_GPIOLIB
> > > select CLKDEV_LOOKUP
> > > select HAVE_CLK
> > > + select HAVE_CUSTOM_CLK
>
> > This is silly. If you select "HAVE_CUSTOM_CLK" then isn't it true that
> > "HAVE_CLK" should also be selected? If so, why not have "HAVE_CUSTOM_CLK"
> > do that selection and remove it from all these entries?
>
> If we're worrying about that there's the larger point that the effect of
> this patch is to make HAVE_CLK meaningless as there will be no platform
> for which it's not true. I was just leaving HAVE_CLK alone for now
> ready to circle around on it if we ever manage to get the enabling bit
> sorted.

Are you sure that all architectures are fine with having that permanently
enabled? What about nommu architectures?

2012-10-22 13:54:55

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] clk: Make the generic clock API available by default

On Mon, Oct 22, 2012 at 02:50:24PM +0100, Russell King - ARM Linux wrote:
> On Mon, Oct 22, 2012 at 02:27:11PM +0100, Mark Brown wrote:

> > If we're worrying about that there's the larger point that the effect of
> > this patch is to make HAVE_CLK meaningless as there will be no platform
> > for which it's not true. I was just leaving HAVE_CLK alone for now
> > ready to circle around on it if we ever manage to get the enabling bit
> > sorted.

> Are you sure that all architectures are fine with having that permanently
> enabled? What about nommu architectures?

There's already stubs present so the main use case for depending on it
(checking if code can build) is already covered without requiring that
the API actually be built on all platforms.


Attachments:
(No filename) (757.00 B)
signature.asc (836.00 B)
Digital signature
Download all attachments

2012-10-22 15:57:01

by Stephen Warren

[permalink] [raw]
Subject: Re: [PATCH] clk: Make the generic clock API available by default

On 10/22/2012 07:02 AM, Mark Brown wrote:
> Rather than requiring platforms to select the generic clock API to make
> it available make the API available as a user selectable option unless the
> user either selects HAVE_CUSTOM_CLK (if they have their own implementation)
> or selects COMMON_CLK (if they depend on the generic implementation).
>
> All current architectures that HAVE_CLK but don't use the common clock
> framework have selects of HAVE_CUSTOM_CLK added.
>
> This allows drivers to use the generic API on platforms which have no need
> for the clock API at platform level.

> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig

> @@ -632,6 +634,7 @@ config ARCH_TEGRA
> select GENERIC_CLOCKEVENTS
> select GENERIC_GPIO
> select HAVE_CLK
> + select HAVE_CUSTOM_CLK
> select HAVE_SMP
> select MIGHT_HAVE_CACHE_L2X0
> select SPARSE_IRQ

Since v3.7-rc1, Tegra uses common clock, so I don't think the change
above is right is it?

2012-10-23 09:22:51

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] clk: Make the generic clock API available by default

On Tue, Oct 23, 2012 at 10:10:09AM +0800, Kelvin Cheung wrote:
> Hi Mark,

Don't top post!

> But the common clock infrastructure of Loongson1 has been implemented and
> enabled in previous patches.
> http://patchwork.linux-mips.org/patch/4268/
> Please remove this arch from your patch.

Done.


Attachments:
(No filename) (295.00 B)
signature.asc (836.00 B)
Digital signature
Download all attachments

2012-10-23 09:47:31

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] clk: Make the generic clock API available by default

On Mon, Oct 22, 2012 at 09:56:54AM -0600, Stephen Warren wrote:

> Since v3.7-rc1, Tegra uses common clock, so I don't think the change
> above is right is it?

No, updated. It really shouldn't take multiple kernel releases to get
something like this done...


Attachments:
(No filename) (260.00 B)
signature.asc (836.00 B)
Digital signature
Download all attachments