* [PATCH 0/7] clk: clean up legacy clock interfaces
@ 2021-05-31 18:47 Arnd Bergmann
2021-05-31 18:47 ` [PATCH 1/7] mips: ar7: convert to clkdev_lookup Arnd Bergmann
` (8 more replies)
0 siblings, 9 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-05-31 18:47 UTC (permalink / raw)
To: linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
From: Arnd Bergmann <arnd@arndb.de>
A recent discussion about legacy clk interface users revealed
that there are only two platforms remaining that provide their own
clk_get()/clk_put() implementations, MIPS ar7 and and m68k coldfire.
I managed to rework both of these to just use the normal clkdev code,
and fold CONFIG_CLKDEV_LOOKUP into CONFIG_HAVE_CLK as it is now shared
among all users.
As I noticed that the ar7 clock implementation and the ralink version
are rather trivial, I ended up converting those to use the common-clk
interfaces as well, though this is unrelated to the other changes.
Arnd
Link: https://lore.kernel.org/lkml/CAK8P3a2XsrfUJQQAfnGknh8HiA-D9L_wmEoAgXU89KqagE31NQ@mail.gmail.com/
Arnd Bergmann (7):
mips: ar7: convert to clkdev_lookup
mips: ar7: convert to CONFIG_COMMON_CLK
mips: ralink: convert to CONFIG_COMMON_CLK
m68k: coldfire: use clkdev_lookup on most coldfire
m68k: coldfire: remove private clk_get/clk_put
clkdev: remove CONFIG_CLKDEV_LOOKUP
clkdev: remove unused clkdev_alloc() interfaces
arch/arm/Kconfig | 2 -
arch/m68k/coldfire/clk.c | 21 -----
arch/m68k/coldfire/m5206.c | 25 +++---
arch/m68k/coldfire/m520x.c | 51 +++++------
arch/m68k/coldfire/m523x.c | 42 ++++-----
arch/m68k/coldfire/m5249.c | 33 +++----
arch/m68k/coldfire/m525x.c | 33 +++----
arch/m68k/coldfire/m5272.c | 35 +++-----
arch/m68k/coldfire/m527x.c | 46 ++++------
arch/m68k/coldfire/m528x.c | 42 ++++-----
arch/m68k/coldfire/m5307.c | 27 +++---
arch/m68k/coldfire/m53xx.c | 80 ++++++++---------
arch/m68k/coldfire/m5407.c | 25 +++---
arch/m68k/coldfire/m5441x.c | 126 +++++++++++++--------------
arch/m68k/coldfire/m54xx.c | 33 +++----
arch/m68k/include/asm/mcfclk.h | 5 --
arch/mips/Kconfig | 6 +-
arch/mips/ar7/clock.c | 113 ++++++------------------
arch/mips/include/asm/mach-ar7/ar7.h | 4 -
arch/mips/pic32/Kconfig | 1 -
arch/mips/ralink/Kconfig | 5 --
arch/mips/ralink/clk.c | 64 +-------------
arch/sh/Kconfig | 1 -
drivers/clk/Kconfig | 6 +-
drivers/clk/Makefile | 3 +-
drivers/clk/clkdev.c | 28 ------
drivers/clocksource/Kconfig | 6 +-
drivers/mmc/host/Kconfig | 4 +-
drivers/staging/board/Kconfig | 2 +-
include/linux/clkdev.h | 5 --
sound/soc/dwc/Kconfig | 2 +-
sound/soc/rockchip/Kconfig | 14 +--
32 files changed, 320 insertions(+), 570 deletions(-)
--
2.29.2
Cc: Dmitry Osipenko <digetx@gmail.com>
Cc: Florian Fainelli <florian@openwrt.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Greg Ungerer <gerg@linux-m68k.org>
Cc: John Crispin <john@phrozen.org>
Cc: Jonas Gorski <jonas.gorski@gmail.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: linux-clk@vger.kernel.org
Cc: linux-m68k@lists.linux-m68k.org
Cc: linux-mips@vger.kernel.org
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 1/7] mips: ar7: convert to clkdev_lookup
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
@ 2021-05-31 18:47 ` Arnd Bergmann
2021-06-01 13:23 ` Russell King (Oracle)
2021-05-31 18:47 ` [PATCH 2/7] mips: ar7: convert to CONFIG_COMMON_CLK Arnd Bergmann
` (7 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Arnd Bergmann @ 2021-05-31 18:47 UTC (permalink / raw)
To: linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
From: Arnd Bergmann <arnd@arndb.de>
ar7 is one of only two platforms that provide the clock interface but
implement a custom version of the clkdev_lookup code.
Change this to use the generic version instead.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/mips/Kconfig | 1 +
arch/mips/ar7/clock.c | 32 ++++++++++++--------------------
2 files changed, 13 insertions(+), 20 deletions(-)
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index ed51970c08e7..1cc03a7652a9 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -215,6 +215,7 @@ config AR7
select SYS_SUPPORTS_ZBOOT_UART16550
select GPIOLIB
select VLYNQ
+ select CLKDEV_LOOKUP
select HAVE_LEGACY_CLK
help
Support for the Texas Instruments AR7 System-on-a-Chip
diff --git a/arch/mips/ar7/clock.c b/arch/mips/ar7/clock.c
index 95def949c971..c614f254f370 100644
--- a/arch/mips/ar7/clock.c
+++ b/arch/mips/ar7/clock.c
@@ -5,6 +5,7 @@
* Copyright (C) 2009 Florian Fainelli <florian@openwrt.org>
*/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/types.h>
@@ -14,6 +15,7 @@
#include <linux/io.h>
#include <linux/err.h>
#include <linux/clk.h>
+#include <linux/clkdev.h>
#include <asm/addrspace.h>
#include <asm/mach-ar7/ar7.h>
@@ -424,27 +426,15 @@ unsigned long clk_get_rate(struct clk *clk)
}
EXPORT_SYMBOL(clk_get_rate);
-struct clk *clk_get(struct device *dev, const char *id)
-{
- if (!strcmp(id, "bus"))
- return &bus_clk;
+static struct clk_lookup ar7_clkdev_table[] = {
+ CLKDEV_INIT(NULL, "bus", &bus_clk),
/* cpmac and vbus share the same rate */
- if (!strcmp(id, "cpmac"))
- return &vbus_clk;
- if (!strcmp(id, "cpu"))
- return &cpu_clk;
- if (!strcmp(id, "dsp"))
- return &dsp_clk;
- if (!strcmp(id, "vbus"))
- return &vbus_clk;
- return ERR_PTR(-ENOENT);
-}
-EXPORT_SYMBOL(clk_get);
-
-void clk_put(struct clk *clk)
-{
-}
-EXPORT_SYMBOL(clk_put);
+ CLKDEV_INIT("cpmac.0", "cpmac", &vbus_clk),
+ CLKDEV_INIT("cpmac.1", "cpmac", &vbus_clk),
+ CLKDEV_INIT(NULL, "cpu", &cpu_clk),
+ CLKDEV_INIT(NULL, "dsp", &dsp_clk),
+ CLKDEV_INIT(NULL, "vbus", &vbus_clk),
+};
void __init ar7_init_clocks(void)
{
@@ -462,6 +452,8 @@ void __init ar7_init_clocks(void)
}
/* adjust vbus clock rate */
vbus_clk.rate = bus_clk.rate / 2;
+
+ clkdev_add_table(ar7_clkdev_table, ARRAY_SIZE(ar7_clkdev_table));
}
/* dummy functions, should not be called */
--
2.29.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 2/7] mips: ar7: convert to CONFIG_COMMON_CLK
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
2021-05-31 18:47 ` [PATCH 1/7] mips: ar7: convert to clkdev_lookup Arnd Bergmann
@ 2021-05-31 18:47 ` Arnd Bergmann
2021-05-31 18:47 ` [PATCH 3/7] mips: ralink: " Arnd Bergmann
` (6 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-05-31 18:47 UTC (permalink / raw)
To: linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
From: Arnd Bergmann <arnd@arndb.de>
Perform a minimal conversion of the ar7 clock implementation to the common
clock framework. While the hardware can control the rates, this is left
unchanged, and all clocks are registered as fixed-rate or fixed-divider
clocks. Similarly, the clkdev lookup information is left unchanged but
moved from the table format into individual allocations.
There is a small increase in code size:
text data bss dec hex filename
4757116 596640 91328 5445084 5315dc vmlinux-before
4806159 602360 91344 5499863 53ebd7 vmlinux-after
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/mips/Kconfig | 3 +-
arch/mips/ar7/clock.c | 103 ++++++++-------------------
arch/mips/include/asm/mach-ar7/ar7.h | 4 --
3 files changed, 29 insertions(+), 81 deletions(-)
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 1cc03a7652a9..5dbc60adb2f0 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -201,6 +201,7 @@ config MIPS_ALCHEMY
config AR7
bool "Texas Instruments AR7"
select BOOT_ELF32
+ select COMMON_CLK
select DMA_NONCOHERENT
select CEVT_R4K
select CSRC_R4K
@@ -215,8 +216,6 @@ config AR7
select SYS_SUPPORTS_ZBOOT_UART16550
select GPIOLIB
select VLYNQ
- select CLKDEV_LOOKUP
- select HAVE_LEGACY_CLK
help
Support for the Texas Instruments AR7 System-on-a-Chip
family: TNETD7100, 7200 and 7300.
diff --git a/arch/mips/ar7/clock.c b/arch/mips/ar7/clock.c
index c614f254f370..31455180ce63 100644
--- a/arch/mips/ar7/clock.c
+++ b/arch/mips/ar7/clock.c
@@ -15,7 +15,7 @@
#include <linux/io.h>
#include <linux/err.h>
#include <linux/clk.h>
-#include <linux/clkdev.h>
+#include <linux/clk-provider.h>
#include <asm/addrspace.h>
#include <asm/mach-ar7/ar7.h>
@@ -86,17 +86,17 @@ struct tnetd7200_clocks {
struct tnetd7200_clock usb;
};
-static struct clk bus_clk = {
+struct clk_rate {
+ u32 rate;
+};
+static struct clk_rate bus_clk = {
.rate = 125000000,
};
-static struct clk cpu_clk = {
+static struct clk_rate cpu_clk = {
.rate = 150000000,
};
-static struct clk dsp_clk;
-static struct clk vbus_clk;
-
static void approximate(int base, int target, int *prediv,
int *postdiv, int *mul)
{
@@ -242,6 +242,8 @@ static void __init tnetd7300_init_clocks(void)
struct tnetd7300_clocks *clocks =
ioremap(UR8_REGS_CLOCKS,
sizeof(struct tnetd7300_clocks));
+ u32 dsp_clk;
+ struct clk *clk;
bus_clk.rate = tnetd7300_get_clock(BUS_PLL_SOURCE_SHIFT,
&clocks->bus, bootcr, AR7_AFE_CLOCK);
@@ -252,12 +254,18 @@ static void __init tnetd7300_init_clocks(void)
else
cpu_clk.rate = bus_clk.rate;
- if (dsp_clk.rate == 250000000)
+ dsp_clk = tnetd7300_dsp_clock();
+ if (dsp_clk == 250000000)
tnetd7300_set_clock(DSP_PLL_SOURCE_SHIFT, &clocks->dsp,
- bootcr, dsp_clk.rate);
+ bootcr, dsp_clk);
iounmap(clocks);
iounmap(bootcr);
+
+ clk = clk_register_fixed_rate(NULL, "cpu", NULL, 0, cpu_clk.rate);
+ clkdev_create(clk, "cpu", NULL);
+ clk = clk_register_fixed_rate(NULL, "dsp", NULL, 0, dsp_clk);
+ clkdev_create(clk, "dsp", NULL);
}
static void tnetd7200_set_clock(int base, struct tnetd7200_clock *clock,
@@ -329,6 +337,7 @@ static void __init tnetd7200_init_clocks(void)
int cpu_base, cpu_mul, cpu_prediv, cpu_postdiv;
int dsp_base, dsp_mul, dsp_prediv, dsp_postdiv;
int usb_base, usb_mul, usb_prediv, usb_postdiv;
+ struct clk *clk;
cpu_base = tnetd7200_get_clock_base(TNETD7200_CLOCK_ID_CPU, bootcr);
dsp_base = tnetd7200_get_clock_base(TNETD7200_CLOCK_ID_DSP, bootcr);
@@ -397,90 +406,34 @@ static void __init tnetd7200_init_clocks(void)
usb_prediv, usb_postdiv, -1, usb_mul,
TNETD7200_DEF_USB_CLK);
- dsp_clk.rate = cpu_clk.rate;
-
iounmap(clocks);
iounmap(bootcr);
-}
-
-/*
- * Linux clock API
- */
-int clk_enable(struct clk *clk)
-{
- return 0;
-}
-EXPORT_SYMBOL(clk_enable);
-
-void clk_disable(struct clk *clk)
-{
-}
-EXPORT_SYMBOL(clk_disable);
-
-unsigned long clk_get_rate(struct clk *clk)
-{
- if (!clk)
- return 0;
- return clk->rate;
+ clk = clk_register_fixed_rate(NULL, "cpu", NULL, 0, cpu_clk.rate);
+ clkdev_create(clk, "cpu", NULL);
+ clkdev_create(clk, "dsp", NULL);
}
-EXPORT_SYMBOL(clk_get_rate);
-
-static struct clk_lookup ar7_clkdev_table[] = {
- CLKDEV_INIT(NULL, "bus", &bus_clk),
- /* cpmac and vbus share the same rate */
- CLKDEV_INIT("cpmac.0", "cpmac", &vbus_clk),
- CLKDEV_INIT("cpmac.1", "cpmac", &vbus_clk),
- CLKDEV_INIT(NULL, "cpu", &cpu_clk),
- CLKDEV_INIT(NULL, "dsp", &dsp_clk),
- CLKDEV_INIT(NULL, "vbus", &vbus_clk),
-};
void __init ar7_init_clocks(void)
{
+ struct clk *clk;
+
switch (ar7_chip_id()) {
case AR7_CHIP_7100:
case AR7_CHIP_7200:
tnetd7200_init_clocks();
break;
case AR7_CHIP_7300:
- dsp_clk.rate = tnetd7300_dsp_clock();
tnetd7300_init_clocks();
break;
default:
break;
}
+ clk = clk_register_fixed_rate(NULL, "bus", NULL, 0, bus_clk.rate);
+ clkdev_create(clk, "bus", NULL);
/* adjust vbus clock rate */
- vbus_clk.rate = bus_clk.rate / 2;
-
- clkdev_add_table(ar7_clkdev_table, ARRAY_SIZE(ar7_clkdev_table));
-}
-
-/* dummy functions, should not be called */
-long clk_round_rate(struct clk *clk, unsigned long rate)
-{
- WARN_ON(clk);
- return 0;
-}
-EXPORT_SYMBOL(clk_round_rate);
-
-int clk_set_rate(struct clk *clk, unsigned long rate)
-{
- WARN_ON(clk);
- return 0;
-}
-EXPORT_SYMBOL(clk_set_rate);
-
-int clk_set_parent(struct clk *clk, struct clk *parent)
-{
- WARN_ON(clk);
- return 0;
-}
-EXPORT_SYMBOL(clk_set_parent);
-
-struct clk *clk_get_parent(struct clk *clk)
-{
- WARN_ON(clk);
- return NULL;
+ clk = clk_register_fixed_factor(NULL, "vbus", "bus", 0, 1, 2);
+ clkdev_create(clk, "vbus", NULL);
+ clkdev_create(clk, "cpmac", "cpmac.1");
+ clkdev_create(clk, "cpmac", "cpmac.1");
}
-EXPORT_SYMBOL(clk_get_parent);
diff --git a/arch/mips/include/asm/mach-ar7/ar7.h b/arch/mips/include/asm/mach-ar7/ar7.h
index dd09c3bf0601..cbe75ade3277 100644
--- a/arch/mips/include/asm/mach-ar7/ar7.h
+++ b/arch/mips/include/asm/mach-ar7/ar7.h
@@ -131,10 +131,6 @@ static inline u8 ar7_chip_rev(void)
0x14))) >> 16) & 0xff;
}
-struct clk {
- unsigned int rate;
-};
-
static inline int ar7_has_high_cpmac(void)
{
u16 chip_id = ar7_chip_id();
--
2.29.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 3/7] mips: ralink: convert to CONFIG_COMMON_CLK
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
2021-05-31 18:47 ` [PATCH 1/7] mips: ar7: convert to clkdev_lookup Arnd Bergmann
2021-05-31 18:47 ` [PATCH 2/7] mips: ar7: convert to CONFIG_COMMON_CLK Arnd Bergmann
@ 2021-05-31 18:47 ` Arnd Bergmann
2021-05-31 18:47 ` [PATCH 4/7] m68k: coldfire: use clkdev_lookup on most coldfire Arnd Bergmann
` (5 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-05-31 18:47 UTC (permalink / raw)
To: linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
From: Arnd Bergmann <arnd@arndb.de>
ralink only has a very trivial clock implementation, with everything
being fixed clocks.
Convert it to CONFIG_COMMON_CLK to reduce the number of platforms
that rely on legacy clocks. Of course, the clocks really should
be read from the device tree instead, but this is a step into that
direction.
This adds about 50KB to the kernel image size, which is an unfortunate
increase, but not as bad as I had feared:
text data bss dec hex filename
3778560 1582216 92256 5453032 5334e8 vmlinux-vocore-before
3822148 1601192 92304 5515644 54297c vmlinux-vocore-after
3870226 1644468 200192 5714886 5733c6 vmlinux-rt305x-before
3916727 1668404 200240 5785371 58471b vmlinux-rt305x-after
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/mips/Kconfig | 1 +
arch/mips/ralink/Kconfig | 5 ----
arch/mips/ralink/clk.c | 64 ++--------------------------------------
3 files changed, 4 insertions(+), 66 deletions(-)
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 5dbc60adb2f0..8fe6b30de7dd 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -630,6 +630,7 @@ config MACH_NINTENDO64
config RALINK
bool "Ralink based machines"
select CEVT_R4K
+ select COMMON_CLK
select CSRC_R4K
select BOOT_RAW
select DMA_NONCOHERENT
diff --git a/arch/mips/ralink/Kconfig b/arch/mips/ralink/Kconfig
index ec4daa63c5e3..c800bf5559b5 100644
--- a/arch/mips/ralink/Kconfig
+++ b/arch/mips/ralink/Kconfig
@@ -28,22 +28,18 @@ choice
bool "RT288x"
select MIPS_AUTO_PFN_OFFSET
select MIPS_L1_CACHE_SHIFT_4
- select HAVE_LEGACY_CLK
select HAVE_PCI
config SOC_RT305X
bool "RT305x"
- select HAVE_LEGACY_CLK
config SOC_RT3883
bool "RT3883"
- select HAVE_LEGACY_CLK
select HAVE_PCI
config SOC_MT7620
bool "MT7620/8"
select CPU_MIPSR2_IRQ_VI
- select HAVE_LEGACY_CLK
select HAVE_PCI
config SOC_MT7621
@@ -54,7 +50,6 @@ choice
select SYS_SUPPORTS_MIPS_CPS
select SYS_SUPPORTS_HIGHMEM
select MIPS_GIC
- select COMMON_CLK
select CLKSRC_MIPS_GIC
select HAVE_PCI if PCI_MT7621
select SOC_BUS
diff --git a/arch/mips/ralink/clk.c b/arch/mips/ralink/clk.c
index f0bcb1051c30..5b02bb7e0829 100644
--- a/arch/mips/ralink/clk.c
+++ b/arch/mips/ralink/clk.c
@@ -10,79 +10,21 @@
#include <linux/export.h>
#include <linux/clkdev.h>
#include <linux/clk.h>
+#include <linux/clk-provider.h>
#include <asm/time.h>
#include "common.h"
-struct clk {
- struct clk_lookup cl;
- unsigned long rate;
-};
-
void ralink_clk_add(const char *dev, unsigned long rate)
{
- struct clk *clk = kzalloc(sizeof(struct clk), GFP_KERNEL);
+ struct clk *clk = clk_register_fixed_rate(NULL, dev, NULL, 0, rate);
if (!clk)
panic("failed to add clock");
- clk->cl.dev_id = dev;
- clk->cl.clk = clk;
-
- clk->rate = rate;
-
- clkdev_add(&clk->cl);
-}
-
-/*
- * Linux clock API
- */
-int clk_enable(struct clk *clk)
-{
- return 0;
-}
-EXPORT_SYMBOL_GPL(clk_enable);
-
-void clk_disable(struct clk *clk)
-{
-}
-EXPORT_SYMBOL_GPL(clk_disable);
-
-unsigned long clk_get_rate(struct clk *clk)
-{
- if (!clk)
- return 0;
-
- return clk->rate;
-}
-EXPORT_SYMBOL_GPL(clk_get_rate);
-
-int clk_set_rate(struct clk *clk, unsigned long rate)
-{
- return -1;
-}
-EXPORT_SYMBOL_GPL(clk_set_rate);
-
-long clk_round_rate(struct clk *clk, unsigned long rate)
-{
- return -1;
-}
-EXPORT_SYMBOL_GPL(clk_round_rate);
-
-int clk_set_parent(struct clk *clk, struct clk *parent)
-{
- WARN_ON(clk);
- return -1;
-}
-EXPORT_SYMBOL_GPL(clk_set_parent);
-
-struct clk *clk_get_parent(struct clk *clk)
-{
- WARN_ON(clk);
- return NULL;
+ clkdev_create(clk, NULL, "%s", dev);
}
-EXPORT_SYMBOL_GPL(clk_get_parent);
void __init plat_time_init(void)
{
--
2.29.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 4/7] m68k: coldfire: use clkdev_lookup on most coldfire
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
` (2 preceding siblings ...)
2021-05-31 18:47 ` [PATCH 3/7] mips: ralink: " Arnd Bergmann
@ 2021-05-31 18:47 ` Arnd Bergmann
2021-06-01 9:02 ` Geert Uytterhoeven
2021-06-01 11:54 ` Greg Ungerer
2021-05-31 18:47 ` [PATCH 5/7] m68k: coldfire: remove private clk_get/clk_put Arnd Bergmann
` (4 subsequent siblings)
8 siblings, 2 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-05-31 18:47 UTC (permalink / raw)
To: linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
From: Arnd Bergmann <arnd@arndb.de>
Coldfire is now the only target that implements the clk_get()/clk_put()
helpers itself rather than using the common implementation.
Most coldfire variants only have two distinct clocks and use the clk
code purely for lookup. Change those over to use clkdev_lookup instead
but leave the custom clk interface for those two clocks.
Also leave the four SoCs that have gated clocks.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/m68k/Kconfig.cpu | 4 ++++
arch/m68k/coldfire/clk.c | 16 ++++++-------
arch/m68k/coldfire/m5206.c | 25 +++++++++------------
arch/m68k/coldfire/m523x.c | 42 ++++++++++++++--------------------
arch/m68k/coldfire/m5249.c | 33 ++++++++++++---------------
arch/m68k/coldfire/m525x.c | 33 ++++++++++++---------------
arch/m68k/coldfire/m5272.c | 35 ++++++++++++-----------------
arch/m68k/coldfire/m527x.c | 46 +++++++++++++++-----------------------
arch/m68k/coldfire/m528x.c | 42 ++++++++++++++--------------------
arch/m68k/coldfire/m5307.c | 27 ++++++++++------------
arch/m68k/coldfire/m5407.c | 25 +++++++++------------
arch/m68k/coldfire/m54xx.c | 33 ++++++++++++---------------
12 files changed, 154 insertions(+), 207 deletions(-)
diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
index f4d23977d2a5..b3483929b313 100644
--- a/arch/m68k/Kconfig.cpu
+++ b/arch/m68k/Kconfig.cpu
@@ -328,6 +328,10 @@ config COLDFIRE_SLTIMERS
bool
select LEGACY_TIMER_TICK
+config COLDFIRE_CLKDEV_LOOKUP
+ def_bool !(M5206 || M5206e || M53xx || M5441x)
+ select CLKDEV_LOOKUP
+
endif # COLDFIRE
diff --git a/arch/m68k/coldfire/clk.c b/arch/m68k/coldfire/clk.c
index 076a9caa9557..ffe36627bab8 100644
--- a/arch/m68k/coldfire/clk.c
+++ b/arch/m68k/coldfire/clk.c
@@ -71,7 +71,6 @@ struct clk_ops clk_ops1 = {
.disable = __clk_disable1,
};
#endif /* MCFPM_PPMCR1 */
-#endif /* MCFPM_PPMCR0 */
struct clk *clk_get(struct device *dev, const char *id)
{
@@ -87,6 +86,14 @@ struct clk *clk_get(struct device *dev, const char *id)
}
EXPORT_SYMBOL(clk_get);
+void clk_put(struct clk *clk)
+{
+ if (clk->enabled != 0)
+ pr_warn("clk_put %s still enabled\n", clk->name);
+}
+EXPORT_SYMBOL(clk_put);
+#endif /* MCFPM_PPMCR0 */
+
int clk_enable(struct clk *clk)
{
unsigned long flags;
@@ -117,13 +124,6 @@ void clk_disable(struct clk *clk)
}
EXPORT_SYMBOL(clk_disable);
-void clk_put(struct clk *clk)
-{
- if (clk->enabled != 0)
- pr_warn("clk_put %s still enabled\n", clk->name);
-}
-EXPORT_SYMBOL(clk_put);
-
unsigned long clk_get_rate(struct clk *clk)
{
if (!clk)
diff --git a/arch/m68k/coldfire/m5206.c b/arch/m68k/coldfire/m5206.c
index 2f14ea95c391..5e726e94b5ab 100644
--- a/arch/m68k/coldfire/m5206.c
+++ b/arch/m68k/coldfire/m5206.c
@@ -10,6 +10,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -23,21 +24,15 @@
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr0, "mcftmr.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr1, "mcftmr.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcftmr0,
- &clk_mcftmr1,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfi2c0,
- NULL
+static struct clk_lookup m5206_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &clk_pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcftmr.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcftmr.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
};
/***************************************************************************/
@@ -66,6 +61,8 @@ void __init config_BSP(char *commandp, int size)
mcf_mapirq2imr(28, MCFINTC_EINT4);
mcf_mapirq2imr(31, MCFINTC_EINT7);
m5206_i2c_init();
+
+ clkdev_add_table(m5206_clk_lookup, ARRAY_SIZE(m5206_clk_lookup));
}
/***************************************************************************/
diff --git a/arch/m68k/coldfire/m523x.c b/arch/m68k/coldfire/m523x.c
index ddf2496ed117..193c178162c1 100644
--- a/arch/m68k/coldfire/m523x.c
+++ b/arch/m68k/coldfire/m523x.c
@@ -13,6 +13,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -26,31 +27,20 @@
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcfpit0, "mcfpit.0", MCF_CLK);
-DEFINE_CLK(mcfpit1, "mcfpit.1", MCF_CLK);
-DEFINE_CLK(mcfpit2, "mcfpit.2", MCF_CLK);
-DEFINE_CLK(mcfpit3, "mcfpit.3", MCF_CLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart2, "mcfuart.2", MCF_BUSCLK);
-DEFINE_CLK(mcfqspi0, "mcfqspi.0", MCF_BUSCLK);
-DEFINE_CLK(fec0, "fec.0", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
-
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcfpit0,
- &clk_mcfpit1,
- &clk_mcfpit2,
- &clk_mcfpit3,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfuart2,
- &clk_mcfqspi0,
- &clk_fec0,
- &clk_mcfi2c0,
- NULL
+
+struct clk_lookup m523x_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &clk_pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcfpit.0", NULL, &clk_pll),
+ CLKDEV_INIT("mcfpit.1", NULL, &clk_pll),
+ CLKDEV_INIT("mcfpit.2", NULL, &clk_pll),
+ CLKDEV_INIT("mcfpit.3", NULL, &clk_pll),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.2", NULL, &clk_sys),
+ CLKDEV_INIT("mcfqspi.0", NULL, &clk_sys),
+ CLKDEV_INIT("fec.0", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
};
/***************************************************************************/
@@ -100,6 +90,8 @@ void __init config_BSP(char *commandp, int size)
m523x_fec_init();
m523x_qspi_init();
m523x_i2c_init();
+
+ clkdev_add_table(m523x_clk_lookup, ARRAY_SIZE(m523x_clk_lookup));
}
/***************************************************************************/
diff --git a/arch/m68k/coldfire/m5249.c b/arch/m68k/coldfire/m5249.c
index 0590f8c421f1..6d66972de214 100644
--- a/arch/m68k/coldfire/m5249.c
+++ b/arch/m68k/coldfire/m5249.c
@@ -9,6 +9,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -23,25 +24,17 @@
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr0, "mcftmr.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr1, "mcftmr.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfqspi0, "mcfqspi.0", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c1, "imx1-i2c.1", MCF_BUSCLK);
-
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcftmr0,
- &clk_mcftmr1,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfqspi0,
- &clk_mcfi2c0,
- &clk_mcfi2c1,
- NULL
+
+struct clk_lookup m5249_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &clk_pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcftmr.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcftmr.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfqspi.0", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.1", NULL, &clk_sys),
};
/***************************************************************************/
@@ -137,6 +130,8 @@ void __init config_BSP(char *commandp, int size)
#endif
m5249_qspi_init();
m5249_i2c_init();
+
+ clkdev_add_table(m5249_clk_lookup, ARRAY_SIZE(m5249_clk_lookup));
}
/***************************************************************************/
diff --git a/arch/m68k/coldfire/m525x.c b/arch/m68k/coldfire/m525x.c
index 1772359c416c..2c4d2ca2f20d 100644
--- a/arch/m68k/coldfire/m525x.c
+++ b/arch/m68k/coldfire/m525x.c
@@ -9,6 +9,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -23,25 +24,17 @@
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr0, "mcftmr.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr1, "mcftmr.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfqspi0, "mcfqspi.0", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c1, "imx1-i2c.1", MCF_BUSCLK);
-
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcftmr0,
- &clk_mcftmr1,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfqspi0,
- &clk_mcfi2c0,
- &clk_mcfi2c1,
- NULL
+
+static struct clk_lookup m525x_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcftmr.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcftmr.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfqspi.0", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.1", NULL, &clk_sys),
};
/***************************************************************************/
@@ -88,6 +81,8 @@ void __init config_BSP(char *commandp, int size)
m525x_qspi_init();
m525x_i2c_init();
+
+ clkdev_add_table(m525x_clk_lookup, ARRAY_SIZE(m525x_clk_lookup));
}
/***************************************************************************/
diff --git a/arch/m68k/coldfire/m5272.c b/arch/m68k/coldfire/m5272.c
index 6b3ab583c698..734dab657fe3 100644
--- a/arch/m68k/coldfire/m5272.c
+++ b/arch/m68k/coldfire/m5272.c
@@ -10,6 +10,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -34,27 +35,18 @@ unsigned char ledbank = 0xff;
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr0, "mcftmr.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr1, "mcftmr.1", MCF_BUSCLK);
-DEFINE_CLK(mcftmr2, "mcftmr.2", MCF_BUSCLK);
-DEFINE_CLK(mcftmr3, "mcftmr.3", MCF_BUSCLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfqspi0, "mcfqspi.0", MCF_BUSCLK);
-DEFINE_CLK(fec0, "fec.0", MCF_BUSCLK);
-
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcftmr0,
- &clk_mcftmr1,
- &clk_mcftmr2,
- &clk_mcftmr3,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfqspi0,
- &clk_fec0,
- NULL
+
+static struct clk_lookup m5272_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &clk_pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcftmr.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcftmr.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcftmr.2", NULL, &clk_sys),
+ CLKDEV_INIT("mcftmr.3", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfqspi.0", NULL, &clk_sys),
+ CLKDEV_INIT("fec.0", NULL, &clk_sys),
};
/***************************************************************************/
@@ -128,6 +120,7 @@ static int __init init_BSP(void)
{
m5272_uarts_init();
fixed_phy_add(PHY_POLL, 0, &nettel_fixed_phy_status);
+ clkdev_add_table(m5272_clk_lookup, ARRAY_SIZE(m5272_clk_lookup));
return 0;
}
diff --git a/arch/m68k/coldfire/m527x.c b/arch/m68k/coldfire/m527x.c
index cad462df6861..ff29c7a947e2 100644
--- a/arch/m68k/coldfire/m527x.c
+++ b/arch/m68k/coldfire/m527x.c
@@ -13,6 +13,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -27,33 +28,21 @@
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcfpit0, "mcfpit.0", MCF_CLK);
-DEFINE_CLK(mcfpit1, "mcfpit.1", MCF_CLK);
-DEFINE_CLK(mcfpit2, "mcfpit.2", MCF_CLK);
-DEFINE_CLK(mcfpit3, "mcfpit.3", MCF_CLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart2, "mcfuart.2", MCF_BUSCLK);
-DEFINE_CLK(mcfqspi0, "mcfqspi.0", MCF_BUSCLK);
-DEFINE_CLK(fec0, "fec.0", MCF_BUSCLK);
-DEFINE_CLK(fec1, "fec.1", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
-
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcfpit0,
- &clk_mcfpit1,
- &clk_mcfpit2,
- &clk_mcfpit3,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfuart2,
- &clk_mcfqspi0,
- &clk_fec0,
- &clk_fec1,
- &clk_mcfi2c0,
- NULL
+
+static struct clk_lookup m527x_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &clk_pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcfpit.0", NULL, &clk_pll),
+ CLKDEV_INIT("mcfpit.1", NULL, &clk_pll),
+ CLKDEV_INIT("mcfpit.2", NULL, &clk_pll),
+ CLKDEV_INIT("mcfpit.3", NULL, &clk_pll),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.2", NULL, &clk_sys),
+ CLKDEV_INIT("mcfqspi.0", NULL, &clk_sys),
+ CLKDEV_INIT("fec.0", NULL, &clk_sys),
+ CLKDEV_INIT("fec.1", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
};
/***************************************************************************/
@@ -97,7 +86,7 @@ static void __init m527x_i2c_init(void)
/* set PAR_SCL to SCL and PAR_SDA to SDA */
par = readw(MCFGPIO_PAR_FECI2C);
par |= 0x0f;
- writew(par, MCFGPIO_PAR_FECI2C);
+ wm527x_clk_lookupritew(par, MCFGPIO_PAR_FECI2C);
#endif
#endif /* IS_ENABLED(CONFIG_I2C_IMX) */
}
@@ -151,6 +140,7 @@ void __init config_BSP(char *commandp, int size)
m527x_fec_init();
m527x_qspi_init();
m527x_i2c_init();
+ clkdev_add_table(m527x_clk_lookup, ARRAY_SIZE(m527x_clk_lookup));
}
/***************************************************************************/
diff --git a/arch/m68k/coldfire/m528x.c b/arch/m68k/coldfire/m528x.c
index 7ad3193887e8..51a6a6236e12 100644
--- a/arch/m68k/coldfire/m528x.c
+++ b/arch/m68k/coldfire/m528x.c
@@ -13,6 +13,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -28,31 +29,20 @@
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcfpit0, "mcfpit.0", MCF_CLK);
-DEFINE_CLK(mcfpit1, "mcfpit.1", MCF_CLK);
-DEFINE_CLK(mcfpit2, "mcfpit.2", MCF_CLK);
-DEFINE_CLK(mcfpit3, "mcfpit.3", MCF_CLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart2, "mcfuart.2", MCF_BUSCLK);
-DEFINE_CLK(mcfqspi0, "mcfqspi.0", MCF_BUSCLK);
-DEFINE_CLK(fec0, "fec.0", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
-
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcfpit0,
- &clk_mcfpit1,
- &clk_mcfpit2,
- &clk_mcfpit3,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfuart2,
- &clk_mcfqspi0,
- &clk_fec0,
- &clk_mcfi2c0,
- NULL
+
+static struct clk_lookup m528x_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &clk_pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcfpit.0", NULL, &clk_pll),
+ CLKDEV_INIT("mcfpit.1", NULL, &clk_pll),
+ CLKDEV_INIT("mcfpit.2", NULL, &clk_pll),
+ CLKDEV_INIT("mcfpit.3", NULL, &clk_pll),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.2", NULL, &clk_sys),
+ CLKDEV_INIT("mcfqspi.0", NULL, &clk_sys),
+ CLKDEV_INIT("fec.0", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
};
/***************************************************************************/
@@ -146,6 +136,8 @@ void __init config_BSP(char *commandp, int size)
m528x_fec_init();
m528x_qspi_init();
m528x_i2c_init();
+
+ clkdev_add_table(m528x_clk_lookup, ARRAY_SIZE(m528x_clk_lookup));
}
/***************************************************************************/
diff --git a/arch/m68k/coldfire/m5307.c b/arch/m68k/coldfire/m5307.c
index 64b4b1fd34ff..4ed2e43ab3ad 100644
--- a/arch/m68k/coldfire/m5307.c
+++ b/arch/m68k/coldfire/m5307.c
@@ -10,6 +10,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -32,21 +33,15 @@ unsigned char ledbank = 0xff;
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr0, "mcftmr.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr1, "mcftmr.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
-
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcftmr0,
- &clk_mcftmr1,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfi2c0,
- NULL
+
+static struct clk_lookup m5307_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &clk_pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcftmr.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcftmr.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
};
/***************************************************************************/
@@ -88,6 +83,8 @@ void __init config_BSP(char *commandp, int size)
wdebug(MCFDEBUG_CSR, MCFDEBUG_CSR_PSTCLK);
#endif
m5307_i2c_init();
+
+ clkdev_add_table(m5307_clk_lookup, ARRAY_SIZE(m5307_clk_lookup));
}
/***************************************************************************/
diff --git a/arch/m68k/coldfire/m5407.c b/arch/m68k/coldfire/m5407.c
index 0400d76115a1..b32efb3042a2 100644
--- a/arch/m68k/coldfire/m5407.c
+++ b/arch/m68k/coldfire/m5407.c
@@ -10,6 +10,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -23,21 +24,15 @@
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr0, "mcftmr.0", MCF_BUSCLK);
-DEFINE_CLK(mcftmr1, "mcftmr.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcftmr0,
- &clk_mcftmr1,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfi2c0,
- NULL
+static struct clk_lookup m5407_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &clk_pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcftmr.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcftmr.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
};
/***************************************************************************/
@@ -63,6 +58,8 @@ void __init config_BSP(char *commandp, int size)
mcf_mapirq2imr(29, MCFINTC_EINT5);
mcf_mapirq2imr(31, MCFINTC_EINT7);
m5407_i2c_init();
+
+ clkdev_add_table(m5407_clk_lookup, ARRAY_SIZE(m5407_clk_lookup));
}
/***************************************************************************/
diff --git a/arch/m68k/coldfire/m54xx.c b/arch/m68k/coldfire/m54xx.c
index 360c723c0ae6..8e3c8fee8327 100644
--- a/arch/m68k/coldfire/m54xx.c
+++ b/arch/m68k/coldfire/m54xx.c
@@ -9,6 +9,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -32,25 +33,17 @@
DEFINE_CLK(pll, "pll.0", MCF_CLK);
DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
-DEFINE_CLK(mcfslt0, "mcfslt.0", MCF_BUSCLK);
-DEFINE_CLK(mcfslt1, "mcfslt.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
-DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
-DEFINE_CLK(mcfuart2, "mcfuart.2", MCF_BUSCLK);
-DEFINE_CLK(mcfuart3, "mcfuart.3", MCF_BUSCLK);
-DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
-
-struct clk *mcf_clks[] = {
- &clk_pll,
- &clk_sys,
- &clk_mcfslt0,
- &clk_mcfslt1,
- &clk_mcfuart0,
- &clk_mcfuart1,
- &clk_mcfuart2,
- &clk_mcfuart3,
- &clk_mcfi2c0,
- NULL
+
+static struct clk_lookup m54xx_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "pll.0", &clk_pll),
+ CLKDEV_INIT(NULL, "sys.0", &clk_sys),
+ CLKDEV_INIT("mcfslt.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfslt.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.2", NULL, &clk_sys),
+ CLKDEV_INIT("mcfuart.3", NULL, &clk_sys),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
};
/***************************************************************************/
@@ -100,6 +93,8 @@ void __init config_BSP(char *commandp, int size)
mach_sched_init = hw_timer_init;
m54xx_uarts_init();
m54xx_i2c_init();
+
+ clkdev_add_table(m54xx_clk_lookup, ARRAY_SIZE(m54xx_clk_lookup));
}
/***************************************************************************/
--
2.29.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 5/7] m68k: coldfire: remove private clk_get/clk_put
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
` (3 preceding siblings ...)
2021-05-31 18:47 ` [PATCH 4/7] m68k: coldfire: use clkdev_lookup on most coldfire Arnd Bergmann
@ 2021-05-31 18:47 ` Arnd Bergmann
2021-05-31 18:47 ` [PATCH 6/7] clkdev: remove CONFIG_CLKDEV_LOOKUP Arnd Bergmann
` (3 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-05-31 18:47 UTC (permalink / raw)
To: linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
From: Arnd Bergmann <arnd@arndb.de>
Only three SoCs remain that use the custom clk_get/clk_put.
Move these over to clkdev_lookup tables as well. As before,
treat the "sys.0" and "pll.0" clocks as system-wide clocks,
and all the other ones as device specific.
The "name" field in 'struct clock' is now unused, so rename
that as well as a cleanup and to reduce the object code size.
The DEFINE_CLK macro could be changed the same way, but it
is less churn to just leave those in place, that can be
done as a follow-up later if someone is interested.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/m68k/Kconfig.cpu | 5 +-
arch/m68k/coldfire/clk.c | 21 ------
arch/m68k/coldfire/m520x.c | 51 ++++++-------
arch/m68k/coldfire/m53xx.c | 80 ++++++++++-----------
arch/m68k/coldfire/m5441x.c | 126 ++++++++++++++++-----------------
arch/m68k/include/asm/mcfclk.h | 5 --
6 files changed, 129 insertions(+), 159 deletions(-)
diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
index b3483929b313..e54167a64cbf 100644
--- a/arch/m68k/Kconfig.cpu
+++ b/arch/m68k/Kconfig.cpu
@@ -29,6 +29,7 @@ config COLDFIRE
select CPU_HAS_NO_MULDIV64
select GENERIC_CSUM
select GPIOLIB
+ select CLKDEV_LOOKUP
select HAVE_LEGACY_CLK
endchoice
@@ -328,10 +329,6 @@ config COLDFIRE_SLTIMERS
bool
select LEGACY_TIMER_TICK
-config COLDFIRE_CLKDEV_LOOKUP
- def_bool !(M5206 || M5206e || M53xx || M5441x)
- select CLKDEV_LOOKUP
-
endif # COLDFIRE
diff --git a/arch/m68k/coldfire/clk.c b/arch/m68k/coldfire/clk.c
index ffe36627bab8..2ed841e94111 100644
--- a/arch/m68k/coldfire/clk.c
+++ b/arch/m68k/coldfire/clk.c
@@ -71,27 +71,6 @@ struct clk_ops clk_ops1 = {
.disable = __clk_disable1,
};
#endif /* MCFPM_PPMCR1 */
-
-struct clk *clk_get(struct device *dev, const char *id)
-{
- const char *clk_name = dev ? dev_name(dev) : id ? id : NULL;
- struct clk *clk;
- unsigned i;
-
- for (i = 0; (clk = mcf_clks[i]) != NULL; ++i)
- if (!strcmp(clk->name, clk_name))
- return clk;
- pr_warn("clk_get: didn't find clock %s\n", clk_name);
- return ERR_PTR(-ENOENT);
-}
-EXPORT_SYMBOL(clk_get);
-
-void clk_put(struct clk *clk)
-{
- if (clk->enabled != 0)
- pr_warn("clk_put %s still enabled\n", clk->name);
-}
-EXPORT_SYMBOL(clk_put);
#endif /* MCFPM_PPMCR0 */
int clk_enable(struct clk *clk)
diff --git a/arch/m68k/coldfire/m520x.c b/arch/m68k/coldfire/m520x.c
index b5b2a267dada..d2f96b40aee1 100644
--- a/arch/m68k/coldfire/m520x.c
+++ b/arch/m68k/coldfire/m520x.c
@@ -12,6 +12,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -48,31 +49,29 @@ DEFINE_CLK(0, "sys.0", 40, MCF_BUSCLK);
DEFINE_CLK(0, "gpio.0", 41, MCF_BUSCLK);
DEFINE_CLK(0, "sdram.0", 42, MCF_CLK);
-struct clk *mcf_clks[] = {
- &__clk_0_2, /* flexbus */
- &__clk_0_12, /* fec.0 */
- &__clk_0_17, /* edma */
- &__clk_0_18, /* intc.0 */
- &__clk_0_21, /* iack.0 */
- &__clk_0_22, /* imx1-i2c.0 */
- &__clk_0_23, /* mcfqspi.0 */
- &__clk_0_24, /* mcfuart.0 */
- &__clk_0_25, /* mcfuart.1 */
- &__clk_0_26, /* mcfuart.2 */
- &__clk_0_28, /* mcftmr.0 */
- &__clk_0_29, /* mcftmr.1 */
- &__clk_0_30, /* mcftmr.2 */
- &__clk_0_31, /* mcftmr.3 */
-
- &__clk_0_32, /* mcfpit.0 */
- &__clk_0_33, /* mcfpit.1 */
- &__clk_0_34, /* mcfeport.0 */
- &__clk_0_35, /* mcfwdt.0 */
- &__clk_0_36, /* pll.0 */
- &__clk_0_40, /* sys.0 */
- &__clk_0_41, /* gpio.0 */
- &__clk_0_42, /* sdram.0 */
- NULL,
+static struct clk_lookup m520x_clk_lookup[] = {
+ CLKDEV_INIT(NULL, "flexbus", &__clk_0_2),
+ CLKDEV_INIT("fec.0", NULL, &__clk_0_12),
+ CLKDEV_INIT("edma", NULL, &__clk_0_17),
+ CLKDEV_INIT("intc.0", NULL, &__clk_0_18),
+ CLKDEV_INIT("iack.0", NULL, &__clk_0_21),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &__clk_0_22),
+ CLKDEV_INIT("mcfqspi.0", NULL, &__clk_0_23),
+ CLKDEV_INIT("mcfuart.0", NULL, &__clk_0_24),
+ CLKDEV_INIT("mcfuart.1", NULL, &__clk_0_25),
+ CLKDEV_INIT("mcfuart.2", NULL, &__clk_0_26),
+ CLKDEV_INIT("mcftmr.0", NULL, &__clk_0_28),
+ CLKDEV_INIT("mcftmr.1", NULL, &__clk_0_29),
+ CLKDEV_INIT("mcftmr.2", NULL, &__clk_0_30),
+ CLKDEV_INIT("mcftmr.3", NULL, &__clk_0_31),
+ CLKDEV_INIT("mcfpit.0", NULL, &__clk_0_32),
+ CLKDEV_INIT("mcfpit.1", NULL, &__clk_0_33),
+ CLKDEV_INIT("mcfeport.0", NULL, &__clk_0_34),
+ CLKDEV_INIT("mcfwdt.0", NULL, &__clk_0_35),
+ CLKDEV_INIT(NULL, "pll.0", &__clk_0_36),
+ CLKDEV_INIT(NULL, "sys.0", &__clk_0_40),
+ CLKDEV_INIT("gpio.0", NULL, &__clk_0_41),
+ CLKDEV_INIT("sdram.0", NULL, &__clk_0_42),
};
static struct clk * const enable_clks[] __initconst = {
@@ -115,6 +114,8 @@ static void __init m520x_clk_init(void)
/* make sure these clocks are disabled */
for (i = 0; i < ARRAY_SIZE(disable_clks); ++i)
__clk_init_disabled(disable_clks[i]);
+
+ clkdev_add_table(m520x_clk_lookup, ARRAY_SIZE(m520x_clk_lookup));
}
/***************************************************************************/
diff --git a/arch/m68k/coldfire/m53xx.c b/arch/m68k/coldfire/m53xx.c
index 075722c0c4f0..335095bb1d8a 100644
--- a/arch/m68k/coldfire/m53xx.c
+++ b/arch/m68k/coldfire/m53xx.c
@@ -13,6 +13,7 @@
/***************************************************************************/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -65,45 +66,42 @@ DEFINE_CLK(1, "mdha.0", 32, MCF_CLK);
DEFINE_CLK(1, "skha.0", 33, MCF_CLK);
DEFINE_CLK(1, "rng.0", 34, MCF_CLK);
-struct clk *mcf_clks[] = {
- &__clk_0_2, /* flexbus */
- &__clk_0_8, /* mcfcan.0 */
- &__clk_0_12, /* fec.0 */
- &__clk_0_17, /* edma */
- &__clk_0_18, /* intc.0 */
- &__clk_0_19, /* intc.1 */
- &__clk_0_21, /* iack.0 */
- &__clk_0_22, /* imx1-i2c.0 */
- &__clk_0_23, /* mcfqspi.0 */
- &__clk_0_24, /* mcfuart.0 */
- &__clk_0_25, /* mcfuart.1 */
- &__clk_0_26, /* mcfuart.2 */
- &__clk_0_28, /* mcftmr.0 */
- &__clk_0_29, /* mcftmr.1 */
- &__clk_0_30, /* mcftmr.2 */
- &__clk_0_31, /* mcftmr.3 */
-
- &__clk_0_32, /* mcfpit.0 */
- &__clk_0_33, /* mcfpit.1 */
- &__clk_0_34, /* mcfpit.2 */
- &__clk_0_35, /* mcfpit.3 */
- &__clk_0_36, /* mcfpwm.0 */
- &__clk_0_37, /* mcfeport.0 */
- &__clk_0_38, /* mcfwdt.0 */
- &__clk_0_40, /* sys.0 */
- &__clk_0_41, /* gpio.0 */
- &__clk_0_42, /* mcfrtc.0 */
- &__clk_0_43, /* mcflcd.0 */
- &__clk_0_44, /* mcfusb-otg.0 */
- &__clk_0_45, /* mcfusb-host.0 */
- &__clk_0_46, /* sdram.0 */
- &__clk_0_47, /* ssi.0 */
- &__clk_0_48, /* pll.0 */
-
- &__clk_1_32, /* mdha.0 */
- &__clk_1_33, /* skha.0 */
- &__clk_1_34, /* rng.0 */
- NULL,
+static struct clk_lookup m53xx_clk_lookup[] = {
+ CLKDEV_INIT("flexbus", NULL, &__clk_0_2),
+ CLKDEV_INIT("mcfcan.0", NULL, &__clk_0_8),
+ CLKDEV_INIT("fec.0", NULL, &__clk_0_12),
+ CLKDEV_INIT("edma", NULL, &__clk_0_17),
+ CLKDEV_INIT("intc.0", NULL, &__clk_0_18),
+ CLKDEV_INIT("intc.1", NULL, &__clk_0_19),
+ CLKDEV_INIT("iack.0", NULL, &__clk_0_21),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &__clk_0_22),
+ CLKDEV_INIT("mcfqspi.0", NULL, &__clk_0_23),
+ CLKDEV_INIT("mcfuart.0", NULL, &__clk_0_24),
+ CLKDEV_INIT("mcfuart.1", NULL, &__clk_0_25),
+ CLKDEV_INIT("mcfuart.2", NULL, &__clk_0_26),
+ CLKDEV_INIT("mcftmr.0", NULL, &__clk_0_28),
+ CLKDEV_INIT("mcftmr.1", NULL, &__clk_0_29),
+ CLKDEV_INIT("mcftmr.2", NULL, &__clk_0_30),
+ CLKDEV_INIT("mcftmr.3", NULL, &__clk_0_31),
+ CLKDEV_INIT("mcfpit.0", NULL, &__clk_0_32),
+ CLKDEV_INIT("mcfpit.1", NULL, &__clk_0_33),
+ CLKDEV_INIT("mcfpit.2", NULL, &__clk_0_34),
+ CLKDEV_INIT("mcfpit.3", NULL, &__clk_0_35),
+ CLKDEV_INIT("mcfpwm.0", NULL, &__clk_0_36),
+ CLKDEV_INIT("mcfeport.0", NULL, &__clk_0_37),
+ CLKDEV_INIT("mcfwdt.0", NULL, &__clk_0_38),
+ CLKDEV_INIT(NULL, "sys.0", &__clk_0_40),
+ CLKDEV_INIT("gpio.0", NULL, &__clk_0_41),
+ CLKDEV_INIT("mcfrtc.0", NULL, &__clk_0_42),
+ CLKDEV_INIT("mcflcd.0", NULL, &__clk_0_43),
+ CLKDEV_INIT("mcfusb-otg.0", NULL, &__clk_0_44),
+ CLKDEV_INIT("mcfusb-host.0", NULL, &__clk_0_45),
+ CLKDEV_INIT("sdram.0", NULL, &__clk_0_46),
+ CLKDEV_INIT("ssi.0", NULL, &__clk_0_47),
+ CLKDEV_INIT(NULL, "pll.0", &__clk_0_48),
+ CLKDEV_INIT("mdha.0", NULL, &__clk_1_32),
+ CLKDEV_INIT("skha.0", NULL, &__clk_1_33),
+ CLKDEV_INIT("rng.0", NULL, &__clk_1_34),
};
static struct clk * const enable_clks[] __initconst = {
@@ -158,6 +156,8 @@ static void __init m53xx_clk_init(void)
/* make sure these clocks are disabled */
for (i = 0; i < ARRAY_SIZE(disable_clks); ++i)
__clk_init_disabled(disable_clks[i]);
+
+ clkdev_add_table(m53xx_clk_lookup, ARRAY_SIZE(m53xx_clk_lookup));
}
/***************************************************************************/
@@ -275,7 +275,7 @@ void __init config_BSP(char *commandp, int size)
#define SDRAM_TRFC 7 /* in clocks */
#define SDRAM_TREFI 7800 /* in ns */
-#define EXT_SRAM_ADDRESS (0xC0000000)
+#define EXT_SRAM_ADDRESS (0,xC0000000)
#define FLASH_ADDRESS (0x00000000)
#define SDRAM_ADDRESS (0x40000000)
diff --git a/arch/m68k/coldfire/m5441x.c b/arch/m68k/coldfire/m5441x.c
index 1e5259a652d1..ce14693d18b6 100644
--- a/arch/m68k/coldfire/m5441x.c
+++ b/arch/m68k/coldfire/m5441x.c
@@ -5,6 +5,7 @@
* (C) Copyright Steven King <sfking@fdwdc.com>
*/
+#include <linux/clkdev.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/init.h>
@@ -78,72 +79,67 @@ DEFINE_CLK(2, "ipg.0", 0, MCF_CLK);
DEFINE_CLK(2, "ahb.0", 1, MCF_CLK);
DEFINE_CLK(2, "per.0", 2, MCF_CLK);
-struct clk *mcf_clks[] = {
- &__clk_0_2,
- &__clk_0_8,
- &__clk_0_9,
- &__clk_0_14,
- &__clk_0_15,
- &__clk_0_17,
- &__clk_0_18,
- &__clk_0_19,
- &__clk_0_20,
- &__clk_0_22,
- &__clk_0_23,
- &__clk_0_24,
- &__clk_0_25,
- &__clk_0_26,
- &__clk_0_27,
- &__clk_0_28,
- &__clk_0_29,
- &__clk_0_30,
- &__clk_0_31,
- &__clk_0_32,
- &__clk_0_33,
- &__clk_0_34,
- &__clk_0_35,
- &__clk_0_37,
- &__clk_0_38,
- &__clk_0_39,
- &__clk_0_42,
- &__clk_0_43,
- &__clk_0_44,
- &__clk_0_45,
- &__clk_0_46,
- &__clk_0_47,
- &__clk_0_48,
- &__clk_0_49,
- &__clk_0_50,
- &__clk_0_51,
- &__clk_0_53,
- &__clk_0_54,
- &__clk_0_55,
- &__clk_0_56,
- &__clk_0_63,
-
- &__clk_1_2,
- &__clk_1_4,
- &__clk_1_5,
- &__clk_1_6,
- &__clk_1_7,
- &__clk_1_24,
- &__clk_1_25,
- &__clk_1_26,
- &__clk_1_27,
- &__clk_1_28,
- &__clk_1_29,
- &__clk_1_34,
- &__clk_1_36,
- &__clk_1_37,
-
- &__clk_2_0,
- &__clk_2_1,
- &__clk_2_2,
-
- NULL,
+static struct clk_lookup m5411x_clk_lookup[] = {
+ CLKDEV_INIT("flexbus", NULL, &__clk_0_2),
+ CLKDEV_INIT("mcfcan.0", NULL, &__clk_0_8),
+ CLKDEV_INIT("mcfcan.1", NULL, &__clk_0_9),
+ CLKDEV_INIT("imx1-i2c.1", NULL, &__clk_0_14),
+ CLKDEV_INIT("mcfdspi.1", NULL, &__clk_0_15),
+ CLKDEV_INIT("edma", NULL, &__clk_0_17),
+ CLKDEV_INIT("intc.0", NULL, &__clk_0_18),
+ CLKDEV_INIT("intc.1", NULL, &__clk_0_19),
+ CLKDEV_INIT("intc.2", NULL, &__clk_0_20),
+ CLKDEV_INIT("imx1-i2c.0", NULL, &__clk_0_22),
+ CLKDEV_INIT("fsl-dspi.0", NULL, &__clk_0_23),
+ CLKDEV_INIT("mcfuart.0", NULL, &__clk_0_24),
+ CLKDEV_INIT("mcfuart.1", NULL, &__clk_0_25),
+ CLKDEV_INIT("mcfuart.2", NULL, &__clk_0_26),
+ CLKDEV_INIT("mcfuart.3", NULL, &__clk_0_27),
+ CLKDEV_INIT("mcftmr.0", NULL, &__clk_0_28),
+ CLKDEV_INIT("mcftmr.1", NULL, &__clk_0_29),
+ CLKDEV_INIT("mcftmr.2", NULL, &__clk_0_30),
+ CLKDEV_INIT("mcftmr.3", NULL, &__clk_0_31),
+ CLKDEV_INIT("mcfpit.0", NULL, &__clk_0_32),
+ CLKDEV_INIT("mcfpit.1", NULL, &__clk_0_33),
+ CLKDEV_INIT("mcfpit.2", NULL, &__clk_0_34),
+ CLKDEV_INIT("mcfpit.3", NULL, &__clk_0_35),
+ CLKDEV_INIT("mcfeport.0", NULL, &__clk_0_37),
+ CLKDEV_INIT("mcfadc.0", NULL, &__clk_0_38),
+ CLKDEV_INIT("mcfdac.0", NULL, &__clk_0_39),
+ CLKDEV_INIT("mcfrtc.0", NULL, &__clk_0_42),
+ CLKDEV_INIT("mcfsim.0", NULL, &__clk_0_43),
+ CLKDEV_INIT("mcfusb-otg.0", NULL, &__clk_0_44),
+ CLKDEV_INIT("mcfusb-host.0", NULL, &__clk_0_45),
+ CLKDEV_INIT("mcfddr-sram.0", NULL, &__clk_0_46),
+ CLKDEV_INIT("mcfssi.0", NULL, &__clk_0_47),
+ CLKDEV_INIT(NULL, "pll.0", &__clk_0_48),
+ CLKDEV_INIT("mcfrng.0", NULL, &__clk_0_49),
+ CLKDEV_INIT("mcfssi.1", NULL, &__clk_0_50),
+ CLKDEV_INIT("sdhci-esdhc-mcf.0", NULL, &__clk_0_51),
+ CLKDEV_INIT("enet-fec.0", NULL, &__clk_0_53),
+ CLKDEV_INIT("enet-fec.1", NULL, &__clk_0_54),
+ CLKDEV_INIT("switch.0", NULL, &__clk_0_55),
+ CLKDEV_INIT("switch.1", NULL, &__clk_0_56),
+ CLKDEV_INIT("nand.0", NULL, &__clk_0_63),
+ CLKDEV_INIT("mcfow.0", NULL, &__clk_1_2),
+ CLKDEV_INIT("imx1-i2c.2", NULL, &__clk_1_4),
+ CLKDEV_INIT("imx1-i2c.3", NULL, &__clk_1_5),
+ CLKDEV_INIT("imx1-i2c.4", NULL, &__clk_1_6),
+ CLKDEV_INIT("imx1-i2c.5", NULL, &__clk_1_7),
+ CLKDEV_INIT("mcfuart.4", NULL, &__clk_1_24),
+ CLKDEV_INIT("mcfuart.5", NULL, &__clk_1_25),
+ CLKDEV_INIT("mcfuart.6", NULL, &__clk_1_26),
+ CLKDEV_INIT("mcfuart.7", NULL, &__clk_1_27),
+ CLKDEV_INIT("mcfuart.8", NULL, &__clk_1_28),
+ CLKDEV_INIT("mcfuart.9", NULL, &__clk_1_29),
+ CLKDEV_INIT("mcfpwm.0", NULL, &__clk_1_34),
+ CLKDEV_INIT(NULL, "sys.0", &__clk_1_36),
+ CLKDEV_INIT("gpio.0", NULL, &__clk_1_37),
+ CLKDEV_INIT("ipg.0", NULL, &__clk_2_0),
+ CLKDEV_INIT("ahb.0", NULL, &__clk_2_1),
+ CLKDEV_INIT("per.0", NULL, &__clk_2_2),
};
-
static struct clk * const enable_clks[] __initconst = {
/* make sure these clocks are enabled */
&__clk_0_15, /* dspi.1 */
@@ -228,6 +224,8 @@ static void __init m5441x_clk_init(void)
/* make sure these clocks are disabled */
for (i = 0; i < ARRAY_SIZE(disable_clks); ++i)
__clk_init_disabled(disable_clks[i]);
+
+ clkdev_add_table(m5411x_clk_lookup, ARRAY_SIZE(m5411x_clk_lookup));
}
static void __init m5441x_uarts_init(void)
diff --git a/arch/m68k/include/asm/mcfclk.h b/arch/m68k/include/asm/mcfclk.h
index 722627e06d66..4e9a6b827a14 100644
--- a/arch/m68k/include/asm/mcfclk.h
+++ b/arch/m68k/include/asm/mcfclk.h
@@ -15,15 +15,12 @@ struct clk_ops {
};
struct clk {
- const char *name;
struct clk_ops *clk_ops;
unsigned long rate;
unsigned long enabled;
u8 slot;
};
-extern struct clk *mcf_clks[];
-
#ifdef MCFPM_PPMCR0
extern struct clk_ops clk_ops0;
#ifdef MCFPM_PPMCR1
@@ -34,7 +31,6 @@ extern struct clk_ops clk_ops2;
#define DEFINE_CLK(clk_bank, clk_name, clk_slot, clk_rate) \
static struct clk __clk_##clk_bank##_##clk_slot = { \
- .name = clk_name, \
.clk_ops = &clk_ops##clk_bank, \
.rate = clk_rate, \
.slot = clk_slot, \
@@ -45,7 +41,6 @@ void __clk_init_disabled(struct clk *);
#else
#define DEFINE_CLK(clk_ref, clk_name, clk_rate) \
static struct clk clk_##clk_ref = { \
- .name = clk_name, \
.rate = clk_rate, \
}
#endif /* MCFPM_PPMCR0 */
--
2.29.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 6/7] clkdev: remove CONFIG_CLKDEV_LOOKUP
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
` (4 preceding siblings ...)
2021-05-31 18:47 ` [PATCH 5/7] m68k: coldfire: remove private clk_get/clk_put Arnd Bergmann
@ 2021-05-31 18:47 ` Arnd Bergmann
2021-05-31 18:47 ` [PATCH 7/7] clkdev: remove unused clkdev_alloc() interfaces Arnd Bergmann
` (2 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-05-31 18:47 UTC (permalink / raw)
To: linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
From: Arnd Bergmann <arnd@arndb.de>
This option is now synonymous with CONFIG_HAVE_CLK, so use
the latter globally. Any out-of-tree platform ports that
still use a private clk_get()/clk_put() implementation should
move to CONFIG_COMMON_CLK.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/arm/Kconfig | 2 --
arch/m68k/Kconfig.cpu | 1 -
arch/mips/Kconfig | 3 ---
arch/mips/pic32/Kconfig | 1 -
arch/sh/Kconfig | 1 -
drivers/clk/Kconfig | 6 +-----
drivers/clk/Makefile | 3 +--
drivers/clocksource/Kconfig | 6 +++---
drivers/mmc/host/Kconfig | 4 ++--
drivers/staging/board/Kconfig | 2 +-
sound/soc/dwc/Kconfig | 2 +-
sound/soc/rockchip/Kconfig | 14 +++++++-------
12 files changed, 16 insertions(+), 29 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 24804f11302d..809317b5a6c6 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -353,7 +353,6 @@ config ARCH_EP93XX
select ARM_VIC
select GENERIC_IRQ_MULTI_HANDLER
select AUTO_ZRELADDR
- select CLKDEV_LOOKUP
select CLKSRC_MMIO
select CPU_ARM920T
select GPIOLIB
@@ -504,7 +503,6 @@ config ARCH_OMAP1
bool "TI OMAP1"
depends on MMU
select ARCH_OMAP
- select CLKDEV_LOOKUP
select CLKSRC_MMIO
select GENERIC_IRQ_CHIP
select GENERIC_IRQ_MULTI_HANDLER
diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
index e54167a64cbf..f4d23977d2a5 100644
--- a/arch/m68k/Kconfig.cpu
+++ b/arch/m68k/Kconfig.cpu
@@ -29,7 +29,6 @@ config COLDFIRE
select CPU_HAS_NO_MULDIV64
select GENERIC_CSUM
select GPIOLIB
- select CLKDEV_LOOKUP
select HAVE_LEGACY_CLK
endchoice
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 8fe6b30de7dd..96ab1a2a9357 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -332,7 +332,6 @@ config BCM63XX
select SWAP_IO_SPACE
select GPIOLIB
select MIPS_L1_CACHE_SHIFT_4
- select CLKDEV_LOOKUP
select HAVE_LEGACY_CLK
help
Support for BCM63XX based boards
@@ -446,7 +445,6 @@ config LANTIQ
select GPIOLIB
select SWAP_IO_SPACE
select BOOT_RAW
- select CLKDEV_LOOKUP
select HAVE_LEGACY_CLK
select USE_OF
select PINCTRL
@@ -643,7 +641,6 @@ config RALINK
select SYS_SUPPORTS_MIPS16
select SYS_SUPPORTS_ZBOOT
select SYS_HAS_EARLY_PRINTK
- select CLKDEV_LOOKUP
select ARCH_HAS_RESET_CONTROLLER
select RESET_CONTROLLER
diff --git a/arch/mips/pic32/Kconfig b/arch/mips/pic32/Kconfig
index 7acbb50c1dcd..bb6ab1f3e80d 100644
--- a/arch/mips/pic32/Kconfig
+++ b/arch/mips/pic32/Kconfig
@@ -17,7 +17,6 @@ config PIC32MZDA
select SYS_SUPPORTS_LITTLE_ENDIAN
select GPIOLIB
select COMMON_CLK
- select CLKDEV_LOOKUP
select LIBFDT
select USE_OF
select PINCTRL
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 68129537e350..45a0549421cd 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -14,7 +14,6 @@ config SUPERH
select ARCH_HIBERNATION_POSSIBLE if MMU
select ARCH_MIGHT_HAVE_PC_PARPORT
select ARCH_WANT_IPC_PARSE_VERSION
- select CLKDEV_LOOKUP
select CPU_NO_EFFICIENT_FFS
select DMA_DECLARE_COHERENT
select GENERIC_ATOMIC64
diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index e80918be8e9c..ed1364ac376b 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -6,10 +6,6 @@ config HAVE_CLK
The <linux/clk.h> calls support software clock gating and
thus are a key power management tool on many systems.
-config CLKDEV_LOOKUP
- bool
- select HAVE_CLK
-
config HAVE_CLK_PREPARE
bool
@@ -26,7 +22,7 @@ menuconfig COMMON_CLK
bool "Common Clock Framework"
depends on !HAVE_LEGACY_CLK
select HAVE_CLK_PREPARE
- select CLKDEV_LOOKUP
+ select HAVE_CLK
select SRCU
select RATIONAL
help
diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
index 5f06879d7fe9..5341c37b62dc 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
@@ -1,7 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
# common clock types
-obj-$(CONFIG_HAVE_CLK) += clk-devres.o clk-bulk.o
-obj-$(CONFIG_CLKDEV_LOOKUP) += clkdev.o
+obj-$(CONFIG_HAVE_CLK) += clk-devres.o clk-bulk.o clkdev.o
obj-$(CONFIG_COMMON_CLK) += clk.o
obj-$(CONFIG_COMMON_CLK) += clk-divider.o
obj-$(CONFIG_COMMON_CLK) += clk-fixed-factor.o
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index 39aa21d01e05..938087347927 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -360,7 +360,7 @@ config ARM_GLOBAL_TIMER
config ARM_TIMER_SP804
bool "Support for Dual Timer SP804 module" if COMPILE_TEST
- depends on GENERIC_SCHED_CLOCK && CLKDEV_LOOKUP
+ depends on GENERIC_SCHED_CLOCK && HAVE_CLK
select CLKSRC_MMIO
select TIMER_OF if OF
@@ -570,12 +570,12 @@ config H8300_TPU
config CLKSRC_IMX_GPT
bool "Clocksource using i.MX GPT" if COMPILE_TEST
- depends on (ARM || ARM64) && CLKDEV_LOOKUP
+ depends on (ARM || ARM64) && HAVE_CLK
select CLKSRC_MMIO
config CLKSRC_IMX_TPM
bool "Clocksource using i.MX TPM" if COMPILE_TEST
- depends on (ARM || ARM64) && CLKDEV_LOOKUP
+ depends on (ARM || ARM64) && HAVE_CLK
select CLKSRC_MMIO
select TIMER_OF
help
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index a4d4c757eea0..4f1468a79126 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -329,7 +329,7 @@ config MMC_SDHCI_S3C
config MMC_SDHCI_PXAV3
tristate "Marvell MMP2 SD Host Controller support (PXAV3)"
- depends on CLKDEV_LOOKUP
+ depends on HAVE_CLK
depends on MMC_SDHCI_PLTFM
depends on ARCH_BERLIN || ARCH_MMP || ARCH_MVEBU || COMPILE_TEST
default CPU_MMP2
@@ -342,7 +342,7 @@ config MMC_SDHCI_PXAV3
config MMC_SDHCI_PXAV2
tristate "Marvell PXA9XX SD Host Controller support (PXAV2)"
- depends on CLKDEV_LOOKUP
+ depends on HAVE_CLK
depends on MMC_SDHCI_PLTFM
depends on ARCH_MMP || COMPILE_TEST
default CPU_PXA910
diff --git a/drivers/staging/board/Kconfig b/drivers/staging/board/Kconfig
index 64c77970eee8..b49216768ef6 100644
--- a/drivers/staging/board/Kconfig
+++ b/drivers/staging/board/Kconfig
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
config STAGING_BOARD
bool "Staging Board Support"
- depends on OF_ADDRESS && OF_IRQ && CLKDEV_LOOKUP
+ depends on OF_ADDRESS && OF_IRQ && HAVE_CLK
help
Staging board base is to support continuous upstream
in-tree development and integration of platform devices.
diff --git a/sound/soc/dwc/Kconfig b/sound/soc/dwc/Kconfig
index 0cd1a15f40aa..71a58f7ac13a 100644
--- a/sound/soc/dwc/Kconfig
+++ b/sound/soc/dwc/Kconfig
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
config SND_DESIGNWARE_I2S
tristate "Synopsys I2S Device Driver"
- depends on CLKDEV_LOOKUP
+ depends on HAVE_CLK
select SND_SOC_GENERIC_DMAENGINE_PCM
help
Say Y or M if you want to add support for I2S driver for
diff --git a/sound/soc/rockchip/Kconfig b/sound/soc/rockchip/Kconfig
index d610b553ea3b..053097b73e28 100644
--- a/sound/soc/rockchip/Kconfig
+++ b/sound/soc/rockchip/Kconfig
@@ -9,7 +9,7 @@ config SND_SOC_ROCKCHIP
config SND_SOC_ROCKCHIP_I2S
tristate "Rockchip I2S Device Driver"
- depends on CLKDEV_LOOKUP && SND_SOC_ROCKCHIP
+ depends on HAVE_CLK && SND_SOC_ROCKCHIP
select SND_SOC_GENERIC_DMAENGINE_PCM
help
Say Y or M if you want to add support for I2S driver for
@@ -18,7 +18,7 @@ config SND_SOC_ROCKCHIP_I2S
config SND_SOC_ROCKCHIP_PDM
tristate "Rockchip PDM Controller Driver"
- depends on CLKDEV_LOOKUP && SND_SOC_ROCKCHIP
+ depends on HAVE_CLK && SND_SOC_ROCKCHIP
select SND_SOC_GENERIC_DMAENGINE_PCM
select RATIONAL
help
@@ -28,7 +28,7 @@ config SND_SOC_ROCKCHIP_PDM
config SND_SOC_ROCKCHIP_SPDIF
tristate "Rockchip SPDIF Device Driver"
- depends on CLKDEV_LOOKUP && SND_SOC_ROCKCHIP
+ depends on HAVE_CLK && SND_SOC_ROCKCHIP
select SND_SOC_GENERIC_DMAENGINE_PCM
help
Say Y or M if you want to add support for SPDIF driver for
@@ -36,7 +36,7 @@ config SND_SOC_ROCKCHIP_SPDIF
config SND_SOC_ROCKCHIP_MAX98090
tristate "ASoC support for Rockchip boards using a MAX98090 codec"
- depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && CLKDEV_LOOKUP
+ depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && HAVE_CLK
select SND_SOC_ROCKCHIP_I2S
select SND_SOC_MAX98090
select SND_SOC_TS3A227E
@@ -47,7 +47,7 @@ config SND_SOC_ROCKCHIP_MAX98090
config SND_SOC_ROCKCHIP_RT5645
tristate "ASoC support for Rockchip boards using a RT5645/RT5650 codec"
- depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && CLKDEV_LOOKUP
+ depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && HAVE_CLK
select SND_SOC_ROCKCHIP_I2S
select SND_SOC_RT5645
help
@@ -56,7 +56,7 @@ config SND_SOC_ROCKCHIP_RT5645
config SND_SOC_RK3288_HDMI_ANALOG
tristate "ASoC support multiple codecs for Rockchip RK3288 boards"
- depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && CLKDEV_LOOKUP
+ depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && HAVE_CLK
select SND_SOC_ROCKCHIP_I2S
select SND_SOC_HDMI_CODEC
select SND_SOC_ES8328_I2C
@@ -68,7 +68,7 @@ config SND_SOC_RK3288_HDMI_ANALOG
config SND_SOC_RK3399_GRU_SOUND
tristate "ASoC support multiple codecs for Rockchip RK3399 GRU boards"
- depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && CLKDEV_LOOKUP && SPI
+ depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && HAVE_CLK && SPI
select SND_SOC_ROCKCHIP_I2S
select SND_SOC_MAX98357A
select SND_SOC_RT5514
--
2.29.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 7/7] clkdev: remove unused clkdev_alloc() interfaces
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
` (5 preceding siblings ...)
2021-05-31 18:47 ` [PATCH 6/7] clkdev: remove CONFIG_CLKDEV_LOOKUP Arnd Bergmann
@ 2021-05-31 18:47 ` Arnd Bergmann
2021-06-02 7:54 ` Stephen Boyd
2021-06-01 9:51 ` [PATCH 0/7] clk: clean up legacy clock interfaces Thomas Bogendoerfer
2021-06-01 12:02 ` Greg Ungerer
8 siblings, 1 reply; 20+ messages in thread
From: Arnd Bergmann @ 2021-05-31 18:47 UTC (permalink / raw)
To: linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
From: Arnd Bergmann <arnd@arndb.de>
The last user of clkdev_alloc() and clkdev_hw_alloc() was
removed last year, so everything now calls clkdev_create()
and clkdev_hw_create() instead.
Removing the unused functions lets the compiler optimize
the remaining ones slightly better.
Fixes: e5006671acc7 ("clk: versatile: Drop the legacy IM-PD1 clock code")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/clk/clkdev.c | 28 ----------------------------
include/linux/clkdev.h | 5 -----
2 files changed, 33 deletions(-)
diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c
index 0f2e3fcf0f19..67f601a41023 100644
--- a/drivers/clk/clkdev.c
+++ b/drivers/clk/clkdev.c
@@ -190,34 +190,6 @@ vclkdev_create(struct clk_hw *hw, const char *con_id, const char *dev_fmt,
return cl;
}
-struct clk_lookup * __ref
-clkdev_alloc(struct clk *clk, const char *con_id, const char *dev_fmt, ...)
-{
- struct clk_lookup *cl;
- va_list ap;
-
- va_start(ap, dev_fmt);
- cl = vclkdev_alloc(__clk_get_hw(clk), con_id, dev_fmt, ap);
- va_end(ap);
-
- return cl;
-}
-EXPORT_SYMBOL(clkdev_alloc);
-
-struct clk_lookup *
-clkdev_hw_alloc(struct clk_hw *hw, const char *con_id, const char *dev_fmt, ...)
-{
- struct clk_lookup *cl;
- va_list ap;
-
- va_start(ap, dev_fmt);
- cl = vclkdev_alloc(hw, con_id, dev_fmt, ap);
- va_end(ap);
-
- return cl;
-}
-EXPORT_SYMBOL(clkdev_hw_alloc);
-
/**
* clkdev_create - allocate and add a clkdev lookup structure
* @clk: struct clk to associate with all clk_lookups
diff --git a/include/linux/clkdev.h b/include/linux/clkdev.h
index fd06b2780a22..8a8423eb8e9a 100644
--- a/include/linux/clkdev.h
+++ b/include/linux/clkdev.h
@@ -30,11 +30,6 @@ struct clk_lookup {
.clk = c, \
}
-struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id,
- const char *dev_fmt, ...) __printf(3, 4);
-struct clk_lookup *clkdev_hw_alloc(struct clk_hw *hw, const char *con_id,
- const char *dev_fmt, ...) __printf(3, 4);
-
void clkdev_add(struct clk_lookup *cl);
void clkdev_drop(struct clk_lookup *cl);
--
2.29.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 4/7] m68k: coldfire: use clkdev_lookup on most coldfire
2021-05-31 18:47 ` [PATCH 4/7] m68k: coldfire: use clkdev_lookup on most coldfire Arnd Bergmann
@ 2021-06-01 9:02 ` Geert Uytterhoeven
2021-06-01 12:22 ` Arnd Bergmann
2021-06-01 11:54 ` Greg Ungerer
1 sibling, 1 reply; 20+ messages in thread
From: Geert Uytterhoeven @ 2021-06-01 9:02 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linux-clk, Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Greg Ungerer, John Crispin, Jonas Gorski, Krzysztof Kozlowski,
Michael Turquette, Russell King, Stephen Boyd,
Thomas Bogendoerfer, linux-m68k, open list:BROADCOM NVRAM DRIVER
Hi Arnd,
On Mon, May 31, 2021 at 8:49 PM Arnd Bergmann <arnd@kernel.org> wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> Coldfire is now the only target that implements the clk_get()/clk_put()
> helpers itself rather than using the common implementation.
>
> Most coldfire variants only have two distinct clocks and use the clk
> code purely for lookup. Change those over to use clkdev_lookup instead
> but leave the custom clk interface for those two clocks.
>
> Also leave the four SoCs that have gated clocks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Thanks for your patch!
> --- a/arch/m68k/coldfire/m527x.c
> +++ b/arch/m68k/coldfire/m527x.c
> @@ -97,7 +86,7 @@ static void __init m527x_i2c_init(void)
> /* set PAR_SCL to SCL and PAR_SDA to SDA */
> par = readw(MCFGPIO_PAR_FECI2C);
> par |= 0x0f;
> - writew(par, MCFGPIO_PAR_FECI2C);
> + wm527x_clk_lookupritew(par, MCFGPIO_PAR_FECI2C);
As reported by the kernel test robot, this fails to compile.
Should probably just stay "write".
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/7] clk: clean up legacy clock interfaces
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
` (6 preceding siblings ...)
2021-05-31 18:47 ` [PATCH 7/7] clkdev: remove unused clkdev_alloc() interfaces Arnd Bergmann
@ 2021-06-01 9:51 ` Thomas Bogendoerfer
2021-06-01 12:24 ` Arnd Bergmann
2021-06-01 12:02 ` Greg Ungerer
8 siblings, 1 reply; 20+ messages in thread
From: Thomas Bogendoerfer @ 2021-06-01 9:51 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linux-clk, Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, linux-m68k, linux-mips
On Mon, May 31, 2021 at 08:47:42PM +0200, Arnd Bergmann wrote:
> As I noticed that the ar7 clock implementation and the ralink version
> are rather trivial, I ended up converting those to use the common-clk
> interfaces as well, though this is unrelated to the other changes.
excellent, how is your plan for merging the series ?
Thomas.
--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/7] m68k: coldfire: use clkdev_lookup on most coldfire
2021-05-31 18:47 ` [PATCH 4/7] m68k: coldfire: use clkdev_lookup on most coldfire Arnd Bergmann
2021-06-01 9:02 ` Geert Uytterhoeven
@ 2021-06-01 11:54 ` Greg Ungerer
1 sibling, 0 replies; 20+ messages in thread
From: Greg Ungerer @ 2021-06-01 11:54 UTC (permalink / raw)
To: Arnd Bergmann, linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
Hi Arnd,
On 1/6/21 4:47 am, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> Coldfire is now the only target that implements the clk_get()/clk_put()
> helpers itself rather than using the common implementation.
>
> Most coldfire variants only have two distinct clocks and use the clk
> code purely for lookup. Change those over to use clkdev_lookup instead
> but leave the custom clk interface for those two clocks.
>
> Also leave the four SoCs that have gated clocks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> arch/m68k/Kconfig.cpu | 4 ++++
> arch/m68k/coldfire/clk.c | 16 ++++++-------
> arch/m68k/coldfire/m5206.c | 25 +++++++++------------
> arch/m68k/coldfire/m523x.c | 42 ++++++++++++++--------------------
> arch/m68k/coldfire/m5249.c | 33 ++++++++++++---------------
> arch/m68k/coldfire/m525x.c | 33 ++++++++++++---------------
> arch/m68k/coldfire/m5272.c | 35 ++++++++++++-----------------
> arch/m68k/coldfire/m527x.c | 46 +++++++++++++++-----------------------
> arch/m68k/coldfire/m528x.c | 42 ++++++++++++++--------------------
> arch/m68k/coldfire/m5307.c | 27 ++++++++++------------
> arch/m68k/coldfire/m5407.c | 25 +++++++++------------
> arch/m68k/coldfire/m54xx.c | 33 ++++++++++++---------------
> 12 files changed, 154 insertions(+), 207 deletions(-)
>
snip
> diff --git a/arch/m68k/coldfire/m527x.c b/arch/m68k/coldfire/m527x.c
> index cad462df6861..ff29c7a947e2 100644
> --- a/arch/m68k/coldfire/m527x.c
> +++ b/arch/m68k/coldfire/m527x.c
> @@ -13,6 +13,7 @@
>
> /***************************************************************************/
>
> +#include <linux/clkdev.h>
> #include <linux/kernel.h>
> #include <linux/param.h>
> #include <linux/init.h>
> @@ -27,33 +28,21 @@
>
> DEFINE_CLK(pll, "pll.0", MCF_CLK);
> DEFINE_CLK(sys, "sys.0", MCF_BUSCLK);
> -DEFINE_CLK(mcfpit0, "mcfpit.0", MCF_CLK);
> -DEFINE_CLK(mcfpit1, "mcfpit.1", MCF_CLK);
> -DEFINE_CLK(mcfpit2, "mcfpit.2", MCF_CLK);
> -DEFINE_CLK(mcfpit3, "mcfpit.3", MCF_CLK);
> -DEFINE_CLK(mcfuart0, "mcfuart.0", MCF_BUSCLK);
> -DEFINE_CLK(mcfuart1, "mcfuart.1", MCF_BUSCLK);
> -DEFINE_CLK(mcfuart2, "mcfuart.2", MCF_BUSCLK);
> -DEFINE_CLK(mcfqspi0, "mcfqspi.0", MCF_BUSCLK);
> -DEFINE_CLK(fec0, "fec.0", MCF_BUSCLK);
> -DEFINE_CLK(fec1, "fec.1", MCF_BUSCLK);
> -DEFINE_CLK(mcfi2c0, "imx1-i2c.0", MCF_BUSCLK);
> -
> -struct clk *mcf_clks[] = {
> - &clk_pll,
> - &clk_sys,
> - &clk_mcfpit0,
> - &clk_mcfpit1,
> - &clk_mcfpit2,
> - &clk_mcfpit3,
> - &clk_mcfuart0,
> - &clk_mcfuart1,
> - &clk_mcfuart2,
> - &clk_mcfqspi0,
> - &clk_fec0,
> - &clk_fec1,
> - &clk_mcfi2c0,
> - NULL
> +
> +static struct clk_lookup m527x_clk_lookup[] = {
> + CLKDEV_INIT(NULL, "pll.0", &clk_pll),
> + CLKDEV_INIT(NULL, "sys.0", &clk_sys),
> + CLKDEV_INIT("mcfpit.0", NULL, &clk_pll),
> + CLKDEV_INIT("mcfpit.1", NULL, &clk_pll),
> + CLKDEV_INIT("mcfpit.2", NULL, &clk_pll),
> + CLKDEV_INIT("mcfpit.3", NULL, &clk_pll),
> + CLKDEV_INIT("mcfuart.0", NULL, &clk_sys),
> + CLKDEV_INIT("mcfuart.1", NULL, &clk_sys),
> + CLKDEV_INIT("mcfuart.2", NULL, &clk_sys),
> + CLKDEV_INIT("mcfqspi.0", NULL, &clk_sys),
> + CLKDEV_INIT("fec.0", NULL, &clk_sys),
> + CLKDEV_INIT("fec.1", NULL, &clk_sys),
> + CLKDEV_INIT("imx1-i2c.0", NULL, &clk_sys),
> };
>
> /***************************************************************************/
> @@ -97,7 +86,7 @@ static void __init m527x_i2c_init(void)
> /* set PAR_SCL to SCL and PAR_SDA to SDA */
> par = readw(MCFGPIO_PAR_FECI2C);
> par |= 0x0f;
> - writew(par, MCFGPIO_PAR_FECI2C);
> + wm527x_clk_lookupritew(par, MCFGPIO_PAR_FECI2C);
Strange slip of the keyboard there.
Regards
Greg
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/7] clk: clean up legacy clock interfaces
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
` (7 preceding siblings ...)
2021-06-01 9:51 ` [PATCH 0/7] clk: clean up legacy clock interfaces Thomas Bogendoerfer
@ 2021-06-01 12:02 ` Greg Ungerer
8 siblings, 0 replies; 20+ messages in thread
From: Greg Ungerer @ 2021-06-01 12:02 UTC (permalink / raw)
To: Arnd Bergmann, linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Stephen Boyd, Thomas Bogendoerfer, linux-m68k, linux-mips
Hi Arnd,
On 1/6/21 4:47 am, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> A recent discussion about legacy clk interface users revealed
> that there are only two platforms remaining that provide their own
> clk_get()/clk_put() implementations, MIPS ar7 and and m68k coldfire.
>
> I managed to rework both of these to just use the normal clkdev code,
> and fold CONFIG_CLKDEV_LOOKUP into CONFIG_HAVE_CLK as it is now shared
> among all users.
>
> As I noticed that the ar7 clock implementation and the ralink version
> are rather trivial, I ended up converting those to use the common-clk
> interfaces as well, though this is unrelated to the other changes.
>
> Arnd
>
> Link: https://lore.kernel.org/lkml/CAK8P3a2XsrfUJQQAfnGknh8HiA-D9L_wmEoAgXU89KqagE31NQ@mail.gmail.com/
>
> Arnd Bergmann (7):
> mips: ar7: convert to clkdev_lookup
> mips: ar7: convert to CONFIG_COMMON_CLK
> mips: ralink: convert to CONFIG_COMMON_CLK
> m68k: coldfire: use clkdev_lookup on most coldfire
> m68k: coldfire: remove private clk_get/clk_put
> clkdev: remove CONFIG_CLKDEV_LOOKUP
> clkdev: remove unused clkdev_alloc() interfaces
>
> arch/arm/Kconfig | 2 -
> arch/m68k/coldfire/clk.c | 21 -----
> arch/m68k/coldfire/m5206.c | 25 +++---
> arch/m68k/coldfire/m520x.c | 51 +++++------
> arch/m68k/coldfire/m523x.c | 42 ++++-----
> arch/m68k/coldfire/m5249.c | 33 +++----
> arch/m68k/coldfire/m525x.c | 33 +++----
> arch/m68k/coldfire/m5272.c | 35 +++-----
> arch/m68k/coldfire/m527x.c | 46 ++++------
> arch/m68k/coldfire/m528x.c | 42 ++++-----
> arch/m68k/coldfire/m5307.c | 27 +++---
> arch/m68k/coldfire/m53xx.c | 80 ++++++++---------
> arch/m68k/coldfire/m5407.c | 25 +++---
> arch/m68k/coldfire/m5441x.c | 126 +++++++++++++--------------
> arch/m68k/coldfire/m54xx.c | 33 +++----
> arch/m68k/include/asm/mcfclk.h | 5 --
> arch/mips/Kconfig | 6 +-
> arch/mips/ar7/clock.c | 113 ++++++------------------
> arch/mips/include/asm/mach-ar7/ar7.h | 4 -
> arch/mips/pic32/Kconfig | 1 -
> arch/mips/ralink/Kconfig | 5 --
> arch/mips/ralink/clk.c | 64 +-------------
> arch/sh/Kconfig | 1 -
> drivers/clk/Kconfig | 6 +-
> drivers/clk/Makefile | 3 +-
> drivers/clk/clkdev.c | 28 ------
> drivers/clocksource/Kconfig | 6 +-
> drivers/mmc/host/Kconfig | 4 +-
> drivers/staging/board/Kconfig | 2 +-
> include/linux/clkdev.h | 5 --
> sound/soc/dwc/Kconfig | 2 +-
> sound/soc/rockchip/Kconfig | 14 +--
> 32 files changed, 320 insertions(+), 570 deletions(-)
Looks really good, thanks for doing this.
I have test compiled and run some of the ColdFire targets with these changes.
Everything checked out good. So for the m68k/Coldfire parts (with the one
munged writew() change fixed):
Acked-by: Greg Ungerer <gerg@linux-m68k.org>
Tested-by: Greg Ungerer <gerg@linux-m68k.org>
Regards
Greg
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/7] m68k: coldfire: use clkdev_lookup on most coldfire
2021-06-01 9:02 ` Geert Uytterhoeven
@ 2021-06-01 12:22 ` Arnd Bergmann
0 siblings, 0 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-06-01 12:22 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: linux-clk, Dmitry Osipenko, Florian Fainelli, Greg Ungerer,
John Crispin, Jonas Gorski, Krzysztof Kozlowski,
Michael Turquette, Russell King, Stephen Boyd,
Thomas Bogendoerfer, linux-m68k, open list:BROADCOM NVRAM DRIVER
On Tue, Jun 1, 2021 at 11:02 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> On Mon, May 31, 2021 at 8:49 PM Arnd Bergmann <arnd@kernel.org> wrote:
> > From: Arnd Bergmann <arnd@arndb.de>
> >
> > Coldfire is now the only target that implements the clk_get()/clk_put()
> > helpers itself rather than using the common implementation.
> >
> > Most coldfire variants only have two distinct clocks and use the clk
> > code purely for lookup. Change those over to use clkdev_lookup instead
> > but leave the custom clk interface for those two clocks.
> >
> > Also leave the four SoCs that have gated clocks.
> >
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
> Thanks for your patch!
>
> > --- a/arch/m68k/coldfire/m527x.c
> > +++ b/arch/m68k/coldfire/m527x.c
>
> > @@ -97,7 +86,7 @@ static void __init m527x_i2c_init(void)
> > /* set PAR_SCL to SCL and PAR_SDA to SDA */
> > par = readw(MCFGPIO_PAR_FECI2C);
> > par |= 0x0f;
> > - writew(par, MCFGPIO_PAR_FECI2C);
> > + wm527x_clk_lookupritew(par, MCFGPIO_PAR_FECI2C);
>
> As reported by the kernel test robot, this fails to compile.
> Should probably just stay "write".
Yes, I already fixed that up yesterday. It appears I had accidentally inserted
a string with the middle mouse button, and building all defconfigs did
not catch this.
The fixed branch is at
https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git/log/?h=clkdev
and so far has not triggered any other warnings from the kernel built bot.
Arnd
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/7] clk: clean up legacy clock interfaces
2021-06-01 9:51 ` [PATCH 0/7] clk: clean up legacy clock interfaces Thomas Bogendoerfer
@ 2021-06-01 12:24 ` Arnd Bergmann
2021-06-01 22:05 ` Stephen Boyd
0 siblings, 1 reply; 20+ messages in thread
From: Arnd Bergmann @ 2021-06-01 12:24 UTC (permalink / raw)
To: Thomas Bogendoerfer
Cc: linux-clk, Dmitry Osipenko, Florian Fainelli, Geert Uytterhoeven,
Greg Ungerer, John Crispin, Jonas Gorski, Krzysztof Kozlowski,
Michael Turquette, Russell King, Stephen Boyd, linux-m68k,
open list:BROADCOM NVRAM DRIVER
On Tue, Jun 1, 2021 at 11:51 AM Thomas Bogendoerfer
<tsbogend@alpha.franken.de> wrote:
>
> On Mon, May 31, 2021 at 08:47:42PM +0200, Arnd Bergmann wrote:
> > As I noticed that the ar7 clock implementation and the ralink version
> > are rather trivial, I ended up converting those to use the common-clk
> > interfaces as well, though this is unrelated to the other changes.
>
> excellent, how is your plan for merging the series ?
I have not decided yet. I think it would be best to keep the series together
and merge it through the clk maintainer tree, or possibly my asm-generic
tree, but as there is no rush, we could also do the mips and m68k bits
through the architecture trees, and defer the rest for 5.15.
Arnd
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/7] mips: ar7: convert to clkdev_lookup
2021-05-31 18:47 ` [PATCH 1/7] mips: ar7: convert to clkdev_lookup Arnd Bergmann
@ 2021-06-01 13:23 ` Russell King (Oracle)
2021-06-01 14:41 ` Arnd Bergmann
0 siblings, 1 reply; 20+ messages in thread
From: Russell King (Oracle) @ 2021-06-01 13:23 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linux-clk, Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Stephen Boyd,
Thomas Bogendoerfer, linux-m68k, linux-mips
On Mon, May 31, 2021 at 08:47:43PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> ar7 is one of only two platforms that provide the clock interface but
> implement a custom version of the clkdev_lookup code.
>
> Change this to use the generic version instead.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> arch/mips/Kconfig | 1 +
> arch/mips/ar7/clock.c | 32 ++++++++++++--------------------
> 2 files changed, 13 insertions(+), 20 deletions(-)
>
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index ed51970c08e7..1cc03a7652a9 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -215,6 +215,7 @@ config AR7
> select SYS_SUPPORTS_ZBOOT_UART16550
> select GPIOLIB
> select VLYNQ
> + select CLKDEV_LOOKUP
> select HAVE_LEGACY_CLK
> help
> Support for the Texas Instruments AR7 System-on-a-Chip
> diff --git a/arch/mips/ar7/clock.c b/arch/mips/ar7/clock.c
> index 95def949c971..c614f254f370 100644
> --- a/arch/mips/ar7/clock.c
> +++ b/arch/mips/ar7/clock.c
> @@ -5,6 +5,7 @@
> * Copyright (C) 2009 Florian Fainelli <florian@openwrt.org>
> */
>
> +#include <linux/clkdev.h>
> #include <linux/kernel.h>
> #include <linux/init.h>
> #include <linux/types.h>
> @@ -14,6 +15,7 @@
> #include <linux/io.h>
> #include <linux/err.h>
> #include <linux/clk.h>
> +#include <linux/clkdev.h>
Did you mean to include this twice?
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/7] mips: ar7: convert to clkdev_lookup
2021-06-01 13:23 ` Russell King (Oracle)
@ 2021-06-01 14:41 ` Arnd Bergmann
0 siblings, 0 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-06-01 14:41 UTC (permalink / raw)
To: Russell King (Oracle)
Cc: linux-clk, Dmitry Osipenko, Florian Fainelli, Geert Uytterhoeven,
Greg Ungerer, John Crispin, Jonas Gorski, Krzysztof Kozlowski,
Michael Turquette, Stephen Boyd, Thomas Bogendoerfer, linux-m68k,
open list:BROADCOM NVRAM DRIVER
On Tue, Jun 1, 2021 at 3:23 PM Russell King (Oracle)
<linux@armlinux.org.uk> wrote:
> > */
> >
> > +#include <linux/clkdev.h>
> > #include <linux/kernel.h>
> > #include <linux/init.h>
> > #include <linux/types.h>
> > @@ -14,6 +15,7 @@
> > #include <linux/io.h>
> > #include <linux/err.h>
> > #include <linux/clk.h>
> > +#include <linux/clkdev.h>
>
> Did you mean to include this twice?
>
I thought I had fixed that earlier, but apparently edited the wrong patch.
Thanks for finding it, fixed now.
Arnd
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/7] clk: clean up legacy clock interfaces
2021-06-01 12:24 ` Arnd Bergmann
@ 2021-06-01 22:05 ` Stephen Boyd
2021-06-02 10:37 ` Arnd Bergmann
0 siblings, 1 reply; 20+ messages in thread
From: Stephen Boyd @ 2021-06-01 22:05 UTC (permalink / raw)
To: Arnd Bergmann, Thomas Bogendoerfer
Cc: linux-clk, Dmitry Osipenko, Florian Fainelli, Geert Uytterhoeven,
Greg Ungerer, John Crispin, Jonas Gorski, Krzysztof Kozlowski,
Michael Turquette, Russell King, linux-m68k,
BROADCOM NVRAM DRIVER,
Quoting Arnd Bergmann (2021-06-01 05:24:59)
> On Tue, Jun 1, 2021 at 11:51 AM Thomas Bogendoerfer
> <tsbogend@alpha.franken.de> wrote:
> >
> > On Mon, May 31, 2021 at 08:47:42PM +0200, Arnd Bergmann wrote:
> > > As I noticed that the ar7 clock implementation and the ralink version
> > > are rather trivial, I ended up converting those to use the common-clk
> > > interfaces as well, though this is unrelated to the other changes.
> >
> > excellent, how is your plan for merging the series ?
>
> I have not decided yet. I think it would be best to keep the series together
> and merge it through the clk maintainer tree, or possibly my asm-generic
> tree, but as there is no rush, we could also do the mips and m68k bits
> through the architecture trees, and defer the rest for 5.15.
>
I'm happy to take the series through clk tree if that helps.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 7/7] clkdev: remove unused clkdev_alloc() interfaces
2021-05-31 18:47 ` [PATCH 7/7] clkdev: remove unused clkdev_alloc() interfaces Arnd Bergmann
@ 2021-06-02 7:54 ` Stephen Boyd
0 siblings, 0 replies; 20+ messages in thread
From: Stephen Boyd @ 2021-06-02 7:54 UTC (permalink / raw)
To: Arnd Bergmann, linux-clk
Cc: Arnd Bergmann, Dmitry Osipenko, Florian Fainelli,
Geert Uytterhoeven, Greg Ungerer, John Crispin, Jonas Gorski,
Krzysztof Kozlowski, Michael Turquette, Russell King,
Thomas Bogendoerfer, linux-m68k, linux-mips
Quoting Arnd Bergmann (2021-05-31 11:47:49)
> From: Arnd Bergmann <arnd@arndb.de>
>
> The last user of clkdev_alloc() and clkdev_hw_alloc() was
> removed last year, so everything now calls clkdev_create()
> and clkdev_hw_create() instead.
>
> Removing the unused functions lets the compiler optimize
> the remaining ones slightly better.
>
> Fixes: e5006671acc7 ("clk: versatile: Drop the legacy IM-PD1 clock code")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
Reviewed-by: Stephen Boyd <sboyd@kernel.org>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/7] clk: clean up legacy clock interfaces
2021-06-01 22:05 ` Stephen Boyd
@ 2021-06-02 10:37 ` Arnd Bergmann
0 siblings, 0 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-06-02 10:37 UTC (permalink / raw)
To: Stephen Boyd
Cc: Thomas Bogendoerfer, linux-clk, Dmitry Osipenko,
Florian Fainelli, Geert Uytterhoeven, Greg Ungerer, John Crispin,
Jonas Gorski, Krzysztof Kozlowski, Michael Turquette,
Russell King, linux-m68k, BROADCOM NVRAM DRIVER
On Wed, Jun 2, 2021 at 12:05 AM Stephen Boyd <sboyd@kernel.org> wrote:
> Quoting Arnd Bergmann (2021-06-01 05:24:59)
> > On Tue, Jun 1, 2021 at 11:51 AM Thomas Bogendoerfer
> > <tsbogend@alpha.franken.de> wrote:
> > >
> > > On Mon, May 31, 2021 at 08:47:42PM +0200, Arnd Bergmann wrote:
> > > > As I noticed that the ar7 clock implementation and the ralink version
> > > > are rather trivial, I ended up converting those to use the common-clk
> > > > interfaces as well, though this is unrelated to the other changes.
> > >
> > > excellent, how is your plan for merging the series ?
> >
> > I have not decided yet. I think it would be best to keep the series together
> > and merge it through the clk maintainer tree, or possibly my asm-generic
> > tree, but as there is no rush, we could also do the mips and m68k bits
> > through the architecture trees, and defer the rest for 5.15.
> >
>
> I'm happy to take the series through clk tree if that helps.
Ok, great. I've addressed all the issues that were pointed out, but it
would be good to get an Acked-by or some testing for the MIPS
(ar7 and ralink) bits. Thomas and John, let me know if you find
something that needs to be addressed first, or if you are happy
me to send the latest version for merging.
Arnd
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 2/7] mips: ar7: convert to CONFIG_COMMON_CLK
2021-05-31 17:34 Arnd Bergmann
@ 2021-05-31 17:34 ` Arnd Bergmann
0 siblings, 0 replies; 20+ messages in thread
From: Arnd Bergmann @ 2021-05-31 17:34 UTC (permalink / raw)
To: linux-clk; +Cc: Arnd Bergmann
From: Arnd Bergmann <arnd@arndb.de>
Perform a minimal conversion of the ar7 clock implementation to the common
clock framework. While the hardware can control the rates, this is left
unchanged, and all clocks are registered as fixed-rate or fixed-divider
clocks. Similarly, the clkdev lookup information is left unchanged but
moved from the table format into individual allocations.
There is a small increase in code size:
text data bss dec hex filename
4757116 596640 91328 5445084 5315dc vmlinux-before
4806159 602360 91344 5499863 53ebd7 vmlinux-after
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/mips/Kconfig | 3 +-
arch/mips/ar7/clock.c | 103 ++++++++-------------------
arch/mips/include/asm/mach-ar7/ar7.h | 4 --
3 files changed, 29 insertions(+), 81 deletions(-)
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 1cc03a7652a9..5dbc60adb2f0 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -201,6 +201,7 @@ config MIPS_ALCHEMY
config AR7
bool "Texas Instruments AR7"
select BOOT_ELF32
+ select COMMON_CLK
select DMA_NONCOHERENT
select CEVT_R4K
select CSRC_R4K
@@ -215,8 +216,6 @@ config AR7
select SYS_SUPPORTS_ZBOOT_UART16550
select GPIOLIB
select VLYNQ
- select CLKDEV_LOOKUP
- select HAVE_LEGACY_CLK
help
Support for the Texas Instruments AR7 System-on-a-Chip
family: TNETD7100, 7200 and 7300.
diff --git a/arch/mips/ar7/clock.c b/arch/mips/ar7/clock.c
index c614f254f370..31455180ce63 100644
--- a/arch/mips/ar7/clock.c
+++ b/arch/mips/ar7/clock.c
@@ -15,7 +15,7 @@
#include <linux/io.h>
#include <linux/err.h>
#include <linux/clk.h>
-#include <linux/clkdev.h>
+#include <linux/clk-provider.h>
#include <asm/addrspace.h>
#include <asm/mach-ar7/ar7.h>
@@ -86,17 +86,17 @@ struct tnetd7200_clocks {
struct tnetd7200_clock usb;
};
-static struct clk bus_clk = {
+struct clk_rate {
+ u32 rate;
+};
+static struct clk_rate bus_clk = {
.rate = 125000000,
};
-static struct clk cpu_clk = {
+static struct clk_rate cpu_clk = {
.rate = 150000000,
};
-static struct clk dsp_clk;
-static struct clk vbus_clk;
-
static void approximate(int base, int target, int *prediv,
int *postdiv, int *mul)
{
@@ -242,6 +242,8 @@ static void __init tnetd7300_init_clocks(void)
struct tnetd7300_clocks *clocks =
ioremap(UR8_REGS_CLOCKS,
sizeof(struct tnetd7300_clocks));
+ u32 dsp_clk;
+ struct clk *clk;
bus_clk.rate = tnetd7300_get_clock(BUS_PLL_SOURCE_SHIFT,
&clocks->bus, bootcr, AR7_AFE_CLOCK);
@@ -252,12 +254,18 @@ static void __init tnetd7300_init_clocks(void)
else
cpu_clk.rate = bus_clk.rate;
- if (dsp_clk.rate == 250000000)
+ dsp_clk = tnetd7300_dsp_clock();
+ if (dsp_clk == 250000000)
tnetd7300_set_clock(DSP_PLL_SOURCE_SHIFT, &clocks->dsp,
- bootcr, dsp_clk.rate);
+ bootcr, dsp_clk);
iounmap(clocks);
iounmap(bootcr);
+
+ clk = clk_register_fixed_rate(NULL, "cpu", NULL, 0, cpu_clk.rate);
+ clkdev_create(clk, "cpu", NULL);
+ clk = clk_register_fixed_rate(NULL, "dsp", NULL, 0, dsp_clk);
+ clkdev_create(clk, "dsp", NULL);
}
static void tnetd7200_set_clock(int base, struct tnetd7200_clock *clock,
@@ -329,6 +337,7 @@ static void __init tnetd7200_init_clocks(void)
int cpu_base, cpu_mul, cpu_prediv, cpu_postdiv;
int dsp_base, dsp_mul, dsp_prediv, dsp_postdiv;
int usb_base, usb_mul, usb_prediv, usb_postdiv;
+ struct clk *clk;
cpu_base = tnetd7200_get_clock_base(TNETD7200_CLOCK_ID_CPU, bootcr);
dsp_base = tnetd7200_get_clock_base(TNETD7200_CLOCK_ID_DSP, bootcr);
@@ -397,90 +406,34 @@ static void __init tnetd7200_init_clocks(void)
usb_prediv, usb_postdiv, -1, usb_mul,
TNETD7200_DEF_USB_CLK);
- dsp_clk.rate = cpu_clk.rate;
-
iounmap(clocks);
iounmap(bootcr);
-}
-
-/*
- * Linux clock API
- */
-int clk_enable(struct clk *clk)
-{
- return 0;
-}
-EXPORT_SYMBOL(clk_enable);
-
-void clk_disable(struct clk *clk)
-{
-}
-EXPORT_SYMBOL(clk_disable);
-
-unsigned long clk_get_rate(struct clk *clk)
-{
- if (!clk)
- return 0;
- return clk->rate;
+ clk = clk_register_fixed_rate(NULL, "cpu", NULL, 0, cpu_clk.rate);
+ clkdev_create(clk, "cpu", NULL);
+ clkdev_create(clk, "dsp", NULL);
}
-EXPORT_SYMBOL(clk_get_rate);
-
-static struct clk_lookup ar7_clkdev_table[] = {
- CLKDEV_INIT(NULL, "bus", &bus_clk),
- /* cpmac and vbus share the same rate */
- CLKDEV_INIT("cpmac.0", "cpmac", &vbus_clk),
- CLKDEV_INIT("cpmac.1", "cpmac", &vbus_clk),
- CLKDEV_INIT(NULL, "cpu", &cpu_clk),
- CLKDEV_INIT(NULL, "dsp", &dsp_clk),
- CLKDEV_INIT(NULL, "vbus", &vbus_clk),
-};
void __init ar7_init_clocks(void)
{
+ struct clk *clk;
+
switch (ar7_chip_id()) {
case AR7_CHIP_7100:
case AR7_CHIP_7200:
tnetd7200_init_clocks();
break;
case AR7_CHIP_7300:
- dsp_clk.rate = tnetd7300_dsp_clock();
tnetd7300_init_clocks();
break;
default:
break;
}
+ clk = clk_register_fixed_rate(NULL, "bus", NULL, 0, bus_clk.rate);
+ clkdev_create(clk, "bus", NULL);
/* adjust vbus clock rate */
- vbus_clk.rate = bus_clk.rate / 2;
-
- clkdev_add_table(ar7_clkdev_table, ARRAY_SIZE(ar7_clkdev_table));
-}
-
-/* dummy functions, should not be called */
-long clk_round_rate(struct clk *clk, unsigned long rate)
-{
- WARN_ON(clk);
- return 0;
-}
-EXPORT_SYMBOL(clk_round_rate);
-
-int clk_set_rate(struct clk *clk, unsigned long rate)
-{
- WARN_ON(clk);
- return 0;
-}
-EXPORT_SYMBOL(clk_set_rate);
-
-int clk_set_parent(struct clk *clk, struct clk *parent)
-{
- WARN_ON(clk);
- return 0;
-}
-EXPORT_SYMBOL(clk_set_parent);
-
-struct clk *clk_get_parent(struct clk *clk)
-{
- WARN_ON(clk);
- return NULL;
+ clk = clk_register_fixed_factor(NULL, "vbus", "bus", 0, 1, 2);
+ clkdev_create(clk, "vbus", NULL);
+ clkdev_create(clk, "cpmac", "cpmac.1");
+ clkdev_create(clk, "cpmac", "cpmac.1");
}
-EXPORT_SYMBOL(clk_get_parent);
diff --git a/arch/mips/include/asm/mach-ar7/ar7.h b/arch/mips/include/asm/mach-ar7/ar7.h
index dd09c3bf0601..cbe75ade3277 100644
--- a/arch/mips/include/asm/mach-ar7/ar7.h
+++ b/arch/mips/include/asm/mach-ar7/ar7.h
@@ -131,10 +131,6 @@ static inline u8 ar7_chip_rev(void)
0x14))) >> 16) & 0xff;
}
-struct clk {
- unsigned int rate;
-};
-
static inline int ar7_has_high_cpmac(void)
{
u16 chip_id = ar7_chip_id();
--
2.29.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
end of thread, other threads:[~2021-06-02 10:39 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-31 18:47 [PATCH 0/7] clk: clean up legacy clock interfaces Arnd Bergmann
2021-05-31 18:47 ` [PATCH 1/7] mips: ar7: convert to clkdev_lookup Arnd Bergmann
2021-06-01 13:23 ` Russell King (Oracle)
2021-06-01 14:41 ` Arnd Bergmann
2021-05-31 18:47 ` [PATCH 2/7] mips: ar7: convert to CONFIG_COMMON_CLK Arnd Bergmann
2021-05-31 18:47 ` [PATCH 3/7] mips: ralink: " Arnd Bergmann
2021-05-31 18:47 ` [PATCH 4/7] m68k: coldfire: use clkdev_lookup on most coldfire Arnd Bergmann
2021-06-01 9:02 ` Geert Uytterhoeven
2021-06-01 12:22 ` Arnd Bergmann
2021-06-01 11:54 ` Greg Ungerer
2021-05-31 18:47 ` [PATCH 5/7] m68k: coldfire: remove private clk_get/clk_put Arnd Bergmann
2021-05-31 18:47 ` [PATCH 6/7] clkdev: remove CONFIG_CLKDEV_LOOKUP Arnd Bergmann
2021-05-31 18:47 ` [PATCH 7/7] clkdev: remove unused clkdev_alloc() interfaces Arnd Bergmann
2021-06-02 7:54 ` Stephen Boyd
2021-06-01 9:51 ` [PATCH 0/7] clk: clean up legacy clock interfaces Thomas Bogendoerfer
2021-06-01 12:24 ` Arnd Bergmann
2021-06-01 22:05 ` Stephen Boyd
2021-06-02 10:37 ` Arnd Bergmann
2021-06-01 12:02 ` Greg Ungerer
-- strict thread matches above, loose matches on Subject: below --
2021-05-31 17:34 Arnd Bergmann
2021-05-31 17:34 ` [PATCH 2/7] mips: ar7: convert to CONFIG_COMMON_CLK Arnd Bergmann
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.