Skip to content

Commit

Permalink
ARM: Consolidate clks_register() and similar
Browse files Browse the repository at this point in the history
Most machine classes want some way to register a block of clk_lookup
structures, and most do it by implementing a clks_register() type
function which walks an array, or by open-coding a loop.

Consolidate all this into clkdev_add_table().

Acked-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Kevin Hilman <khilman@deeprootsystems.com>
Acked-by: Eric Miao <eric.y.miao@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King committed Feb 12, 2010
1 parent 92dcffb commit 0a0300d
Show file tree
Hide file tree
Showing 33 changed files with 40 additions and 92 deletions.
10 changes: 10 additions & 0 deletions arch/arm/common/clkdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,16 @@ void clkdev_add(struct clk_lookup *cl)
}
EXPORT_SYMBOL(clkdev_add);

void __init clkdev_add_table(struct clk_lookup *cl, size_t num)
{
mutex_lock(&clocks_mutex);
while (num--) {
list_add_tail(&cl->node, &clocks);
cl++;
}
mutex_unlock(&clocks_mutex);
}

#define MAX_DEV_ID 20
#define MAX_CON_ID 16

Expand Down
3 changes: 3 additions & 0 deletions arch/arm/include/asm/clkdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,7 @@ struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id,
void clkdev_add(struct clk_lookup *cl);
void clkdev_drop(struct clk_lookup *cl);

void clkdev_add_table(struct clk_lookup *, size_t);
int clk_add_alias(const char *, const char *, char *, struct device *);

#endif
3 changes: 1 addition & 2 deletions arch/arm/mach-bcmring/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,7 @@ void __init bcmring_amba_init(void)

chipcHw_busInterfaceClockEnable(bus_clock);

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));

for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
Expand Down
4 changes: 1 addition & 3 deletions arch/arm/mach-ep93xx/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,6 @@ static void __init ep93xx_dma_clock_init(void)
static int __init ep93xx_clock_init(void)
{
u32 value;
int i;

value = __raw_readl(EP93XX_SYSCON_CLOCK_SET1);
if (!(value & 0x00800000)) { /* PLL1 bypassed? */
Expand Down Expand Up @@ -474,8 +473,7 @@ static int __init ep93xx_clock_init(void)
clk_f.rate / 1000000, clk_h.rate / 1000000,
clk_p.rate / 1000000);

for (i = 0; i < ARRAY_SIZE(clocks); i++)
clkdev_add(&clocks[i]);
clkdev_add_table(clocks, ARRAY_SIZE(clocks));
return 0;
}
arch_initcall(ep93xx_clock_init);
3 changes: 1 addition & 2 deletions arch/arm/mach-integrator/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,7 @@ static int __init integrator_init(void)
{
int i;

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));

for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
Expand Down
4 changes: 1 addition & 3 deletions arch/arm/mach-integrator/integrator_cp.c
Original file line number Diff line number Diff line change
Expand Up @@ -558,9 +558,7 @@ static void __init intcp_init(void)
{
int i;

for (i = 0; i < ARRAY_SIZE(cp_lookups); i++)
clkdev_add(&cp_lookups[i]);

clkdev_add_table(cp_lookups, ARRAY_SIZE(cp_lookups));
platform_add_devices(intcp_devs, ARRAY_SIZE(intcp_devs));

for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
Expand Down
8 changes: 0 additions & 8 deletions arch/arm/mach-mmp/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,3 @@ unsigned long clk_get_rate(struct clk *clk)
return rate;
}
EXPORT_SYMBOL(clk_get_rate);

void clks_register(struct clk_lookup *clks, size_t num)
{
int i;

for (i = 0; i < num; i++)
clkdev_add(&clks[i]);
}
2 changes: 0 additions & 2 deletions arch/arm/mach-mmp/clock.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,3 @@ struct clk clk_##_name = { \

extern struct clk clk_pxa168_gpio;
extern struct clk clk_pxa168_timers;

extern void clks_register(struct clk_lookup *, size_t);
2 changes: 1 addition & 1 deletion arch/arm/mach-mmp/pxa168.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ static int __init pxa168_init(void)
mfp_init_base(MFPR_VIRT_BASE);
mfp_init_addr(pxa168_mfp_addr_map);
pxa_init_dma(IRQ_PXA168_DMA_INT0, 32);
clks_register(ARRAY_AND_SIZE(pxa168_clkregs));
clkdev_add_table(ARRAY_AND_SIZE(pxa168_clkregs));
}

return 0;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-mmp/pxa910.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ static int __init pxa910_init(void)
mfp_init_base(MFPR_VIRT_BASE);
mfp_init_addr(pxa910_mfp_addr_map);
pxa_init_dma(IRQ_PXA910_DMA_INT0, 32);
clks_register(ARRAY_AND_SIZE(pxa910_clkregs));
clkdev_add_table(ARRAY_AND_SIZE(pxa910_clkregs));
}

return 0;
Expand Down
4 changes: 1 addition & 3 deletions arch/arm/mach-mx1/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -570,7 +570,6 @@ static struct clk_lookup lookups[] __initdata = {
int __init mx1_clocks_init(unsigned long fref)
{
unsigned int reg;
int i;

/* disable clocks we are able to */
__raw_writel(0, SCM_GCCR);
Expand All @@ -592,8 +591,7 @@ int __init mx1_clocks_init(unsigned long fref)
reg = (reg & CCM_CSCR_CLKO_MASK) >> CCM_CSCR_CLKO_OFFSET;
clko_clk.parent = (struct clk *)clko_clocks[reg];

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));

clk_enable(&hclk);
clk_enable(&fclk);
Expand Down
4 changes: 1 addition & 3 deletions arch/arm/mach-mx2/clock_imx21.c
Original file line number Diff line number Diff line change
Expand Up @@ -968,7 +968,6 @@ static struct clk_lookup lookups[] = {
*/
int __init mx21_clocks_init(unsigned long lref, unsigned long href)
{
int i;
u32 cscr;

external_low_reference = lref;
Expand All @@ -986,8 +985,7 @@ int __init mx21_clocks_init(unsigned long lref, unsigned long href)
else
spll_clk.parent = &fpm_clk;

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));

/* Turn off all clock gates */
__raw_writel(0, CCM_PCCR0);
Expand Down
4 changes: 1 addition & 3 deletions arch/arm/mach-mx2/clock_imx27.c
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,6 @@ static void __init to2_adjust_clocks(void)
int __init mx27_clocks_init(unsigned long fref)
{
u32 cscr = __raw_readl(CCM_CSCR);
int i;

external_high_reference = fref;

Expand All @@ -736,8 +735,7 @@ int __init mx27_clocks_init(unsigned long fref)

to2_adjust_clocks();

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));

/* Turn off all clocks we do not need */
__raw_writel(0, CCM_PCCR0);
Expand Down
6 changes: 1 addition & 5 deletions arch/arm/mach-mx25/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,11 +210,7 @@ static struct clk_lookup lookups[] = {

int __init mx25_clocks_init(unsigned long fref)
{
int i;

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);

clkdev_add_table(lookups, ARRAY_SIZE(lookups));
mxc_timer_init(&gpt_clk, MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), 54);

return 0;
Expand Down
4 changes: 1 addition & 3 deletions arch/arm/mach-mx3/clock-imx35.c
Original file line number Diff line number Diff line change
Expand Up @@ -485,15 +485,13 @@ static struct clk_lookup lookups[] = {

int __init mx35_clocks_init()
{
int i;
unsigned int ll = 0;

#if defined(CONFIG_DEBUG_LL) && !defined(CONFIG_DEBUG_ICEDCC)
ll = (3 << 16);
#endif

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));

/* Turn off all clocks except the ones we need to survive, namely:
* EMI, GPIO1/2/3, GPT, IOMUX, MAX and eventually uart
Expand Down
4 changes: 1 addition & 3 deletions arch/arm/mach-mx3/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -578,12 +578,10 @@ static struct clk_lookup lookups[] = {
int __init mx31_clocks_init(unsigned long fref)
{
u32 reg;
int i;

ckih_rate = fref;

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));

/* change the csi_clk parent if necessary */
reg = __raw_readl(MXC_CCM_CCMR);
Expand Down
4 changes: 1 addition & 3 deletions arch/arm/mach-mxc91231/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -624,16 +624,14 @@ static struct clk_lookup lookups[] = {
int __init mxc91231_clocks_init(unsigned long fref)
{
void __iomem *gpt_base;
int i;

ckih_rate = fref;

usb_clk.parent = clk_usb_parent(&usb_clk);
sdhc_clk[0].parent = clk_sdhc_parent(&sdhc_clk[0]);
sdhc_clk[1].parent = clk_sdhc_parent(&sdhc_clk[1]);

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));

gpt_base = MXC91231_IO_ADDRESS(MXC91231_GPT1_BASE_ADDR);
mxc_timer_init(&gpt_clk, gpt_base, MXC91231_INT_GPT);
Expand Down
8 changes: 0 additions & 8 deletions arch/arm/mach-pxa/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,3 @@ const struct clkops clk_cken_ops = {
.enable = clk_cken_enable,
.disable = clk_cken_disable,
};

void clks_register(struct clk_lookup *clks, size_t num)
{
int i;

for (i = 0; i < num; i++)
clkdev_add(&clks[i]);
}
4 changes: 0 additions & 4 deletions arch/arm/mach-pxa/clock.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,3 @@ extern void clk_pxa3xx_cken_enable(struct clk *);
extern void clk_pxa3xx_cken_disable(struct clk *);
#endif

void clks_register(struct clk_lookup *clks, size_t num);
int clk_add_alias(const char *alias, const char *alias_name, char *id,
struct device *dev);

2 changes: 1 addition & 1 deletion arch/arm/mach-pxa/eseries.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,6 @@ static struct clk_lookup eseries_clkregs[] = {

void eseries_register_clks(void)
{
clks_register(eseries_clkregs, ARRAY_SIZE(eseries_clkregs));
clkdev_add_table(eseries_clkregs, ARRAY_SIZE(eseries_clkregs));
}

4 changes: 2 additions & 2 deletions arch/arm/mach-pxa/pxa25x.c
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ static int __init pxa25x_init(void)

reset_status = RCSR;

clks_register(pxa25x_clkregs, ARRAY_SIZE(pxa25x_clkregs));
clkdev_add_table(pxa25x_clkregs, ARRAY_SIZE(pxa25x_clkregs));

if ((ret = pxa_init_dma(IRQ_DMA, 16)))
return ret;
Expand All @@ -370,7 +370,7 @@ static int __init pxa25x_init(void)

/* Only add HWUART for PXA255/26x; PXA210/250 do not have it. */
if (cpu_is_pxa255())
clks_register(&pxa25x_hwuart_clkreg, 1);
clkdev_add(&pxa25x_hwuart_clkreg);

return ret;
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-pxa/pxa27x.c
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,7 @@ static int __init pxa27x_init(void)

reset_status = RCSR;

clks_register(pxa27x_clkregs, ARRAY_SIZE(pxa27x_clkregs));
clkdev_add_table(pxa27x_clkregs, ARRAY_SIZE(pxa27x_clkregs));

if ((ret = pxa_init_dma(IRQ_DMA, 32)))
return ret;
Expand Down
4 changes: 2 additions & 2 deletions arch/arm/mach-pxa/pxa300.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,12 @@ static int __init pxa300_init(void)
if (cpu_is_pxa300() || cpu_is_pxa310()) {
mfp_init_base(io_p2v(MFPR_BASE));
mfp_init_addr(pxa300_mfp_addr_map);
clks_register(ARRAY_AND_SIZE(common_clkregs));
clkdev_add_table(ARRAY_AND_SIZE(common_clkregs));
}

if (cpu_is_pxa310()) {
mfp_init_addr(pxa310_mfp_addr_map);
clks_register(ARRAY_AND_SIZE(pxa310_clkregs));
clkdev_add_table(ARRAY_AND_SIZE(pxa310_clkregs));
}

return 0;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-pxa/pxa320.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ static int __init pxa320_init(void)
if (cpu_is_pxa320()) {
mfp_init_base(io_p2v(MFPR_BASE));
mfp_init_addr(pxa320_mfp_addr_map);
clks_register(ARRAY_AND_SIZE(pxa320_clkregs));
clkdev_add_table(ARRAY_AND_SIZE(pxa320_clkregs));
}

return 0;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-pxa/pxa3xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,7 @@ static int __init pxa3xx_init(void)
*/
ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S);

clks_register(pxa3xx_clkregs, ARRAY_SIZE(pxa3xx_clkregs));
clkdev_add_table(pxa3xx_clkregs, ARRAY_SIZE(pxa3xx_clkregs));

if ((ret = pxa_init_dma(IRQ_DMA, 32)))
return ret;
Expand Down
5 changes: 1 addition & 4 deletions arch/arm/mach-realview/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -346,10 +346,7 @@ static struct clk_lookup lookups[] = {

static int __init clk_init(void)
{
int i;

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));
return 0;
}
arch_initcall(clk_init);
Expand Down
5 changes: 1 addition & 4 deletions arch/arm/mach-u300/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -1276,11 +1276,8 @@ static struct clk_lookup lookups[] = {

static void __init clk_register(void)
{
int i;

/* Register the lookups */
for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));
}

/*
Expand Down
5 changes: 1 addition & 4 deletions arch/arm/mach-ux500/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,8 @@ static struct clk_lookup lookups[] = {

static int __init clk_init(void)
{
int i;

/* register the clock lookups */
for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));
return 0;
}
arch_initcall(clk_init);
3 changes: 1 addition & 2 deletions arch/arm/mach-versatile/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -851,8 +851,7 @@ void __init versatile_init(void)
{
int i;

for (i = 0; i < ARRAY_SIZE(lookups); i++)
clkdev_add(&lookups[i]);
clkdev_add_table(lookups, ARRAY_SIZE(lookups));

platform_device_register(&versatile_flash_device);
platform_device_register(&versatile_i2c_device);
Expand Down
9 changes: 0 additions & 9 deletions arch/arm/mach-w90x900/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,3 @@ void nuc900_subclk_enable(struct clk *clk, int enable)

__raw_writel(clken, W90X900_VA_CLKPWR + SUBCLK);
}


void clks_register(struct clk_lookup *clks, size_t num)
{
int i;

for (i = 0; i < num; i++)
clkdev_add(&clks[i]);
}
1 change: 0 additions & 1 deletion arch/arm/mach-w90x900/clock.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

void nuc900_clk_enable(struct clk *clk, int enable);
void nuc900_subclk_enable(struct clk *clk, int enable);
void clks_register(struct clk_lookup *clks, size_t num);

struct clk {
unsigned long cken;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-w90x900/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,6 @@ void __init nuc900_map_io(struct map_desc *mach_desc, int mach_size)

void __init nuc900_init_clocks(void)
{
clks_register(nuc900_clkregs, ARRAY_SIZE(nuc900_clkregs));
clkdev_add_table(nuc900_clkregs, ARRAY_SIZE(nuc900_clkregs));
}

Loading

0 comments on commit 0a0300d

Please sign in to comment.