Thread (26 messages) flat view 26 messages, 4 authors, 2011-02-16
STALE5683d REVIEWED: 1 (0M)

1 review trailer.

[PATCH] ARM: OMAP2: use early init hook

From: Poddar, Sourav <hidden>
Date: 2011-01-25 15:46:37
Also in: linux-omap

On Tue, Jan 25, 2011 at 1:47 AM, Tony Lindgren [off-list ref] wrote:
quoted hunk ↗ jump to hunk
* Russell King - ARM Linux [off-list ref] [110123 09:47]:
quoted
On Sun, Jan 23, 2011 at 05:13:44PM +0000, Russell King - ARM Linux wrote:
quoted
Move non-mapping and non-irq initialization code out of .map_io and
.init_irq respectively into the new init_early hook.

Signed-off-by: Russell King <redacted>
---
I think I've updated this patch correctly for the new platforms merged
into mainline.
Grr, this breaks on OMAP because some of this stuff wants to do ioremap()
and therefore wants the kmem allocators initialized. ?That's rather
annoying...
So far tested on zoom3 only, but the following gets it booting
on top of your patch.

Want to take this one into your series?

Meanwhile, I'll add these both into our omap-testing branch
for some more testing.

Regards,

Tony


From: Tony Lindgren <tony@atomide.com>
Date: Mon, 24 Jan 2011 11:56:37 -0800
Subject: [PATCH] omap2+: Fix omap_serial_early_init to work with init_early hook

The new init_early hook happens at the end of setup_arch,
which is too early for kzalloc. However, there's no need
to call omap_serial_early_init that early, so fix this
by setting it up as a subsys_initcall.

Signed-off-by: Tony Lindgren <tony@atomide.com>
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -400,8 +400,6 @@ void __init omap2_init_common_infrastructure(void)
?void __init omap2_init_common_devices(struct omap_sdrc_params *sdrc_cs0,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?struct omap_sdrc_params *sdrc_cs1)
?{
- ? ? ? omap_serial_early_init();
-
? ? ? ?omap_hwmod_late_init();

? ? ? ?if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -655,7 +655,7 @@ static void serial_out_override(struct uart_port *up, int offset, int value)
?}
?#endif

-void __init omap_serial_early_init(void)
+static int __init omap_serial_early_init(void)
?{
? ? ? ?int i = 0;
@@ -691,7 +691,10 @@ void __init omap_serial_early_init(void)
? ? ? ? ? ? ? ? */
? ? ? ? ? ? ? ?uart->oh->flags |= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET;
? ? ? ?} while (1);
+
+ ? ? ? return 0;
?}
+subsys_initcall(omap_serial_early_init);

?/**
?* omap_serial_init_port() - initialize single serial port
--- a/arch/arm/plat-omap/include/plat/serial.h
+++ b/arch/arm/plat-omap/include/plat/serial.h
@@ -96,7 +96,6 @@
?struct omap_board_data;

-extern void __init omap_serial_early_init(void);
?extern void omap_serial_init(void);
?extern void omap_serial_init_port(struct omap_board_data *bdata);
?extern int omap_uart_can_sleep(void);
--
Just FYI, I observed similar results on OMAP4 for these patches.
For OMAP2420, OMAP2430 and OMAP3430 SDPs, you can add my boot
Tested-by: Sourav Poddar<redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help