All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support
@ 2015-03-02 20:36 Arnd Bergmann
  2015-03-02 20:36 ` [PATCH 1/5] ARM: orion: move watchdog setup to mach-orion5x Arnd Bergmann
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 20:36 UTC (permalink / raw)
  To: linux-arm-kernel

Hi everyone,

I'm trying to get all ARMv7 platforms moved over to ARCH_MULTIPLATFORM,
and while the plan for these three platforms was to do the conversion
to DT first and then to remove the board files along with all the
support files, I don't see that happening as soon as I'd hoped
for (as in, last year).

I've looked at what would be left to do for doing multiplatform with
the existing board code, and found that there is in fact very little.
This series does the complete change over to multiplatform for all
three, along with some header cleanups that fit the general purpose.

I've decided to do the patches across the platforms for better
readability, and to save everyone looking at very similar patches
three times.

This is build tested so far and survives a randconfig builder
for a few hundred builds without regressions, but I have not
done any runtime testing. Any help in testing or reviewing would
be much appreciated.

Thanks,

	Arnd

Arnd Bergmann (5):
  ARM: orion: move watchdog setup to mach-orion5x
  ARM: orion: always use MULTI_IRQ_HANDLER
  ARM: orion: use SPARSE_IRQ everywhere
  ARM: orion: clean up mach/*.h headers
  ARM: orion: multiplatform support

 arch/arm/Kconfig                                   | 39 ------------------
 arch/arm/configs/dove_defconfig                    |  2 +
 arch/arm/configs/mv78xx0_defconfig                 |  3 ++
 arch/arm/configs/orion5x_defconfig                 |  3 ++
 arch/arm/mach-dove/Kconfig                         | 15 +++++--
 arch/arm/mach-dove/Makefile                        |  2 +
 .../arm/mach-dove/{include/mach => }/bridge-regs.h |  4 +-
 arch/arm/mach-dove/cm-a510.c                       |  4 +-
 arch/arm/mach-dove/common.c                        |  4 +-
 arch/arm/mach-dove/dove-db-setup.c                 |  3 +-
 arch/arm/mach-dove/{include/mach => }/dove.h       |  4 +-
 arch/arm/mach-dove/include/mach/entry-macro.S      | 33 ---------------
 arch/arm/mach-dove/include/mach/hardware.h         | 19 ---------
 arch/arm/mach-dove/include/mach/uncompress.h       | 36 ----------------
 arch/arm/mach-dove/irq.c                           | 19 +++------
 arch/arm/mach-dove/{include/mach => }/irqs.h       |  4 +-
 arch/arm/mach-dove/mpp.c                           |  2 +-
 arch/arm/mach-dove/pcie.c                          |  4 +-
 arch/arm/mach-dove/{include/mach => }/pm.h         |  4 +-
 arch/arm/mach-mv78xx0/Kconfig                      | 15 +++++--
 arch/arm/mach-mv78xx0/Makefile                     |  2 +
 .../mach-mv78xx0/{include/mach => }/bridge-regs.h  |  4 +-
 arch/arm/mach-mv78xx0/buffalo-wxl-setup.c          |  3 +-
 arch/arm/mach-mv78xx0/common.c                     |  4 +-
 arch/arm/mach-mv78xx0/db78x00-bp-setup.c           |  3 +-
 arch/arm/mach-mv78xx0/include/mach/entry-macro.S   | 41 ------------------
 arch/arm/mach-mv78xx0/include/mach/hardware.h      | 14 -------
 arch/arm/mach-mv78xx0/include/mach/uncompress.h    | 46 ---------------------
 arch/arm/mach-mv78xx0/irq.c                        | 35 +++++++++++++++-
 arch/arm/mach-mv78xx0/{include/mach => }/irqs.h    |  4 +-
 arch/arm/mach-mv78xx0/mpp.c                        |  2 +-
 arch/arm/mach-mv78xx0/{include/mach => }/mv78xx0.h |  4 +-
 arch/arm/mach-mv78xx0/pcie.c                       |  2 +-
 arch/arm/mach-mv78xx0/rd78x00-masa-setup.c         |  3 +-
 arch/arm/mach-orion5x/Kconfig                      | 18 ++++++--
 arch/arm/mach-orion5x/Makefile                     |  2 +
 arch/arm/mach-orion5x/board-d2net.c                |  2 +-
 arch/arm/mach-orion5x/board-dt.c                   |  4 +-
 arch/arm/mach-orion5x/board-mss2.c                 |  4 +-
 arch/arm/mach-orion5x/board-rd88f5182.c            |  2 +-
 .../mach-orion5x/{include/mach => }/bridge-regs.h  |  4 +-
 arch/arm/mach-orion5x/common.c                     | 20 +++++++--
 arch/arm/mach-orion5x/db88f5281-setup.c            |  3 +-
 arch/arm/mach-orion5x/dns323-setup.c               |  3 +-
 arch/arm/mach-orion5x/include/mach/entry-macro.S   | 25 -----------
 arch/arm/mach-orion5x/include/mach/hardware.h      | 14 -------
 arch/arm/mach-orion5x/include/mach/uncompress.h    | 48 ----------------------
 arch/arm/mach-orion5x/irq.c                        | 14 +------
 arch/arm/mach-orion5x/{include/mach => }/irqs.h    |  4 +-
 arch/arm/mach-orion5x/kurobox_pro-setup.c          |  4 +-
 arch/arm/mach-orion5x/ls-chl-setup.c               |  3 +-
 arch/arm/mach-orion5x/ls_hgl-setup.c               |  3 +-
 arch/arm/mach-orion5x/lsmini-setup.c               |  3 +-
 arch/arm/mach-orion5x/mpp.c                        |  2 +-
 arch/arm/mach-orion5x/mv2120-setup.c               |  3 +-
 arch/arm/mach-orion5x/net2big-setup.c              |  3 +-
 arch/arm/mach-orion5x/{include/mach => }/orion5x.h |  4 +-
 arch/arm/mach-orion5x/pci.c                        |  2 +-
 arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c       |  3 +-
 arch/arm/mach-orion5x/rd88f5181l-ge-setup.c        |  3 +-
 arch/arm/mach-orion5x/rd88f5182-setup.c            |  3 +-
 arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c       |  3 +-
 arch/arm/mach-orion5x/terastation_pro2-setup.c     |  3 +-
 arch/arm/mach-orion5x/ts209-setup.c                |  3 +-
 arch/arm/mach-orion5x/ts409-setup.c                |  3 +-
 arch/arm/mach-orion5x/ts78xx-setup.c               |  3 +-
 arch/arm/mach-orion5x/tsx09-common.c               |  2 +-
 arch/arm/mach-orion5x/wnr854t-setup.c              |  3 +-
 arch/arm/mach-orion5x/wrt350n-v2-setup.c           |  3 +-
 arch/arm/plat-orion/common.c                       | 21 ----------
 arch/arm/plat-orion/include/plat/common.h          |  2 -
 arch/arm/plat-orion/irq.c                          |  1 -
 arch/arm/plat-orion/mpp.c                          |  1 -
 73 files changed, 184 insertions(+), 453 deletions(-)
 rename arch/arm/mach-dove/{include/mach => }/bridge-regs.h (96%)
 rename arch/arm/mach-dove/{include/mach => }/dove.h (99%)
 delete mode 100644 arch/arm/mach-dove/include/mach/entry-macro.S
 delete mode 100644 arch/arm/mach-dove/include/mach/hardware.h
 delete mode 100644 arch/arm/mach-dove/include/mach/uncompress.h
 rename arch/arm/mach-dove/{include/mach => }/irqs.h (95%)
 rename arch/arm/mach-dove/{include/mach => }/pm.h (97%)
 rename arch/arm/mach-mv78xx0/{include/mach => }/bridge-regs.h (92%)
 delete mode 100644 arch/arm/mach-mv78xx0/include/mach/entry-macro.S
 delete mode 100644 arch/arm/mach-mv78xx0/include/mach/hardware.h
 delete mode 100644 arch/arm/mach-mv78xx0/include/mach/uncompress.h
 rename arch/arm/mach-mv78xx0/{include/mach => }/irqs.h (95%)
 rename arch/arm/mach-mv78xx0/{include/mach => }/mv78xx0.h (98%)
 rename arch/arm/mach-orion5x/{include/mach => }/bridge-regs.h (92%)
 delete mode 100644 arch/arm/mach-orion5x/include/mach/entry-macro.S
 delete mode 100644 arch/arm/mach-orion5x/include/mach/hardware.h
 delete mode 100644 arch/arm/mach-orion5x/include/mach/uncompress.h
 rename arch/arm/mach-orion5x/{include/mach => }/irqs.h (93%)
 rename arch/arm/mach-orion5x/{include/mach => }/orion5x.h (99%)

-- 
2.1.0.rc2

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/5] ARM: orion: move watchdog setup to mach-orion5x
  2015-03-02 20:36 [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
@ 2015-03-02 20:36 ` Arnd Bergmann
  2015-03-02 21:33   ` Andrew Lunn
  2015-03-02 20:36 ` [PATCH 2/5] ARM: orion: always use MULTI_IRQ_HANDLER Arnd Bergmann
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 20:36 UTC (permalink / raw)
  To: linux-arm-kernel

The watchdog device node is created in plat-orion/common.c
but depends on the bridge address that is platform specific,
so as a preparation for orion multiplatform support, we should
move it out of the common code into orion5x.

The other two users of plat-orion currently do not support
the watchdog device, so this is not a problem.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/mach-orion5x/common.c            | 14 +++++++++++++-
 arch/arm/plat-orion/common.c              | 21 ---------------------
 arch/arm/plat-orion/include/plat/common.h |  2 --
 3 files changed, 13 insertions(+), 24 deletions(-)

diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
index 6bbb7b55c6d1..2b7889e3b7bc 100644
--- a/arch/arm/mach-orion5x/common.c
+++ b/arch/arm/mach-orion5x/common.c
@@ -184,9 +184,21 @@ static void __init orion5x_crypto_init(void)
 /*****************************************************************************
  * Watchdog
  ****************************************************************************/
+static struct resource orion_wdt_resource[] = {
+		DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
+		DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
+};
+
+static struct platform_device orion_wdt_device = {
+	.name		= "orion_wdt",
+	.id		= -1,
+	.num_resources	= ARRAY_SIZE(orion_wdt_resource),
+	.resource	= orion_wdt_resource,
+};
+
 static void __init orion5x_wdt_init(void)
 {
-	orion_wdt_init();
+	platform_device_register(&orion_wdt_device);
 }
 
 
diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
index f5b00f41c4f6..10412dc72e5d 100644
--- a/arch/arm/plat-orion/common.c
+++ b/arch/arm/plat-orion/common.c
@@ -21,7 +21,6 @@
 #include <net/dsa.h>
 #include <linux/platform_data/dma-mv_xor.h>
 #include <linux/platform_data/usb-ehci-orion.h>
-#include <mach/bridge-regs.h>
 #include <plat/common.h>
 
 /* Create a clkdev entry for a given device/clk */
@@ -593,26 +592,6 @@ void __init orion_spi_1_init(unsigned long mapbase)
 }
 
 /*****************************************************************************
- * Watchdog
- ****************************************************************************/
-static struct resource orion_wdt_resource[] = {
-		DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
-		DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
-};
-
-static struct platform_device orion_wdt_device = {
-	.name		= "orion_wdt",
-	.id		= -1,
-	.num_resources	= ARRAY_SIZE(orion_wdt_resource),
-	.resource	= orion_wdt_resource,
-};
-
-void __init orion_wdt_init(void)
-{
-	platform_device_register(&orion_wdt_device);
-}
-
-/*****************************************************************************
  * XOR
  ****************************************************************************/
 static u64 orion_xor_dmamask = DMA_BIT_MASK(32);
diff --git a/arch/arm/plat-orion/include/plat/common.h b/arch/arm/plat-orion/include/plat/common.h
index d9a24f605a2b..9e6d76ad48a9 100644
--- a/arch/arm/plat-orion/include/plat/common.h
+++ b/arch/arm/plat-orion/include/plat/common.h
@@ -75,8 +75,6 @@ void __init orion_spi_init(unsigned long mapbase);
 
 void __init orion_spi_1_init(unsigned long mapbase);
 
-void __init orion_wdt_init(void);
-
 void __init orion_xor0_init(unsigned long mapbase_low,
 			    unsigned long mapbase_high,
 			    unsigned long irq_0,
-- 
2.1.0.rc2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 2/5] ARM: orion: always use MULTI_IRQ_HANDLER
  2015-03-02 20:36 [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
  2015-03-02 20:36 ` [PATCH 1/5] ARM: orion: move watchdog setup to mach-orion5x Arnd Bergmann
@ 2015-03-02 20:36 ` Arnd Bergmann
  2015-03-02 21:37   ` Andrew Lunn
  2015-03-02 20:36 ` [PATCH 3/5] ARM: orion: use SPARSE_IRQ everywhere Arnd Bergmann
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 20:36 UTC (permalink / raw)
  To: linux-arm-kernel

As a preparation for multiplatform support, this enables
the MULTI_IRQ_HANDLER code unconditionally on dove and
orion5x, and introduces the respective code on mv78xx0,
which did not have it so far. The classic entry-macro.S
files are removed as they are now obsolete.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/Kconfig                                 |  3 ++
 arch/arm/mach-dove/include/mach/entry-macro.S    | 33 -------------------
 arch/arm/mach-dove/irq.c                         | 11 -------
 arch/arm/mach-mv78xx0/include/mach/entry-macro.S | 41 ------------------------
 arch/arm/mach-mv78xx0/irq.c                      | 33 +++++++++++++++++++
 arch/arm/mach-orion5x/include/mach/entry-macro.S | 25 ---------------
 arch/arm/mach-orion5x/irq.c                      | 12 -------
 7 files changed, 36 insertions(+), 122 deletions(-)
 delete mode 100644 arch/arm/mach-dove/include/mach/entry-macro.S
 delete mode 100644 arch/arm/mach-mv78xx0/include/mach/entry-macro.S
 delete mode 100644 arch/arm/mach-orion5x/include/mach/entry-macro.S

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 0f7dd89b5eee..39a625df6f75 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -501,6 +501,7 @@ config ARCH_DOVE
 	select CPU_PJ4
 	select GENERIC_CLOCKEVENTS
 	select MIGHT_HAVE_PCI
+	select MULTI_IRQ_HANDLER
 	select MVEBU_MBUS
 	select PINCTRL
 	select PINCTRL_DOVE
@@ -514,6 +515,7 @@ config ARCH_MV78XX0
 	select CPU_FEROCEON
 	select GENERIC_CLOCKEVENTS
 	select MVEBU_MBUS
+	select MULTI_IRQ_HANDLER
 	select PCI
 	select PLAT_ORION_LEGACY
 	help
@@ -527,6 +529,7 @@ config ARCH_ORION5X
 	select CPU_FEROCEON
 	select GENERIC_CLOCKEVENTS
 	select MVEBU_MBUS
+	select MULTI_IRQ_HANDLER
 	select PCI
 	select PLAT_ORION_LEGACY
 	help
diff --git a/arch/arm/mach-dove/include/mach/entry-macro.S b/arch/arm/mach-dove/include/mach/entry-macro.S
deleted file mode 100644
index 72d622baaad3..000000000000
--- a/arch/arm/mach-dove/include/mach/entry-macro.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * arch/arm/mach-dove/include/mach/entry-macro.S
- *
- * Low-level IRQ helper macros for Marvell Dove platforms
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <mach/bridge-regs.h>
-
-	.macro  get_irqnr_preamble, base, tmp
-	ldr	\base, =IRQ_VIRT_BASE
-	.endm
-
-	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
-	@ check low interrupts
-	ldr	\irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
-	ldr	\tmp, [\base, #IRQ_MASK_LOW_OFF]
-	mov	\irqnr, #31
-	ands	\irqstat, \irqstat, \tmp
-
-	@ if no low interrupts set, check high interrupts
-	ldreq	\irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
-	ldreq	\tmp, [\base, #IRQ_MASK_HIGH_OFF]
-	moveq	\irqnr, #63
-	andeqs	\irqstat, \irqstat, \tmp
-
-	@ find first active interrupt source
-	clzne	\irqstat, \irqstat
-	subne	\irqnr, \irqnr, \irqstat
-	.endm
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index 4a5a7aedcb76..1b1bc04346cf 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -108,14 +108,6 @@ static int __initdata gpio2_irqs[4] = {
 	0,
 };
 
-#ifdef CONFIG_MULTI_IRQ_HANDLER
-/*
- * Compiling with both non-DT and DT support enabled, will
- * break asm irq handler used by non-DT boards. Therefore,
- * we provide a C-style irq handler even for non-DT boards,
- * if MULTI_IRQ_HANDLER is set.
- */
-
 static void __iomem *dove_irq_base = IRQ_VIRT_BASE;
 
 static asmlinkage void
@@ -138,7 +130,6 @@ __exception_irq_entry dove_legacy_handle_irq(struct pt_regs *regs)
 		return;
 	}
 }
-#endif
 
 void __init dove_init_irq(void)
 {
@@ -147,9 +138,7 @@ void __init dove_init_irq(void)
 	orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
 	orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
 
-#ifdef CONFIG_MULTI_IRQ_HANDLER
 	set_handle_irq(dove_legacy_handle_irq);
-#endif
 
 	/*
 	 * Initialize gpiolib for GPIOs 0-71.
diff --git a/arch/arm/mach-mv78xx0/include/mach/entry-macro.S b/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
deleted file mode 100644
index 6b1f088e0597..000000000000
--- a/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * arch/arm/mach-mv78xx0/include/mach/entry-macro.S
- *
- * Low-level IRQ helper macros for Marvell MV78xx0 platforms
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <mach/bridge-regs.h>
-
-	.macro  get_irqnr_preamble, base, tmp
-	ldr	\base, =IRQ_VIRT_BASE
-	.endm
-
-	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
-	@ check low interrupts
-	ldr	\irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
-	ldr	\tmp, [\base, #IRQ_MASK_LOW_OFF]
-	mov	\irqnr, #31
-	ands	\irqstat, \irqstat, \tmp
-	bne	1001f
-
-	@ if no low interrupts set, check high interrupts
-	ldr	\irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
-	ldr	\tmp, [\base, #IRQ_MASK_HIGH_OFF]
-	mov	\irqnr, #63
-	ands	\irqstat, \irqstat, \tmp
-	bne	1001f
-
-	@ if no high interrupts set, check error interrupts
-	ldr	\irqstat, [\base, #IRQ_CAUSE_ERR_OFF]
-	ldr	\tmp, [\base, #IRQ_MASK_ERR_OFF]
-	mov	\irqnr, #95
-	ands	\irqstat, \irqstat, \tmp
-
-	@ find first active interrupt source
-1001:	clzne	\irqstat, \irqstat
-	subne	\irqnr, \irqnr, \irqstat
-	.endm
diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c
index 32073444024b..2453c33faccf 100644
--- a/arch/arm/mach-mv78xx0/irq.c
+++ b/arch/arm/mach-mv78xx0/irq.c
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/irq.h>
 #include <linux/io.h>
+#include <asm/exception.h>
 #include <mach/bridge-regs.h>
 #include <plat/orion-gpio.h>
 #include <plat/irq.h>
@@ -23,12 +24,44 @@ static int __initdata gpio0_irqs[4] = {
 	IRQ_MV78XX0_GPIO_24_31,
 };
 
+static void __iomem *mv78xx0_irq_base = IRQ_VIRT_BASE;
+
+static asmlinkage void
+__exception_irq_entry mv78xx0_legacy_handle_irq(struct pt_regs *regs)
+{
+	u32 stat;
+
+	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_LOW_OFF);
+	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_LOW_OFF);
+	if (stat) {
+		unsigned int hwirq = __fls(stat);
+		handle_IRQ(hwirq, regs);
+		return;
+	}
+	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_HIGH_OFF);
+	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_HIGH_OFF);
+	if (stat) {
+		unsigned int hwirq = 32 + __fls(stat);
+		handle_IRQ(hwirq, regs);
+		return;
+	}
+	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_ERR_OFF);
+	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_ERR_OFF);
+	if (stat) {
+		unsigned int hwirq = 64 + __fls(stat);
+		handle_IRQ(hwirq, regs);
+		return;
+	}
+}
+
 void __init mv78xx0_init_irq(void)
 {
 	orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
 	orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
 	orion_irq_init(64, IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF);
 
+	set_handle_irq(mv78xx0_legacy_handle_irq);
+
 	/*
 	 * Initialize gpiolib for GPIOs 0-31.  (The GPIO interrupt mask
 	 * registers for core #1 are at an offset of 0x18 from those of
diff --git a/arch/arm/mach-orion5x/include/mach/entry-macro.S b/arch/arm/mach-orion5x/include/mach/entry-macro.S
deleted file mode 100644
index 79eb502a1e64..000000000000
--- a/arch/arm/mach-orion5x/include/mach/entry-macro.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * arch/arm/mach-orion5x/include/mach/entry-macro.S
- *
- * Low-level IRQ helper macros for Orion platforms
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <mach/bridge-regs.h>
-
-	.macro  get_irqnr_preamble, base, tmp
-	ldr	\base, =MAIN_IRQ_CAUSE
-	.endm
-
-	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
-	ldr	\irqstat, [\base, #0]		@ main cause
-	ldr	\tmp, [\base, #(MAIN_IRQ_MASK - MAIN_IRQ_CAUSE)] @ main mask
-	mov	\irqnr, #0			@ default irqnr
-	@ find cause bits that are unmasked
-	ands	\irqstat, \irqstat, \tmp	@ clear Z flag if any
-	clzne	\irqnr,	\irqstat		@ calc irqnr
-	rsbne	\irqnr, \irqnr, #31
-	.endm
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c
index cd4bac4d7e43..a3f615801d27 100644
--- a/arch/arm/mach-orion5x/irq.c
+++ b/arch/arm/mach-orion5x/irq.c
@@ -26,14 +26,6 @@ static int __initdata gpio0_irqs[4] = {
 	IRQ_ORION5X_GPIO_24_31,
 };
 
-#ifdef CONFIG_MULTI_IRQ_HANDLER
-/*
- * Compiling with both non-DT and DT support enabled, will
- * break asm irq handler used by non-DT boards. Therefore,
- * we provide a C-style irq handler even for non-DT boards,
- * if MULTI_IRQ_HANDLER is set.
- */
-
 asmlinkage void
 __exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
 {
@@ -47,15 +39,11 @@ __exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
 		return;
 	}
 }
-#endif
 
 void __init orion5x_init_irq(void)
 {
 	orion_irq_init(0, MAIN_IRQ_MASK);
-
-#ifdef CONFIG_MULTI_IRQ_HANDLER
 	set_handle_irq(orion5x_legacy_handle_irq);
-#endif
 
 	/*
 	 * Initialize gpiolib for GPIOs 0-31.
-- 
2.1.0.rc2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 3/5] ARM: orion: use SPARSE_IRQ everywhere
  2015-03-02 20:36 [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
  2015-03-02 20:36 ` [PATCH 1/5] ARM: orion: move watchdog setup to mach-orion5x Arnd Bergmann
  2015-03-02 20:36 ` [PATCH 2/5] ARM: orion: always use MULTI_IRQ_HANDLER Arnd Bergmann
@ 2015-03-02 20:36 ` Arnd Bergmann
  2015-03-02 20:40 ` [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 20:36 UTC (permalink / raw)
  To: linux-arm-kernel

As a preparation for multiplatform support, this moves all the
code using plat-orion over to use sparse irq support, which is
enabled implicitly for multiplatform.

In particular, the hardcoded NR_IRQS macro gets replaced with
a machine specific one that is set in the machine descriptor
in order to set up a static mapping for all legacy interrupts.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/Kconfig                               | 3 +++
 arch/arm/mach-dove/cm-a510.c                   | 1 +
 arch/arm/mach-dove/dove-db-setup.c             | 1 +
 arch/arm/mach-dove/include/mach/dove.h         | 2 ++
 arch/arm/mach-dove/include/mach/irqs.h         | 2 +-
 arch/arm/mach-mv78xx0/buffalo-wxl-setup.c      | 1 +
 arch/arm/mach-mv78xx0/db78x00-bp-setup.c       | 1 +
 arch/arm/mach-mv78xx0/include/mach/irqs.h      | 2 +-
 arch/arm/mach-mv78xx0/include/mach/mv78xx0.h   | 2 ++
 arch/arm/mach-mv78xx0/rd78x00-masa-setup.c     | 1 +
 arch/arm/mach-orion5x/db88f5281-setup.c        | 1 +
 arch/arm/mach-orion5x/dns323-setup.c           | 1 +
 arch/arm/mach-orion5x/include/mach/irqs.h      | 2 +-
 arch/arm/mach-orion5x/include/mach/orion5x.h   | 2 ++
 arch/arm/mach-orion5x/kurobox_pro-setup.c      | 2 ++
 arch/arm/mach-orion5x/ls-chl-setup.c           | 1 +
 arch/arm/mach-orion5x/ls_hgl-setup.c           | 1 +
 arch/arm/mach-orion5x/lsmini-setup.c           | 1 +
 arch/arm/mach-orion5x/mv2120-setup.c           | 1 +
 arch/arm/mach-orion5x/net2big-setup.c          | 1 +
 arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c   | 1 +
 arch/arm/mach-orion5x/rd88f5181l-ge-setup.c    | 1 +
 arch/arm/mach-orion5x/rd88f5182-setup.c        | 1 +
 arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c   | 1 +
 arch/arm/mach-orion5x/terastation_pro2-setup.c | 1 +
 arch/arm/mach-orion5x/ts209-setup.c            | 1 +
 arch/arm/mach-orion5x/ts409-setup.c            | 1 +
 arch/arm/mach-orion5x/ts78xx-setup.c           | 1 +
 arch/arm/mach-orion5x/wnr854t-setup.c          | 1 +
 arch/arm/mach-orion5x/wrt350n-v2-setup.c       | 1 +
 30 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 39a625df6f75..9f77b2ae1e18 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -506,6 +506,7 @@ config ARCH_DOVE
 	select PINCTRL
 	select PINCTRL_DOVE
 	select PLAT_ORION_LEGACY
+	select SPARSE_IRQ
 	help
 	  Support for the Marvell Dove SoC 88AP510
 
@@ -518,6 +519,7 @@ config ARCH_MV78XX0
 	select MULTI_IRQ_HANDLER
 	select PCI
 	select PLAT_ORION_LEGACY
+	select SPARSE_IRQ
 	help
 	  Support for the following Marvell MV78xx0 series SoCs:
 	  MV781x0, MV782x0.
@@ -532,6 +534,7 @@ config ARCH_ORION5X
 	select MULTI_IRQ_HANDLER
 	select PCI
 	select PLAT_ORION_LEGACY
+	select SPARSE_IRQ
 	help
 	  Support for the following Marvell Orion 5x series SoCs:
 	  Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
diff --git a/arch/arm/mach-dove/cm-a510.c b/arch/arm/mach-dove/cm-a510.c
index 0dc39cf30fdd..b9a7c33db29a 100644
--- a/arch/arm/mach-dove/cm-a510.c
+++ b/arch/arm/mach-dove/cm-a510.c
@@ -88,6 +88,7 @@ static void __init cm_a510_init(void)
 
 MACHINE_START(CM_A510, "Compulab CM-A510 Board")
 	.atag_offset	= 0x100,
+	.nr_irqs	= DOVE_NR_IRQS,
 	.init_machine	= cm_a510_init,
 	.map_io		= dove_map_io,
 	.init_early	= dove_init_early,
diff --git a/arch/arm/mach-dove/dove-db-setup.c b/arch/arm/mach-dove/dove-db-setup.c
index 76e26f949c27..bcb678fd2415 100644
--- a/arch/arm/mach-dove/dove-db-setup.c
+++ b/arch/arm/mach-dove/dove-db-setup.c
@@ -94,6 +94,7 @@ static void __init dove_db_init(void)
 
 MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board")
 	.atag_offset	= 0x100,
+	.nr_irqs	= DOVE_NR_IRQS,
 	.init_machine	= dove_db_init,
 	.map_io		= dove_map_io,
 	.init_early	= dove_init_early,
diff --git a/arch/arm/mach-dove/include/mach/dove.h b/arch/arm/mach-dove/include/mach/dove.h
index 0c4b35f4ee5b..00f45458b3ec 100644
--- a/arch/arm/mach-dove/include/mach/dove.h
+++ b/arch/arm/mach-dove/include/mach/dove.h
@@ -11,6 +11,8 @@
 #ifndef __ASM_ARCH_DOVE_H
 #define __ASM_ARCH_DOVE_H
 
+#include <mach/irqs.h>
+
 /*
  * Marvell Dove address maps.
  *
diff --git a/arch/arm/mach-dove/include/mach/irqs.h b/arch/arm/mach-dove/include/mach/irqs.h
index 03d401d20453..fe9cf940c152 100644
--- a/arch/arm/mach-dove/include/mach/irqs.h
+++ b/arch/arm/mach-dove/include/mach/irqs.h
@@ -90,7 +90,7 @@
 #define NR_PMU_IRQS		7
 #define IRQ_DOVE_RTC		(IRQ_DOVE_PMU_START + 5)
 
-#define NR_IRQS			(IRQ_DOVE_PMU_START + NR_PMU_IRQS)
+#define DOVE_NR_IRQS		(IRQ_DOVE_PMU_START + NR_PMU_IRQS)
 
 
 #endif
diff --git a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
index 1f2ef98b37c6..1607fd5e206e 100644
--- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
+++ b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
@@ -146,6 +146,7 @@ subsys_initcall(wxl_pci_init);
 MACHINE_START(TERASTATION_WXL, "Buffalo Nas WXL")
 	/* Maintainer: Sebastien Requiem <sebastien@requiem.fr> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= MV78XX0_NR_IRQS,
 	.init_machine	= wxl_init,
 	.map_io		= mv78xx0_map_io,
 	.init_early	= mv78xx0_init_early,
diff --git a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
index 4e0f22b30bc8..0c5dd6fceb6b 100644
--- a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
+++ b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
@@ -94,6 +94,7 @@ subsys_initcall(db78x00_pci_init);
 MACHINE_START(DB78X00_BP, "Marvell DB-78x00-BP Development Board")
 	/* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= MV78XX0_NR_IRQS,
 	.init_machine	= db78x00_init,
 	.map_io		= mv78xx0_map_io,
 	.init_early	= mv78xx0_init_early,
diff --git a/arch/arm/mach-mv78xx0/include/mach/irqs.h b/arch/arm/mach-mv78xx0/include/mach/irqs.h
index fa1d422196c2..ac96bcf3d268 100644
--- a/arch/arm/mach-mv78xx0/include/mach/irqs.h
+++ b/arch/arm/mach-mv78xx0/include/mach/irqs.h
@@ -88,7 +88,7 @@
 #define IRQ_MV78XX0_GPIO_START	96
 #define NR_GPIO_IRQS		32
 
-#define NR_IRQS			(IRQ_MV78XX0_GPIO_START + NR_GPIO_IRQS)
+#define MV78XX0_NR_IRQS		(IRQ_MV78XX0_GPIO_START + NR_GPIO_IRQS)
 
 
 #endif
diff --git a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h b/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
index 723748d8ba7d..0972d5f9b46d 100644
--- a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
+++ b/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
@@ -12,6 +12,8 @@
 #ifndef __ASM_ARCH_MV78XX0_H
 #define __ASM_ARCH_MV78XX0_H
 
+#include "irqs.h"
+
 /*
  * Marvell MV78xx0 address maps.
  *
diff --git a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
index d2d06f3957f3..a0a3debf8c21 100644
--- a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
+++ b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
@@ -79,6 +79,7 @@ subsys_initcall(rd78x00_pci_init);
 MACHINE_START(RD78X00_MASA, "Marvell RD-78x00-MASA Development Board")
 	/* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= MV78XX0_NR_IRQS,
 	.init_machine	= rd78x00_masa_init,
 	.map_io		= mv78xx0_map_io,
 	.init_early	= mv78xx0_init_early,
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c
index dc01c4ffc9a8..698528fee39d 100644
--- a/arch/arm/mach-orion5x/db88f5281-setup.c
+++ b/arch/arm/mach-orion5x/db88f5281-setup.c
@@ -369,6 +369,7 @@ static void __init db88f5281_init(void)
 MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board")
 	/* Maintainer: Tzachi Perelstein <tzachi@marvell.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= db88f5281_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
index 09d2a26985da..a9d131453abc 100644
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ b/arch/arm/mach-orion5x/dns323-setup.c
@@ -715,6 +715,7 @@ static void __init dns323_init(void)
 MACHINE_START(DNS323, "D-Link DNS-323")
 	/* Maintainer: Herbert Valerio Riedel <hvr@gnu.org> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= dns323_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/include/mach/irqs.h b/arch/arm/mach-orion5x/include/mach/irqs.h
index a6fa9d8f12d8..14bc9c970f96 100644
--- a/arch/arm/mach-orion5x/include/mach/irqs.h
+++ b/arch/arm/mach-orion5x/include/mach/irqs.h
@@ -54,7 +54,7 @@
 #define IRQ_ORION5X_GPIO_START	32
 #define NR_GPIO_IRQS		32
 
-#define NR_IRQS			(IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS)
+#define ORION5X_NR_IRQS		(IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS)
 
 
 #endif
diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/include/mach/orion5x.h
index b78ff3248868..7be7c2e05465 100644
--- a/arch/arm/mach-orion5x/include/mach/orion5x.h
+++ b/arch/arm/mach-orion5x/include/mach/orion5x.h
@@ -14,6 +14,8 @@
 #ifndef __ASM_ARCH_ORION5X_H
 #define __ASM_ARCH_ORION5X_H
 
+#include <mach/irqs.h>
+
 /*****************************************************************************
  * Orion Address Maps
  *
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
index fe6a48a325e8..b1ebb3721638 100644
--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
+++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
@@ -383,6 +383,7 @@ static void __init kurobox_pro_init(void)
 MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
 	/* Maintainer: Ronen Shitrit <rshitrit@marvell.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= kurobox_pro_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
@@ -397,6 +398,7 @@ MACHINE_END
 MACHINE_START(LINKSTATION_PRO, "Buffalo Linkstation Pro/Live")
 	/* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= kurobox_pro_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c
index 028ea038d404..cb8720e6d02b 100644
--- a/arch/arm/mach-orion5x/ls-chl-setup.c
+++ b/arch/arm/mach-orion5x/ls-chl-setup.c
@@ -320,6 +320,7 @@ static void __init lschl_init(void)
 MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)")
 	/* Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= lschl_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ls_hgl-setup.c b/arch/arm/mach-orion5x/ls_hgl-setup.c
index 32b7129b767d..0ddfa23821ec 100644
--- a/arch/arm/mach-orion5x/ls_hgl-setup.c
+++ b/arch/arm/mach-orion5x/ls_hgl-setup.c
@@ -267,6 +267,7 @@ static void __init ls_hgl_init(void)
 MACHINE_START(LINKSTATION_LS_HGL, "Buffalo Linkstation LS-HGL")
 	/* Maintainer: Zhu Qingsen <zhuqs@cn.fujistu.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= ls_hgl_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/lsmini-setup.c b/arch/arm/mach-orion5x/lsmini-setup.c
index a6493e76f96d..65bbb4febcdd 100644
--- a/arch/arm/mach-orion5x/lsmini-setup.c
+++ b/arch/arm/mach-orion5x/lsmini-setup.c
@@ -269,6 +269,7 @@ static void __init lsmini_init(void)
 MACHINE_START(LINKSTATION_MINI, "Buffalo Linkstation Mini")
 	/* Maintainer: Alexey Kopytko <alexey@kopytko.ru> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= lsmini_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c
index e032f01da49e..11985dc45c47 100644
--- a/arch/arm/mach-orion5x/mv2120-setup.c
+++ b/arch/arm/mach-orion5x/mv2120-setup.c
@@ -232,6 +232,7 @@ static void __init mv2120_init(void)
 MACHINE_START(MV2120, "HP Media Vault mv2120")
 	/* Maintainer: Martin Michlmayr <tbm@cyrius.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= mv2120_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c
index ba73dc7ffb9e..e91abcc2213d 100644
--- a/arch/arm/mach-orion5x/net2big-setup.c
+++ b/arch/arm/mach-orion5x/net2big-setup.c
@@ -423,6 +423,7 @@ static void __init net2big_init(void)
 /* Warning: LaCie use a wrong mach-type (0x20e=526) in their bootloader. */
 MACHINE_START(NET2BIG, "LaCie 2Big Network")
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= net2big_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
index 213b3e143c57..69a6e5b20b0b 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
@@ -169,6 +169,7 @@ subsys_initcall(rd88f5181l_fxo_pci_init);
 MACHINE_START(RD88F5181L_FXO, "Marvell Orion-VoIP FXO Reference Design")
 	/* Maintainer: Nicolas Pitre <nico@marvell.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= rd88f5181l_fxo_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
index 594800e1d691..e19f8b7f87b3 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
@@ -181,6 +181,7 @@ subsys_initcall(rd88f5181l_ge_pci_init);
 MACHINE_START(RD88F5181L_GE, "Marvell Orion-VoIP GE Reference Design")
 	/* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= rd88f5181l_ge_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c
index b576ef5f18a1..180a4f972d3d 100644
--- a/arch/arm/mach-orion5x/rd88f5182-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5182-setup.c
@@ -281,6 +281,7 @@ static void __init rd88f5182_init(void)
 MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design")
 	/* Maintainer: Ronen Shitrit <rshitrit@marvell.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= rd88f5182_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
index 78a1e6ab1b9d..cc5bdbe70fa9 100644
--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
@@ -119,6 +119,7 @@ subsys_initcall(rd88f6183ap_ge_pci_init);
 MACHINE_START(RD88F6183AP_GE, "Marvell Orion-1-90 AP GE Reference Design")
 	/* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= rd88f6183ap_ge_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c
index 12086745c9fd..ad2057514deb 100644
--- a/arch/arm/mach-orion5x/terastation_pro2-setup.c
+++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c
@@ -359,6 +359,7 @@ static void __init tsp2_init(void)
 MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live")
 	/* Maintainer:  Sylver Bruneau <sylver.bruneau@googlemail.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= tsp2_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c
index c725b7cb9875..1cfc364c9b1e 100644
--- a/arch/arm/mach-orion5x/ts209-setup.c
+++ b/arch/arm/mach-orion5x/ts209-setup.c
@@ -324,6 +324,7 @@ static void __init qnap_ts209_init(void)
 MACHINE_START(TS209, "QNAP TS-109/TS-209")
 	/* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= qnap_ts209_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c
index cf2ab531cabc..bc985cf44625 100644
--- a/arch/arm/mach-orion5x/ts409-setup.c
+++ b/arch/arm/mach-orion5x/ts409-setup.c
@@ -313,6 +313,7 @@ static void __init qnap_ts409_init(void)
 MACHINE_START(TS409, "QNAP TS-409")
 	/* Maintainer:  Sylver Bruneau <sylver.bruneau@gmail.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= qnap_ts409_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c
index 1b704d35cf5b..5a61a66ce012 100644
--- a/arch/arm/mach-orion5x/ts78xx-setup.c
+++ b/arch/arm/mach-orion5x/ts78xx-setup.c
@@ -615,6 +615,7 @@ static void __init ts78xx_init(void)
 MACHINE_START(TS78XX, "Technologic Systems TS-78xx SBC")
 	/* Maintainer: Alexander Clouter <alex@digriz.org.uk> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= ts78xx_init,
 	.map_io		= ts78xx_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c
index 80a56ee245b3..bcc6e12dcdac 100644
--- a/arch/arm/mach-orion5x/wnr854t-setup.c
+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
@@ -174,6 +174,7 @@ subsys_initcall(wnr854t_pci_init);
 MACHINE_START(WNR854T, "Netgear WNR854T")
 	/* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= wnr854t_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index 670e30dc0d1b..4068d7a3e466 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -262,6 +262,7 @@ subsys_initcall(wrt350n_v2_pci_init);
 MACHINE_START(WRT350N_V2, "Linksys WRT350N v2")
 	/* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
 	.atag_offset	= 0x100,
+	.nr_irqs	= ORION5X_NR_IRQS,
 	.init_machine	= wrt350n_v2_init,
 	.map_io		= orion5x_map_io,
 	.init_early	= orion5x_init_early,
-- 
2.1.0.rc2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support
  2015-03-02 20:36 [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
                   ` (2 preceding siblings ...)
  2015-03-02 20:36 ` [PATCH 3/5] ARM: orion: use SPARSE_IRQ everywhere Arnd Bergmann
@ 2015-03-02 20:40 ` Arnd Bergmann
  2015-03-02 21:17 ` [PATCH 4/5] ARM: orion: clean up mach/*.h headers Arnd Bergmann
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 20:40 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 02 March 2015 21:36:53 Arnd Bergmann wrote:

> This is build tested so far and survives a randconfig builder
> for a few hundred builds without regressions, but I have not
> done any runtime testing. Any help in testing or reviewing would
> be much appreciated.

It would help to send out the version that I have actually tested.
If you want to give it a try, please apply the patch below to
actually get mach-dove to build.

	Arnd

diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index c9d68dbbdc08..c0d5f52713b7 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -13,6 +13,7 @@
 #include <linux/irq.h>
 #include <linux/gpio.h>
 #include <linux/io.h>
+#include <asm/exception.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/irq.h>
 
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index c0d5f52713b7..eed251513ca5 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -161,7 +161,7 @@ void __init dove_init_irq(void)
 	writel(0, PMU_INTERRUPT_MASK);
 	writel(0, PMU_INTERRUPT_CAUSE);
 
-	for (i = IRQ_DOVE_PMU_START; i < NR_IRQS; i++) {
+	for (i = IRQ_DOVE_PMU_START; i < DOVE_NR_IRQS; i++) {
 		irq_set_chip_and_handler(i, &pmu_irq_chip, handle_level_irq);
 		irq_set_status_flags(i, IRQ_LEVEL);
 		set_irq_flags(i, IRQF_VALID);
diff --git a/arch/arm/mach-dove/pm.h b/arch/arm/mach-dove/pm.h
index 584954d26241..3e2712a89c61 100644
--- a/arch/arm/mach-dove/pm.h
+++ b/arch/arm/mach-dove/pm.h
@@ -61,7 +61,7 @@ static inline int pmu_to_irq(int pin)
 
 static inline int irq_to_pmu(int irq)
 {
-	if (IRQ_DOVE_PMU_START <= irq && irq < NR_IRQS)
+	if (IRQ_DOVE_PMU_START <= irq && irq < DOVE_NR_IRQS)
 		return irq - IRQ_DOVE_PMU_START;
 
 	return -EINVAL;

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 4/5] ARM: orion: clean up mach/*.h headers
  2015-03-02 20:36 [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
                   ` (3 preceding siblings ...)
  2015-03-02 20:40 ` [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
@ 2015-03-02 21:17 ` Arnd Bergmann
  2015-03-02 21:17 ` [PATCH 5/5] ARM: orion: multiplatform support Arnd Bergmann
  2015-03-02 21:30 ` [PATCH 0/5] ARM: orion5k/mv78xx0/dove " Andrew Lunn
  6 siblings, 0 replies; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 21:17 UTC (permalink / raw)
  To: linux-arm-kernel

This is a simple move of all header files that are no longer
included by anything else from the include/mach directory
to the platform directory itself, for mv78xx0, dove, and orion5x,
as preparation for multiplatform support.

The mach/uncompress.h headers are left in place for now,
and are mildly modified to be independent of the other
headers. They will be removed entirely when ARCH_MULTIPLATFORM
gets enabled and they become obsolete.

Rather than updating the path names inside of the comments
of each header, I delete those comments to avoid having to
update them again, should they get moved or copied another
time.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/mach-dove/{include/mach => }/bridge-regs.h   |  4 +---
 arch/arm/mach-dove/cm-a510.c                          |  3 +--
 arch/arm/mach-dove/common.c                           |  4 ++--
 arch/arm/mach-dove/dove-db-setup.c                    |  2 +-
 arch/arm/mach-dove/{include/mach => }/dove.h          |  4 +---
 arch/arm/mach-dove/include/mach/hardware.h            | 19 -------------------
 arch/arm/mach-dove/include/mach/uncompress.h          |  8 +++-----
 arch/arm/mach-dove/irq.c                              |  8 +++++---
 arch/arm/mach-dove/{include/mach => }/irqs.h          |  2 --
 arch/arm/mach-dove/mpp.c                              |  2 +-
 arch/arm/mach-dove/pcie.c                             |  4 ++--
 arch/arm/mach-dove/{include/mach => }/pm.h            |  4 +---
 .../arm/mach-mv78xx0/{include/mach => }/bridge-regs.h |  4 +---
 arch/arm/mach-mv78xx0/buffalo-wxl-setup.c             |  2 +-
 arch/arm/mach-mv78xx0/common.c                        |  4 ++--
 arch/arm/mach-mv78xx0/db78x00-bp-setup.c              |  2 +-
 arch/arm/mach-mv78xx0/include/mach/hardware.h         | 14 --------------
 arch/arm/mach-mv78xx0/include/mach/uncompress.h       |  4 +---
 arch/arm/mach-mv78xx0/irq.c                           |  2 +-
 arch/arm/mach-mv78xx0/{include/mach => }/irqs.h       |  2 --
 arch/arm/mach-mv78xx0/mpp.c                           |  2 +-
 arch/arm/mach-mv78xx0/{include/mach => }/mv78xx0.h    |  2 --
 arch/arm/mach-mv78xx0/pcie.c                          |  2 +-
 arch/arm/mach-mv78xx0/rd78x00-masa-setup.c            |  2 +-
 arch/arm/mach-orion5x/board-d2net.c                   |  2 +-
 arch/arm/mach-orion5x/board-dt.c                      |  4 ++--
 arch/arm/mach-orion5x/board-mss2.c                    |  4 ++--
 arch/arm/mach-orion5x/board-rd88f5182.c               |  2 +-
 .../arm/mach-orion5x/{include/mach => }/bridge-regs.h |  4 +---
 arch/arm/mach-orion5x/common.c                        |  6 +++---
 arch/arm/mach-orion5x/db88f5281-setup.c               |  2 +-
 arch/arm/mach-orion5x/dns323-setup.c                  |  2 +-
 arch/arm/mach-orion5x/include/mach/hardware.h         | 14 --------------
 arch/arm/mach-orion5x/include/mach/uncompress.h       |  4 +---
 arch/arm/mach-orion5x/irq.c                           |  2 +-
 arch/arm/mach-orion5x/{include/mach => }/irqs.h       |  2 --
 arch/arm/mach-orion5x/kurobox_pro-setup.c             |  2 +-
 arch/arm/mach-orion5x/ls-chl-setup.c                  |  2 +-
 arch/arm/mach-orion5x/ls_hgl-setup.c                  |  2 +-
 arch/arm/mach-orion5x/lsmini-setup.c                  |  2 +-
 arch/arm/mach-orion5x/mpp.c                           |  2 +-
 arch/arm/mach-orion5x/mv2120-setup.c                  |  2 +-
 arch/arm/mach-orion5x/net2big-setup.c                 |  2 +-
 arch/arm/mach-orion5x/{include/mach => }/orion5x.h    |  4 +---
 arch/arm/mach-orion5x/pci.c                           |  2 +-
 arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c          |  2 +-
 arch/arm/mach-orion5x/rd88f5181l-ge-setup.c           |  2 +-
 arch/arm/mach-orion5x/rd88f5182-setup.c               |  2 +-
 arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c          |  2 +-
 arch/arm/mach-orion5x/terastation_pro2-setup.c        |  2 +-
 arch/arm/mach-orion5x/ts209-setup.c                   |  2 +-
 arch/arm/mach-orion5x/ts409-setup.c                   |  2 +-
 arch/arm/mach-orion5x/ts78xx-setup.c                  |  2 +-
 arch/arm/mach-orion5x/tsx09-common.c                  |  2 +-
 arch/arm/mach-orion5x/wnr854t-setup.c                 |  2 +-
 arch/arm/mach-orion5x/wrt350n-v2-setup.c              |  2 +-
 arch/arm/plat-orion/irq.c                             |  1 -
 arch/arm/plat-orion/mpp.c                             |  1 -
 58 files changed, 62 insertions(+), 136 deletions(-)
 rename arch/arm/mach-dove/{include/mach => }/bridge-regs.h (96%)
 rename arch/arm/mach-dove/{include/mach => }/dove.h (99%)
 delete mode 100644 arch/arm/mach-dove/include/mach/hardware.h
 rename arch/arm/mach-dove/{include/mach => }/irqs.h (98%)
 rename arch/arm/mach-dove/{include/mach => }/pm.h (97%)
 rename arch/arm/mach-mv78xx0/{include/mach => }/bridge-regs.h (92%)
 delete mode 100644 arch/arm/mach-mv78xx0/include/mach/hardware.h
 rename arch/arm/mach-mv78xx0/{include/mach => }/irqs.h (98%)
 rename arch/arm/mach-mv78xx0/{include/mach => }/mv78xx0.h (98%)
 rename arch/arm/mach-orion5x/{include/mach => }/bridge-regs.h (92%)
 delete mode 100644 arch/arm/mach-orion5x/include/mach/hardware.h
 rename arch/arm/mach-orion5x/{include/mach => }/irqs.h (96%)
 rename arch/arm/mach-orion5x/{include/mach => }/orion5x.h (98%)

diff --git a/arch/arm/mach-dove/include/mach/bridge-regs.h b/arch/arm/mach-dove/bridge-regs.h
similarity index 96%
rename from arch/arm/mach-dove/include/mach/bridge-regs.h
rename to arch/arm/mach-dove/bridge-regs.h
index f4a5b34489b7..ace0b0bfbf11 100644
--- a/arch/arm/mach-dove/include/mach/bridge-regs.h
+++ b/arch/arm/mach-dove/bridge-regs.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-dove/include/mach/bridge-regs.h
- *
  * Mbus-L to Mbus Bridge Registers
  *
  * This file is licensed under the terms of the GNU General Public
@@ -11,7 +9,7 @@
 #ifndef __ASM_ARCH_BRIDGE_REGS_H
 #define __ASM_ARCH_BRIDGE_REGS_H
 
-#include <mach/dove.h>
+#include "dove.h"
 
 #define CPU_CONFIG		(BRIDGE_VIRT_BASE + 0x0000)
 
diff --git a/arch/arm/mach-dove/cm-a510.c b/arch/arm/mach-dove/cm-a510.c
index b9a7c33db29a..9f25c993d863 100644
--- a/arch/arm/mach-dove/cm-a510.c
+++ b/arch/arm/mach-dove/cm-a510.c
@@ -22,8 +22,7 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 
-#include <mach/dove.h>
-
+#include "dove.h"
 #include "common.h"
 
 static struct mv643xx_eth_platform_data cm_a510_ge00_data = {
diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
index 0d1a89298ece..910788cd122d 100644
--- a/arch/arm/mach-dove/common.c
+++ b/arch/arm/mach-dove/common.c
@@ -20,11 +20,11 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 #include <asm/mach/time.h>
-#include <mach/bridge-regs.h>
-#include <mach/pm.h>
 #include <plat/common.h>
 #include <plat/irq.h>
 #include <plat/time.h>
+#include "bridge-regs.h"
+#include "pm.h"
 #include "common.h"
 
 /* These can go away once Dove uses the mvebu-mbus DT binding */
diff --git a/arch/arm/mach-dove/dove-db-setup.c b/arch/arm/mach-dove/dove-db-setup.c
index bcb678fd2415..6b9ac97f2d0f 100644
--- a/arch/arm/mach-dove/dove-db-setup.c
+++ b/arch/arm/mach-dove/dove-db-setup.c
@@ -24,7 +24,7 @@
 #include <linux/gpio.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
-#include <mach/dove.h>
+#include "dove.h"
 #include "common.h"
 
 static struct mv643xx_eth_platform_data dove_db_ge00_data = {
diff --git a/arch/arm/mach-dove/include/mach/dove.h b/arch/arm/mach-dove/dove.h
similarity index 99%
rename from arch/arm/mach-dove/include/mach/dove.h
rename to arch/arm/mach-dove/dove.h
index 00f45458b3ec..539e735f968d 100644
--- a/arch/arm/mach-dove/include/mach/dove.h
+++ b/arch/arm/mach-dove/dove.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-dove/include/mach/dove.h
- *
  * Generic definitions for Marvell Dove 88AP510 SoC
  *
  * This file is licensed under the terms of the GNU General Public
@@ -11,7 +9,7 @@
 #ifndef __ASM_ARCH_DOVE_H
 #define __ASM_ARCH_DOVE_H
 
-#include <mach/irqs.h>
+#include "irqs.h"
 
 /*
  * Marvell Dove address maps.
diff --git a/arch/arm/mach-dove/include/mach/hardware.h b/arch/arm/mach-dove/include/mach/hardware.h
deleted file mode 100644
index f1368b9a8ece..000000000000
--- a/arch/arm/mach-dove/include/mach/hardware.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * arch/arm/mach-dove/include/mach/hardware.h
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#ifndef __ASM_ARCH_HARDWARE_H
-#define __ASM_ARCH_HARDWARE_H
-
-#include "dove.h"
-
-/* Macros below are required for compatibility with PXA AC'97 driver.	*/
-#define __REG(x)	(*((volatile u32 *)((x) - DOVE_SB_REGS_PHYS_BASE + \
-				DOVE_SB_REGS_VIRT_BASE)))
-#define __PREG(x)	(((u32)&(x)) - DOVE_SB_REGS_VIRT_BASE + \
-		DOVE_SB_REGS_PHYS_BASE)
-#endif
diff --git a/arch/arm/mach-dove/include/mach/uncompress.h b/arch/arm/mach-dove/include/mach/uncompress.h
index 5c8ae9b9d39a..7a4bd8838036 100644
--- a/arch/arm/mach-dove/include/mach/uncompress.h
+++ b/arch/arm/mach-dove/include/mach/uncompress.h
@@ -1,15 +1,13 @@
 /*
- * arch/arm/mach-dove/include/mach/uncompress.h
- *
  * This file is licensed under the terms of the GNU General Public
  * License version 2.  This program is licensed "as is" without any
  * warranty of any kind, whether express or implied.
  */
 
-#include <mach/dove.h>
+#define UART0_PHYS_BASE (0xf1000000 + 0x12000)
 
-#define UART_THR ((volatile unsigned char *)(DOVE_UART0_PHYS_BASE + 0x0))
-#define UART_LSR ((volatile unsigned char *)(DOVE_UART0_PHYS_BASE + 0x14))
+#define UART_THR ((volatile unsigned char *)(UART0_PHYS_BASE + 0x0))
+#define UART_LSR ((volatile unsigned char *)(UART0_PHYS_BASE + 0x14))
 
 #define LSR_THRE	0x20
 
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index 1b1bc04346cf..c9d68dbbdc08 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -14,11 +14,13 @@
 #include <linux/gpio.h>
 #include <linux/io.h>
 #include <asm/mach/arch.h>
-#include <plat/irq.h>
 #include <asm/mach/irq.h>
-#include <mach/pm.h>
-#include <mach/bridge-regs.h>
+
+#include <plat/irq.h>
 #include <plat/orion-gpio.h>
+
+#include "pm.h"
+#include "bridge-regs.h"
 #include "common.h"
 
 static void pmu_irq_mask(struct irq_data *d)
diff --git a/arch/arm/mach-dove/include/mach/irqs.h b/arch/arm/mach-dove/irqs.h
similarity index 98%
rename from arch/arm/mach-dove/include/mach/irqs.h
rename to arch/arm/mach-dove/irqs.h
index fe9cf940c152..2b962136d1f4 100644
--- a/arch/arm/mach-dove/include/mach/irqs.h
+++ b/arch/arm/mach-dove/irqs.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-dove/include/mach/irqs.h
- *
  * IRQ definitions for Marvell Dove 88AP510 SoC
  *
  * This file is licensed under the terms of the GNU General Public
diff --git a/arch/arm/mach-dove/mpp.c b/arch/arm/mach-dove/mpp.c
index 8a433a51289c..6acd8488bb05 100644
--- a/arch/arm/mach-dove/mpp.c
+++ b/arch/arm/mach-dove/mpp.c
@@ -12,8 +12,8 @@
 #include <linux/gpio.h>
 #include <linux/io.h>
 #include <plat/mpp.h>
-#include <mach/dove.h>
 #include <plat/orion-gpio.h>
+#include "dove.h"
 #include "mpp.h"
 
 struct dove_mpp_grp {
diff --git a/arch/arm/mach-dove/pcie.c b/arch/arm/mach-dove/pcie.c
index 8a275f297522..b9a65387d904 100644
--- a/arch/arm/mach-dove/pcie.c
+++ b/arch/arm/mach-dove/pcie.c
@@ -17,9 +17,9 @@
 #include <asm/setup.h>
 #include <asm/delay.h>
 #include <plat/pcie.h>
-#include <mach/irqs.h>
-#include <mach/bridge-regs.h>
 #include <plat/addr-map.h>
+#include "irqs.h"
+#include "bridge-regs.h"
 #include "common.h"
 
 struct pcie_port {
diff --git a/arch/arm/mach-dove/include/mach/pm.h b/arch/arm/mach-dove/pm.h
similarity index 97%
rename from arch/arm/mach-dove/include/mach/pm.h
rename to arch/arm/mach-dove/pm.h
index b47f75038686..584954d26241 100644
--- a/arch/arm/mach-dove/include/mach/pm.h
+++ b/arch/arm/mach-dove/pm.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-dove/include/mach/pm.h
- *
  * This file is licensed under the terms of the GNU General Public
  * License version 2.  This program is licensed "as is" without any
  * warranty of any kind, whether express or implied.
@@ -10,7 +8,7 @@
 #define __ASM_ARCH_PM_H
 
 #include <asm/errno.h>
-#include <mach/irqs.h>
+#include "irqs.h"
 
 #define CLOCK_GATING_CONTROL	(DOVE_PMU_VIRT_BASE + 0x38)
 #define  CLOCK_GATING_BIT_USB0		0
diff --git a/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h b/arch/arm/mach-mv78xx0/bridge-regs.h
similarity index 92%
rename from arch/arm/mach-mv78xx0/include/mach/bridge-regs.h
rename to arch/arm/mach-mv78xx0/bridge-regs.h
index e20d6da234a6..2f54e1753d45 100644
--- a/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h
+++ b/arch/arm/mach-mv78xx0/bridge-regs.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-mv78xx0/include/mach/bridge-regs.h
- *
  * This file is licensed under the terms of the GNU General Public
  * License version 2.  This program is licensed "as is" without any
  * warranty of any kind, whether express or implied.
@@ -9,7 +7,7 @@
 #ifndef __ASM_ARCH_BRIDGE_REGS_H
 #define __ASM_ARCH_BRIDGE_REGS_H
 
-#include <mach/mv78xx0.h>
+#include "mv78xx0.h"
 
 #define CPU_CONTROL		(BRIDGE_VIRT_BASE + 0x0104)
 #define L2_WRITETHROUGH		0x00020000
diff --git a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
index 1607fd5e206e..e112f2e7cc9a 100644
--- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
+++ b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
@@ -17,9 +17,9 @@
 #include <linux/mv643xx_eth.h>
 #include <linux/ethtool.h>
 #include <linux/i2c.h>
-#include <mach/mv78xx0.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
+#include "mv78xx0.h"
 #include "common.h"
 #include "mpp.h"
 
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
index e6ac679bece9..a1a04df9c05c 100644
--- a/arch/arm/mach-mv78xx0/common.c
+++ b/arch/arm/mach-mv78xx0/common.c
@@ -18,13 +18,13 @@
 #include <asm/hardware/cache-feroceon-l2.h>
 #include <asm/mach/map.h>
 #include <asm/mach/time.h>
-#include <mach/mv78xx0.h>
-#include <mach/bridge-regs.h>
 #include <linux/platform_data/usb-ehci-orion.h>
 #include <linux/platform_data/mtd-orion_nand.h>
 #include <plat/time.h>
 #include <plat/common.h>
 #include <plat/addr-map.h>
+#include "mv78xx0.h"
+#include "bridge-regs.h"
 #include "common.h"
 
 static int get_tclk(void);
diff --git a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
index 0c5dd6fceb6b..cf16e08d4cf5 100644
--- a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
+++ b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
@@ -15,9 +15,9 @@
 #include <linux/mv643xx_eth.h>
 #include <linux/ethtool.h>
 #include <linux/i2c.h>
-#include <mach/mv78xx0.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
+#include "mv78xx0.h"
 #include "common.h"
 
 static struct mv643xx_eth_platform_data db78x00_ge00_data = {
diff --git a/arch/arm/mach-mv78xx0/include/mach/hardware.h b/arch/arm/mach-mv78xx0/include/mach/hardware.h
deleted file mode 100644
index 67cab0a08e07..000000000000
--- a/arch/arm/mach-mv78xx0/include/mach/hardware.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * arch/arm/mach-mv78xx0/include/mach/hardware.h
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#ifndef __ASM_ARCH_HARDWARE_H
-#define __ASM_ARCH_HARDWARE_H
-
-#include "mv78xx0.h"
-
-#endif
diff --git a/arch/arm/mach-mv78xx0/include/mach/uncompress.h b/arch/arm/mach-mv78xx0/include/mach/uncompress.h
index 6a761c44a296..2787ef392262 100644
--- a/arch/arm/mach-mv78xx0/include/mach/uncompress.h
+++ b/arch/arm/mach-mv78xx0/include/mach/uncompress.h
@@ -1,14 +1,12 @@
 /*
- * arch/arm/mach-mv78xx0/include/mach/uncompress.h
- *
  * This file is licensed under the terms of the GNU General Public
  * License version 2.  This program is licensed "as is" without any
  * warranty of any kind, whether express or implied.
  */
 
 #include <linux/serial_reg.h>
-#include <mach/mv78xx0.h>
 
+#define UART0_PHYS_BASE (0xf1000000 + 0x12000)
 #define SERIAL_BASE	((unsigned char *)UART0_PHYS_BASE)
 
 static void putc(const char c)
diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c
index 2453c33faccf..788569e960e1 100644
--- a/arch/arm/mach-mv78xx0/irq.c
+++ b/arch/arm/mach-mv78xx0/irq.c
@@ -12,9 +12,9 @@
 #include <linux/irq.h>
 #include <linux/io.h>
 #include <asm/exception.h>
-#include <mach/bridge-regs.h>
 #include <plat/orion-gpio.h>
 #include <plat/irq.h>
+#include "bridge-regs.h"
 #include "common.h"
 
 static int __initdata gpio0_irqs[4] = {
diff --git a/arch/arm/mach-mv78xx0/include/mach/irqs.h b/arch/arm/mach-mv78xx0/irqs.h
similarity index 98%
rename from arch/arm/mach-mv78xx0/include/mach/irqs.h
rename to arch/arm/mach-mv78xx0/irqs.h
index ac96bcf3d268..67e0fe730a13 100644
--- a/arch/arm/mach-mv78xx0/include/mach/irqs.h
+++ b/arch/arm/mach-mv78xx0/irqs.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-mv78xx0/include/mach/irqs.h
- *
  * IRQ definitions for Marvell MV78xx0 SoCs
  *
  * This file is licensed under the terms of the GNU General Public
diff --git a/arch/arm/mach-mv78xx0/mpp.c b/arch/arm/mach-mv78xx0/mpp.c
index df50342179e2..72843c02e95a 100644
--- a/arch/arm/mach-mv78xx0/mpp.c
+++ b/arch/arm/mach-mv78xx0/mpp.c
@@ -12,7 +12,7 @@
 #include <linux/init.h>
 #include <linux/io.h>
 #include <plat/mpp.h>
-#include <mach/hardware.h>
+#include "mv78xx0.h"
 #include "common.h"
 #include "mpp.h"
 
diff --git a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h b/arch/arm/mach-mv78xx0/mv78xx0.h
similarity index 98%
rename from arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
rename to arch/arm/mach-mv78xx0/mv78xx0.h
index 0972d5f9b46d..2db1265ec121 100644
--- a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
+++ b/arch/arm/mach-mv78xx0/mv78xx0.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
- *
  * Generic definitions for Marvell MV78xx0 SoC flavors:
  *  MV781x0 and MV782x0.
  *
diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
index 445e553f4a28..7656fafc1810 100644
--- a/arch/arm/mach-mv78xx0/pcie.c
+++ b/arch/arm/mach-mv78xx0/pcie.c
@@ -15,7 +15,7 @@
 #include <asm/irq.h>
 #include <asm/mach/pci.h>
 #include <plat/pcie.h>
-#include <mach/mv78xx0.h>
+#include "mv78xx0.h"
 #include "common.h"
 
 #define MV78XX0_MBUS_PCIE_MEM_TARGET(port, lane) ((port) ? 8 : 4)
diff --git a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
index a0a3debf8c21..308ab71ec822 100644
--- a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
+++ b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
@@ -14,9 +14,9 @@
 #include <linux/ata_platform.h>
 #include <linux/mv643xx_eth.h>
 #include <linux/ethtool.h>
-#include <mach/mv78xx0.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
+#include "mv78xx0.h"
 #include "common.h"
 
 static struct mv643xx_eth_platform_data rd78x00_masa_ge00_data = {
diff --git a/arch/arm/mach-orion5x/board-d2net.c b/arch/arm/mach-orion5x/board-d2net.c
index 8a7284124153..a89376a5cd92 100644
--- a/arch/arm/mach-orion5x/board-d2net.c
+++ b/arch/arm/mach-orion5x/board-d2net.c
@@ -20,9 +20,9 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include <plat/orion-gpio.h>
 #include "common.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * LaCie d2 Network Info
diff --git a/arch/arm/mach-orion5x/board-dt.c b/arch/arm/mach-orion5x/board-dt.c
index 79f033b1ddff..098ed0de5b56 100644
--- a/arch/arm/mach-orion5x/board-dt.c
+++ b/arch/arm/mach-orion5x/board-dt.c
@@ -21,10 +21,10 @@
 #include <asm/system_misc.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
-#include <mach/orion5x.h>
-#include <mach/bridge-regs.h>
 #include <plat/irq.h>
 #include <plat/time.h>
+#include "orion5x.h"
+#include "bridge-regs.h"
 #include "common.h"
 
 static struct of_dev_auxdata orion5x_auxdata_lookup[] __initdata = {
diff --git a/arch/arm/mach-orion5x/board-mss2.c b/arch/arm/mach-orion5x/board-mss2.c
index 66f9c3ba86cc..79202fd626df 100644
--- a/arch/arm/mach-orion5x/board-mss2.c
+++ b/arch/arm/mach-orion5x/board-mss2.c
@@ -17,8 +17,8 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
-#include <mach/bridge-regs.h>
+#include "orion5x.h"
+#include "bridge-regs.h"
 #include "common.h"
 
 /*****************************************************************************
diff --git a/arch/arm/mach-orion5x/board-rd88f5182.c b/arch/arm/mach-orion5x/board-rd88f5182.c
index 270824b0e50f..b7b0f52f4c0a 100644
--- a/arch/arm/mach-orion5x/board-rd88f5182.c
+++ b/arch/arm/mach-orion5x/board-rd88f5182.c
@@ -18,8 +18,8 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include "common.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * RD-88F5182 Info
diff --git a/arch/arm/mach-orion5x/include/mach/bridge-regs.h b/arch/arm/mach-orion5x/bridge-regs.h
similarity index 92%
rename from arch/arm/mach-orion5x/include/mach/bridge-regs.h
rename to arch/arm/mach-orion5x/bridge-regs.h
index 5766e3fbff69..305598eaaee1 100644
--- a/arch/arm/mach-orion5x/include/mach/bridge-regs.h
+++ b/arch/arm/mach-orion5x/bridge-regs.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-orion5x/include/mach/bridge-regs.h
- *
  * Orion CPU Bridge Registers
  *
  * This file is licensed under the terms of the GNU General Public
@@ -11,7 +9,7 @@
 #ifndef __ASM_ARCH_BRIDGE_REGS_H
 #define __ASM_ARCH_BRIDGE_REGS_H
 
-#include <mach/orion5x.h>
+#include "orion5x.h"
 
 #define CPU_CONF		(ORION5X_BRIDGE_VIRT_BASE + 0x100)
 
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
index 2b7889e3b7bc..70c3366c8d03 100644
--- a/arch/arm/mach-orion5x/common.c
+++ b/arch/arm/mach-orion5x/common.c
@@ -27,14 +27,14 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 #include <asm/mach/time.h>
-#include <mach/bridge-regs.h>
-#include <mach/hardware.h>
-#include <mach/orion5x.h>
 #include <linux/platform_data/mtd-orion_nand.h>
 #include <linux/platform_data/usb-ehci-orion.h>
 #include <plat/time.h>
 #include <plat/common.h>
+
+#include "bridge-regs.h"
 #include "common.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * I/O Address Mapping
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c
index 698528fee39d..12f74b46e2ff 100644
--- a/arch/arm/mach-orion5x/db88f5281-setup.c
+++ b/arch/arm/mach-orion5x/db88f5281-setup.c
@@ -23,10 +23,10 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include <linux/platform_data/mtd-orion_nand.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * DB-88F5281 on board devices
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
index a9d131453abc..059b41adbe90 100644
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ b/arch/arm/mach-orion5x/dns323-setup.c
@@ -33,8 +33,8 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
 #include <asm/system_info.h>
-#include <mach/orion5x.h>
 #include <plat/orion-gpio.h>
+#include "orion5x.h"
 #include "common.h"
 #include "mpp.h"
 
diff --git a/arch/arm/mach-orion5x/include/mach/hardware.h b/arch/arm/mach-orion5x/include/mach/hardware.h
deleted file mode 100644
index 395735482473..000000000000
--- a/arch/arm/mach-orion5x/include/mach/hardware.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * arch/arm/mach-orion5x/include/mach/hardware.h
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __ASM_ARCH_HARDWARE_H
-#define __ASM_ARCH_HARDWARE_H
-
-#include "orion5x.h"
-
-#endif
diff --git a/arch/arm/mach-orion5x/include/mach/uncompress.h b/arch/arm/mach-orion5x/include/mach/uncompress.h
index abd26b542c3c..25e5cb98fecc 100644
--- a/arch/arm/mach-orion5x/include/mach/uncompress.h
+++ b/arch/arm/mach-orion5x/include/mach/uncompress.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-orion5x/include/mach/uncompress.h
- *
  * Tzachi Perelstein <tzachi@marvell.com>
  *
  * This file is licensed under the terms of the GNU General Public
@@ -9,8 +7,8 @@
  */
 
 #include <linux/serial_reg.h>
-#include <mach/orion5x.h>
 
+#define UART0_PHYS_BASE (0xf1000000 + 0x12000)
 #define SERIAL_BASE	((unsigned char *)UART0_PHYS_BASE)
 
 static void putc(const char c)
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c
index a3f615801d27..e8039df4620d 100644
--- a/arch/arm/mach-orion5x/irq.c
+++ b/arch/arm/mach-orion5x/irq.c
@@ -13,10 +13,10 @@
 #include <linux/kernel.h>
 #include <linux/irq.h>
 #include <linux/io.h>
-#include <mach/bridge-regs.h>
 #include <plat/orion-gpio.h>
 #include <plat/irq.h>
 #include <asm/exception.h>
+#include "bridge-regs.h"
 #include "common.h"
 
 static int __initdata gpio0_irqs[4] = {
diff --git a/arch/arm/mach-orion5x/include/mach/irqs.h b/arch/arm/mach-orion5x/irqs.h
similarity index 96%
rename from arch/arm/mach-orion5x/include/mach/irqs.h
rename to arch/arm/mach-orion5x/irqs.h
index 14bc9c970f96..b41f21f1ed21 100644
--- a/arch/arm/mach-orion5x/include/mach/irqs.h
+++ b/arch/arm/mach-orion5x/irqs.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-orion5x/include/mach/irqs.h
- *
  * IRQ definitions for Orion SoC
  *
  *  Maintainer: Tzachi Perelstein <tzachi@marvell.com>
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
index b1ebb3721638..9dc3f59bed9c 100644
--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
+++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
@@ -23,10 +23,10 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include <linux/platform_data/mtd-orion_nand.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * KUROBOX-PRO Info
diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c
index cb8720e6d02b..dfdaa8a498a4 100644
--- a/arch/arm/mach-orion5x/ls-chl-setup.c
+++ b/arch/arm/mach-orion5x/ls-chl-setup.c
@@ -22,9 +22,9 @@
 #include <linux/gpio.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * Linkstation LS-CHL Info
diff --git a/arch/arm/mach-orion5x/ls_hgl-setup.c b/arch/arm/mach-orion5x/ls_hgl-setup.c
index 0ddfa23821ec..47ba6e0502f5 100644
--- a/arch/arm/mach-orion5x/ls_hgl-setup.c
+++ b/arch/arm/mach-orion5x/ls_hgl-setup.c
@@ -21,9 +21,9 @@
 #include <linux/gpio.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * Linkstation LS-HGL Info
diff --git a/arch/arm/mach-orion5x/lsmini-setup.c b/arch/arm/mach-orion5x/lsmini-setup.c
index 65bbb4febcdd..b2512f1ab800 100644
--- a/arch/arm/mach-orion5x/lsmini-setup.c
+++ b/arch/arm/mach-orion5x/lsmini-setup.c
@@ -21,9 +21,9 @@
 #include <linux/gpio.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * Linkstation Mini Info
diff --git a/arch/arm/mach-orion5x/mpp.c b/arch/arm/mach-orion5x/mpp.c
index 5b70026f478c..19ef18594415 100644
--- a/arch/arm/mach-orion5x/mpp.c
+++ b/arch/arm/mach-orion5x/mpp.c
@@ -11,8 +11,8 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/io.h>
-#include <mach/hardware.h>
 #include <plat/mpp.h>
+#include "orion5x.h"
 #include "mpp.h"
 #include "common.h"
 
diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c
index 11985dc45c47..2bf8ec75e908 100644
--- a/arch/arm/mach-orion5x/mv2120-setup.c
+++ b/arch/arm/mach-orion5x/mv2120-setup.c
@@ -21,9 +21,9 @@
 #include <linux/ata_platform.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 #define MV2120_NOR_BOOT_BASE	0xf4000000
 #define MV2120_NOR_BOOT_SIZE	SZ_512K
diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c
index e91abcc2213d..bf6be4cfd238 100644
--- a/arch/arm/mach-orion5x/net2big-setup.c
+++ b/arch/arm/mach-orion5x/net2big-setup.c
@@ -24,10 +24,10 @@
 #include <linux/delay.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
-#include <mach/orion5x.h>
 #include <plat/orion-gpio.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * LaCie 2Big Network Info
diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/orion5x.h
similarity index 98%
rename from arch/arm/mach-orion5x/include/mach/orion5x.h
rename to arch/arm/mach-orion5x/orion5x.h
index 7be7c2e05465..3364df331f01 100644
--- a/arch/arm/mach-orion5x/include/mach/orion5x.h
+++ b/arch/arm/mach-orion5x/orion5x.h
@@ -1,6 +1,4 @@
 /*
- * arch/arm/mach-orion5x/include/mach/orion5x.h
- *
  * Generic definitions of Orion SoC flavors:
  *  Orion-1, Orion-VoIP, Orion-NAS, Orion-2, and Orion-1-90.
  *
@@ -14,7 +12,7 @@
 #ifndef __ASM_ARCH_ORION5X_H
 #define __ASM_ARCH_ORION5X_H
 
-#include <mach/irqs.h>
+#include "irqs.h"
 
 /*****************************************************************************
  * Orion Address Maps
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c
index 87a12d6930ff..a20e09b31fd4 100644
--- a/arch/arm/mach-orion5x/pci.c
+++ b/arch/arm/mach-orion5x/pci.c
@@ -19,8 +19,8 @@
 #include <asm/mach/pci.h>
 #include <plat/pcie.h>
 #include <plat/addr-map.h>
-#include <mach/orion5x.h>
 #include "common.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * Orion has one PCIe controller and one PCI controller.
diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
index 69a6e5b20b0b..c742e7b40b0d 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
@@ -20,9 +20,9 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * RD-88F5181L FXO Info
diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
index e19f8b7f87b3..7e977b794b0c 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
@@ -21,9 +21,9 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * RD-88F5181L GE Info
diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c
index 180a4f972d3d..fe3e67c81fb8 100644
--- a/arch/arm/mach-orion5x/rd88f5182-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5182-setup.c
@@ -23,9 +23,9 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * RD-88F5182 Info
diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
index cc5bdbe70fa9..4bf80dd5478c 100644
--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
@@ -22,8 +22,8 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include "common.h"
+#include "orion5x.h"
 
 static struct mv643xx_eth_platform_data rd88f6183ap_ge_eth_data = {
 	.phy_addr	= -1,
diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c
index ad2057514deb..deb5e29ac669 100644
--- a/arch/arm/mach-orion5x/terastation_pro2-setup.c
+++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c
@@ -22,9 +22,9 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 
 /*****************************************************************************
  * Terastation Pro 2/Live Info
diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c
index 1cfc364c9b1e..7bd671b2854c 100644
--- a/arch/arm/mach-orion5x/ts209-setup.c
+++ b/arch/arm/mach-orion5x/ts209-setup.c
@@ -25,9 +25,9 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 #include "tsx09-common.h"
 
 #define QNAP_TS209_NOR_BOOT_BASE 0xf4000000
diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c
index bc985cf44625..a77613b14db5 100644
--- a/arch/arm/mach-orion5x/ts409-setup.c
+++ b/arch/arm/mach-orion5x/ts409-setup.c
@@ -27,9 +27,9 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 #include "tsx09-common.h"
 
 /*****************************************************************************
diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c
index 5a61a66ce012..b67ace446576 100644
--- a/arch/arm/mach-orion5x/ts78xx-setup.c
+++ b/arch/arm/mach-orion5x/ts78xx-setup.c
@@ -23,9 +23,9 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
-#include <mach/orion5x.h>
 #include "common.h"
 #include "mpp.h"
+#include "orion5x.h"
 #include "ts78xx-fpga.h"
 
 /*****************************************************************************
diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c
index 7189827d641d..919af7dae3c0 100644
--- a/arch/arm/mach-orion5x/tsx09-common.c
+++ b/arch/arm/mach-orion5x/tsx09-common.c
@@ -15,7 +15,7 @@
 #include <linux/mv643xx_eth.h>
 #include <linux/timex.h>
 #include <linux/serial_reg.h>
-#include <mach/orion5x.h>
+#include "orion5x.h"
 #include "tsx09-common.h"
 #include "common.h"
 
diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c
index bcc6e12dcdac..4e1e5c8f6111 100644
--- a/arch/arm/mach-orion5x/wnr854t-setup.c
+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
@@ -19,7 +19,7 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
+#include "orion5x.h"
 #include "common.h"
 #include "mpp.h"
 
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index 4068d7a3e466..61e9027ef224 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -22,7 +22,7 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
-#include <mach/orion5x.h>
+#include "orion5x.h"
 #include "common.h"
 #include "mpp.h"
 
diff --git a/arch/arm/plat-orion/irq.c b/arch/arm/plat-orion/irq.c
index 8c1fc06007c0..5b63b28b00ac 100644
--- a/arch/arm/plat-orion/irq.c
+++ b/arch/arm/plat-orion/irq.c
@@ -18,7 +18,6 @@
 #include <asm/exception.h>
 #include <plat/irq.h>
 #include <plat/orion-gpio.h>
-#include <mach/bridge-regs.h>
 
 void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr)
 {
diff --git a/arch/arm/plat-orion/mpp.c b/arch/arm/plat-orion/mpp.c
index 7310bcfb299f..5b4ff9373c89 100644
--- a/arch/arm/plat-orion/mpp.c
+++ b/arch/arm/plat-orion/mpp.c
@@ -13,7 +13,6 @@
 #include <linux/mbus.h>
 #include <linux/io.h>
 #include <linux/gpio.h>
-#include <mach/hardware.h>
 #include <plat/orion-gpio.h>
 #include <plat/mpp.h>
 
-- 
2.1.0.rc2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 5/5] ARM: orion: multiplatform support
  2015-03-02 20:36 [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
                   ` (4 preceding siblings ...)
  2015-03-02 21:17 ` [PATCH 4/5] ARM: orion: clean up mach/*.h headers Arnd Bergmann
@ 2015-03-02 21:17 ` Arnd Bergmann
  2015-03-02 21:30 ` [PATCH 0/5] ARM: orion5k/mv78xx0/dove " Andrew Lunn
  6 siblings, 0 replies; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 21:17 UTC (permalink / raw)
  To: linux-arm-kernel

All three remaining orion based platforms are now ready to
be enabled for multiplatform support, this patch does the
switch over by modifying the Kconfig file, the defconfig and
removing the last mach/*.h header that becomes obsolete with
this.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/Kconfig                                | 45 ------------------------
 arch/arm/configs/dove_defconfig                 |  2 ++
 arch/arm/configs/mv78xx0_defconfig              |  3 ++
 arch/arm/configs/orion5x_defconfig              |  3 ++
 arch/arm/mach-dove/Kconfig                      | 15 +++++---
 arch/arm/mach-dove/Makefile                     |  2 ++
 arch/arm/mach-dove/include/mach/uncompress.h    | 34 ------------------
 arch/arm/mach-mv78xx0/Kconfig                   | 15 +++++---
 arch/arm/mach-mv78xx0/Makefile                  |  2 ++
 arch/arm/mach-mv78xx0/include/mach/uncompress.h | 44 -----------------------
 arch/arm/mach-orion5x/Kconfig                   | 18 +++++++---
 arch/arm/mach-orion5x/Makefile                  |  2 ++
 arch/arm/mach-orion5x/include/mach/uncompress.h | 46 -------------------------
 13 files changed, 50 insertions(+), 181 deletions(-)
 delete mode 100644 arch/arm/mach-dove/include/mach/uncompress.h
 delete mode 100644 arch/arm/mach-mv78xx0/include/mach/uncompress.h
 delete mode 100644 arch/arm/mach-orion5x/include/mach/uncompress.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 9f77b2ae1e18..78f561c32eab 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -495,51 +495,6 @@ config ARCH_IXP4XX
 	help
 	  Support for Intel's IXP4XX (XScale) family of processors.
 
-config ARCH_DOVE
-	bool "Marvell Dove"
-	select ARCH_REQUIRE_GPIOLIB
-	select CPU_PJ4
-	select GENERIC_CLOCKEVENTS
-	select MIGHT_HAVE_PCI
-	select MULTI_IRQ_HANDLER
-	select MVEBU_MBUS
-	select PINCTRL
-	select PINCTRL_DOVE
-	select PLAT_ORION_LEGACY
-	select SPARSE_IRQ
-	help
-	  Support for the Marvell Dove SoC 88AP510
-
-config ARCH_MV78XX0
-	bool "Marvell MV78xx0"
-	select ARCH_REQUIRE_GPIOLIB
-	select CPU_FEROCEON
-	select GENERIC_CLOCKEVENTS
-	select MVEBU_MBUS
-	select MULTI_IRQ_HANDLER
-	select PCI
-	select PLAT_ORION_LEGACY
-	select SPARSE_IRQ
-	help
-	  Support for the following Marvell MV78xx0 series SoCs:
-	  MV781x0, MV782x0.
-
-config ARCH_ORION5X
-	bool "Marvell Orion"
-	depends on MMU
-	select ARCH_REQUIRE_GPIOLIB
-	select CPU_FEROCEON
-	select GENERIC_CLOCKEVENTS
-	select MVEBU_MBUS
-	select MULTI_IRQ_HANDLER
-	select PCI
-	select PLAT_ORION_LEGACY
-	select SPARSE_IRQ
-	help
-	  Support for the following Marvell Orion 5x series SoCs:
-	  Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
-	  Orion-2 (5281), Orion-1-90 (6183).
-
 config ARCH_KS8695
 	bool "Micrel/Kendin KS8695"
 	select ARCH_REQUIRE_GPIOLIB
diff --git a/arch/arm/configs/dove_defconfig b/arch/arm/configs/dove_defconfig
index 701677f9248c..8a5409cafb49 100644
--- a/arch/arm/configs/dove_defconfig
+++ b/arch/arm/configs/dove_defconfig
@@ -9,6 +9,8 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ARCH_MULTI_V6 is not set
+CONFIG_ARCH_MULTI_V7=y
 CONFIG_ARCH_DOVE=y
 CONFIG_MACH_DOVE_DB=y
 CONFIG_MACH_CM_A510=y
diff --git a/arch/arm/configs/mv78xx0_defconfig b/arch/arm/configs/mv78xx0_defconfig
index 85d10d2e3d66..fcdffa7d9d78 100644
--- a/arch/arm/configs/mv78xx0_defconfig
+++ b/arch/arm/configs/mv78xx0_defconfig
@@ -11,6 +11,9 @@ CONFIG_KPROBES=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+CONFIG_ARCH_MULTI_V5=y
+# CONFIG_ARCH_MULTI_V6 is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_MV78XX0=y
 CONFIG_MACH_DB78X00_BP=y
 CONFIG_MACH_RD78X00_MASA=y
diff --git a/arch/arm/configs/orion5x_defconfig b/arch/arm/configs/orion5x_defconfig
index 855143fac6bd..b97b06169833 100644
--- a/arch/arm/configs/orion5x_defconfig
+++ b/arch/arm/configs/orion5x_defconfig
@@ -13,6 +13,9 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_BSD_DISKLABEL=y
+CONFIG_ARCH_MULTI_V5=y
+# CONFIG_ARCH_MULTI_V6 is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_ORION5X=y
 CONFIG_MACH_DB88F5281=y
 CONFIG_MACH_RD88F5182=y
diff --git a/arch/arm/mach-dove/Kconfig b/arch/arm/mach-dove/Kconfig
index d8c439c89ea9..331591c4f9cc 100644
--- a/arch/arm/mach-dove/Kconfig
+++ b/arch/arm/mach-dove/Kconfig
@@ -1,6 +1,15 @@
-if ARCH_DOVE
+menuconfig ARCH_DOVE
+	bool "Marvell Dove" if ARCH_MULTI_V7
+	select ARCH_REQUIRE_GPIOLIB
+	select CPU_PJ4
+	select MVEBU_MBUS
+	select PINCTRL
+	select PINCTRL_DOVE
+	select PLAT_ORION_LEGACY
+	help
+	  Support for the Marvell Dove SoC 88AP510
 
-menu "Marvell Dove Implementations"
+if ARCH_DOVE
 
 config DOVE_LEGACY
 	bool
@@ -20,6 +29,4 @@ config MACH_CM_A510
 	  Say 'Y' here if you want your kernel to support the
 	  CompuLab CM-A510 Board.
 
-endmenu
-
 endif
diff --git a/arch/arm/mach-dove/Makefile b/arch/arm/mach-dove/Makefile
index b608a21919fb..2ed6970cbacc 100644
--- a/arch/arm/mach-dove/Makefile
+++ b/arch/arm/mach-dove/Makefile
@@ -1,3 +1,5 @@
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
+
 obj-y				+= common.o
 obj-$(CONFIG_DOVE_LEGACY)	+= irq.o mpp.o
 obj-$(CONFIG_PCI)		+= pcie.o
diff --git a/arch/arm/mach-dove/include/mach/uncompress.h b/arch/arm/mach-dove/include/mach/uncompress.h
deleted file mode 100644
index 7a4bd8838036..000000000000
--- a/arch/arm/mach-dove/include/mach/uncompress.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#define UART0_PHYS_BASE (0xf1000000 + 0x12000)
-
-#define UART_THR ((volatile unsigned char *)(UART0_PHYS_BASE + 0x0))
-#define UART_LSR ((volatile unsigned char *)(UART0_PHYS_BASE + 0x14))
-
-#define LSR_THRE	0x20
-
-static void putc(const char c)
-{
-	int i;
-
-	for (i = 0; i < 0x1000; i++) {
-		/* Transmit fifo not full? */
-		if (*UART_LSR & LSR_THRE)
-			break;
-	}
-
-	*UART_THR = c;
-}
-
-static void flush(void)
-{
-}
-
-/*
- * nothing to do
- */
-#define arch_decomp_setup()
diff --git a/arch/arm/mach-mv78xx0/Kconfig b/arch/arm/mach-mv78xx0/Kconfig
index f2d309d0619e..a32575fa3fba 100644
--- a/arch/arm/mach-mv78xx0/Kconfig
+++ b/arch/arm/mach-mv78xx0/Kconfig
@@ -1,6 +1,15 @@
-if ARCH_MV78XX0
+menuconfig ARCH_MV78XX0
+	bool "Marvell MV78xx0" if ARCH_MULTI_V5
+	select ARCH_REQUIRE_GPIOLIB
+	select CPU_FEROCEON
+	select MVEBU_MBUS
+	select PCI
+	select PLAT_ORION_LEGACY
+	help
+	  Support for the following Marvell MV78xx0 series SoCs:
+	  MV781x0, MV782x0.
 
-menu "Marvell MV78xx0 Implementations"
+if ARCH_MV78XX0
 
 config MACH_DB78X00_BP
 	bool "Marvell DB-78x00-BP Development Board"
@@ -20,6 +29,4 @@ config MACH_TERASTATION_WXL
 	  Say 'Y' here if you want your kernel to support the
 	  Buffalo WXL Nas.
 
-endmenu
-
 endif
diff --git a/arch/arm/mach-mv78xx0/Makefile b/arch/arm/mach-mv78xx0/Makefile
index 7cd04634d302..ddb3aa98a3c7 100644
--- a/arch/arm/mach-mv78xx0/Makefile
+++ b/arch/arm/mach-mv78xx0/Makefile
@@ -1,3 +1,5 @@
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
+
 obj-y				+= common.o mpp.o irq.o pcie.o
 obj-$(CONFIG_MACH_DB78X00_BP)	+= db78x00-bp-setup.o
 obj-$(CONFIG_MACH_RD78X00_MASA)	+= rd78x00-masa-setup.o
diff --git a/arch/arm/mach-mv78xx0/include/mach/uncompress.h b/arch/arm/mach-mv78xx0/include/mach/uncompress.h
deleted file mode 100644
index 2787ef392262..000000000000
--- a/arch/arm/mach-mv78xx0/include/mach/uncompress.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <linux/serial_reg.h>
-
-#define UART0_PHYS_BASE (0xf1000000 + 0x12000)
-#define SERIAL_BASE	((unsigned char *)UART0_PHYS_BASE)
-
-static void putc(const char c)
-{
-	unsigned char *base = SERIAL_BASE;
-	int i;
-
-	for (i = 0; i < 0x1000; i++) {
-		if (base[UART_LSR << 2] & UART_LSR_THRE)
-			break;
-		barrier();
-	}
-
-	base[UART_TX << 2] = c;
-}
-
-static void flush(void)
-{
-	unsigned char *base = SERIAL_BASE;
-	unsigned char mask;
-	int i;
-
-	mask = UART_LSR_TEMT | UART_LSR_THRE;
-
-	for (i = 0; i < 0x1000; i++) {
-		if ((base[UART_LSR << 2] & mask) == mask)
-			break;
-		barrier();
-	}
-}
-
-/*
- * nothing to do
- */
-#define arch_decomp_setup()
diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig
index 2412efb6cdd9..9bb2bbbcfbaa 100644
--- a/arch/arm/mach-orion5x/Kconfig
+++ b/arch/arm/mach-orion5x/Kconfig
@@ -1,6 +1,18 @@
-if ARCH_ORION5X
+menuconfig ARCH_ORION5X
+	bool "Marvell Orion"
+	depends on MMU && ARCH_MULTI_V5
+	select ARCH_REQUIRE_GPIOLIB
+	select CPU_FEROCEON
+	select GENERIC_CLOCKEVENTS
+	select MVEBU_MBUS
+	select PCI
+	select PLAT_ORION_LEGACY
+	help
+	  Support for the following Marvell Orion 5x series SoCs:
+	  Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
+	  Orion-2 (5281), Orion-1-90 (6183).
 
-menu "Orion Implementations"
+if ARCH_ORION5X
 
 config ARCH_ORION5X_DT
 	bool "Marvell Orion5x Flattened Device Tree"
@@ -160,6 +172,4 @@ config MACH_RD88F6183AP_GE
 	  Say 'Y' here if you want your kernel to support the
 	  Marvell Orion-1-90 (88F6183) AP GE RD.
 
-endmenu
-
 endif
diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile
index a40b5c9a58c4..c41b9c3ee435 100644
--- a/arch/arm/mach-orion5x/Makefile
+++ b/arch/arm/mach-orion5x/Makefile
@@ -1,3 +1,5 @@
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
+
 obj-y				+= common.o pci.o irq.o mpp.o
 obj-$(CONFIG_MACH_DB88F5281)	+= db88f5281-setup.o
 obj-$(CONFIG_MACH_RD88F5182)	+= rd88f5182-setup.o
diff --git a/arch/arm/mach-orion5x/include/mach/uncompress.h b/arch/arm/mach-orion5x/include/mach/uncompress.h
deleted file mode 100644
index 25e5cb98fecc..000000000000
--- a/arch/arm/mach-orion5x/include/mach/uncompress.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Tzachi Perelstein <tzachi@marvell.com>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <linux/serial_reg.h>
-
-#define UART0_PHYS_BASE (0xf1000000 + 0x12000)
-#define SERIAL_BASE	((unsigned char *)UART0_PHYS_BASE)
-
-static void putc(const char c)
-{
-	unsigned char *base = SERIAL_BASE;
-	int i;
-
-	for (i = 0; i < 0x1000; i++) {
-		if (base[UART_LSR << 2] & UART_LSR_THRE)
-			break;
-		barrier();
-	}
-
-	base[UART_TX << 2] = c;
-}
-
-static void flush(void)
-{
-	unsigned char *base = SERIAL_BASE;
-	unsigned char mask;
-	int i;
-
-	mask = UART_LSR_TEMT | UART_LSR_THRE;
-
-	for (i = 0; i < 0x1000; i++) {
-		if ((base[UART_LSR << 2] & mask) == mask)
-			break;
-		barrier();
-	}
-}
-
-/*
- * nothing to do
- */
-#define arch_decomp_setup()
-- 
2.1.0.rc2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support
  2015-03-02 20:36 [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
                   ` (5 preceding siblings ...)
  2015-03-02 21:17 ` [PATCH 5/5] ARM: orion: multiplatform support Arnd Bergmann
@ 2015-03-02 21:30 ` Andrew Lunn
  2015-03-02 21:39   ` Arnd Bergmann
  6 siblings, 1 reply; 16+ messages in thread
From: Andrew Lunn @ 2015-03-02 21:30 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Mar 02, 2015 at 09:36:53PM +0100, Arnd Bergmann wrote:
> Hi everyone,

Hi Arnd

Dove already is multi-platform, when you use it in mach-mvebu.  The
old mach-dove is there to slowly bit rot, because there is one user
who has a lot of out of tree patches which are apparently not easy to
make work with DT mach-mvebu Dove code.

> I'm trying to get all ARMv7 platforms moved over to
> ARCH_MULTIPLATFORM

It should be noted that orion5x is not an ARMv7.

   Andrew

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/5] ARM: orion: move watchdog setup to mach-orion5x
  2015-03-02 20:36 ` [PATCH 1/5] ARM: orion: move watchdog setup to mach-orion5x Arnd Bergmann
@ 2015-03-02 21:33   ` Andrew Lunn
  2015-03-02 21:49     ` Arnd Bergmann
  0 siblings, 1 reply; 16+ messages in thread
From: Andrew Lunn @ 2015-03-02 21:33 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Mar 02, 2015 at 09:36:54PM +0100, Arnd Bergmann wrote:
> The watchdog device node is created in plat-orion/common.c
> but depends on the bridge address that is platform specific,
> so as a preparation for orion multiplatform support, we should
> move it out of the common code into orion5x.

If i remember correctly, RMK patchset for the Dove PMU allows the
watchdog to be enabled for Dove.

	 Andrew

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/5] ARM: orion: always use MULTI_IRQ_HANDLER
  2015-03-02 20:36 ` [PATCH 2/5] ARM: orion: always use MULTI_IRQ_HANDLER Arnd Bergmann
@ 2015-03-02 21:37   ` Andrew Lunn
  2015-03-02 21:44     ` Arnd Bergmann
  2015-03-02 23:09     ` Russell King - ARM Linux
  0 siblings, 2 replies; 16+ messages in thread
From: Andrew Lunn @ 2015-03-02 21:37 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Mar 02, 2015 at 09:36:55PM +0100, Arnd Bergmann wrote:
> As a preparation for multiplatform support, this enables
> the MULTI_IRQ_HANDLER code unconditionally on dove and
> orion5x, and introduces the respective code on mv78xx0,
> which did not have it so far. The classic entry-macro.S
> files are removed as they are now obsolete.

Hi Arnd

I don't know if it is relevant or not, but mach-dove IRQ handling is
slightly broken. It uses IRQ 0. Russell King did provide a patch to
move all the interrupts up by one, but it did not apply. I asked for a
new version, rebased on the -rc1 of the time, but it never appeared.

    Andrew

> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/arm/Kconfig                                 |  3 ++
>  arch/arm/mach-dove/include/mach/entry-macro.S    | 33 -------------------
>  arch/arm/mach-dove/irq.c                         | 11 -------
>  arch/arm/mach-mv78xx0/include/mach/entry-macro.S | 41 ------------------------
>  arch/arm/mach-mv78xx0/irq.c                      | 33 +++++++++++++++++++
>  arch/arm/mach-orion5x/include/mach/entry-macro.S | 25 ---------------
>  arch/arm/mach-orion5x/irq.c                      | 12 -------
>  7 files changed, 36 insertions(+), 122 deletions(-)
>  delete mode 100644 arch/arm/mach-dove/include/mach/entry-macro.S
>  delete mode 100644 arch/arm/mach-mv78xx0/include/mach/entry-macro.S
>  delete mode 100644 arch/arm/mach-orion5x/include/mach/entry-macro.S
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 0f7dd89b5eee..39a625df6f75 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -501,6 +501,7 @@ config ARCH_DOVE
>  	select CPU_PJ4
>  	select GENERIC_CLOCKEVENTS
>  	select MIGHT_HAVE_PCI
> +	select MULTI_IRQ_HANDLER
>  	select MVEBU_MBUS
>  	select PINCTRL
>  	select PINCTRL_DOVE
> @@ -514,6 +515,7 @@ config ARCH_MV78XX0
>  	select CPU_FEROCEON
>  	select GENERIC_CLOCKEVENTS
>  	select MVEBU_MBUS
> +	select MULTI_IRQ_HANDLER
>  	select PCI
>  	select PLAT_ORION_LEGACY
>  	help
> @@ -527,6 +529,7 @@ config ARCH_ORION5X
>  	select CPU_FEROCEON
>  	select GENERIC_CLOCKEVENTS
>  	select MVEBU_MBUS
> +	select MULTI_IRQ_HANDLER
>  	select PCI
>  	select PLAT_ORION_LEGACY
>  	help
> diff --git a/arch/arm/mach-dove/include/mach/entry-macro.S b/arch/arm/mach-dove/include/mach/entry-macro.S
> deleted file mode 100644
> index 72d622baaad3..000000000000
> --- a/arch/arm/mach-dove/include/mach/entry-macro.S
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -/*
> - * arch/arm/mach-dove/include/mach/entry-macro.S
> - *
> - * Low-level IRQ helper macros for Marvell Dove platforms
> - *
> - * This file is licensed under the terms of the GNU General Public
> - * License version 2.  This program is licensed "as is" without any
> - * warranty of any kind, whether express or implied.
> - */
> -
> -#include <mach/bridge-regs.h>
> -
> -	.macro  get_irqnr_preamble, base, tmp
> -	ldr	\base, =IRQ_VIRT_BASE
> -	.endm
> -
> -	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
> -	@ check low interrupts
> -	ldr	\irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
> -	ldr	\tmp, [\base, #IRQ_MASK_LOW_OFF]
> -	mov	\irqnr, #31
> -	ands	\irqstat, \irqstat, \tmp
> -
> -	@ if no low interrupts set, check high interrupts
> -	ldreq	\irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
> -	ldreq	\tmp, [\base, #IRQ_MASK_HIGH_OFF]
> -	moveq	\irqnr, #63
> -	andeqs	\irqstat, \irqstat, \tmp
> -
> -	@ find first active interrupt source
> -	clzne	\irqstat, \irqstat
> -	subne	\irqnr, \irqnr, \irqstat
> -	.endm
> diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
> index 4a5a7aedcb76..1b1bc04346cf 100644
> --- a/arch/arm/mach-dove/irq.c
> +++ b/arch/arm/mach-dove/irq.c
> @@ -108,14 +108,6 @@ static int __initdata gpio2_irqs[4] = {
>  	0,
>  };
>  
> -#ifdef CONFIG_MULTI_IRQ_HANDLER
> -/*
> - * Compiling with both non-DT and DT support enabled, will
> - * break asm irq handler used by non-DT boards. Therefore,
> - * we provide a C-style irq handler even for non-DT boards,
> - * if MULTI_IRQ_HANDLER is set.
> - */
> -
>  static void __iomem *dove_irq_base = IRQ_VIRT_BASE;
>  
>  static asmlinkage void
> @@ -138,7 +130,6 @@ __exception_irq_entry dove_legacy_handle_irq(struct pt_regs *regs)
>  		return;
>  	}
>  }
> -#endif
>  
>  void __init dove_init_irq(void)
>  {
> @@ -147,9 +138,7 @@ void __init dove_init_irq(void)
>  	orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
>  	orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
>  
> -#ifdef CONFIG_MULTI_IRQ_HANDLER
>  	set_handle_irq(dove_legacy_handle_irq);
> -#endif
>  
>  	/*
>  	 * Initialize gpiolib for GPIOs 0-71.
> diff --git a/arch/arm/mach-mv78xx0/include/mach/entry-macro.S b/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
> deleted file mode 100644
> index 6b1f088e0597..000000000000
> --- a/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -/*
> - * arch/arm/mach-mv78xx0/include/mach/entry-macro.S
> - *
> - * Low-level IRQ helper macros for Marvell MV78xx0 platforms
> - *
> - * This file is licensed under the terms of the GNU General Public
> - * License version 2.  This program is licensed "as is" without any
> - * warranty of any kind, whether express or implied.
> - */
> -
> -#include <mach/bridge-regs.h>
> -
> -	.macro  get_irqnr_preamble, base, tmp
> -	ldr	\base, =IRQ_VIRT_BASE
> -	.endm
> -
> -	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
> -	@ check low interrupts
> -	ldr	\irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
> -	ldr	\tmp, [\base, #IRQ_MASK_LOW_OFF]
> -	mov	\irqnr, #31
> -	ands	\irqstat, \irqstat, \tmp
> -	bne	1001f
> -
> -	@ if no low interrupts set, check high interrupts
> -	ldr	\irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
> -	ldr	\tmp, [\base, #IRQ_MASK_HIGH_OFF]
> -	mov	\irqnr, #63
> -	ands	\irqstat, \irqstat, \tmp
> -	bne	1001f
> -
> -	@ if no high interrupts set, check error interrupts
> -	ldr	\irqstat, [\base, #IRQ_CAUSE_ERR_OFF]
> -	ldr	\tmp, [\base, #IRQ_MASK_ERR_OFF]
> -	mov	\irqnr, #95
> -	ands	\irqstat, \irqstat, \tmp
> -
> -	@ find first active interrupt source
> -1001:	clzne	\irqstat, \irqstat
> -	subne	\irqnr, \irqnr, \irqstat
> -	.endm
> diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c
> index 32073444024b..2453c33faccf 100644
> --- a/arch/arm/mach-mv78xx0/irq.c
> +++ b/arch/arm/mach-mv78xx0/irq.c
> @@ -11,6 +11,7 @@
>  #include <linux/kernel.h>
>  #include <linux/irq.h>
>  #include <linux/io.h>
> +#include <asm/exception.h>
>  #include <mach/bridge-regs.h>
>  #include <plat/orion-gpio.h>
>  #include <plat/irq.h>
> @@ -23,12 +24,44 @@ static int __initdata gpio0_irqs[4] = {
>  	IRQ_MV78XX0_GPIO_24_31,
>  };
>  
> +static void __iomem *mv78xx0_irq_base = IRQ_VIRT_BASE;
> +
> +static asmlinkage void
> +__exception_irq_entry mv78xx0_legacy_handle_irq(struct pt_regs *regs)
> +{
> +	u32 stat;
> +
> +	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_LOW_OFF);
> +	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_LOW_OFF);
> +	if (stat) {
> +		unsigned int hwirq = __fls(stat);
> +		handle_IRQ(hwirq, regs);
> +		return;
> +	}
> +	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_HIGH_OFF);
> +	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_HIGH_OFF);
> +	if (stat) {
> +		unsigned int hwirq = 32 + __fls(stat);
> +		handle_IRQ(hwirq, regs);
> +		return;
> +	}
> +	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_ERR_OFF);
> +	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_ERR_OFF);
> +	if (stat) {
> +		unsigned int hwirq = 64 + __fls(stat);
> +		handle_IRQ(hwirq, regs);
> +		return;
> +	}
> +}
> +
>  void __init mv78xx0_init_irq(void)
>  {
>  	orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
>  	orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
>  	orion_irq_init(64, IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF);
>  
> +	set_handle_irq(mv78xx0_legacy_handle_irq);
> +
>  	/*
>  	 * Initialize gpiolib for GPIOs 0-31.  (The GPIO interrupt mask
>  	 * registers for core #1 are at an offset of 0x18 from those of
> diff --git a/arch/arm/mach-orion5x/include/mach/entry-macro.S b/arch/arm/mach-orion5x/include/mach/entry-macro.S
> deleted file mode 100644
> index 79eb502a1e64..000000000000
> --- a/arch/arm/mach-orion5x/include/mach/entry-macro.S
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -/*
> - * arch/arm/mach-orion5x/include/mach/entry-macro.S
> - *
> - * Low-level IRQ helper macros for Orion platforms
> - *
> - * This file is licensed under the terms of the GNU General Public
> - * License version 2.  This program is licensed "as is" without any
> - * warranty of any kind, whether express or implied.
> - */
> -
> -#include <mach/bridge-regs.h>
> -
> -	.macro  get_irqnr_preamble, base, tmp
> -	ldr	\base, =MAIN_IRQ_CAUSE
> -	.endm
> -
> -	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
> -	ldr	\irqstat, [\base, #0]		@ main cause
> -	ldr	\tmp, [\base, #(MAIN_IRQ_MASK - MAIN_IRQ_CAUSE)] @ main mask
> -	mov	\irqnr, #0			@ default irqnr
> -	@ find cause bits that are unmasked
> -	ands	\irqstat, \irqstat, \tmp	@ clear Z flag if any
> -	clzne	\irqnr,	\irqstat		@ calc irqnr
> -	rsbne	\irqnr, \irqnr, #31
> -	.endm
> diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c
> index cd4bac4d7e43..a3f615801d27 100644
> --- a/arch/arm/mach-orion5x/irq.c
> +++ b/arch/arm/mach-orion5x/irq.c
> @@ -26,14 +26,6 @@ static int __initdata gpio0_irqs[4] = {
>  	IRQ_ORION5X_GPIO_24_31,
>  };
>  
> -#ifdef CONFIG_MULTI_IRQ_HANDLER
> -/*
> - * Compiling with both non-DT and DT support enabled, will
> - * break asm irq handler used by non-DT boards. Therefore,
> - * we provide a C-style irq handler even for non-DT boards,
> - * if MULTI_IRQ_HANDLER is set.
> - */
> -
>  asmlinkage void
>  __exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
>  {
> @@ -47,15 +39,11 @@ __exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
>  		return;
>  	}
>  }
> -#endif
>  
>  void __init orion5x_init_irq(void)
>  {
>  	orion_irq_init(0, MAIN_IRQ_MASK);
> -
> -#ifdef CONFIG_MULTI_IRQ_HANDLER
>  	set_handle_irq(orion5x_legacy_handle_irq);
> -#endif
>  
>  	/*
>  	 * Initialize gpiolib for GPIOs 0-31.
> -- 
> 2.1.0.rc2
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support
  2015-03-02 21:30 ` [PATCH 0/5] ARM: orion5k/mv78xx0/dove " Andrew Lunn
@ 2015-03-02 21:39   ` Arnd Bergmann
  2015-03-02 23:08     ` Russell King - ARM Linux
  0 siblings, 1 reply; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 21:39 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 02 March 2015 22:30:58 Andrew Lunn wrote:
> On Mon, Mar 02, 2015 at 09:36:53PM +0100, Arnd Bergmann wrote:
> > Hi everyone,
> 
> Hi Arnd
> 
> Dove already is multi-platform, when you use it in mach-mvebu.  The
> old mach-dove is there to slowly bit rot, because there is one user
> who has a lot of out of tree patches which are apparently not easy to
> make work with DT mach-mvebu Dove code.

I understand that, but I really want to finalize this chapter
of the multiplatform work, it's been going for too long. It's
not the only platform that has ATAG-based board files remaining,
and I don't see how keeping it the remaining dove board files
out of multiplatform is going to speed up their removal.

> > I'm trying to get all ARMv7 platforms moved over to
> > ARCH_MULTIPLATFORM
> 
> It should be noted that orion5x is not an ARMv7.

mv78xx0 as well. Yes, that would have been good to mention
in the cover-letter, I assumed that everyone was aware of that.

It would seem a bit silly to do one or two of these and not
do the others at the same time.

	Arnd

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/5] ARM: orion: always use MULTI_IRQ_HANDLER
  2015-03-02 21:37   ` Andrew Lunn
@ 2015-03-02 21:44     ` Arnd Bergmann
  2015-03-02 23:09     ` Russell King - ARM Linux
  1 sibling, 0 replies; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 21:44 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 02 March 2015 22:37:49 Andrew Lunn wrote:
> On Mon, Mar 02, 2015 at 09:36:55PM +0100, Arnd Bergmann wrote:
> > As a preparation for multiplatform support, this enables
> > the MULTI_IRQ_HANDLER code unconditionally on dove and
> > orion5x, and introduces the respective code on mv78xx0,
> > which did not have it so far. The classic entry-macro.S
> > files are removed as they are now obsolete.
> 
> Hi Arnd
> 
> I don't know if it is relevant or not, but mach-dove IRQ handling is
> slightly broken. It uses IRQ 0. Russell King did provide a patch to
> move all the interrupts up by one, but it did not apply. I asked for a
> new version, rebased on the -rc1 of the time, but it never appeared.

Ok.

My guess is that my patch doesn't change that problem for better or
worse, but it might make rebasing slightly harder.

	Arnd

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/5] ARM: orion: move watchdog setup to mach-orion5x
  2015-03-02 21:33   ` Andrew Lunn
@ 2015-03-02 21:49     ` Arnd Bergmann
  2015-03-02 23:18       ` Russell King - ARM Linux
  0 siblings, 1 reply; 16+ messages in thread
From: Arnd Bergmann @ 2015-03-02 21:49 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 02 March 2015 22:33:06 Andrew Lunn wrote:
> On Mon, Mar 02, 2015 at 09:36:54PM +0100, Arnd Bergmann wrote:
> > The watchdog device node is created in plat-orion/common.c
> > but depends on the bridge address that is platform specific,
> > so as a preparation for orion multiplatform support, we should
> > move it out of the common code into orion5x.
> 
> If i remember correctly, RMK patchset for the Dove PMU allows the
> watchdog to be enabled for Dove.

I see. If it helps, I could change the code here to make orion_wdt_init()
take the resources as arguments like orion_i2c_init and others do.

If the goal for Russell's patches is to get everything working with
DT anyway, then the current version should work just as well.

	Arnd

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support
  2015-03-02 21:39   ` Arnd Bergmann
@ 2015-03-02 23:08     ` Russell King - ARM Linux
  0 siblings, 0 replies; 16+ messages in thread
From: Russell King - ARM Linux @ 2015-03-02 23:08 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Mar 02, 2015 at 10:39:21PM +0100, Arnd Bergmann wrote:
> On Monday 02 March 2015 22:30:58 Andrew Lunn wrote:
> > On Mon, Mar 02, 2015 at 09:36:53PM +0100, Arnd Bergmann wrote:
> > > Hi everyone,
> > 
> > Hi Arnd
> > 
> > Dove already is multi-platform, when you use it in mach-mvebu.  The
> > old mach-dove is there to slowly bit rot, because there is one user
> > who has a lot of out of tree patches which are apparently not easy to
> > make work with DT mach-mvebu Dove code.
> 
> I understand that, but I really want to finalize this chapter
> of the multiplatform work, it's been going for too long. It's
> not the only platform that has ATAG-based board files remaining,
> and I don't see how keeping it the remaining dove board files
> out of multiplatform is going to speed up their removal.

I believe all the boards are already converted.  The _boards_ can be
removed from mach-dove, as the one I care about is not in mainline,
but that one I care about depends on the core mach-dove support.

As I've said in the past, if this gets ripped out, you will only give
me even _more_ patches to deal with, you will only increase my workload
still further.  I wonder whether you really intend to increase my
workload doing stuff which isn't productive for the kernel community.
That seems to be rather idiotic.

Once I've got to the bottom of why the DT stuff sucks, then maybe I can
switch to DT.  However, even when I'm boot testing DT mode, I need much
of mach-dove right now (since I still need platform support code to fix
a few bits, eg, support dynamic switching between GPU drivers to
facilitate testing.)

Let me put this a different way: if this support is removed, I'll end
up spending this kernel cycle ignoring bug reports etc, and I'll instead
spend my time resurecting this support in my own tree so that I can
continue to support and test the Armada DRM driver.

And remember, when you commit a change to delete files, the files get
deleted in all git trees derived from the mainline kernel, including
*mine* and which has to be patched back together via reverts and the
probable other fixes.

Since my Dove is the most useful and fully featured ARM platform I've
ever had, screwing me in this way will _really_ piss me off.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/5] ARM: orion: always use MULTI_IRQ_HANDLER
  2015-03-02 21:37   ` Andrew Lunn
  2015-03-02 21:44     ` Arnd Bergmann
@ 2015-03-02 23:09     ` Russell King - ARM Linux
  1 sibling, 0 replies; 16+ messages in thread
From: Russell King - ARM Linux @ 2015-03-02 23:09 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Mar 02, 2015 at 10:37:49PM +0100, Andrew Lunn wrote:
> On Mon, Mar 02, 2015 at 09:36:55PM +0100, Arnd Bergmann wrote:
> > As a preparation for multiplatform support, this enables
> > the MULTI_IRQ_HANDLER code unconditionally on dove and
> > orion5x, and introduces the respective code on mv78xx0,
> > which did not have it so far. The classic entry-macro.S
> > files are removed as they are now obsolete.
> 
> Hi Arnd
> 
> I don't know if it is relevant or not, but mach-dove IRQ handling is
> slightly broken. It uses IRQ 0. Russell King did provide a patch to
> move all the interrupts up by one, but it did not apply. I asked for a
> new version, rebased on the -rc1 of the time, but it never appeared.

That's because I only run non-rc kernels on my hardware, as I probably
explained at the time.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/5] ARM: orion: move watchdog setup to mach-orion5x
  2015-03-02 21:49     ` Arnd Bergmann
@ 2015-03-02 23:18       ` Russell King - ARM Linux
  0 siblings, 0 replies; 16+ messages in thread
From: Russell King - ARM Linux @ 2015-03-02 23:18 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Mar 02, 2015 at 10:49:08PM +0100, Arnd Bergmann wrote:
> On Monday 02 March 2015 22:33:06 Andrew Lunn wrote:
> > On Mon, Mar 02, 2015 at 09:36:54PM +0100, Arnd Bergmann wrote:
> > > The watchdog device node is created in plat-orion/common.c
> > > but depends on the bridge address that is platform specific,
> > > so as a preparation for orion multiplatform support, we should
> > > move it out of the common code into orion5x.
> > 
> > If i remember correctly, RMK patchset for the Dove PMU allows the
> > watchdog to be enabled for Dove.
> 
> I see. If it helps, I could change the code here to make orion_wdt_init()
> take the resources as arguments like orion_i2c_init and others do.
> 
> If the goal for Russell's patches is to get everything working with
> DT anyway, then the current version should work just as well.

Well, right now I don't know how to progress the PMU patches.  From
what I remember, there was agreement on where to put the PMU driver,
but there's still a problem with the PM domain binding code.  That
issue just ended up stopping being discussed.

Is it no surprise, therefore, that it takes literally years to get
stuff into mainline kernels, and people get pissed off and end up
maintaining stuff outside of mainline?

commit b6c7ff35be7131abe7c83a22a87bbb2343f61a5a
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Mon Mar 3 14:49:14 2014 +0000

    pm: domains: quieten down generic pm domains

One year old for a simple patch... Several other patches in that set
date from April 2014 too...

Mainline kernel development sucks.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2015-03-02 23:18 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-02 20:36 [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
2015-03-02 20:36 ` [PATCH 1/5] ARM: orion: move watchdog setup to mach-orion5x Arnd Bergmann
2015-03-02 21:33   ` Andrew Lunn
2015-03-02 21:49     ` Arnd Bergmann
2015-03-02 23:18       ` Russell King - ARM Linux
2015-03-02 20:36 ` [PATCH 2/5] ARM: orion: always use MULTI_IRQ_HANDLER Arnd Bergmann
2015-03-02 21:37   ` Andrew Lunn
2015-03-02 21:44     ` Arnd Bergmann
2015-03-02 23:09     ` Russell King - ARM Linux
2015-03-02 20:36 ` [PATCH 3/5] ARM: orion: use SPARSE_IRQ everywhere Arnd Bergmann
2015-03-02 20:40 ` [PATCH 0/5] ARM: orion5k/mv78xx0/dove multiplatform support Arnd Bergmann
2015-03-02 21:17 ` [PATCH 4/5] ARM: orion: clean up mach/*.h headers Arnd Bergmann
2015-03-02 21:17 ` [PATCH 5/5] ARM: orion: multiplatform support Arnd Bergmann
2015-03-02 21:30 ` [PATCH 0/5] ARM: orion5k/mv78xx0/dove " Andrew Lunn
2015-03-02 21:39   ` Arnd Bergmann
2015-03-02 23:08     ` Russell King - ARM Linux

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.