aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAndrew Lunn <andrew@lunn.ch>2012-04-06 11:17:26 -0400
committerMike Turquette <mturquette@linaro.org>2012-05-08 19:33:55 -0400
commit4574b886698dfad6209102fed6136622b5fe1c21 (patch)
tree2f1deee540c68261f4531d09337a19a130a7ea45 /arch
parent2f129bf4aab684bef1e82e747b709a5025ecb698 (diff)
ARM: Orion: SPI: Add clk/clkdev support.
Remove now redundant tclk from SPI platform data. This makes the platform data empty, so remove it. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Tested-by: Jamie Lentin <jm@lentin.co.uk> Signed-off-by: Mike Turquette <mturquette@linaro.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-dove/common.c6
-rw-r--r--arch/arm/mach-dove/dove-db-setup.c1
-rw-r--r--arch/arm/mach-kirkwood/board-dreamplug.c1
-rw-r--r--arch/arm/mach-kirkwood/common.c10
-rw-r--r--arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c1
-rw-r--r--arch/arm/mach-kirkwood/rd88f6192-nas-setup.c1
-rw-r--r--arch/arm/mach-kirkwood/t5325-setup.c1
-rw-r--r--arch/arm/mach-kirkwood/tsx1x-common.c1
-rw-r--r--arch/arm/mach-mv78xx0/common.c2
-rw-r--r--arch/arm/mach-orion5x/common.c4
-rw-r--r--arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c1
-rw-r--r--arch/arm/plat-orion/common.c38
-rw-r--r--arch/arm/plat-orion/include/plat/common.h11
13 files changed, 47 insertions, 31 deletions
diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
index 63fe6e612e98..da5b4047464d 100644
--- a/arch/arm/mach-dove/common.c
+++ b/arch/arm/mach-dove/common.c
@@ -76,6 +76,8 @@ static void __init clk_init(void)
76{ 76{
77 tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT, 77 tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT,
78 get_tclk()); 78 get_tclk());
79
80 orion_clkdev_init(tclk);
79} 81}
80 82
81/***************************************************************************** 83/*****************************************************************************
@@ -162,12 +164,12 @@ void __init dove_uart3_init(void)
162 ****************************************************************************/ 164 ****************************************************************************/
163void __init dove_spi0_init(void) 165void __init dove_spi0_init(void)
164{ 166{
165 orion_spi_init(DOVE_SPI0_PHYS_BASE, get_tclk()); 167 orion_spi_init(DOVE_SPI0_PHYS_BASE);
166} 168}
167 169
168void __init dove_spi1_init(void) 170void __init dove_spi1_init(void)
169{ 171{
170 orion_spi_1_init(DOVE_SPI1_PHYS_BASE, get_tclk()); 172 orion_spi_1_init(DOVE_SPI1_PHYS_BASE);
171} 173}
172 174
173/***************************************************************************** 175/*****************************************************************************
diff --git a/arch/arm/mach-dove/dove-db-setup.c b/arch/arm/mach-dove/dove-db-setup.c
index ea77ae430b2d..bc2867f11346 100644
--- a/arch/arm/mach-dove/dove-db-setup.c
+++ b/arch/arm/mach-dove/dove-db-setup.c
@@ -20,7 +20,6 @@
20#include <linux/i2c.h> 20#include <linux/i2c.h>
21#include <linux/pci.h> 21#include <linux/pci.h>
22#include <linux/spi/spi.h> 22#include <linux/spi/spi.h>
23#include <linux/spi/orion_spi.h>
24#include <linux/spi/flash.h> 23#include <linux/spi/flash.h>
25#include <linux/gpio.h> 24#include <linux/gpio.h>
26#include <asm/mach-types.h> 25#include <asm/mach-types.h>
diff --git a/arch/arm/mach-kirkwood/board-dreamplug.c b/arch/arm/mach-kirkwood/board-dreamplug.c
index 985453994dd3..55e357ab2923 100644
--- a/arch/arm/mach-kirkwood/board-dreamplug.c
+++ b/arch/arm/mach-kirkwood/board-dreamplug.c
@@ -27,7 +27,6 @@
27#include <linux/mtd/physmap.h> 27#include <linux/mtd/physmap.h>
28#include <linux/spi/flash.h> 28#include <linux/spi/flash.h>
29#include <linux/spi/spi.h> 29#include <linux/spi/spi.h>
30#include <linux/spi/orion_spi.h>
31#include <asm/mach-types.h> 30#include <asm/mach-types.h>
32#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
33#include <asm/mach/map.h> 32#include <asm/mach/map.h>
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
index 57b8d1ef3093..476e0b941db7 100644
--- a/arch/arm/mach-kirkwood/common.c
+++ b/arch/arm/mach-kirkwood/common.c
@@ -86,10 +86,12 @@ static struct clk __init *kirkwood_register_gate(const char *name, u8 bit_idx)
86 86
87void __init kirkwood_clk_init(void) 87void __init kirkwood_clk_init(void)
88{ 88{
89 struct clk *runit;
90
89 tclk = clk_register_fixed_rate(NULL, "tclk", NULL, 91 tclk = clk_register_fixed_rate(NULL, "tclk", NULL,
90 CLK_IS_ROOT, kirkwood_tclk); 92 CLK_IS_ROOT, kirkwood_tclk);
91 93
92 kirkwood_register_gate("runit", CGC_BIT_RUNIT); 94 runit = kirkwood_register_gate("runit", CGC_BIT_RUNIT);
93 kirkwood_register_gate("ge0", CGC_BIT_GE0); 95 kirkwood_register_gate("ge0", CGC_BIT_GE0);
94 kirkwood_register_gate("ge1", CGC_BIT_GE1); 96 kirkwood_register_gate("ge1", CGC_BIT_GE1);
95 kirkwood_register_gate("sata0", CGC_BIT_SATA0); 97 kirkwood_register_gate("sata0", CGC_BIT_SATA0);
@@ -104,6 +106,10 @@ void __init kirkwood_clk_init(void)
104 kirkwood_register_gate("audio", CGC_BIT_AUDIO); 106 kirkwood_register_gate("audio", CGC_BIT_AUDIO);
105 kirkwood_register_gate("tdm", CGC_BIT_TDM); 107 kirkwood_register_gate("tdm", CGC_BIT_TDM);
106 kirkwood_register_gate("tsu", CGC_BIT_TSU); 108 kirkwood_register_gate("tsu", CGC_BIT_TSU);
109
110 /* clkdev entries, mapping clks to devices */
111 orion_clkdev_add(NULL, "orion_spi.0", runit);
112 orion_clkdev_add(NULL, "orion_spi.1", runit);
107} 113}
108 114
109/***************************************************************************** 115/*****************************************************************************
@@ -270,7 +276,7 @@ void __init kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data)
270void __init kirkwood_spi_init() 276void __init kirkwood_spi_init()
271{ 277{
272 kirkwood_clk_ctrl |= CGC_RUNIT; 278 kirkwood_clk_ctrl |= CGC_RUNIT;
273 orion_spi_init(SPI_PHYS_BASE, kirkwood_tclk); 279 orion_spi_init(SPI_PHYS_BASE);
274} 280}
275 281
276 282
diff --git a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
index 85f6169c2484..6d8364a97810 100644
--- a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
+++ b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
@@ -23,7 +23,6 @@
23#include <linux/gpio_keys.h> 23#include <linux/gpio_keys.h>
24#include <linux/spi/flash.h> 24#include <linux/spi/flash.h>
25#include <linux/spi/spi.h> 25#include <linux/spi/spi.h>
26#include <linux/spi/orion_spi.h>
27#include <net/dsa.h> 26#include <net/dsa.h>
28#include <asm/mach-types.h> 27#include <asm/mach-types.h>
29#include <asm/mach/arch.h> 28#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
index fd2c9c8b6831..f742a66a7045 100644
--- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
+++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
@@ -16,7 +16,6 @@
16#include <linux/gpio.h> 16#include <linux/gpio.h>
17#include <linux/spi/flash.h> 17#include <linux/spi/flash.h>
18#include <linux/spi/spi.h> 18#include <linux/spi/spi.h>
19#include <linux/spi/orion_spi.h>
20#include <asm/mach-types.h> 19#include <asm/mach-types.h>
21#include <asm/mach/arch.h> 20#include <asm/mach/arch.h>
22#include <mach/kirkwood.h> 21#include <mach/kirkwood.h>
diff --git a/arch/arm/mach-kirkwood/t5325-setup.c b/arch/arm/mach-kirkwood/t5325-setup.c
index f9d2a11b7f96..bad738e44044 100644
--- a/arch/arm/mach-kirkwood/t5325-setup.c
+++ b/arch/arm/mach-kirkwood/t5325-setup.c
@@ -16,7 +16,6 @@
16#include <linux/mtd/physmap.h> 16#include <linux/mtd/physmap.h>
17#include <linux/spi/flash.h> 17#include <linux/spi/flash.h>
18#include <linux/spi/spi.h> 18#include <linux/spi/spi.h>
19#include <linux/spi/orion_spi.h>
20#include <linux/i2c.h> 19#include <linux/i2c.h>
21#include <linux/mv643xx_eth.h> 20#include <linux/mv643xx_eth.h>
22#include <linux/ata_platform.h> 21#include <linux/ata_platform.h>
diff --git a/arch/arm/mach-kirkwood/tsx1x-common.c b/arch/arm/mach-kirkwood/tsx1x-common.c
index 24294b2bc469..8943ede29b44 100644
--- a/arch/arm/mach-kirkwood/tsx1x-common.c
+++ b/arch/arm/mach-kirkwood/tsx1x-common.c
@@ -4,7 +4,6 @@
4#include <linux/mtd/physmap.h> 4#include <linux/mtd/physmap.h>
5#include <linux/spi/flash.h> 5#include <linux/spi/flash.h>
6#include <linux/spi/spi.h> 6#include <linux/spi/spi.h>
7#include <linux/spi/orion_spi.h>
8#include <linux/serial_reg.h> 7#include <linux/serial_reg.h>
9#include <mach/kirkwood.h> 8#include <mach/kirkwood.h>
10#include "common.h" 9#include "common.h"
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
index 73733207f5a9..4c24b46520aa 100644
--- a/arch/arm/mach-mv78xx0/common.c
+++ b/arch/arm/mach-mv78xx0/common.c
@@ -175,6 +175,8 @@ static void __init clk_init(void)
175{ 175{
176 tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT, 176 tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT,
177 get_tclk()); 177 get_tclk());
178
179 orion_clkdev_init(tclk);
178} 180}
179 181
180/***************************************************************************** 182/*****************************************************************************
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
index 81660522c6b4..2ef82e2f511d 100644
--- a/arch/arm/mach-orion5x/common.c
+++ b/arch/arm/mach-orion5x/common.c
@@ -79,6 +79,8 @@ static void __init clk_init(void)
79{ 79{
80 tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT, 80 tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT,
81 orion5x_tclk); 81 orion5x_tclk);
82
83 orion_clkdev_init(tclk);
82} 84}
83 85
84/***************************************************************************** 86/*****************************************************************************
@@ -144,7 +146,7 @@ void __init orion5x_sata_init(struct mv_sata_platform_data *sata_data)
144 ****************************************************************************/ 146 ****************************************************************************/
145void __init orion5x_spi_init() 147void __init orion5x_spi_init()
146{ 148{
147 orion_spi_init(SPI_PHYS_BASE, orion5x_tclk); 149 orion_spi_init(SPI_PHYS_BASE);
148} 150}
149 151
150 152
diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
index 2c5fab00d205..7b97a9a211ed 100644
--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
@@ -16,7 +16,6 @@
16#include <linux/mtd/physmap.h> 16#include <linux/mtd/physmap.h>
17#include <linux/mv643xx_eth.h> 17#include <linux/mv643xx_eth.h>
18#include <linux/spi/spi.h> 18#include <linux/spi/spi.h>
19#include <linux/spi/orion_spi.h>
20#include <linux/spi/flash.h> 19#include <linux/spi/flash.h>
21#include <linux/ethtool.h> 20#include <linux/ethtool.h>
22#include <net/dsa.h> 21#include <net/dsa.h>
diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
index 4fdd2e7e74a1..bbe50a948710 100644
--- a/arch/arm/plat-orion/common.c
+++ b/arch/arm/plat-orion/common.c
@@ -19,12 +19,32 @@
19#include <linux/mv643xx_eth.h> 19#include <linux/mv643xx_eth.h>
20#include <linux/mv643xx_i2c.h> 20#include <linux/mv643xx_i2c.h>
21#include <net/dsa.h> 21#include <net/dsa.h>
22#include <linux/spi/orion_spi.h>
23#include <plat/orion_wdt.h> 22#include <plat/orion_wdt.h>
24#include <plat/mv_xor.h> 23#include <plat/mv_xor.h>
25#include <plat/ehci-orion.h> 24#include <plat/ehci-orion.h>
26#include <mach/bridge-regs.h> 25#include <mach/bridge-regs.h>
27 26
27/* Create a clkdev entry for a given device/clk */
28void __init orion_clkdev_add(const char *con_id, const char *dev_id,
29 struct clk *clk)
30{
31 struct clk_lookup *cl;
32
33 cl = clkdev_alloc(clk, con_id, dev_id);
34 if (cl)
35 clkdev_add(cl);
36}
37
38/* Create clkdev entries for all orion platforms except kirkwood.
39 Kirkwood has gated clocks for some of its peripherals, so creates
40 its own clkdev entries. For all the other orion devices, create
41 clkdev entries to the tclk. */
42void __init orion_clkdev_init(struct clk *tclk)
43{
44 orion_clkdev_add(NULL, "orion_spi.0", tclk);
45 orion_clkdev_add(NULL, "orion_spi.1", tclk);
46}
47
28/* Fill in the resources structure and link it into the platform 48/* Fill in the resources structure and link it into the platform
29 device structure. There is always a memory region, and nearly 49 device structure. There is always a memory region, and nearly
30 always an interrupt.*/ 50 always an interrupt.*/
@@ -523,44 +543,32 @@ void __init orion_i2c_1_init(unsigned long mapbase,
523/***************************************************************************** 543/*****************************************************************************
524 * SPI 544 * SPI
525 ****************************************************************************/ 545 ****************************************************************************/
526static struct orion_spi_info orion_spi_plat_data;
527static struct resource orion_spi_resources; 546static struct resource orion_spi_resources;
528 547
529static struct platform_device orion_spi = { 548static struct platform_device orion_spi = {
530 .name = "orion_spi", 549 .name = "orion_spi",
531 .id = 0, 550 .id = 0,
532 .dev = {
533 .platform_data = &orion_spi_plat_data,
534 },
535}; 551};
536 552
537static struct orion_spi_info orion_spi_1_plat_data;
538static struct resource orion_spi_1_resources; 553static struct resource orion_spi_1_resources;
539 554
540static struct platform_device orion_spi_1 = { 555static struct platform_device orion_spi_1 = {
541 .name = "orion_spi", 556 .name = "orion_spi",
542 .id = 1, 557 .id = 1,
543 .dev = {
544 .platform_data = &orion_spi_1_plat_data,
545 },
546}; 558};
547 559
548/* Note: The SPI silicon core does have interrupts. However the 560/* Note: The SPI silicon core does have interrupts. However the
549 * current Linux software driver does not use interrupts. */ 561 * current Linux software driver does not use interrupts. */
550 562
551void __init orion_spi_init(unsigned long mapbase, 563void __init orion_spi_init(unsigned long mapbase)
552 unsigned long tclk)
553{ 564{
554 orion_spi_plat_data.tclk = tclk;
555 fill_resources(&orion_spi, &orion_spi_resources, 565 fill_resources(&orion_spi, &orion_spi_resources,
556 mapbase, SZ_512 - 1, NO_IRQ); 566 mapbase, SZ_512 - 1, NO_IRQ);
557 platform_device_register(&orion_spi); 567 platform_device_register(&orion_spi);
558} 568}
559 569
560void __init orion_spi_1_init(unsigned long mapbase, 570void __init orion_spi_1_init(unsigned long mapbase)
561 unsigned long tclk)
562{ 571{
563 orion_spi_1_plat_data.tclk = tclk;
564 fill_resources(&orion_spi_1, &orion_spi_1_resources, 572 fill_resources(&orion_spi_1, &orion_spi_1_resources,
565 mapbase, SZ_512 - 1, NO_IRQ); 573 mapbase, SZ_512 - 1, NO_IRQ);
566 platform_device_register(&orion_spi_1); 574 platform_device_register(&orion_spi_1);
diff --git a/arch/arm/plat-orion/include/plat/common.h b/arch/arm/plat-orion/include/plat/common.h
index a7fa005a5a0e..d188a1aa6f56 100644
--- a/arch/arm/plat-orion/include/plat/common.h
+++ b/arch/arm/plat-orion/include/plat/common.h
@@ -70,11 +70,9 @@ void __init orion_i2c_1_init(unsigned long mapbase,
70 unsigned long irq, 70 unsigned long irq,
71 unsigned long freq_m); 71 unsigned long freq_m);
72 72
73void __init orion_spi_init(unsigned long mapbase, 73void __init orion_spi_init(unsigned long mapbase);
74 unsigned long tclk);
75 74
76void __init orion_spi_1_init(unsigned long mapbase, 75void __init orion_spi_1_init(unsigned long mapbase);
77 unsigned long tclk);
78 76
79void __init orion_wdt_init(unsigned long tclk); 77void __init orion_wdt_init(unsigned long tclk);
80 78
@@ -106,4 +104,9 @@ void __init orion_crypto_init(unsigned long mapbase,
106 unsigned long srambase, 104 unsigned long srambase,
107 unsigned long sram_size, 105 unsigned long sram_size,
108 unsigned long irq); 106 unsigned long irq);
107
108void __init orion_clkdev_add(const char *con_id, const char *dev_id,
109 struct clk *clk);
110
111void __init orion_clkdev_init(struct clk *tclk);
109#endif 112#endif