[PATCH v2] ARM: new platform for Energy Micro's EFM32 Cortex-M3 SoCs
Uwe Kleine-König
u.kleine-koenig at pengutronix.de
Wed Sep 18 11:34:24 EDT 2013
Hi Arnd,
On Tue, Sep 17, 2013 at 10:45:25PM +0200, Arnd Bergmann wrote:
> On Tuesday 17 September 2013, Uwe Kleine-König wrote:
> > arch/arm/Kconfig | 16 +++-
> > arch/arm/Kconfig.debug | 16 ++++
> > arch/arm/Makefile | 1 +
> > arch/arm/configs/efm32_defconfig | 104 +++++++++++++++++++++++++
> > arch/arm/mach-efm32/Makefile | 1 +
> > arch/arm/mach-efm32/Makefile.boot | 2 +
> > arch/arm/mach-efm32/cmu.h | 15 ++++
> > arch/arm/mach-efm32/common.c | 19 +++++
> > arch/arm/mach-efm32/common.h | 1 +
> > arch/arm/mach-efm32/dtmachine.c | 31 ++++++++
> > arch/arm/mach-efm32/include/mach/debug-macro.S | 48 ++++++++++++
> > arch/arm/mach-efm32/include/mach/entry-macro.S | 5 ++
> > arch/arm/mach-efm32/include/mach/io.h | 6 ++
> > arch/arm/mach-efm32/include/mach/irqs.h | 6 ++
> > arch/arm/mach-efm32/include/mach/timex.h | 7 ++
>
> You should be able to add NOMMU platforms in combination with
> CONFIG_MULTIPLATFORM now, which gets rid of most of these files.
in next ARCH_MULTIPLATFORM still depends on MMU. What am I missing?
> > diff --git a/arch/arm/mach-efm32/Makefile b/arch/arm/mach-efm32/Makefile
> > new file mode 100644
> > index 0000000..081f45a
> > --- /dev/null
> > +++ b/arch/arm/mach-efm32/Makefile
> > @@ -0,0 +1 @@
> > +obj-y += common.o dtmachine.o
>
> Just merge the two files into one.
ok.
> > +
> > +void __init efm32_init_time(void)
> > +{
> > + of_clk_init(NULL);
> > + clocksource_of_init();
> > +}
>
> When Sebastian Hesselbarth's patches for of_clk_init() are merged,
> this function can go away.
Do you have a link?
> > +static void __init efm32_init(void)
> > +{
> > + of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> > +}
> > +
>
> And this one is already unnecessary.
fine.
> > +static const char *const efm32gg_compat[] __initconst = {
> > + "efm32,dk3750",
> > + NULL
> > +};
> > +
> > +DT_MACHINE_START(EFM32DT, "EFM32 (Device Tree Support)")
> > + .init_irq = irqchip_init,
>
> Same for irqchip_init, which is the default when omitted.
ok.
>
> > diff --git a/arch/arm/mach-efm32/include/mach/debug-macro.S b/arch/arm/mach-efm32/include/mach/debug-macro.S
> > new file mode 100644
> > index 0000000..c58915c
> > --- /dev/null
> > +++ b/arch/arm/mach-efm32/include/mach/debug-macro.S
>
> Please move this to arch/arm/include/debug/ like the other such
> implementations.
I don't mind, but I thought this is only for devices that are expected
to be available on >1 platform.
> > diff --git a/arch/arm/mach-efm32/include/mach/entry-macro.S b/arch/arm/mach-efm32/include/mach/entry-macro.S
> > new file mode 100644
> > index 0000000..f0c0f7d
> > --- /dev/null
> > +++ b/arch/arm/mach-efm32/include/mach/entry-macro.S
> > @@ -0,0 +1,5 @@
> > + .macro get_irqnr_preamble, base, tmp
> > + .endm
> > +
> > + .macro arch_ret_to_user, tmp1, tmp2
> > + .endm
>
> And use set_handle_irq() to register a handler from your irqchip driver
> to get rid of this one.
ISTR that I tried that, but I don't remember the details. I will retry.
> > --- /dev/null
> > +++ b/arch/arm/mach-efm32/include/mach/irqs.h
> > @@ -0,0 +1,6 @@
> > +#ifndef __MACH_IRQS_H__
> > +#define __MACH_IRQS_H__
> > +
> > +#define NR_IRQS 82
> > +
> > +#endif /* __MACH_IRQS_H__ */
>
> This should not be needed if you have the proper IRQ domain support,
> which I think you do.
OK.
Thanks for your comments
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
More information about the linux-arm-kernel
mailing list