diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-14 17:54:26 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-14 17:54:26 -0500 |
commit | c2714334b944abbeaaadda8cddde619eff0292a1 (patch) | |
tree | b45be97a313f58aa62933040230d51aa3a8592b4 /arch/arm/mach-kirkwood | |
parent | 0beb58783f2168354e2b5297af45fc7db70adf12 (diff) | |
parent | 5e5d8999a316d596f2012fe1cf4c59e0de693dab (diff) |
Merge tag 'mvebu' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC updates for Marvell mvebu/kirkwood from Olof Johansson:
"This is a branch with updates for Marvell's mvebu/kirkwood platforms.
They came in late-ish, and were heavily interdependent such that it
didn't make sense to split them up across the cross-platform topic
branches. So here they are (for the second release in a row) in a
branch on their own."
* tag 'mvebu' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (88 commits)
arm: l2x0: add aurora related properties to OF binding
arm: mvebu: add Aurora L2 Cache Controller to the DT
arm: mvebu: add L2 cache support
dma: mv_xor: fix error handling path
dma: mv_xor: fix error checking of irq_of_parse_and_map()
dma: mv_xor: use request_irq() instead of devm_request_irq()
dma: mv_xor: clear the window override control registers
arm: mvebu: fix address decoding armada_cfg_base() function
ARM: mvebu: update defconfig with I2C and RTC support
ARM: mvebu: Add SATA support for OpenBlocks AX3-4
ARM: mvebu: Add support for the RTC in OpenBlocks AX3-4
ARM: mvebu: Add support for I2C on OpenBlocks AX3-4
ARM: mvebu: Add support for I2C controllers in Armada 370/XP
arm: mvebu: Add hardware I/O Coherency support
arm: plat-orion: Add coherency attribute when setup mbus target
arm: dma mapping: Export a dma ops function arm_dma_set_mask
arm: mvebu: Add SMP support for Armada XP
arm: mm: Add support for PJ4B cpu and init routines
arm: mvebu: Add IPI support via doorbells
arm: mvebu: Add initial support for power managmement service unit
...
Diffstat (limited to 'arch/arm/mach-kirkwood')
-rw-r--r-- | arch/arm/mach-kirkwood/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/board-dt.c | 69 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/common.c | 4 |
3 files changed, 54 insertions, 21 deletions
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig index 503d7dd944ff..f91cdff5a3e4 100644 --- a/arch/arm/mach-kirkwood/Kconfig +++ b/arch/arm/mach-kirkwood/Kconfig | |||
@@ -51,6 +51,8 @@ config ARCH_KIRKWOOD_DT | |||
51 | select POWER_RESET_GPIO | 51 | select POWER_RESET_GPIO |
52 | select REGULATOR | 52 | select REGULATOR |
53 | select REGULATOR_FIXED_VOLTAGE | 53 | select REGULATOR_FIXED_VOLTAGE |
54 | select MVEBU_CLK_CORE | ||
55 | select MVEBU_CLK_GATING | ||
54 | select USE_OF | 56 | select USE_OF |
55 | help | 57 | help |
56 | Say 'Y' here if you want your kernel to support the | 58 | Say 'Y' here if you want your kernel to support the |
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c index 375f7d88551c..ff4150a2ad05 100644 --- a/arch/arm/mach-kirkwood/board-dt.c +++ b/arch/arm/mach-kirkwood/board-dt.c | |||
@@ -14,11 +14,15 @@ | |||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/of.h> | 15 | #include <linux/of.h> |
16 | #include <linux/of_platform.h> | 16 | #include <linux/of_platform.h> |
17 | #include <linux/clk-provider.h> | ||
18 | #include <linux/clk/mvebu.h> | ||
17 | #include <linux/kexec.h> | 19 | #include <linux/kexec.h> |
18 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
19 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
20 | #include <mach/bridge-regs.h> | 22 | #include <mach/bridge-regs.h> |
23 | #include <linux/platform_data/usb-ehci-orion.h> | ||
21 | #include <plat/irq.h> | 24 | #include <plat/irq.h> |
25 | #include <plat/common.h> | ||
22 | #include "common.h" | 26 | #include "common.h" |
23 | 27 | ||
24 | static struct of_device_id kirkwood_dt_match_table[] __initdata = { | 28 | static struct of_device_id kirkwood_dt_match_table[] __initdata = { |
@@ -26,18 +30,50 @@ static struct of_device_id kirkwood_dt_match_table[] __initdata = { | |||
26 | { } | 30 | { } |
27 | }; | 31 | }; |
28 | 32 | ||
29 | static struct of_dev_auxdata kirkwood_auxdata_lookup[] __initdata = { | 33 | /* |
30 | OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL), | 34 | * There are still devices that doesn't know about DT yet. Get clock |
31 | OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0", | 35 | * gates here and add a clock lookup alias, so that old platform |
32 | NULL), | 36 | * devices still work. |
33 | OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011100, "mv64xxx_i2c.1", | 37 | */ |
34 | NULL), | 38 | |
35 | OF_DEV_AUXDATA("marvell,orion-wdt", 0xf1020300, "orion_wdt", NULL), | 39 | static void __init kirkwood_legacy_clk_init(void) |
36 | OF_DEV_AUXDATA("marvell,orion-sata", 0xf1080000, "sata_mv.0", NULL), | 40 | { |
37 | OF_DEV_AUXDATA("marvell,orion-nand", 0xf4000000, "orion_nand", NULL), | 41 | |
38 | OF_DEV_AUXDATA("marvell,orion-crypto", 0xf1030000, "mv_crypto", NULL), | 42 | struct device_node *np = of_find_compatible_node( |
39 | {}, | 43 | NULL, NULL, "marvell,kirkwood-gating-clock"); |
40 | }; | 44 | |
45 | struct of_phandle_args clkspec; | ||
46 | |||
47 | clkspec.np = np; | ||
48 | clkspec.args_count = 1; | ||
49 | |||
50 | clkspec.args[0] = CGC_BIT_GE0; | ||
51 | orion_clkdev_add(NULL, "mv643xx_eth_port.0", | ||
52 | of_clk_get_from_provider(&clkspec)); | ||
53 | |||
54 | clkspec.args[0] = CGC_BIT_PEX0; | ||
55 | orion_clkdev_add("0", "pcie", | ||
56 | of_clk_get_from_provider(&clkspec)); | ||
57 | |||
58 | clkspec.args[0] = CGC_BIT_USB0; | ||
59 | orion_clkdev_add(NULL, "orion-ehci.0", | ||
60 | of_clk_get_from_provider(&clkspec)); | ||
61 | |||
62 | clkspec.args[0] = CGC_BIT_PEX1; | ||
63 | orion_clkdev_add("1", "pcie", | ||
64 | of_clk_get_from_provider(&clkspec)); | ||
65 | |||
66 | clkspec.args[0] = CGC_BIT_GE1; | ||
67 | orion_clkdev_add(NULL, "mv643xx_eth_port.1", | ||
68 | of_clk_get_from_provider(&clkspec)); | ||
69 | |||
70 | } | ||
71 | |||
72 | static void __init kirkwood_of_clk_init(void) | ||
73 | { | ||
74 | mvebu_clocks_init(); | ||
75 | kirkwood_legacy_clk_init(); | ||
76 | } | ||
41 | 77 | ||
42 | static void __init kirkwood_dt_init(void) | 78 | static void __init kirkwood_dt_init(void) |
43 | { | 79 | { |
@@ -56,11 +92,7 @@ static void __init kirkwood_dt_init(void) | |||
56 | kirkwood_l2_init(); | 92 | kirkwood_l2_init(); |
57 | 93 | ||
58 | /* Setup root of clk tree */ | 94 | /* Setup root of clk tree */ |
59 | kirkwood_clk_init(); | 95 | kirkwood_of_clk_init(); |
60 | |||
61 | /* internal devices that every board has */ | ||
62 | kirkwood_xor0_init(); | ||
63 | kirkwood_xor1_init(); | ||
64 | 96 | ||
65 | #ifdef CONFIG_KEXEC | 97 | #ifdef CONFIG_KEXEC |
66 | kexec_reinit = kirkwood_enable_pcie; | 98 | kexec_reinit = kirkwood_enable_pcie; |
@@ -115,8 +147,7 @@ static void __init kirkwood_dt_init(void) | |||
115 | if (of_machine_is_compatible("zyxel,nsa310")) | 147 | if (of_machine_is_compatible("zyxel,nsa310")) |
116 | nsa310_init(); | 148 | nsa310_init(); |
117 | 149 | ||
118 | of_platform_populate(NULL, kirkwood_dt_match_table, | 150 | of_platform_populate(NULL, kirkwood_dt_match_table, NULL, NULL); |
119 | kirkwood_auxdata_lookup, NULL); | ||
120 | } | 151 | } |
121 | 152 | ||
122 | static const char * const kirkwood_dt_board_compat[] = { | 153 | static const char * const kirkwood_dt_board_compat[] = { |
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c index 5303be62b311..bac21a554c91 100644 --- a/arch/arm/mach-kirkwood/common.c +++ b/arch/arm/mach-kirkwood/common.c | |||
@@ -260,8 +260,8 @@ void __init kirkwood_clk_init(void) | |||
260 | orion_clkdev_add(NULL, "orion_nand", runit); | 260 | orion_clkdev_add(NULL, "orion_nand", runit); |
261 | orion_clkdev_add(NULL, "mvsdio", sdio); | 261 | orion_clkdev_add(NULL, "mvsdio", sdio); |
262 | orion_clkdev_add(NULL, "mv_crypto", crypto); | 262 | orion_clkdev_add(NULL, "mv_crypto", crypto); |
263 | orion_clkdev_add(NULL, MV_XOR_SHARED_NAME ".0", xor0); | 263 | orion_clkdev_add(NULL, MV_XOR_NAME ".0", xor0); |
264 | orion_clkdev_add(NULL, MV_XOR_SHARED_NAME ".1", xor1); | 264 | orion_clkdev_add(NULL, MV_XOR_NAME ".1", xor1); |
265 | orion_clkdev_add("0", "pcie", pex0); | 265 | orion_clkdev_add("0", "pcie", pex0); |
266 | orion_clkdev_add("1", "pcie", pex1); | 266 | orion_clkdev_add("1", "pcie", pex1); |
267 | orion_clkdev_add(NULL, "kirkwood-i2s", audio); | 267 | orion_clkdev_add(NULL, "kirkwood-i2s", audio); |