Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 183369
b: refs/heads/master
c: 98b2a68
h: refs/heads/master
i:
  183367: 17c8994
v: v3
  • Loading branch information
Luciano Coelho authored and John W. Linville committed Dec 28, 2009
1 parent 4d19bc5 commit 6297a1c
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1b38ea8858fd169064683e27add43511308e521a
refs/heads/master: 98b2a68473ae975bc4abdeb66cd719ccfdad9d4a
3 changes: 3 additions & 0 deletions trunk/drivers/net/wireless/wl12xx/wl1271.h
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ struct wl1271_debugfs {

struct dentry *retry_count;
struct dentry *excessive_retries;
struct dentry *gpio_power;
};

#define NUM_TX_QUEUES 4
Expand Down Expand Up @@ -442,6 +443,8 @@ struct wl1271 {
struct conf_drv_settings conf;

struct list_head list;

bool gpio_power;
};

int wl1271_plt_start(struct wl1271 *wl);
Expand Down
55 changes: 55 additions & 0 deletions trunk/drivers/net/wireless/wl12xx/wl1271_debugfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,57 @@ static const struct file_operations tx_queue_len_ops = {
.open = wl1271_open_file_generic,
};

static ssize_t gpio_power_read(struct file *file, char __user *user_buf,
size_t count, loff_t *ppos)
{
struct wl1271 *wl = file->private_data;
int res;
char buf[10];

res = scnprintf(buf, sizeof(buf), "%d\n", wl->gpio_power);

return simple_read_from_buffer(user_buf, count, ppos, buf, res);
}

static ssize_t gpio_power_write(struct file *file,
const char __user *user_buf,
size_t count, loff_t *ppos)
{
struct wl1271 *wl = file->private_data;
char buf[10];
size_t len;
unsigned long value;
int ret;

mutex_lock(&wl->mutex);

len = min(count, sizeof(buf) - 1);
if (copy_from_user(buf, user_buf, len)) {
ret = -EFAULT;
goto out;
}
buf[len] = '\0';

ret = strict_strtoul(buf, 0, &value);
if (ret < 0) {
wl1271_warning("illegal value in gpio_power");
goto out;
}

wl->set_power(!!value);
wl->gpio_power = !!value;

out:
mutex_unlock(&wl->mutex);
return count;
}

static const struct file_operations gpio_power_ops = {
.read = gpio_power_read,
.write = gpio_power_write,
.open = wl1271_open_file_generic
};

static void wl1271_debugfs_delete_files(struct wl1271 *wl)
{
DEBUGFS_FWSTATS_DEL(tx, internal_desc_overflow);
Expand Down Expand Up @@ -333,6 +384,8 @@ static void wl1271_debugfs_delete_files(struct wl1271 *wl)
DEBUGFS_DEL(tx_queue_len);
DEBUGFS_DEL(retry_count);
DEBUGFS_DEL(excessive_retries);

DEBUGFS_DEL(gpio_power);
}

static int wl1271_debugfs_add_files(struct wl1271 *wl)
Expand Down Expand Up @@ -434,6 +487,8 @@ static int wl1271_debugfs_add_files(struct wl1271 *wl)
DEBUGFS_ADD(retry_count, wl->debugfs.rootdir);
DEBUGFS_ADD(excessive_retries, wl->debugfs.rootdir);

DEBUGFS_ADD(gpio_power, wl->debugfs.rootdir);

out:
if (ret < 0)
wl1271_debugfs_delete_files(wl);
Expand Down
3 changes: 3 additions & 0 deletions trunk/drivers/net/wireless/wl12xx/wl1271_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -399,11 +399,13 @@ static void wl1271_disable_interrupts(struct wl1271 *wl)
static void wl1271_power_off(struct wl1271 *wl)
{
wl->set_power(false);
wl->gpio_power = false;
}

static void wl1271_power_on(struct wl1271 *wl)
{
wl->set_power(true);
wl->gpio_power = true;
}

static void wl1271_fw_status(struct wl1271 *wl,
Expand Down Expand Up @@ -1923,6 +1925,7 @@ static int __devinit wl1271_probe(struct spi_device *spi)
wl->band = IEEE80211_BAND_2GHZ;
wl->vif = NULL;
wl->joined = false;
wl->gpio_power = false;

for (i = 0; i < ACX_TX_DESCRIPTORS; i++)
wl->tx_frames[i] = NULL;
Expand Down

0 comments on commit 6297a1c

Please sign in to comment.