diff options
Diffstat (limited to 'package/broadcom-wl')
-rw-r--r-- | package/broadcom-wl/files/lib/wifi/broadcom.sh | 5 | ||||
-rw-r--r-- | package/broadcom-wl/patches/913-avoid-dbe-on-ifs_ctl-readw-hack.patch | 12 | ||||
-rw-r--r-- | package/broadcom-wl/src/glue/wl_glue.c | 2 |
3 files changed, 17 insertions, 2 deletions
diff --git a/package/broadcom-wl/files/lib/wifi/broadcom.sh b/package/broadcom-wl/files/lib/wifi/broadcom.sh index 57e11e4b1..72b85aaf8 100644 --- a/package/broadcom-wl/files/lib/wifi/broadcom.sh +++ b/package/broadcom-wl/files/lib/wifi/broadcom.sh @@ -370,12 +370,15 @@ detect_broadcom() { local i=-1 while grep -qs "^ *wl$((++i)):" /proc/net/dev; do + local channel + config_get type wl${i} type [ "$type" = broadcom ] && continue + channel=`wlc ifname wl${i} channel` cat <<EOF config wifi-device wl${i} option type broadcom - option channel 11 + option channel ${channel:-11} # REMOVE THIS LINE TO ENABLE WIFI: option disabled 1 diff --git a/package/broadcom-wl/patches/913-avoid-dbe-on-ifs_ctl-readw-hack.patch b/package/broadcom-wl/patches/913-avoid-dbe-on-ifs_ctl-readw-hack.patch new file mode 100644 index 000000000..412bce92c --- /dev/null +++ b/package/broadcom-wl/patches/913-avoid-dbe-on-ifs_ctl-readw-hack.patch @@ -0,0 +1,12 @@ +--- a/driver/linux_osl.c ++++ b/driver/linux_osl.c +@@ -723,6 +723,9 @@ osl_readl(volatile uint32 *r) + uint16 + osl_readw(volatile uint16 *r) + { ++ uint32 addr = (uintptr)r & 0xffff3fff; ++ if (addr == 0xa8000688) /* ifs_ctl */ ++ readl(r); + return (readw(r)); + } + diff --git a/package/broadcom-wl/src/glue/wl_glue.c b/package/broadcom-wl/src/glue/wl_glue.c index bf009e5bb..fc94ac0b2 100644 --- a/package/broadcom-wl/src/glue/wl_glue.c +++ b/package/broadcom-wl/src/glue/wl_glue.c @@ -108,7 +108,7 @@ static int wl_glue_bcma_probe(struct bcma_device *dev) * 0x1000 = BCMA_CORE_SIZE */ - wldev = attach_cb(dev->id.manuf, dev->id.id, (ulong)dev->io_addr, dev, dev->irq); + wldev = attach_cb(dev->id.manuf, dev->id.id, (ulong)dev->addr, dev, dev->irq); if (!wldev) { |