Patchwork [Maverick,ti-omap4] SRU: Fix blaze board crash with tiwlan package installed

login
register
mail settings
Submitter Bryan Wu
Date Oct. 22, 2010, 1:53 p.m.
Message ID <AANLkTin_bA2oPd-cqeUibU-Nh5aFzoY-jjjYhGaW-Xh4@mail.gmail.com>
Download mbox | patch
Permalink /patch/68849/
State Accepted
Delegated to: Tim Gardner
Headers show

Comments

Bryan Wu - Oct. 22, 2010, 1:53 p.m.
On Fri, Oct 22, 2010 at 9:32 PM, Tim Gardner <tim.gardner@canonical.com> wrote:
> On 10/22/2010 05:52 AM, Sebastien Jan wrote:
>> SRU justification:
>>
>> Impact: When booting official Maverick pre-installed images on OMAP4
>> blaze board, with standard wlan packages installed (tiwlan-wl1271*), the
>> blaze board crashes on wlan driver init.
>>
>> Fix: The problem is fixed by registering the wlan device exclusively on
>> pandaboard (the wlan device on blaze board is not compatible).
>>
>> Testcase: install the standard TI packages on the Maverick OMAP4
>> pre-installed image running on a blaze board. On next boot, the platform
>> crashes while loading the wlan driver.
>>
>> BugLink:
>> https://bugs.launchpad.net/ubuntu/+source/linux-ti-omap4/+bug/665039
>>
>> This issue is fixed by the below (and also attached) patch.
>>
>>
>>  From f8c552bce2a258a080536c86fff61e5c50e0e843 Mon Sep 17 00:00:00 2001
>> From: Sebastien Jan <s-jan@ti.com>
>> Date: Mon, 18 Oct 2010 18:00:55 +0200
>> Subject: [PATCH] wlan: register wlan device only on pandaboard
>>
>> Registering the wlan device on blaze triggers the loading
>> of user-space wlan drivers for 1271 chip. These user-space
>> drivers are not compatible with the 1283 chip of the blaze and
>> cause a kernel crash.
>>
>> The event is the same whatever the wlan controller, which
>> prevents managing different wlan drivers in user-space.
>>
>> This patch registers the wlan device only on pandaboard.
>> Long term, we would like to generate different events depending
>> on the wlan controller.
>>
>> Signed-off-by: Sebastien Jan <s-jan@ti.com>
>> ---
>> arch/arm/mach-omap2/board-4430sdp-wifi.c | 3 ++-
>> 1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/board-4430sdp-wifi.c
>> b/arch/arm/mach-omap2/board-4430sdp-wifi.c
>> index aa731ef..eea7cad 100644
>> --- a/arch/arm/mach-omap2/board-4430sdp-wifi.c
>> +++ b/arch/arm/mach-omap2/board-4430sdp-wifi.c
>> @@ -129,7 +129,8 @@ static int __init sdp4430_wifi_init(void)
>> }
>> gpio_direction_input(SDP4430_WIFI_IRQ_GPIO);
>> #ifdef CONFIG_WIFI_CONTROL_FUNC
>> - ret = platform_device_register(&sdp4430_wifi_device);
>> + if (machine_is_omap4_panda())
>> + ret = platform_device_register(&sdp4430_wifi_device);
>> #endif
>> out:
>> return ret;
>>
>
> Methinks y'all are forgetting the patch that defines
> machine_is_omap4_panda().
>

This kind of machine_is_xxx() functions is auto generated, as
"Generating include/generated/mach-types.h"

So this patch missed "#include <asm/mach-types.h>"

> /home/rtg/maverick/kern/ubuntu-maverick/arch/arm/mach-omap2/board-4430sdp-wifi.c:
> In function 'sdp4430_wifi_init':
> /home/rtg/maverick/kern/ubuntu-maverick/arch/arm/mach-omap2/board-4430sdp-wifi.c:132:
> error: implicit declaration of function 'machine_is_omap4_panda'
>

And Sebastien,

I'm afraid it's not enough we just ignore the
platform_devices_register(). how about we just return at the beginning
of sdp4430_wifi_init() if !machine_is_omap4_panda().

-Bryan

Patch

diff --git a/arch/arm/mach-omap2/board-4430sdp-wifi.c b/arch/arm/mach-omap2/board-4430sdp-wifi.c
index aa731ef..a950f45 100644
--- a/arch/arm/mach-omap2/board-4430sdp-wifi.c
+++ b/arch/arm/mach-omap2/board-4430sdp-wifi.c
@@ -25,6 +25,7 @@ 
 
 #include <asm/gpio.h>
 #include <asm/io.h>
+#include <asm/mach-types.h>
 #include <plat/wifi_tiwlan.h>
 
 #define SDP4430_WIFI_PMENA_GPIO	 43
@@ -120,6 +121,9 @@  static int __init sdp4430_wifi_init(void)
 {
 	int ret;
 
+	if (!machine_is_omap4_panda())
+		return -ENODEV;
+
 	printk(KERN_WARNING"%s: start\n", __func__);
 	ret = gpio_request(SDP4430_WIFI_IRQ_GPIO, "wifi_irq");
 	if (ret < 0) {