Skip to content

Initial multi-platform support

Rob Herring linux-arm-kernel 3 versions – New

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest posting 2/20 of 12 patches 0 repliesNew
  2. v3 posting 1/212 patches 0 repliesSuperseded
  3. v11 of 3 patches 0 repliesSuperseded

Patches in v3 posting 2/2 No applies recorded yet

None of the 12 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.

Read the v3 thread

Cover letter [PATCH v3 00/12] Initial multi-platform support
Quoted 62 lines · Shawn Guo
Quoted 29 lines · Jamie Iles

8<---

Subject: [PATCH] ARM: picoxcell: fixup multiplatform breakage.

The debug macros had a dependency on mach headers. Break that dependency and restore building.

---
 arch/arm/include/debug/picoxcell.S      |    4 ++--
 arch/arm/mach-picoxcell/common.c        |   11 ++++++-----
 arch/arm/mach-picoxcell/picoxcell_soc.h |   25 -------------------------
 3 files changed, 8 insertions(+), 32 deletions(-)
 delete mode 100644 arch/arm/mach-picoxcell/picoxcell_soc.h
arch/arm/include/debug/picoxcell.S +2 -2
index 58d4ee3..7419deb 100644
@@ -9,10 +9,10 @@
  * accesses to the 8250.
  */
 #include <linux/serial_reg.h>
-#include <mach/hardware.h>
-#include <mach/map.h>
 
 #define UART_SHIFT 2
+#define PICOXCELL_UART1_BASE		0x80230000
+#define PHYS_TO_IO(x)			(((x) & 0x00ffffff) | 0xfe000000)

...

Quoted 8 lines
arch/arm/include/debug/picoxcell.S +0 -0
 		.macro	addruart, rp, rv, tmp
 		ldr	\rv, =PHYS_TO_IO(PICOXCELL_UART1_BASE)
arch/arm/mach-picoxcell/common.c +0 -0
index a8b70b5..f6c0849 100644

arch/arm/mach-picoxcell/common.c line 25

Quoted 8 lines
arch/arm/mach-picoxcell/common.c +1 -2
@@ -20,14 +20,15 @@
 #include <asm/hardware/vic.h>
 #include <asm/mach/map.h>
 
-#include "picoxcell_soc.h"
 #include "common.h"
 
-#define PHYS_TO_IO(x)		(((x) & 0x00ffffff) | 0xfe000000)
+#define PHYS_TO_IO(x)			(((x) & 0x00ffffff) | 0xfe000000)

So you end up with defining the same thing at two places. You need to somehow ensure any update to PHYS_TO_IO needs to get applied on both to keep them synchronized. This is difficult for maintaining.

We're running into the exactly same problem when moving debug-macro.S for imx. I believe this is a common issue which needs a common solution.

I would propose to have the static mapping below (imx example) defined in something like arch/arm/include/asm/mach/map_imx.h, so that both imx machine code and ll-debug code can include it.

Quoted 8 lines
#define IMX_IO_P2V(x)   (                                               \
                        (((x) & 0x80000000) >> 7) |                     \
                        (0xf4000000 +                                   \
                        (((x) & 0x50000000) >> 6) +                     \
                        (((x) & 0x0b000000) >> 4) +                     \
                        (((x) & 0x000fffff))))

Thoughts?

My thought is to use a fixed virtual address across platforms and make the physical address a config option. Possibly the uart type can also be a config option. The 8250 one also needs register stride. See here:

http://lists.infradead.org/pipermail/linux-arm-kernel/2012-August/116982.html

Rob

Quoted 49 lines

Regards,
Shawn

Quoted 46 lines
arch/arm/mach-picoxcell/common.c +5 -3
+#define PICOXCELL_PERIPH_BASE		0x80000000
+#define PICOXCELL_PERIPH_LENGTH		SZ_4M
 
-#define WDT_CTRL_REG_EN_MASK	(1 << 0)
-#define WDT_CTRL_REG_OFFS	(0x00)
-#define WDT_TIMEOUT_REG_OFFS	(0x04)
+#define WDT_CTRL_REG_EN_MASK		(1 << 0)
+#define WDT_CTRL_REG_OFFS		(0x00)
+#define WDT_TIMEOUT_REG_OFFS		(0x04)
 static void __iomem *wdt_regs;
 
 /*
arch/arm/mach-picoxcell/picoxcell_soc.h deleted +0 -25
deleted file mode 100644
index 5566fc8..0000000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2011 Picochip Ltd., Jamie Iles
- *
- * This file contains the hardware definitions of the picoXcell SoC devices.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-#ifndef __PICOXCELL_SOC_H__
-#define __PICOXCELL_SOC_H__
-
-#define PICOXCELL_UART1_BASE		0x80230000
-#define PICOXCELL_PERIPH_BASE		0x80000000
-#define PICOXCELL_PERIPH_LENGTH		SZ_4M
-#define PICOXCELL_VIC0_BASE		0x80060000
-#define PICOXCELL_VIC1_BASE		0x80064000
-
-#endif /* __PICOXCELL_SOC_H__ */
Signature · 1 line
1.7.9.5