X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=drivers%2Fnet%2Fwireless%2Fwl1251%2Fdebugfs.c;h=66d75e3630793058de955c348fabdbe4773dad65;hp=6c274007d200f53fa950a4a737387d9714fb32e6;hb=8c38efd7a291f48b7b0241c859ee9b4d30af4ab1;hpb=394f4528c523d88daabd50f883a8d6b164075555 diff --git a/drivers/net/wireless/wl1251/debugfs.c b/drivers/net/wireless/wl1251/debugfs.c index 6c274007d200..66d75e363079 100644 --- a/drivers/net/wireless/wl1251/debugfs.c +++ b/drivers/net/wireless/wl1251/debugfs.c @@ -261,6 +261,42 @@ static const struct file_operations tx_queue_status_ops = { .llseek = generic_file_llseek, }; +static ssize_t dump_nvs_read(struct file *file, char __user *userbuf, + size_t count, loff_t *ppos) +{ + struct wl1251 *wl = file->private_data; + + if (wl->eeprom_dump == NULL) + return -EINVAL; + + return simple_read_from_buffer(userbuf, count, ppos, + wl->eeprom_dump, 752); +} + +static ssize_t dump_full_read(struct file *file, char __user *userbuf, + size_t count, loff_t *ppos) +{ + struct wl1251 *wl = file->private_data; + + if (wl->eeprom_dump == NULL) + return -EINVAL; + + return simple_read_from_buffer(userbuf, count, ppos, + wl->eeprom_dump, 1024); +} + +static const struct file_operations dump_nvs_ops = { + .read = dump_nvs_read, + .open = wl1251_open_file_generic, + .llseek = generic_file_llseek, +}; + +static const struct file_operations dump_full_ops = { + .read = dump_full_read, + .open = wl1251_open_file_generic, + .llseek = generic_file_llseek, +}; + static void wl1251_debugfs_delete_files(struct wl1251 *wl) { DEBUGFS_FWSTATS_DEL(tx, internal_desc_overflow); @@ -358,6 +394,11 @@ static void wl1251_debugfs_delete_files(struct wl1251 *wl) DEBUGFS_DEL(tx_queue_status); DEBUGFS_DEL(retry_count); DEBUGFS_DEL(excessive_retries); + + if (wl->eeprom_dump != NULL) { + DEBUGFS_DEL(dump_nvs); + DEBUGFS_DEL(dump_full); + } } static int wl1251_debugfs_add_files(struct wl1251 *wl) @@ -460,6 +501,12 @@ static int wl1251_debugfs_add_files(struct wl1251 *wl) DEBUGFS_ADD(retry_count, wl->debugfs.rootdir); DEBUGFS_ADD(excessive_retries, wl->debugfs.rootdir); + /* temporary (?) hack for EEPROM dumping */ + if (wl->eeprom_dump != NULL) { + DEBUGFS_ADD(dump_nvs, wl->debugfs.rootdir); + DEBUGFS_ADD(dump_full, wl->debugfs.rootdir); + } + out: if (ret < 0) wl1251_debugfs_delete_files(wl);