Yuval,

Michael Buesch wrote:
> 
> Can you dump PCI config space and SSB registers (TMSLOW, maybe others, too).
> It looks like a random bus write disabled the device.

Please incorporate the following patch and run your system. In addition, run the
following command when the wireless is working and after it fails:

sudo lspci -d 14e4:4312 -x

Post the results of the above commands and any entries in /var/log/messages that
dump registers. They should all be prefaced with ****


Index: linux-2.6/drivers/net/wireless/b43/phy_common.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/b43/phy_common.c
+++ linux-2.6/drivers/net/wireless/b43/phy_common.c
@@ -133,6 +133,11 @@ void b43_radio_lock(struct b43_wldev *de

        macctl = b43_read32(dev, B43_MMIO_MACCTL);
        B43_WARN_ON(macctl & B43_MACCTL_RADIOLOCK);
+       if (macctl & B43_MACCTL_RADIOLOCK) {
+               printk(KERN_INFO "****** b43: B43_MMIO_MACCTL 0x%X\n", macctl);
+               printk(KERN_INFO "****** b43: SSB_TMSLOW 0x%X\n",
+                       ssb_read32(dev->dev, SSB_TMSLOW));
+       }
        macctl |= B43_MACCTL_RADIOLOCK;
        b43_write32(dev, B43_MMIO_MACCTL, macctl);
        /* Commit the write and wait for the device
@@ -150,6 +155,11 @@ void b43_radio_unlock(struct b43_wldev *
        /* unlock */
        macctl = b43_read32(dev, B43_MMIO_MACCTL);
        B43_WARN_ON(!(macctl & B43_MACCTL_RADIOLOCK));
+       if (macctl & B43_MACCTL_RADIOLOCK) {
+               printk(KERN_INFO "****** b43: B43_MMIO_MACCTL 0x%X\n", macctl);
+               printk(KERN_INFO "****** b43: SSB_TMSLOW 0x%X\n",
+                       ssb_read32(dev->dev, SSB_TMSLOW));
+       }
        macctl &= ~B43_MACCTL_RADIOLOCK;
        b43_write32(dev, B43_MMIO_MACCTL, macctl);
 }
Index: linux-2.6/drivers/net/wireless/b43/rfkill.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/b43/rfkill.c
+++ linux-2.6/drivers/net/wireless/b43/rfkill.c
@@ -63,6 +63,8 @@ static void b43_rfkill_poll(struct input
                report_change = 1;
                b43info(wl, "Radio hardware status changed to %s\n",
                        enabled ? "ENABLED" : "DISABLED");
+               b43info(wl, "******** B43_B43_MMIO_RADIO_HWENABLED_HI 0x%X\n",
+                       b43_read32(dev, B43_MMIO_RADIO_HWENABLED_HI));
        }
        mutex_unlock(&wl->mutex);



_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to