[PATCH v2] ARM: new platform for Energy Micro's EFM32 Cortex-M3 SoCs
From: arnd@arndb.de (Arnd Bergmann)
Date: 2013-09-17 20:45:25
Also in:
linux-devicetree
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.
quoted hunk
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.
+
+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.
+static void __init efm32_init(void)
+{
+ of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+}
+And this one is already unnecessary.
+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.
quoted hunk
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.
quoted hunk
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.
quoted hunk
--- /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. Arnd