[PATCH 2/6] ARM: add Highbank core platform support
Shawn Guo
shawn.guo at freescale.com
Thu Aug 25 00:03:39 EDT 2011
On Wed, Aug 24, 2011 at 09:45:28PM -0500, Rob Herring wrote:
> Arnd,
>
> On 08/20/2011 01:44 PM, Rob Herring wrote:
> > Arnd,
> >
> > On 08/18/2011 10:34 AM, Arnd Bergmann wrote:
> >> On Tuesday 16 August 2011, Rob Herring wrote:
> >>
> >>> +void __iomem *a9_base_addr = ((void __iomem *)(HB_MPIC_VIRT_BASE));
> >>> +void __iomem *sregs_base;
> >>> +
> >>> +static struct map_desc highbank_io_desc[] __initdata = {
> >>> + {
> >>> + .virtual = HB_MPIC_VIRT_BASE,
> >>> + .pfn = 0, /* run-time */
> >>> + .length = SZ_4K,
> >>> + .type = MT_DEVICE,
> >>> + },
> >>> +#ifdef CONFIG_DEBUG_LL
> >>> + {
> >>> + .virtual = HB_DEBUG_LL_VIRT_BASE,
> >>> + .pfn = __phys_to_pfn(HB_DEBUG_LL_PHYS_BASE),
> >>> + .length = SZ_4K,
> >>> + .type = MT_DEVICE,
> >>> + },
> >>> +#endif
> >>> +};
> >>> +
> >>> +static void __init highbank_map_io(void)
> >>> +{
> >>> + unsigned long base;
> >>> +
> >>> + /* Get SCU base */
> >>> + asm("mrc p15, 4, %0, c15, c0, 0" : "=r" (base));
> >>> +
> >>> + highbank_io_desc[0].pfn = __phys_to_pfn(base);
> >>> + iotable_init(highbank_io_desc, ARRAY_SIZE(highbank_io_desc));
> >>> +}
> >>
> >> I really liked the way that Barry moved the io_desc out to the
> >> drivers using them, e.g arch/arm/mach-prima2/lluart.c.
> >>
> >> Can you do the same thing with your lluart and with the a9_base_addr?
> >> I guess it can live locally in platsmp.c.
> >
> > Okay.
>
> Looking at this some more, it doesn't work too well. platsmp.c depends
> on CONFIG_SMP, but the SCU mapping is always needed even for !SMP
> because the SCU has a power mode register for each core used by the
> power controller. So putting it in platsmp.c would add ifdefs.
>
It sounds you have a well designed power controller which will shut
down different CA-9 power domains per SCU power mode settings, e.g.
it will shut off different set of CA-9 power domains for Dormant and
Shutdown modes. Is that the case?
i.MX6Q is different from that case, so I can actually follow Arnd's
suggestion to keep scu_base locally in platsmp.c.
--
Regards,
Shawn
More information about the linux-arm-kernel
mailing list