On Fri, Oct 12, 2012 at 6:24 PM, Tony Lindgren <tony@xxxxxxxxxxx> wrote: >> Error setting wl12xx data: -38 .. > Ohad, can you please take a look? Sure, -38 is -ENOSYS which is returned when the wl12xx driver isn't configured. This isn't an error (it's a user decision, and it shouldn't elicit any error) and the patch below (also attached) should make it go away on: >From 374f145568585c8d6a8d5e4b8b5d3e6baedd2f39 Mon Sep 17 00:00:00 2001 From: Ohad Ben-Cohen <ohad@xxxxxxxxxx> Date: Sun, 14 Oct 2012 20:16:01 +0200 Subject: [PATCH] ARM: OMAP: don't print any error when wl12xx isn't configured Stop intimidating users with scary wlan error messages in case wl12xx support wasn't even built. In addition, when wl12xx_set_platform_data() fails, don't bother registering wl12xx's fixed regulator device (on the relevant boards). While we're at it, extract the wlan init code to a dedicated function to make (the relevant boards') init code look a bit nicer. Reported-by: Russell King <linux@xxxxxxxxxxxxxxxx> Signed-off-by: Ohad Ben-Cohen <ohad@xxxxxxxxxx> --- arch/arm/mach-davinci/board-da850-evm.c | 7 ++++++- arch/arm/mach-omap2/board-4430sdp.c | 13 ++++++++++-- arch/arm/mach-omap2/board-omap3evm.c | 11 +++++++++- arch/arm/mach-omap2/board-omap3pandora.c | 9 ++++++++- arch/arm/mach-omap2/board-omap4panda.c | 30 ++++++++++++++++++++++------ arch/arm/mach-omap2/board-zoom-peripherals.c | 20 ++++++++++++++++--- 6 files changed, 76 insertions(+), 14 deletions(-) diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 32ee3f8..1b19415 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -1404,8 +1404,13 @@ static __init int da850_wl12xx_init(void) da850_wl12xx_wlan_data.irq = gpio_to_irq(DA850_WLAN_IRQ); ret = wl12xx_set_platform_data(&da850_wl12xx_wlan_data); + /* bail out silently in case wl12xx isn't configured */ + if (ret == -ENOSYS) + goto free_wlan_irq; + + /* bail out verbosely on any other error */ if (ret) { - pr_err("Could not set wl12xx data: %d\n", ret); + pr_err("error setting wl12xx data: %d\n", ret); goto free_wlan_irq; } diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 3669c12..d1dd81a 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c @@ -826,9 +826,18 @@ static void __init omap4_sdp4430_wifi_init(void) omap4_sdp4430_wifi_mux_init(); omap4_sdp4430_wlan_data.irq = gpio_to_irq(GPIO_WIFI_IRQ); + ret = wl12xx_set_platform_data(&omap4_sdp4430_wlan_data); - if (ret) - pr_err("Error setting wl12xx data: %d\n", ret); + /* bail out silently in case wl12xx isn't configured */ + if (ret == -ENOSYS) + return; + + /* bail out verbosely on any other error */ + if (ret) { + pr_err("error setting wl12xx data: %d\n", ret); + return; + } + ret = platform_device_register(&omap_vwlan_device); if (ret) pr_err("Error registering wl12xx device: %d\n", ret); diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index b9b776b..7f72e44 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c @@ -637,9 +637,18 @@ static void __init omap3_evm_wl12xx_init(void) /* WL12xx WLAN Init */ omap3evm_wlan_data.irq = gpio_to_irq(OMAP3EVM_WLAN_IRQ_GPIO); + ret = wl12xx_set_platform_data(&omap3evm_wlan_data); - if (ret) + /* bail out silently in case wl12xx isn't configured */ + if (ret == -ENOSYS) + return; + + /* bail out verbosely on any other error */ + if (ret) { pr_err("error setting wl12xx data: %d\n", ret); + return; + } + ret = platform_device_register(&omap3evm_wlan_regulator); if (ret) pr_err("error registering wl12xx device: %d\n", ret); diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index 00a1f4a..bbc4001 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c @@ -549,8 +549,15 @@ static void __init pandora_wl1251_init(void) pandora_wl1251_pdata.use_eeprom = true; ret = wl12xx_set_platform_data(&pandora_wl1251_pdata); - if (ret < 0) + /* bail out silently in case wl12xx isn't configured */ + if (ret == -ENOSYS) + goto fail_irq; + + /* bail out verbosely on any other error */ + if (ret) { + pr_err("error setting wl12xx data: %d\n", ret); goto fail_irq; + } return; diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index bfcd397..cc5cdd6 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c @@ -486,24 +486,42 @@ static void omap4_panda_init_rev(void) } } +static void __init omap4_panda_wlan_init(void) +{ + int ret; + + omap_panda_wlan_data.irq = gpio_to_irq(GPIO_WIFI_IRQ); + + ret = wl12xx_set_platform_data(&omap_panda_wlan_data); + + /* bail out silently in case wl12xx isn't configured */ + if (ret == -ENOSYS) + return; + + /* bail out verbosely on any other error */ + if (ret) { + pr_err("error setting wl12xx data: %d\n", ret); + return; + } + + ret = platform_device_register(&omap_vwlan_device); + if (ret) + pr_err("error registering wl12xx's fixed regulator: %d\n", ret); +} + static void __init omap4_panda_init(void) { int package = OMAP_PACKAGE_CBS; - int ret; if (omap_rev() == OMAP4430_REV_ES1_0) package = OMAP_PACKAGE_CBL; omap4_mux_init(board_mux, NULL, package); - omap_panda_wlan_data.irq = gpio_to_irq(GPIO_WIFI_IRQ); - ret = wl12xx_set_platform_data(&omap_panda_wlan_data); - if (ret) - pr_err("error setting wl12xx data: %d\n", ret); + omap4_panda_wlan_init(); omap4_panda_init_rev(); omap4_panda_i2c_init(); platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices)); - platform_device_register(&omap_vwlan_device); omap_serial_init(); omap_sdrc_init(NULL, NULL); omap4_twl6030_hsmmc_init(mmc); diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c index c166fe1..3506ed2 100644 --- a/arch/arm/mach-omap2/board-zoom-peripherals.c +++ b/arch/arm/mach-omap2/board-zoom-peripherals.c @@ -286,19 +286,33 @@ static void enable_board_wakeup_source(void) OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); } -void __init zoom_peripherals_init(void) +static void __init zoom_wlan_init(void) { int ret; omap_zoom_wlan_data.irq = gpio_to_irq(OMAP_ZOOM_WLAN_IRQ_GPIO); + ret = wl12xx_set_platform_data(&omap_zoom_wlan_data); + /* bail out silently in case wl12xx isn't configured */ + if (ret == -ENOSYS) + return; - if (ret) + /* bail out verbosely on any other error */ + if (ret) { pr_err("error setting wl12xx data: %d\n", ret); + return; + } + ret = platform_device_register(&omap_vwlan_device); + if (ret) + pr_err("error registering wl12xx's fixed regulator: %d\n", ret); +} + +void __init zoom_peripherals_init(void) +{ omap_hsmmc_init(mmc); + zoom_wlan_init(); omap_i2c_init(); - platform_device_register(&omap_vwlan_device); usb_musb_init(NULL); enable_board_wakeup_source(); omap_serial_init(); -- 1.7.10.rc3.1067.gb129051
Attachment:
0001-ARM-OMAP-don-t-print-any-error-when-wl12xx-isn-t-con.patch
Description: Binary data