wl1271: Cleaned up wlan power on/off functions
authorTeemu Paasikivi <ext-teemu.3.paasikivi@nokia.com>
Thu, 18 Mar 2010 10:26:27 +0000 (12:26 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 23 Mar 2010 20:50:18 +0000 (16:50 -0400)
Added method for wlan power control to io_ops struct and moved
wl1271_power_on and wl1271_power_off functions to wl1271_io.h.

Signed-off-by: Teemu Paasikivi <ext-teemu.3.paasikivi@nokia.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/wl12xx/wl1271.h
drivers/net/wireless/wl12xx/wl1271_debugfs.c
drivers/net/wireless/wl12xx/wl1271_io.h
drivers/net/wireless/wl12xx/wl1271_main.c
drivers/net/wireless/wl12xx/wl1271_sdio.c
drivers/net/wireless/wl12xx/wl1271_spi.c

index 0deb4fdf916b351896ed1b62a9975f3afe1e099e..7397999deb190c676e39677f5aab9dd4d076b679 100644 (file)
@@ -344,6 +344,7 @@ struct wl1271_if_operations {
                     bool fixed);
        void (*reset)(struct wl1271 *wl);
        void (*init)(struct wl1271 *wl);
+       void (*power)(struct wl1271 *wl, bool enable);
        struct device* (*dev)(struct wl1271 *wl);
        void (*enable_irq)(struct wl1271 *wl);
        void (*disable_irq)(struct wl1271 *wl);
index 8d7588ca68fd0c14adc8c6508d1ab5456b674cf9..3c0f5b1ac27256ebd815935470c34c0b14365a98 100644 (file)
@@ -28,6 +28,7 @@
 #include "wl1271.h"
 #include "wl1271_acx.h"
 #include "wl1271_ps.h"
+#include "wl1271_io.h"
 
 /* ms */
 #define WL1271_DEBUGFS_STATS_LIFETIME 1000
@@ -276,13 +277,10 @@ static ssize_t gpio_power_write(struct file *file,
                goto out;
        }
 
-       if (value) {
-               wl->set_power(true);
-               set_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
-       } else {
-               wl->set_power(false);
-               clear_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
-       }
+       if (value)
+               wl1271_power_on(wl);
+       else
+               wl1271_power_off(wl);
 
 out:
        mutex_unlock(&wl->mutex);
index 95d2168f8af49601057d252f0623734fa390477e..3ff88d971308914968acec16c2a247f458e1487e 100644 (file)
@@ -138,6 +138,18 @@ static inline void wl1271_write32(struct wl1271 *wl, int addr, u32 val)
        wl1271_raw_write32(wl, wl1271_translate_addr(wl, addr), val);
 }
 
+static inline void wl1271_power_off(struct wl1271 *wl)
+{
+       wl->if_ops->power(wl, false);
+       clear_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
+}
+
+static inline void wl1271_power_on(struct wl1271 *wl)
+{
+       wl->if_ops->power(wl, true);
+       set_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
+}
+
 
 /* Top Register IO */
 void wl1271_top_reg_write(struct wl1271 *wl, int addr, u16 val);
index 0de337f9e50f0ae21386c3e70bfc9b94a8fd8efe..b3abb455bd7060ead5aa4409d065554d1b2b1be0 100644 (file)
@@ -359,18 +359,6 @@ static int wl1271_plt_init(struct wl1271 *wl)
        return ret;
 }
 
-static void wl1271_power_off(struct wl1271 *wl)
-{
-       wl->set_power(false);
-       clear_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
-}
-
-static void wl1271_power_on(struct wl1271 *wl)
-{
-       wl->set_power(true);
-       set_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
-}
-
 static void wl1271_fw_status(struct wl1271 *wl,
                             struct wl1271_fw_status *status)
 {
index 1f204db30c27be83a400c86e0c985d713929757c..d43e0d41d439c501380dfe4b66313fc260d928a9 100644 (file)
@@ -156,20 +156,21 @@ static void wl1271_sdio_raw_write(struct wl1271 *wl, int addr, void *buf,
        sdio_release_host(func);
 }
 
+static void wl1271_sdio_set_power(struct wl1271 *wl, bool enable)
+{
+}
+
 static struct wl1271_if_operations sdio_ops = {
        .read           = wl1271_sdio_raw_read,
        .write          = wl1271_sdio_raw_write,
        .reset          = wl1271_sdio_reset,
        .init           = wl1271_sdio_init,
+       .power          = wl1271_sdio_set_power,
        .dev            = wl1271_sdio_wl_to_dev,
        .enable_irq     = wl1271_sdio_enable_interrupts,
        .disable_irq    = wl1271_sdio_disable_interrupts
 };
 
-static void wl1271_sdio_set_power(bool enable)
-{
-}
-
 static int __devinit wl1271_probe(struct sdio_func *func,
                                  const struct sdio_device_id *id)
 {
@@ -190,8 +191,6 @@ static int __devinit wl1271_probe(struct sdio_func *func,
        wl->if_priv = func;
        wl->if_ops = &sdio_ops;
 
-       wl->set_power = wl1271_sdio_set_power;
-
        /* Grab access to FN0 for ELP reg. */
        func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
 
index ed285fec2a08c466143f10f5ec8e873071e9573d..0eea73392ea3629362476e89905cbf377c424ab4 100644 (file)
@@ -347,11 +347,18 @@ static struct platform_device wl1271_device = {
        },
 };
 
+static void wl1271_spi_set_power(struct wl1271 *wl, bool enable)
+{
+       if (wl->set_power)
+               wl->set_power(enable);
+}
+
 static struct wl1271_if_operations spi_ops = {
        .read           = wl1271_spi_raw_read,
        .write          = wl1271_spi_raw_write,
        .reset          = wl1271_spi_reset,
        .init           = wl1271_spi_init,
+       .power          = wl1271_spi_set_power,
        .dev            = wl1271_spi_wl_to_dev,
        .enable_irq     = wl1271_spi_enable_interrupts,
        .disable_irq    = wl1271_spi_disable_interrupts