Subject: [GIT PULL] ARM: OMAP: Audio support via omap-twl4030 and pwm support

From: [email-masked] (Tony Lindgren)
Date: Tue, 5 Feb 2013 10:40:15 -0800

* Peter Ujfalusi <[email-masked]> [130205 01:49]:
> Hi Tony,
> 
> On 02/04/2013 08:52 PM, Tony Lindgren wrote:
> > Looks like this now adds some new section warnings:
> > 
> > WARNING: vmlinux.o(.text+0x34124): Section mismatch in reference from the function sdp3430_twl_gpio_setup() to the function .init.text:omap_twl4030_audio_init()
> > The function sdp3430_twl_gpio_setup() references
> > the function __init omap_twl4030_audio_init().
> > This is often because sdp3430_twl_gpio_setup lacks a __init 
> > annotation or the annotation of omap_twl4030_audio_init is wrong.
> > 
> > WARNING: vmlinux.o(.text+0x34b8c): Section mismatch in reference from the function zoom_twl_gpio_setup() to the function .init.text:omap_twl4030_audio_init()
> > The function zoom_twl_gpio_setup() references
> > the function __init omap_twl4030_audio_init().
> > This is often because zoom_twl_gpio_setup lacks a __init 
> > annotation or the annotation of omap_twl4030_audio_init is wrong.
> 
> For some reason the CONFIG_DEBUG_SECTION_MISMATCH got disabled in my rolling
> kernel config...

At least gcc version 4.3.5 (Debian 4.3.5-4) shows them. What's
the compiler you have? 
 
> > These can be fixed with the following patch, but I suspect some
> > of these cannot be __init/__initdata if the driver reprobes.
> > 
> > Can you please check this? I'll hold on sendinf off
> > this branch until it's been checked and fixed properly.
> 
> I think this is not the correct way. the *_twl_gpio_setup() is called from the
> gpio-twl4030 driver's platform_driver probe function which if I'm not mistaken
> is not __init.
> 
> I think we should remove the __init from the omap_twl4030_audio_init() in
> twl-common.c
> With this change I do not have section mismatch either.

Yes let's do that rather than start copying things around. I'll apply
the following fix to the omap-for-v3.9/twl branch.

Regards,

Tony

From: Tony Lindgren <[email-masked]>
Date: Tue, 5 Feb 2013 10:36:21 -0800
Subject: [PATCH] ARM: OMAP2+: Fix twl section warnings related to omap_twl4030_audio_init

With the recent twl related changes we can now get:

WARNING: arch/arm/mach-omap2/built-in.o(.text+0x15f88): Section mismatch in
reference from the function sdp3430_twl_gpio_setup() to the function
.init.text:omap_twl4030_audio_init()
The function sdp3430_twl_gpio_setup() references
the function __init omap_twl4030_audio_init().
This is often because sdp3430_twl_gpio_setup lacks a __init
annotation or the annotation of omap_twl4030_audio_init is wrong.

WARNING: arch/arm/mach-omap2/built-in.o(.text+0x16968): Section mismatch in
reference from the function zoom_twl_gpio_setup() to the function
.init.text:omap_twl4030_audio_init()
The function zoom_twl_gpio_setup() references
the function __init omap_twl4030_audio_init().
This is often because zoom_twl_gpio_setup lacks a __init
annotation or the annotation of omap_twl4030_audio_init is wrong.

Fix this by removing __init from omap_twl4030_audio_init() as
suggested by Peter Ujfalusi <[email-masked]>.

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

--- a/arch/arm/mach-omap2/twl-common.c
+++ b/arch/arm/mach-omap2/twl-common.c
@@ -536,7 +536,7 @@ static struct platform_device audio_device = {
 	.id		= -1,
 };
 
-void __init omap_twl4030_audio_init(char *card_name,
+void omap_twl4030_audio_init(char *card_name,
 				    struct omap_tw4030_pdata *pdata)
 {
 	if (!pdata)
@@ -549,7 +549,7 @@ void __init omap_twl4030_audio_init(char *card_name,
 }
 
 #else /* SOC_OMAP_TWL4030 */
-void __init omap_twl4030_audio_init(char *card_name,
+void omap_twl4030_audio_init(char *card_name,
 				    struct omap_tw4030_pdata *pdata)
 {
 	return;