diff options
author | Piotr Haber <phaber@broadcom.com> | 2012-11-28 15:44:08 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-11-30 13:38:17 -0500 |
commit | 8e21df23894e12937fb3b51197bf5d0c4d7cc8ba (patch) | |
tree | db931d33e29c6149050f630d00f268a6f865a863 /drivers/net/wireless/brcm80211/brcmsmac/debug.c | |
parent | 57fe504817ccec9b6ac23e973d2925343bf1e3b6 (diff) |
brcmsmac: hardware info in debugfs
Put basic information about hardware in debugfs.
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Piotr Haber <phaber@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Acked-by: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmsmac/debug.c')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/debug.c | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/debug.c b/drivers/net/wireless/brcm80211/brcmsmac/debug.c index 6ba4136c7cf6..be84791857cb 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/debug.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/debug.c | |||
@@ -1,8 +1,121 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2012 Broadcom Corporation | ||
3 | * Copyright (c) 2012 Canonical Ltd. | ||
4 | * | ||
5 | * Permission to use, copy, modify, and/or distribute this software for any | ||
6 | * purpose with or without fee is hereby granted, provided that the above | ||
7 | * copyright notice and this permission notice appear in all copies. | ||
8 | * | ||
9 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
10 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
11 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | ||
12 | * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
13 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||
14 | * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||
15 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
16 | */ | ||
17 | #include <linux/debugfs.h> | ||
18 | #include <linux/if_ether.h> | ||
19 | #include <linux/if.h> | ||
1 | #include <linux/net.h> | 20 | #include <linux/net.h> |
21 | #include <linux/netdevice.h> | ||
22 | #include <linux/ieee80211.h> | ||
23 | #include <linux/module.h> | ||
24 | #include <linux/netdevice.h> | ||
25 | #include <net/mac80211.h> | ||
26 | |||
27 | #include <defs.h> | ||
28 | #include <brcmu_wifi.h> | ||
29 | #include <brcmu_utils.h> | ||
2 | #include "types.h" | 30 | #include "types.h" |
31 | #include "main.h" | ||
3 | #include "debug.h" | 32 | #include "debug.h" |
4 | #include "brcms_trace_events.h" | 33 | #include "brcms_trace_events.h" |
5 | 34 | ||
35 | static struct dentry *root_folder; | ||
36 | |||
37 | void brcms_debugfs_init(void) | ||
38 | { | ||
39 | root_folder = debugfs_create_dir(KBUILD_MODNAME, NULL); | ||
40 | if (IS_ERR(root_folder)) | ||
41 | root_folder = NULL; | ||
42 | } | ||
43 | |||
44 | void brcms_debugfs_exit(void) | ||
45 | { | ||
46 | if (!root_folder) | ||
47 | return; | ||
48 | |||
49 | debugfs_remove_recursive(root_folder); | ||
50 | root_folder = NULL; | ||
51 | } | ||
52 | |||
53 | int brcms_debugfs_attach(struct brcms_pub *drvr) | ||
54 | { | ||
55 | if (!root_folder) | ||
56 | return -ENODEV; | ||
57 | |||
58 | drvr->dbgfs_dir = debugfs_create_dir( | ||
59 | dev_name(&drvr->wlc->hw->d11core->dev), root_folder); | ||
60 | return PTR_RET(drvr->dbgfs_dir); | ||
61 | } | ||
62 | |||
63 | void brcms_debugfs_detach(struct brcms_pub *drvr) | ||
64 | { | ||
65 | if (!IS_ERR_OR_NULL(drvr->dbgfs_dir)) | ||
66 | debugfs_remove_recursive(drvr->dbgfs_dir); | ||
67 | } | ||
68 | |||
69 | struct dentry *brcms_debugfs_get_devdir(struct brcms_pub *drvr) | ||
70 | { | ||
71 | return drvr->dbgfs_dir; | ||
72 | } | ||
73 | |||
74 | static | ||
75 | ssize_t brcms_debugfs_hardware_read(struct file *f, char __user *data, | ||
76 | size_t count, loff_t *ppos) | ||
77 | { | ||
78 | char buf[128]; | ||
79 | int res; | ||
80 | struct brcms_pub *drvr = f->private_data; | ||
81 | |||
82 | /* only allow read from start */ | ||
83 | if (*ppos > 0) | ||
84 | return 0; | ||
85 | |||
86 | res = scnprintf(buf, sizeof(buf), | ||
87 | "board vendor: %x\n" | ||
88 | "board type: %x\n" | ||
89 | "board revision: %x\n" | ||
90 | "board flags: %x\n" | ||
91 | "board flags2: %x\n" | ||
92 | "firmware revision: %x\n", | ||
93 | drvr->wlc->hw->d11core->bus->boardinfo.vendor, | ||
94 | drvr->wlc->hw->d11core->bus->boardinfo.type, | ||
95 | drvr->wlc->hw->boardrev, | ||
96 | drvr->wlc->hw->boardflags, | ||
97 | drvr->wlc->hw->boardflags2, | ||
98 | drvr->wlc->ucode_rev | ||
99 | ); | ||
100 | |||
101 | return simple_read_from_buffer(data, count, ppos, buf, res); | ||
102 | } | ||
103 | |||
104 | static const struct file_operations brcms_debugfs_hardware_ops = { | ||
105 | .owner = THIS_MODULE, | ||
106 | .open = simple_open, | ||
107 | .read = brcms_debugfs_hardware_read | ||
108 | }; | ||
109 | |||
110 | void brcms_debugfs_create_files(struct brcms_pub *drvr) | ||
111 | { | ||
112 | struct dentry *dentry = drvr->dbgfs_dir; | ||
113 | |||
114 | if (!IS_ERR_OR_NULL(dentry)) | ||
115 | debugfs_create_file("hardware", S_IRUGO, dentry, | ||
116 | drvr, &brcms_debugfs_hardware_ops); | ||
117 | } | ||
118 | |||
6 | #define __brcms_fn(fn) \ | 119 | #define __brcms_fn(fn) \ |
7 | void __brcms_ ##fn(struct device *dev, const char *fmt, ...) \ | 120 | void __brcms_ ##fn(struct device *dev, const char *fmt, ...) \ |
8 | { \ | 121 | { \ |