summaryrefslogtreecommitdiffstats
path: root/package/broadcom-wl
diff options
context:
space:
mode:
Diffstat (limited to 'package/broadcom-wl')
-rw-r--r--package/broadcom-wl/files/lib/wifi/broadcom.sh5
-rw-r--r--package/broadcom-wl/patches/913-avoid-dbe-on-ifs_ctl-readw-hack.patch12
-rw-r--r--package/broadcom-wl/src/glue/wl_glue.c2
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)
{