aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMichael Buesch <mb@bu3sch.de>2008-06-20 12:02:08 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-06-27 09:09:16 -0400
commit923fd7036ff04381b265037469c79a2e7d0d6b67 (patch)
tree885e8dc54e26b251187264cedce032d0e8c740b6 /drivers
parent9b839a7453dc7a25dbd367486017648182df541f (diff)
b43: Add debugfs firmware debugging knob
This adds a firmware debugging knob to debugfs. With this knob it's possible to enable advanced runtime firmware checks. For now it only implements one sanity check for the mac-suspend. In future there'll probably be more. If CONFIG_B43_DEBUG is disabled, these checks will collapse to nothing. Signed-off-by: Michael Buesch <mb@bu3sch.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/b43/debugfs.c1
-rw-r--r--drivers/net/wireless/b43/debugfs.h1
-rw-r--r--drivers/net/wireless/b43/main.c13
3 files changed, 15 insertions, 0 deletions
diff --git a/drivers/net/wireless/b43/debugfs.c b/drivers/net/wireless/b43/debugfs.c
index 24854c3e89cd..29851bc1101f 100644
--- a/drivers/net/wireless/b43/debugfs.c
+++ b/drivers/net/wireless/b43/debugfs.c
@@ -801,6 +801,7 @@ static void b43_add_dynamic_debug(struct b43_wldev *dev)
801 add_dyn_dbg("debug_pwork_fast", B43_DBG_PWORK_FAST, 0); 801 add_dyn_dbg("debug_pwork_fast", B43_DBG_PWORK_FAST, 0);
802 add_dyn_dbg("debug_pwork_stop", B43_DBG_PWORK_STOP, 0); 802 add_dyn_dbg("debug_pwork_stop", B43_DBG_PWORK_STOP, 0);
803 add_dyn_dbg("debug_lo", B43_DBG_LO, 0); 803 add_dyn_dbg("debug_lo", B43_DBG_LO, 0);
804 add_dyn_dbg("debug_firmware", B43_DBG_FIRMWARE, 0);
804 805
805#undef add_dyn_dbg 806#undef add_dyn_dbg
806} 807}
diff --git a/drivers/net/wireless/b43/debugfs.h b/drivers/net/wireless/b43/debugfs.h
index 132c81f2f98d..22ffd02ba554 100644
--- a/drivers/net/wireless/b43/debugfs.h
+++ b/drivers/net/wireless/b43/debugfs.h
@@ -11,6 +11,7 @@ enum b43_dyndbg { /* Dynamic debugging features */
11 B43_DBG_PWORK_FAST, 11 B43_DBG_PWORK_FAST,
12 B43_DBG_PWORK_STOP, 12 B43_DBG_PWORK_STOP,
13 B43_DBG_LO, 13 B43_DBG_LO,
14 B43_DBG_FIRMWARE,
14 __B43_NR_DYNDBG, 15 __B43_NR_DYNDBG,
15}; 16};
16 17
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index c14d522d69e3..82cca19137f4 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -2487,6 +2487,19 @@ static void b43_gpio_cleanup(struct b43_wldev *dev)
2487/* http://bcm-specs.sipsolutions.net/EnableMac */ 2487/* http://bcm-specs.sipsolutions.net/EnableMac */
2488void b43_mac_enable(struct b43_wldev *dev) 2488void b43_mac_enable(struct b43_wldev *dev)
2489{ 2489{
2490 if (b43_debug(dev, B43_DBG_FIRMWARE)) {
2491 u16 fwstate;
2492
2493 fwstate = b43_shm_read16(dev, B43_SHM_SHARED,
2494 B43_SHM_SH_UCODESTAT);
2495 if ((fwstate != B43_SHM_SH_UCODESTAT_SUSP) &&
2496 (fwstate != B43_SHM_SH_UCODESTAT_SLEEP)) {
2497 b43err(dev->wl, "b43_mac_enable(): The firmware "
2498 "should be suspended, but current state is %u\n",
2499 fwstate);
2500 }
2501 }
2502
2490 dev->mac_suspended--; 2503 dev->mac_suspended--;
2491 B43_WARN_ON(dev->mac_suspended < 0); 2504 B43_WARN_ON(dev->mac_suspended < 0);
2492 if (dev->mac_suspended == 0) { 2505 if (dev->mac_suspended == 0) {