From mboxrd@z Thu Jan 1 00:00:00 1970 From: robherring2@gmail.com (Rob Herring) Date: Fri, 14 Sep 2012 08:00:30 -0500 Subject: [PATCH v3 00/12] Initial multi-platform support In-Reply-To: <20120914005836.GC1338@S2101-09.ap.freescale.net> References: <1346962375-26163-1-git-send-email-robherring2@gmail.com> <20120910190711.GA11366@page> <20120914005836.GC1338@S2101-09.ap.freescale.net> Message-ID: <50532A6E.8050609@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 09/13/2012 07:58 PM, Shawn Guo wrote: > On Mon, Sep 10, 2012 at 08:07:11PM +0100, Jamie Iles wrote: >> 8<--- >> >> Subject: [PATCH] ARM: picoxcell: fixup multiplatform breakage. >> >> The debug macros had a dependency on mach headers. Break that >> dependency and restore building. >> >> Signed-off-by: Jamie Iles >> --- >> 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 >> >> diff --git a/arch/arm/include/debug/picoxcell.S b/arch/arm/include/debug/picoxcell.S >> index 58d4ee3..7419deb 100644 >> --- a/arch/arm/include/debug/picoxcell.S >> +++ b/arch/arm/include/debug/picoxcell.S >> @@ -9,10 +9,10 @@ >> * accesses to the 8250. >> */ >> #include >> -#include >> -#include >> >> #define UART_SHIFT 2 >> +#define PICOXCELL_UART1_BASE 0x80230000 >> +#define PHYS_TO_IO(x) (((x) & 0x00ffffff) | 0xfe000000) > > ... > >> >> .macro addruart, rp, rv, tmp >> ldr \rv, =PHYS_TO_IO(PICOXCELL_UART1_BASE) >> diff --git a/arch/arm/mach-picoxcell/common.c b/arch/arm/mach-picoxcell/common.c >> index a8b70b5..f6c0849 100644 >> --- a/arch/arm/mach-picoxcell/common.c >> +++ b/arch/arm/mach-picoxcell/common.c >> @@ -20,14 +20,15 @@ >> #include >> #include >> >> -#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. > > #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 > Regards, > Shawn > >> +#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; >> >> /* >> diff --git a/arch/arm/mach-picoxcell/picoxcell_soc.h b/arch/arm/mach-picoxcell/picoxcell_soc.h >> deleted file mode 100644 >> index 5566fc8..0000000 >> --- a/arch/arm/mach-picoxcell/picoxcell_soc.h >> +++ /dev/null >> @@ -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__ */ >> -- >> 1.7.9.5 >>