ARM: kirkwood: convert to DT irqchip and clocksource
authorSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Tue, 2 Jul 2013 13:15:07 +0000 (15:15 +0200)
committerJason Cooper <jason@lakedaemon.net>
Thu, 25 Jul 2013 21:07:20 +0000 (21:07 +0000)
With recent support for true irqchip and clocksource drivers for Orion
SoCs, now make use of it on DT enabled Kirkwood boards.

This also introduces a new Kconfig option for legacy (non-DT) Kirkwood
where old code is moved out to and polishes DT board file a little bit.

Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/mach-kirkwood/Kconfig
arch/arm/mach-kirkwood/Makefile
arch/arm/mach-kirkwood/board-dt.c

index e28cb72..60d0896 100644 (file)
@@ -2,67 +2,81 @@ if ARCH_KIRKWOOD
 
 menu "Marvell Kirkwood Implementations"
 
+config KIRKWOOD_LEGACY
+       bool
+
 config MACH_D2NET_V2
        bool "LaCie d2 Network v2 NAS Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          LaCie d2 Network v2 NAS.
 
 config MACH_DOCKSTAR
        bool "Seagate FreeAgent DockStar"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          Seagate FreeAgent DockStar.
 
 config MACH_ESATA_SHEEVAPLUG
        bool "Marvell eSATA SheevaPlug Reference Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          Marvell eSATA SheevaPlug Reference Board.
 
 config MACH_GURUPLUG
        bool "Marvell GuruPlug Reference Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          Marvell GuruPlug Reference Board.
 
 config MACH_INETSPACE_V2
        bool "LaCie Internet Space v2 NAS Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          LaCie Internet Space v2 NAS.
 
 config MACH_MV88F6281GTW_GE
        bool "Marvell 88F6281 GTW GE Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          Marvell 88F6281 GTW GE Board.
 
 config MACH_NET2BIG_V2
        bool "LaCie 2Big Network v2 NAS Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          LaCie 2Big Network v2 NAS.
 
 config MACH_NET5BIG_V2
        bool "LaCie 5Big Network v2 NAS Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          LaCie 5Big Network v2 NAS.
 
 config MACH_NETSPACE_MAX_V2
        bool "LaCie Network Space Max v2 NAS Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          LaCie Network Space Max v2 NAS.
 
 config MACH_NETSPACE_V2
        bool "LaCie Network Space v2 NAS Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          LaCie Network Space v2 NAS.
 
 config MACH_OPENRD
+       select KIRKWOOD_LEGACY
         bool
 
 config MACH_OPENRD_BASE
@@ -88,30 +102,35 @@ config MACH_OPENRD_ULTIMATE
 
 config MACH_RD88F6192_NAS
        bool "Marvell RD-88F6192-NAS Reference Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          Marvell RD-88F6192-NAS Reference Board.
 
 config MACH_RD88F6281
        bool "Marvell RD-88F6281 Reference Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          Marvell RD-88F6281 Reference Board.
 
 config MACH_SHEEVAPLUG
        bool "Marvell SheevaPlug Reference Board"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          Marvell SheevaPlug Reference Board.
 
 config MACH_T5325
        bool "HP t5325 Thin Client"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          HP t5325 Thin Client.
 
 config MACH_TS219
        bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and
@@ -119,6 +138,7 @@ config MACH_TS219
 
 config MACH_TS41X
        bool "QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo NAS"
+       select KIRKWOOD_LEGACY
        help
          Say 'Y' here if you want your kernel to support the
          QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo
@@ -129,6 +149,8 @@ comment "Device tree entries"
 config ARCH_KIRKWOOD_DT
        bool "Marvell Kirkwood Flattened Device Tree"
        select KIRKWOOD_CLK
+       select ORION_IRQCHIP
+       select ORION_TIMER
        select POWER_SUPPLY
        select POWER_RESET
        select POWER_RESET_GPIO
index 9489c82..88e2dd3 100644 (file)
@@ -1,5 +1,5 @@
-obj-y                          += common.o irq.o pcie.o mpp.o
-
+obj-y                          += common.o pcie.o
+obj-$(CONFIG_KIRKWOOD_LEGACY)  += irq.o mpp.o
 obj-$(CONFIG_MACH_D2NET_V2)            += d2net_v2-setup.o lacie_v2-common.o
 obj-$(CONFIG_MACH_DOCKSTAR)            += dockstar-setup.o
 obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG)    += sheevaplug-setup.o
index 881f37e..56d4a5e 100644 (file)
@@ -15,6 +15,9 @@
 #include <linux/of.h>
 #include <linux/of_platform.h>
 #include <linux/clk-provider.h>
+#include <linux/clocksource.h>
+#include <linux/dma-mapping.h>
+#include <linux/irqchip.h>
 #include <linux/kexec.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
@@ -67,10 +70,17 @@ static void __init kirkwood_legacy_clk_init(void)
        clk_prepare_enable(clk);
 }
 
-static void __init kirkwood_of_clk_init(void)
+static void __init kirkwood_dt_time_init(void)
 {
        of_clk_init(NULL);
-       kirkwood_legacy_clk_init();
+       clocksource_of_init();
+}
+
+static void __init kirkwood_dt_init_early(void)
+{
+       mvebu_mbus_init("marvell,kirkwood-mbus",
+                       BRIDGE_WINS_BASE, BRIDGE_WINS_SZ,
+                       DDR_WINDOW_CPU_BASE, DDR_WINDOW_CPU_SZ);
 }
 
 static void __init kirkwood_dt_init(void)
@@ -91,8 +101,8 @@ static void __init kirkwood_dt_init(void)
 
        kirkwood_cpufreq_init();
 
-       /* Setup root of clk tree */
-       kirkwood_of_clk_init();
+       /* Setup clocks for legacy devices */
+       kirkwood_legacy_clk_init();
 
        kirkwood_cpuidle_init();
 
@@ -114,9 +124,8 @@ static const char * const kirkwood_dt_board_compat[] = {
 DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)")
        /* Maintainer: Jason Cooper <jason@lakedaemon.net> */
        .map_io         = kirkwood_map_io,
-       .init_early     = kirkwood_init_early,
-       .init_irq       = orion_dt_init_irq,
-       .init_time      = kirkwood_timer_init,
+       .init_early     = kirkwood_dt_init_early,
+       .init_time      = kirkwood_dt_time_init,
        .init_machine   = kirkwood_dt_init,
        .restart        = kirkwood_restart,
        .dt_compat      = kirkwood_dt_board_compat,