X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=drivers%2Fnet%2Fwireless%2Fwl1251%2Fsdio.c;h=7c55b3e32791af71a4f31457bbe95aa16857ada7;hp=9b8461b14ed551652986fdf88614319f4d53fa46;hb=fc9d1882a7b4ca1182f1b6f12aa87281a2a54f17;hpb=d93eda2f03c2b1ae007033aee80d573285b66b9e diff --git a/drivers/net/wireless/wl1251/sdio.c b/drivers/net/wireless/wl1251/sdio.c index 9b8461b14ed5..7c55b3e32791 100644 --- a/drivers/net/wireless/wl1251/sdio.c +++ b/drivers/net/wireless/wl1251/sdio.c @@ -217,6 +217,31 @@ static struct wl1251_if_operations wl1251_sdio_ops = { .power = wl1251_sdio_set_power, }; +static ssize_t +wl1251_show_long_doze(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct wl1251 *wl = dev_get_drvdata(dev); + return sprintf(buf, "%d\n", wl->long_doze_mode); +} + +static ssize_t +wl1251_set_long_doze(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + struct wl1251 *wl = dev_get_drvdata(dev); + int val, ret; + + ret = kstrtoint(buf, 10, &val); + if (ret < 0) + return ret; + + wl->long_doze_mode = !!val; + return count; +} +static DEVICE_ATTR(long_doze_mode, S_IRUGO | S_IWUSR, + wl1251_show_long_doze, wl1251_set_long_doze); + static int wl1251_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id) { @@ -291,6 +316,10 @@ static int wl1251_sdio_probe(struct sdio_func *func, sdio_set_drvdata(func, wl); + ret = device_create_file(&func->dev, &dev_attr_long_doze_mode); + if (ret) + goto out_free_irq; + /* Tell PM core that we don't need the card to be powered now */ pm_runtime_put_noidle(&func->dev); @@ -318,6 +347,8 @@ static void __devexit wl1251_sdio_remove(struct sdio_func *func) /* Undo decrement done above in wl1251_probe */ pm_runtime_get_noresume(&func->dev); + device_remove_file(&func->dev, &dev_attr_long_doze_mode); + if (wl->irq) free_irq(wl->irq, wl); wl1251_free_hw(wl);