Skip to content

Commit

Permalink
wl1271: Changed SDIO MMC host claiming
Browse files Browse the repository at this point in the history
Changed driver to keep MMC host claimed while wlan interface is up.
This keeps MMC stack from powering the SDIO device down.

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>
  • Loading branch information
Teemu Paasikivi authored and John W. Linville committed Mar 23, 2010
1 parent becd551 commit 93f56be
Showing 1 changed file with 9 additions and 18 deletions.
27 changes: 9 additions & 18 deletions drivers/net/wireless/wl12xx/wl1271_sdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,6 @@ static void wl1271_sdio_raw_read(struct wl1271 *wl, int addr, void *buf,
int ret;
struct sdio_func *func = wl_to_func(wl);

sdio_claim_host(func);
if (unlikely(addr == HW_ACCESS_ELP_CTRL_REG_ADDR)) {
((u8 *)buf)[0] = sdio_f0_readb(func, addr, &ret);
wl1271_debug(DEBUG_SPI, "sdio read 52 addr 0x%x, byte 0x%02x",
Expand All @@ -126,7 +125,6 @@ static void wl1271_sdio_raw_read(struct wl1271 *wl, int addr, void *buf,
if (ret)
wl1271_error("sdio read failed (%d)", ret);

sdio_release_host(func);
}

static void wl1271_sdio_raw_write(struct wl1271 *wl, int addr, void *buf,
Expand All @@ -135,7 +133,6 @@ static void wl1271_sdio_raw_write(struct wl1271 *wl, int addr, void *buf,
int ret;
struct sdio_func *func = wl_to_func(wl);

sdio_claim_host(func);
if (unlikely(addr == HW_ACCESS_ELP_CTRL_REG_ADDR)) {
sdio_f0_writeb(func, ((u8 *)buf)[0], addr, &ret);
wl1271_debug(DEBUG_SPI, "sdio write 52 addr 0x%x, byte 0x%02x",
Expand All @@ -153,11 +150,19 @@ static void wl1271_sdio_raw_write(struct wl1271 *wl, int addr, void *buf,
if (ret)
wl1271_error("sdio write failed (%d)", ret);

sdio_release_host(func);
}

static void wl1271_sdio_set_power(struct wl1271 *wl, bool enable)
{
struct sdio_func *func = wl_to_func(wl);

if (enable) {
sdio_claim_host(func);
sdio_enable_func(func);
} else {
sdio_disable_func(func);
sdio_release_host(func);
}
}

static struct wl1271_if_operations sdio_ops = {
Expand Down Expand Up @@ -219,22 +224,12 @@ static int __devinit wl1271_probe(struct sdio_func *func,
if (ret)
goto out_irq;

sdio_claim_host(func);
sdio_set_drvdata(func, wl);

ret = sdio_enable_func(func);
if (ret)
goto out_release;

sdio_release_host(func);

wl1271_notice("initialized");

return 0;

out_release:
sdio_release_host(func);

out_irq:
free_irq(wl->irq, wl);

Expand All @@ -251,10 +246,6 @@ static void __devexit wl1271_remove(struct sdio_func *func)

ieee80211_unregister_hw(wl->hw);

sdio_claim_host(func);
sdio_disable_func(func);
sdio_release_host(func);

free_irq(wl->irq, wl);

kfree(wl->target_mem_map);
Expand Down

0 comments on commit 93f56be

Please sign in to comment.