[PATCH 3/9] ARM: pxa: support pxa95x
Haojian Zhuang
hzhuang1 at marvell.com
Fri Nov 19 04:16:43 EST 2010
>-----Original Message-----
>From: Eric Miao [mailto:eric.y.miao at gmail.com]
>Sent: 2010年11月19日 4:45 PM
>To: Haojian Zhuang
>Cc: linux-arm-kernel at lists.infradead.org
>Subject: Re: [PATCH 3/9] ARM: pxa: support pxa95x
>
>On Wed, Nov 17, 2010 at 7:03 PM, Haojian Zhuang
><haojian.zhuang at marvell.com> wrote:
>> The core of PXA955 is PJ4. Add new PJ4 support. And add new macro
>> CONFIG_PXA95x.
>>
>> Signed-off-by: Haojian Zhuang <haojian.zhuang at marvell.com>
>> Cc: Eric Miao <eric.y.miao at gmail.com>
>> ---
>> arch/arm/mach-pxa/Kconfig | 12 +-
>> arch/arm/mach-pxa/Makefile | 1 +
>> arch/arm/mach-pxa/clock.h | 20 ++
>> arch/arm/mach-pxa/devices.c | 267 +++++++++---------
>> arch/arm/mach-pxa/generic.c | 8 +-
>> arch/arm/mach-pxa/generic.h | 3 +-
>> arch/arm/mach-pxa/include/mach/hardware.h | 34 ++-
>> arch/arm/mach-pxa/include/mach/irqs.h | 1 +
>> arch/arm/mach-pxa/pxa3xx.c | 9 -
>> arch/arm/mach-pxa/pxa930.c | 2 +-
>> arch/arm/mach-pxa/pxa95x.c | 437
>+++++++++++++++++++++++++++++
>> arch/arm/mm/Kconfig | 6 +
>> arch/arm/plat-pxa/Makefile | 1 +
>> arch/arm/plat-pxa/include/plat/mfp.h | 4 +-
>> 14 files changed, 643 insertions(+), 162 deletions(-)
>> create mode 100644 arch/arm/mach-pxa/pxa95x.c
>>
>> +void __init pxa95x_init_irq(void)
>> +{
>
>No enabling of CP6 is needed for pxa95x?
>
Yes, PXA95x can't support to access interrupt registers via co-processors.
>> + pxa_init_irq(96, NULL);
>> + pxa_init_ext_wakeup_irq(NULL);
>> + pxa_init_gpio(IRQ_GPIO_2_x, 2, 127, NULL);
>> +}
>> +
>> +
>> +static int __init pxa95x_init(void)
>> +{
>> + int ret = 0;
>> +
>> + if (cpu_is_pxa95x()) {
>> + mfp_init_base(io_p2v(MFPR_BASE));
>> + mfp_init_addr(pxa95x_mfp_addr_map);
>> +
>> + reset_status = ARSR;
>> +
>> + /*
>> + * clear RDH bit every time after reset
>> + *
>> + * Note: the last 3 bits DxS are write-1-to-clear so carefully
>> + * preserve them here in case they will be referenced later
>> + */
>> + ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S);
>> +
>> + clkdev_add_table(pxa95x_clkregs, ARRAY_SIZE(pxa95x_clkregs));
>> +
>> + if ((ret = pxa_init_dma(IRQ_DMA, 32)))
>> + return ret;
>> +
>
>No need to register pxa3xx_sysdev[]? My understanding is the IRQ/MFP/GPIO
>subsystems are just same.
>
I don't want to support PM feature now. So I remove them in current patch.
>> + ret = platform_add_devices(devices, ARRAY_SIZE(devices));
>> + }
>> +
>> + return ret;
>> +}
>
>I'm afraid the above duplicates most part of pxa3xx.c, the only subtle
>difference
>is the missing of pxa3xx_init_pm(), which is due to the difference of the power
>management. Instead of duplicating so much code, another better way out is:
>
>1) remove pxa3xx_init_pm() from pxa3xx_init()
>2) remove pxa3xx_init() from postcore_init()
>3) change pxa3xx_init() to pxa3xx_common_init()
>4) in pxa300_init() and pxa320_init(), call pxa3xx_common_init() as
>well as pxa3xx_init_pm()
>5) in pxa95x_init(), call pxa3xx_common_init() and pxa95x's specific
>pm initialization
> (e.g. pxa95x_init_pm)
>
The name of pxa3xx_init() and pxa3xx_common_init() is very confusion. PXA95x is based on ARMv7. I don't prefer to compile it with PXA3xx in one image now. Actually I failed to compile them together.
Thanks
Haojian
More information about the linux-arm-kernel
mailing list