wl1271: Cleaned up wlan power on/off functions
Teemu Paasikivi [Thu, 18 Mar 2010 10:26:27 +0000 (12:26 +0200)]
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 0deb4fd..7397999 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 8d7588c..3c0f5b1 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 95d2168..3ff88d9 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 0de337f..b3abb45 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 1f204db..d43e0d4 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 ed285fe..0eea733 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