Subject: Re: linux-next: manual merge of the omap tree with the tree

From: Tony Lindgren <[email-masked]>
Date: Mon, 1 Mar 2010 22:25:19 -0800

* Stephen Rothwell <[email-masked]> [100228 16:17]:
> Hi all,
> 
> Today's linux-next merge of the omap tree got a conflict in
> arch/arm/plat-omap/Kconfig between commit
> d6d502fa4be1acd01971476fc732c95a4da16d90 ("ARM: 5952/1: ARM: MM: Add
> ARM_L1_CACHE_SHIFT_6 for handle inside each ARCH Kconfig") from the arm
> tree and commits 56213ca4e440c0b6e56a48f5901c55c4ce3cf1ba ("omap2/3:
> Multiboot compile fixes to compile in omap2 and omap3") and
> a8eb7ca0cbb41c9cd379b8d2a2a5efb503aa65e9 ("omap3: Replace ARCH_OMAP34XX
> with ARCH_OMAP3") from the omap tree.
> 
> I fixed it up (see below) and can carry the fix as necessary.
> -- 
> Cheers,
> Stephen Rothwell                    [email-masked]
> 
> diff --cc arch/arm/plat-omap/Kconfig
> index 2e3eec6,be9484a..0000000
> --- a/arch/arm/plat-omap/Kconfig
> +++ b/arch/arm/plat-omap/Kconfig
> @@@ -19,10 -28,9 +28,10 @@@ config ARCH_OMAP
>   
>   config ARCH_OMAP3
>   	bool "TI OMAP3"
> + 	depends on ARCH_OMAP2PLUS
>   	select CPU_V7
> - 	select COMMON_CLKDEV
>  +	select ARM_L1_CACHE_SHIFT_6
> + 	select USB_ARCH_HAS_EHCI
>   
>   config ARCH_OMAP4
>   	bool "TI OMAP4"

Thanks, I've merged omap for-next with the mainline to resolve this.

FYI, also need the following not-yet-ready patch to compile omaps.

The weird thing is that unless I set ehci_pdata from __initconst
to __initdata in board-omap3touchbook.c, I get the following early_param
error:
 
error: __setup_str_early_touchbook_revision causes a section type conflict

The error does not seem to be related to ehci_pdata, and only happens
for board-omap3touchbook.c.

Anybody got ideas?

Regards,

Tony 
>>From f8b8a130c8cfef6cc885a61dcee339ba71b497a4 Mon Sep 17 00:00:00 2001
From: Tony Lindgren <[email-masked]>
Date: Mon, 1 Mar 2010 21:54:09 -0800
Subject: [PATCH] omap: Fix compile for early_param and omap_smc1

Commit 2b0d8c251b8876d530a6bf671eb5425838fa698a changed ARM to use
the common early_param code. Fix compile for omaps accordingly.

Commit d309427e792ea750cdd312e7a92cf6047ae44962 added support for
CACHE_L2X0, this however breaks multi-omap builds for V6 because of
dsb and smc. The proper fix is to separate omap_smc1 into a separate
.S file and compile it with -Wa,-march=armv7-a flags.

Also for some reason touchbook produces a compile error

error: __setup_str_early_touchbook_revision causes a section type conflict

Unless ehci_pdata is set to __initdata instead of __initconst.
No idea yet why this happens only on touchbook.

Not-Yet-Signed-off-by: Tony Lindgren <[email-masked]>

diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index 180ac11..a462d50 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -49,7 +49,7 @@ static struct omap_board_config_kernel sdp4430_config[] __initdata = {
 	{ OMAP_TAG_LCD,		&sdp4430_lcd_config },
 };
 
-#ifdef CONFIG_CACHE_L2X0
+#if defined(CONFIG_SMP) && defined(CONFIG_CACHE_L2X0)
 noinline void omap_smc1(u32 fn, u32 arg)
 {
 	register u32 r12 asm("r12") = fn;
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
index 3943d0f..07b7a32 100644
--- a/arch/arm/mach-omap2/board-omap3touchbook.c
+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
@@ -493,7 +493,7 @@ static void __init omap3touchbook_flash_init(void)
 	}
 }
 
-static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
+static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
 
 	.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
 	.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
@@ -518,14 +518,14 @@ static void omap3_touchbook_poweroff(void)
 	gpio_direction_output(TB_KILL_POWER_GPIO, 0);
 }
 
-static void __init early_touchbook_revision(char **p)
+static int __init early_touchbook_revision(char *p)
 {
-	if (!*p)
-		return;
+	if (!p)
+		return 0;
 
-	strict_strtoul(*p, 10, &touchbook_revision);
+	return strict_strtoul(p, 10, &touchbook_revision);
 }
-__early_param("tbr=", early_touchbook_revision);
+early_param("tbr", early_touchbook_revision);
 
 static struct omap_musb_board_data musb_board_data = {
 	.interface_type		= MUSB_INTERFACE_ULPI,
diff --git a/drivers/video/omap2/vram.c b/drivers/video/omap2/vram.c
index 55a4de5..1d88425 100644
--- a/drivers/video/omap2/vram.c
+++ b/drivers/video/omap2/vram.c
@@ -511,13 +511,17 @@ static u32 omap_vram_sdram_size __initdata;
 static u32 omap_vram_def_sdram_size __initdata;
 static u32 omap_vram_def_sdram_start __initdata;
 
-static void __init omap_vram_early_vram(char **p)
+static int __init omap_vram_early_vram(char *p)
 {
-	omap_vram_def_sdram_size = memparse(*p, p);
-	if (**p == ',')
-		omap_vram_def_sdram_start = simple_strtoul((*p) + 1, p, 16);
+	char *endp;
+
+	omap_vram_def_sdram_size = memparse(p, &endp);
+	if (*endp == ',')
+		omap_vram_def_sdram_start = simple_strtoul(endp + 1, &p, 16);
+
+	return 0;
 }
-__early_param("vram=", omap_vram_early_vram);
+early_param("vram", omap_vram_early_vram);
 
 /*
  * Called from map_io. We need to call to this early enough so that we