package/broadcom-wl/Makefile |
9 | 9 | include $(INCLUDE_DIR)/kernel.mk |
10 | 10 | |
11 | 11 | PKG_NAME:=broadcom-wl |
12 | | PKG_VERSION:=5.10.56.27.1 |
| 12 | PKG_VERSION:=5.10.56.27.3 |
13 | 13 | PKG_RELEASE:=1 |
14 | 14 | |
15 | 15 | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(ARCH).tar.bz2 |
16 | 16 | PKG_SOURCE_URL:=http://downloads.openwrt.org/sources |
17 | 17 | |
18 | | PKG_MD5SUM.mipsel:=9f42cfa9c46ee1b0e04dc2d3ab9bc8cd |
19 | | PKG_MD5SUM.mips:=9dcc902af0fcac5f34b6656982e82c21 |
| 18 | PKG_MD5SUM.mipsel:=800365b5e5088d5368f8b1e65df8ba8a |
| 19 | PKG_MD5SUM.mips:=7a0425e9fb1e03c136564c99daf1ce16 |
20 | 20 | PKG_MD5SUM:=$(PKG_MD5SUM.$(ARCH)) |
21 | 21 | |
22 | 22 | include $(INCLUDE_DIR)/package.mk |
package/broadcom-wl/patches/910-fallback-sprom.patch |
| 1 | --- a/driver/bcmsrom.c |
| 2 | @@ -39,6 +39,10 @@ |
| 3 | #include <sbsdpcmdev.h> |
| 4 | #endif |
| 5 | |
| 6 | +#ifdef CONFIG_SSB |
| 7 | +#include <linux/ssb/ssb.h> |
| 8 | +#endif |
| 9 | + |
| 10 | #ifdef WLTEST |
| 11 | #include <sbsprom.h> |
| 12 | #endif /* WLTEST */ |
| 13 | @@ -2058,6 +2062,11 @@ BCMATTACHFN(initvars_srom_pci)(si_t *sih |
| 14 | bool flash = FALSE; |
| 15 | int err = 0; |
| 16 | |
| 17 | +#ifdef CONFIG_SSB |
| 18 | + struct ssb_sprom *fbrom; |
| 19 | + char eabuf[18]; |
| 20 | +#endif |
| 21 | + |
| 22 | /* |
| 23 | * Apply CRC over SROM content regardless SROM is present or not, |
| 24 | * and use variable <devpath>sromrev's existance in flash to decide |
| 25 | @@ -2120,6 +2129,62 @@ BCMATTACHFN(initvars_srom_pci)(si_t *sih |
| 26 | goto varscont; |
| 27 | } |
| 28 | |
| 29 | +#ifdef CONFIG_SSB |
| 30 | + base = vp = MALLOC(osh, MAXSZ_NVRAM_VARS); |
| 31 | + |
| 32 | + if( base != NULL ) |
| 33 | + { |
| 34 | + varbuf_init(&b, base, MAXSZ_NVRAM_VARS); |
| 35 | + |
| 36 | + /* Try to load ssb fallback sprom */ |
| 37 | + if ((fbrom = ssb_get_fallback_sprom()) != NULL) |
| 38 | + { |
| 39 | + printk("Got version %i SPROM from SSB\n", fbrom->revision); |
| 40 | + |
| 41 | + varbuf_append(&b, vstr_sromrev, fbrom->revision); |
| 42 | + varbuf_append(&b, vstr_boardrev, fbrom->board_rev); |
| 43 | + |
| 44 | + /* ToDo: map fbrom->country_code */ |
| 45 | + varbuf_append(&b, vstr_noccode); |
| 46 | + |
| 47 | + varbuf_append(&b, vstr_aa2g, fbrom->ant_available_bg); |
| 48 | + |
| 49 | + varbuf_append(&b, vstr_pa0b[0], fbrom->pa0b0); |
| 50 | + varbuf_append(&b, vstr_pa1b[0], fbrom->pa1b0); |
| 51 | + varbuf_append(&b, vstr_pa0b[1], fbrom->pa0b1); |
| 52 | + varbuf_append(&b, vstr_pa1b[1], fbrom->pa1b1); |
| 53 | + varbuf_append(&b, vstr_pa0b[2], fbrom->pa0b2); |
| 54 | + varbuf_append(&b, vstr_pa1b[2], fbrom->pa1b2); |
| 55 | + |
| 56 | + varbuf_append(&b, vstr_pa0maxpwr, fbrom->maxpwr_bg); |
| 57 | + varbuf_append(&b, vstr_pa0itssit, fbrom->itssi_bg); |
| 58 | + |
| 59 | + varbuf_append(&b, vstr_boardflags, (fbrom->boardflags_hi << 16) | fbrom->boardflags_lo); |
| 60 | + varbuf_append(&b, vstr_boardflags2, (fbrom->boardflags2_hi << 16) | fbrom->boardflags2_lo); |
| 61 | + |
| 62 | + snprintf(eabuf, sizeof(eabuf), "%02x:%02x:%02x:%02x:%02x:%02x", |
| 63 | + fbrom->il0mac[0], fbrom->il0mac[1], fbrom->il0mac[2], |
| 64 | + fbrom->il0mac[3], fbrom->il0mac[4], fbrom->il0mac[5] |
| 65 | + ); |
| 66 | + |
| 67 | + varbuf_append(&b, vstr_macaddr, eabuf); |
| 68 | + } |
| 69 | + |
| 70 | + /* final nullbyte terminator */ |
| 71 | + ASSERT(b.size >= 1); |
| 72 | + vp = b.buf; |
| 73 | + *vp++ = '\0'; |
| 74 | + |
| 75 | + ASSERT((vp - base) <= MAXSZ_NVRAM_VARS); |
| 76 | + goto varsdone; |
| 77 | + } |
| 78 | + else |
| 79 | + { |
| 80 | + err = -2; |
| 81 | + goto errout; |
| 82 | + } |
| 83 | +#endif |
| 84 | + |
| 85 | BS_ERROR(("SROM CRC Error\n")); |
| 86 | |
| 87 | #if defined(WLTEST) |