aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/brcm80211/brcmsmac/debug.c
diff options
context:
space:
mode:
authorPiotr Haber <phaber@broadcom.com>2012-11-28 15:44:08 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-11-30 13:38:17 -0500
commit8e21df23894e12937fb3b51197bf5d0c4d7cc8ba (patch)
treedb931d33e29c6149050f630d00f268a6f865a863 /drivers/net/wireless/brcm80211/brcmsmac/debug.c
parent57fe504817ccec9b6ac23e973d2925343bf1e3b6 (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.c113
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
35static struct dentry *root_folder;
36
37void 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
44void brcms_debugfs_exit(void)
45{
46 if (!root_folder)
47 return;
48
49 debugfs_remove_recursive(root_folder);
50 root_folder = NULL;
51}
52
53int 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
63void 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
69struct dentry *brcms_debugfs_get_devdir(struct brcms_pub *drvr)
70{
71 return drvr->dbgfs_dir;
72}
73
74static
75ssize_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
104static const struct file_operations brcms_debugfs_hardware_ops = {
105 .owner = THIS_MODULE,
106 .open = simple_open,
107 .read = brcms_debugfs_hardware_read
108};
109
110void 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) \
7void __brcms_ ##fn(struct device *dev, const char *fmt, ...) \ 120void __brcms_ ##fn(struct device *dev, const char *fmt, ...) \
8{ \ 121{ \