mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-03 09:34:42 +00:00
wl1271: Cleaned up wlan power on/off functions
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>
This commit is contained in:
parent
b43316dbf9
commit
becd551cac
@ -344,6 +344,7 @@ struct wl1271_if_operations {
|
|||||||
bool fixed);
|
bool fixed);
|
||||||
void (*reset)(struct wl1271 *wl);
|
void (*reset)(struct wl1271 *wl);
|
||||||
void (*init)(struct wl1271 *wl);
|
void (*init)(struct wl1271 *wl);
|
||||||
|
void (*power)(struct wl1271 *wl, bool enable);
|
||||||
struct device* (*dev)(struct wl1271 *wl);
|
struct device* (*dev)(struct wl1271 *wl);
|
||||||
void (*enable_irq)(struct wl1271 *wl);
|
void (*enable_irq)(struct wl1271 *wl);
|
||||||
void (*disable_irq)(struct wl1271 *wl);
|
void (*disable_irq)(struct wl1271 *wl);
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "wl1271.h"
|
#include "wl1271.h"
|
||||||
#include "wl1271_acx.h"
|
#include "wl1271_acx.h"
|
||||||
#include "wl1271_ps.h"
|
#include "wl1271_ps.h"
|
||||||
|
#include "wl1271_io.h"
|
||||||
|
|
||||||
/* ms */
|
/* ms */
|
||||||
#define WL1271_DEBUGFS_STATS_LIFETIME 1000
|
#define WL1271_DEBUGFS_STATS_LIFETIME 1000
|
||||||
@ -276,13 +277,10 @@ static ssize_t gpio_power_write(struct file *file,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value) {
|
if (value)
|
||||||
wl->set_power(true);
|
wl1271_power_on(wl);
|
||||||
set_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
|
else
|
||||||
} else {
|
wl1271_power_off(wl);
|
||||||
wl->set_power(false);
|
|
||||||
clear_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
mutex_unlock(&wl->mutex);
|
mutex_unlock(&wl->mutex);
|
||||||
|
@ -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);
|
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 */
|
/* Top Register IO */
|
||||||
void wl1271_top_reg_write(struct wl1271 *wl, int addr, u16 val);
|
void wl1271_top_reg_write(struct wl1271 *wl, int addr, u16 val);
|
||||||
|
@ -359,18 +359,6 @@ static int wl1271_plt_init(struct wl1271 *wl)
|
|||||||
return ret;
|
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,
|
static void wl1271_fw_status(struct wl1271 *wl,
|
||||||
struct wl1271_fw_status *status)
|
struct wl1271_fw_status *status)
|
||||||
{
|
{
|
||||||
|
@ -156,20 +156,21 @@ static void wl1271_sdio_raw_write(struct wl1271 *wl, int addr, void *buf,
|
|||||||
sdio_release_host(func);
|
sdio_release_host(func);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void wl1271_sdio_set_power(struct wl1271 *wl, bool enable)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static struct wl1271_if_operations sdio_ops = {
|
static struct wl1271_if_operations sdio_ops = {
|
||||||
.read = wl1271_sdio_raw_read,
|
.read = wl1271_sdio_raw_read,
|
||||||
.write = wl1271_sdio_raw_write,
|
.write = wl1271_sdio_raw_write,
|
||||||
.reset = wl1271_sdio_reset,
|
.reset = wl1271_sdio_reset,
|
||||||
.init = wl1271_sdio_init,
|
.init = wl1271_sdio_init,
|
||||||
|
.power = wl1271_sdio_set_power,
|
||||||
.dev = wl1271_sdio_wl_to_dev,
|
.dev = wl1271_sdio_wl_to_dev,
|
||||||
.enable_irq = wl1271_sdio_enable_interrupts,
|
.enable_irq = wl1271_sdio_enable_interrupts,
|
||||||
.disable_irq = wl1271_sdio_disable_interrupts
|
.disable_irq = wl1271_sdio_disable_interrupts
|
||||||
};
|
};
|
||||||
|
|
||||||
static void wl1271_sdio_set_power(bool enable)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __devinit wl1271_probe(struct sdio_func *func,
|
static int __devinit wl1271_probe(struct sdio_func *func,
|
||||||
const struct sdio_device_id *id)
|
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_priv = func;
|
||||||
wl->if_ops = &sdio_ops;
|
wl->if_ops = &sdio_ops;
|
||||||
|
|
||||||
wl->set_power = wl1271_sdio_set_power;
|
|
||||||
|
|
||||||
/* Grab access to FN0 for ELP reg. */
|
/* Grab access to FN0 for ELP reg. */
|
||||||
func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
|
func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
|
||||||
|
|
||||||
|
@ -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 = {
|
static struct wl1271_if_operations spi_ops = {
|
||||||
.read = wl1271_spi_raw_read,
|
.read = wl1271_spi_raw_read,
|
||||||
.write = wl1271_spi_raw_write,
|
.write = wl1271_spi_raw_write,
|
||||||
.reset = wl1271_spi_reset,
|
.reset = wl1271_spi_reset,
|
||||||
.init = wl1271_spi_init,
|
.init = wl1271_spi_init,
|
||||||
|
.power = wl1271_spi_set_power,
|
||||||
.dev = wl1271_spi_wl_to_dev,
|
.dev = wl1271_spi_wl_to_dev,
|
||||||
.enable_irq = wl1271_spi_enable_interrupts,
|
.enable_irq = wl1271_spi_enable_interrupts,
|
||||||
.disable_irq = wl1271_spi_disable_interrupts
|
.disable_irq = wl1271_spi_disable_interrupts
|
||||||
|
Loading…
x
Reference in New Issue
Block a user