[PATCH v3 00/12] Initial multi-platform support
Rob Herring
robherring2 at gmail.com
Fri Sep 14 09:00:30 EDT 2012
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 <jamie at jamieiles.com>
>> ---
>> 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 <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)
>
> ...
>
>>
>> .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 <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.
>
> #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
>>
More information about the linux-arm-kernel
mailing list