diff options
author | Andrew Lunn <andrew@lunn.ch> | 2012-04-06 11:17:26 -0400 |
---|---|---|
committer | Mike Turquette <mturquette@linaro.org> | 2012-05-08 19:33:55 -0400 |
commit | 4574b886698dfad6209102fed6136622b5fe1c21 (patch) | |
tree | 2f1deee540c68261f4531d09337a19a130a7ea45 /arch | |
parent | 2f129bf4aab684bef1e82e747b709a5025ecb698 (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.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-dove/dove-db-setup.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/board-dreamplug.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/common.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/rd88f6192-nas-setup.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/t5325-setup.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/tsx1x-common.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-mv78xx0/common.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-orion5x/common.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c | 1 | ||||
-rw-r--r-- | arch/arm/plat-orion/common.c | 38 | ||||
-rw-r--r-- | arch/arm/plat-orion/include/plat/common.h | 11 |
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 | ****************************************************************************/ |
163 | void __init dove_spi0_init(void) | 165 | void __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 | ||
168 | void __init dove_spi1_init(void) | 170 | void __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 | ||
87 | void __init kirkwood_clk_init(void) | 87 | void __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) | |||
270 | void __init kirkwood_spi_init() | 276 | void __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 | ****************************************************************************/ |
145 | void __init orion5x_spi_init() | 147 | void __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 */ | ||
28 | void __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. */ | ||
42 | void __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 | ****************************************************************************/ |
526 | static struct orion_spi_info orion_spi_plat_data; | ||
527 | static struct resource orion_spi_resources; | 546 | static struct resource orion_spi_resources; |
528 | 547 | ||
529 | static struct platform_device orion_spi = { | 548 | static 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 | ||
537 | static struct orion_spi_info orion_spi_1_plat_data; | ||
538 | static struct resource orion_spi_1_resources; | 553 | static struct resource orion_spi_1_resources; |
539 | 554 | ||
540 | static struct platform_device orion_spi_1 = { | 555 | static 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 | ||
551 | void __init orion_spi_init(unsigned long mapbase, | 563 | void __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 | ||
560 | void __init orion_spi_1_init(unsigned long mapbase, | 570 | void __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 | ||
73 | void __init orion_spi_init(unsigned long mapbase, | 73 | void __init orion_spi_init(unsigned long mapbase); |
74 | unsigned long tclk); | ||
75 | 74 | ||
76 | void __init orion_spi_1_init(unsigned long mapbase, | 75 | void __init orion_spi_1_init(unsigned long mapbase); |
77 | unsigned long tclk); | ||
78 | 76 | ||
79 | void __init orion_wdt_init(unsigned long tclk); | 77 | void __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 | |||
108 | void __init orion_clkdev_add(const char *con_id, const char *dev_id, | ||
109 | struct clk *clk); | ||
110 | |||
111 | void __init orion_clkdev_init(struct clk *tclk); | ||
109 | #endif | 112 | #endif |