mac80211: update brcmsmac patches
SVN-Revision: 32671
This commit is contained in:
parent
45d55161a6
commit
5e4100bcf9
13 changed files with 1213 additions and 760 deletions
1193
package/mac80211/patches/840-brcmsmac-backport.patch
Normal file
1193
package/mac80211/patches/840-brcmsmac-backport.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,31 +0,0 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
@@ -320,9 +320,7 @@
|
||||
#define IS_SIM(chippkg) \
|
||||
((chippkg == HDLSIM_PKG_ID) || (chippkg == HWSIM_PKG_ID))
|
||||
|
||||
-#define PCIE(sih) (ai_get_buscoretype(sih) == PCIE_CORE_ID)
|
||||
-
|
||||
-#define PCI_FORCEHT(sih) (PCIE(sih) && (ai_get_chip_id(sih) == BCM4716_CHIP_ID))
|
||||
+#define PCI_FORCEHT(sih) ((ai_get_buscoretype(sih) == PCIE_CORE_ID) && (ai_get_chip_id(sih) == BCM4716_CHIP_ID))
|
||||
|
||||
#ifdef DEBUG
|
||||
#define SI_MSG(fmt, ...) pr_debug(fmt, ##__VA_ARGS__)
|
||||
@@ -776,7 +774,7 @@ void ai_pci_up(struct si_pub *sih)
|
||||
bcma_core_set_clockmode(cc, BCMA_CLKMODE_FAST);
|
||||
}
|
||||
|
||||
- if (PCIE(sih))
|
||||
+ if (sii->icbus->hosttype == BCMA_HOSTTYPE_PCI)
|
||||
bcma_core_pci_extend_L1timer(&sii->icbus->drv_pci, true);
|
||||
}
|
||||
|
||||
@@ -794,7 +792,7 @@ void ai_pci_down(struct si_pub *sih)
|
||||
bcma_core_set_clockmode(cc, BCMA_CLKMODE_DYNAMIC);
|
||||
}
|
||||
|
||||
- if (PCIE(sih))
|
||||
+ if (sii->icbus->hosttype == BCMA_HOSTTYPE_PCI)
|
||||
bcma_core_pci_extend_L1timer(&sii->icbus->drv_pci, false);
|
||||
}
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
@@ -320,8 +320,6 @@
|
||||
#define IS_SIM(chippkg) \
|
||||
((chippkg == HDLSIM_PKG_ID) || (chippkg == HWSIM_PKG_ID))
|
||||
|
||||
-#define PCI_FORCEHT(sih) ((ai_get_buscoretype(sih) == PCIE_CORE_ID) && (ai_get_chip_id(sih) == BCM4716_CHIP_ID))
|
||||
-
|
||||
#ifdef DEBUG
|
||||
#define SI_MSG(fmt, ...) pr_debug(fmt, ##__VA_ARGS__)
|
||||
#else
|
||||
@@ -754,9 +752,6 @@ bool ai_clkctl_cc(struct si_pub *sih, en
|
||||
|
||||
sii = (struct si_info *)sih;
|
||||
|
||||
- if (PCI_FORCEHT(sih))
|
||||
- return mode == BCMA_CLKMODE_FAST;
|
||||
-
|
||||
cc = ai_findcore(&sii->pub, BCMA_CORE_CHIPCOMMON, 0);
|
||||
bcma_core_set_clockmode(cc, mode);
|
||||
return mode == BCMA_CLKMODE_FAST;
|
||||
@@ -765,15 +760,9 @@ bool ai_clkctl_cc(struct si_pub *sih, en
|
||||
void ai_pci_up(struct si_pub *sih)
|
||||
{
|
||||
struct si_info *sii;
|
||||
- struct bcma_device *cc;
|
||||
|
||||
sii = (struct si_info *)sih;
|
||||
|
||||
- if (PCI_FORCEHT(sih)) {
|
||||
- cc = ai_findcore(&sii->pub, BCMA_CORE_CHIPCOMMON, 0);
|
||||
- bcma_core_set_clockmode(cc, BCMA_CLKMODE_FAST);
|
||||
- }
|
||||
-
|
||||
if (sii->icbus->hosttype == BCMA_HOSTTYPE_PCI)
|
||||
bcma_core_pci_extend_L1timer(&sii->icbus->drv_pci, true);
|
||||
}
|
||||
@@ -782,16 +771,9 @@ void ai_pci_up(struct si_pub *sih)
|
||||
void ai_pci_down(struct si_pub *sih)
|
||||
{
|
||||
struct si_info *sii;
|
||||
- struct bcma_device *cc;
|
||||
|
||||
sii = (struct si_info *)sih;
|
||||
|
||||
- /* release FORCEHT since chip is going to "down" state */
|
||||
- if (PCI_FORCEHT(sih)) {
|
||||
- cc = ai_findcore(&sii->pub, BCMA_CORE_CHIPCOMMON, 0);
|
||||
- bcma_core_set_clockmode(cc, BCMA_CLKMODE_DYNAMIC);
|
||||
- }
|
||||
-
|
||||
if (sii->icbus->hosttype == BCMA_HOSTTYPE_PCI)
|
||||
bcma_core_pci_extend_L1timer(&sii->icbus->drv_pci, false);
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
@@ -471,9 +471,6 @@ ai_buscore_setup(struct si_info *sii, st
|
||||
sii->pub.pmurev = sii->pub.pmucaps & PCAP_REV_MASK;
|
||||
}
|
||||
|
||||
- /* figure out buscore */
|
||||
- sii->buscore = ai_findcore(&sii->pub, PCIE_CORE_ID, 0);
|
||||
-
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -806,15 +803,3 @@ bool ai_deviceremoved(struct si_pub *sih
|
||||
|
||||
return false;
|
||||
}
|
||||
-
|
||||
-uint ai_get_buscoretype(struct si_pub *sih)
|
||||
-{
|
||||
- struct si_info *sii = (struct si_info *)sih;
|
||||
- return sii->buscore->id.id;
|
||||
-}
|
||||
-
|
||||
-uint ai_get_buscorerev(struct si_pub *sih)
|
||||
-{
|
||||
- struct si_info *sii = (struct si_info *)sih;
|
||||
- return sii->buscore->id.rev;
|
||||
-}
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h
|
||||
@@ -168,7 +168,6 @@ struct si_info {
|
||||
struct si_pub pub; /* back plane public state (must be first) */
|
||||
struct bcma_bus *icbus; /* handle to soc interconnect bus */
|
||||
struct pci_dev *pcibus; /* handle to pci bus */
|
||||
- struct bcma_device *buscore;
|
||||
|
||||
u32 chipst; /* chip status */
|
||||
};
|
||||
@@ -202,9 +201,6 @@ extern void ai_pci_up(struct si_pub *sih
|
||||
/* Enable Ex-PA for 4313 */
|
||||
extern void ai_epa_4313war(struct si_pub *sih);
|
||||
|
||||
-extern uint ai_get_buscoretype(struct si_pub *sih);
|
||||
-extern uint ai_get_buscorerev(struct si_pub *sih);
|
||||
-
|
||||
static inline u32 ai_get_cccaps(struct si_pub *sih)
|
||||
{
|
||||
return sih->cccaps;
|
|
@ -1,74 +0,0 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
@@ -584,7 +584,7 @@ void ai_detach(struct si_pub *sih)
|
||||
struct si_pub *si_local = NULL;
|
||||
memcpy(&si_local, &sih, sizeof(struct si_pub **));
|
||||
|
||||
- sii = (struct si_info *)sih;
|
||||
+ sii = container_of(sih, struct si_info, pub);
|
||||
|
||||
if (sii == NULL)
|
||||
return;
|
||||
@@ -599,7 +599,7 @@ struct bcma_device *ai_findcore(struct s
|
||||
struct si_info *sii;
|
||||
uint found;
|
||||
|
||||
- sii = (struct si_info *)sih;
|
||||
+ sii = container_of(sih, struct si_info, pub);
|
||||
|
||||
found = 0;
|
||||
|
||||
@@ -622,7 +622,7 @@ uint ai_cc_reg(struct si_pub *sih, uint
|
||||
u32 w;
|
||||
struct si_info *sii;
|
||||
|
||||
- sii = (struct si_info *)sih;
|
||||
+ sii = container_of(sih, struct si_info, pub);
|
||||
cc = sii->icbus->drv_cc.core;
|
||||
|
||||
/* mask and set */
|
||||
@@ -715,7 +715,7 @@ u16 ai_clkctl_fast_pwrup_delay(struct si
|
||||
uint slowminfreq;
|
||||
u16 fpdelay;
|
||||
|
||||
- sii = (struct si_info *)sih;
|
||||
+ sii = container_of(sih, struct si_info, pub);
|
||||
if (ai_get_cccaps(sih) & CC_CAP_PMU) {
|
||||
fpdelay = si_pmu_fast_pwrup_delay(sih);
|
||||
return fpdelay;
|
||||
@@ -747,7 +747,7 @@ bool ai_clkctl_cc(struct si_pub *sih, en
|
||||
struct si_info *sii;
|
||||
struct bcma_device *cc;
|
||||
|
||||
- sii = (struct si_info *)sih;
|
||||
+ sii = container_of(sih, struct si_info, pub);
|
||||
|
||||
cc = ai_findcore(&sii->pub, BCMA_CORE_CHIPCOMMON, 0);
|
||||
bcma_core_set_clockmode(cc, mode);
|
||||
@@ -758,7 +758,7 @@ void ai_pci_up(struct si_pub *sih)
|
||||
{
|
||||
struct si_info *sii;
|
||||
|
||||
- sii = (struct si_info *)sih;
|
||||
+ sii = container_of(sih, struct si_info, pub);
|
||||
|
||||
if (sii->icbus->hosttype == BCMA_HOSTTYPE_PCI)
|
||||
bcma_core_pci_extend_L1timer(&sii->icbus->drv_pci, true);
|
||||
@@ -769,7 +769,7 @@ void ai_pci_down(struct si_pub *sih)
|
||||
{
|
||||
struct si_info *sii;
|
||||
|
||||
- sii = (struct si_info *)sih;
|
||||
+ sii = container_of(sih, struct si_info, pub);
|
||||
|
||||
if (sii->icbus->hosttype == BCMA_HOSTTYPE_PCI)
|
||||
bcma_core_pci_extend_L1timer(&sii->icbus->drv_pci, false);
|
||||
@@ -792,7 +792,7 @@ bool ai_deviceremoved(struct si_pub *sih
|
||||
u32 w;
|
||||
struct si_info *sii;
|
||||
|
||||
- sii = (struct si_info *)sih;
|
||||
+ sii = container_of(sih, struct si_info, pub);
|
||||
|
||||
if (sii->icbus->hosttype != BCMA_HOSTTYPE_PCI)
|
||||
return false;
|
|
@ -1,145 +0,0 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
|
||||
@@ -592,27 +592,6 @@ void ai_detach(struct si_pub *sih)
|
||||
kfree(sii);
|
||||
}
|
||||
|
||||
-/* return index of coreid or BADIDX if not found */
|
||||
-struct bcma_device *ai_findcore(struct si_pub *sih, u16 coreid, u16 coreunit)
|
||||
-{
|
||||
- struct bcma_device *core;
|
||||
- struct si_info *sii;
|
||||
- uint found;
|
||||
-
|
||||
- sii = container_of(sih, struct si_info, pub);
|
||||
-
|
||||
- found = 0;
|
||||
-
|
||||
- list_for_each_entry(core, &sii->icbus->cores, list)
|
||||
- if (core->id.id == coreid) {
|
||||
- if (found == coreunit)
|
||||
- return core;
|
||||
- found++;
|
||||
- }
|
||||
-
|
||||
- return NULL;
|
||||
-}
|
||||
-
|
||||
/*
|
||||
* read/modify chipcommon core register.
|
||||
*/
|
||||
@@ -688,12 +667,13 @@ ai_clkctl_setdelay(struct si_pub *sih, s
|
||||
/* initialize power control delay registers */
|
||||
void ai_clkctl_init(struct si_pub *sih)
|
||||
{
|
||||
+ struct si_info *sii = container_of(sih, struct si_info, pub);
|
||||
struct bcma_device *cc;
|
||||
|
||||
if (!(ai_get_cccaps(sih) & CC_CAP_PWR_CTL))
|
||||
return;
|
||||
|
||||
- cc = ai_findcore(sih, BCMA_CORE_CHIPCOMMON, 0);
|
||||
+ cc = sii->icbus->drv_cc.core;;
|
||||
if (cc == NULL)
|
||||
return;
|
||||
|
||||
@@ -725,7 +705,7 @@ u16 ai_clkctl_fast_pwrup_delay(struct si
|
||||
return 0;
|
||||
|
||||
fpdelay = 0;
|
||||
- cc = ai_findcore(sih, CC_CORE_ID, 0);
|
||||
+ cc = sii->icbus->drv_cc.core;;
|
||||
if (cc) {
|
||||
slowminfreq = ai_slowclk_freq(sih, false, cc);
|
||||
fpdelay = (((bcma_read32(cc, CHIPCREGOFFS(pll_on_delay)) + 2)
|
||||
@@ -749,7 +729,7 @@ bool ai_clkctl_cc(struct si_pub *sih, en
|
||||
|
||||
sii = container_of(sih, struct si_info, pub);
|
||||
|
||||
- cc = ai_findcore(&sii->pub, BCMA_CORE_CHIPCOMMON, 0);
|
||||
+ cc = sii->icbus->drv_cc.core;;
|
||||
bcma_core_set_clockmode(cc, mode);
|
||||
return mode == BCMA_CLKMODE_FAST;
|
||||
}
|
||||
@@ -778,9 +758,10 @@ void ai_pci_down(struct si_pub *sih)
|
||||
/* Enable BT-COEX & Ex-PA for 4313 */
|
||||
void ai_epa_4313war(struct si_pub *sih)
|
||||
{
|
||||
+ struct si_info *sii =container_of(sih, struct si_info, pub);
|
||||
struct bcma_device *cc;
|
||||
|
||||
- cc = ai_findcore(sih, CC_CORE_ID, 0);
|
||||
+ cc = sii->icbus->drv_cc.core;
|
||||
|
||||
/* EPA Fix */
|
||||
bcma_set32(cc, CHIPCREGOFFS(gpiocontrol), GPIO_CTRL_EPA_EN_MASK);
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h
|
||||
@@ -182,8 +182,6 @@ struct si_info {
|
||||
|
||||
|
||||
/* AMBA Interconnect exported externs */
|
||||
-extern struct bcma_device *ai_findcore(struct si_pub *sih,
|
||||
- u16 coreid, u16 coreunit);
|
||||
extern u32 ai_core_cflags(struct bcma_device *core, u32 mask, u32 val);
|
||||
|
||||
/* === exported functions === */
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/pmu.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/pmu.c
|
||||
@@ -142,10 +142,11 @@ static void si_pmu_res_masks(struct si_p
|
||||
void si_pmu_spuravoid_pllupdate(struct si_pub *sih, u8 spuravoid)
|
||||
{
|
||||
u32 tmp = 0;
|
||||
+ struct si_info *sii = container_of(sih, struct si_info, pub);
|
||||
struct bcma_device *core;
|
||||
|
||||
/* switch to chipc */
|
||||
- core = ai_findcore(sih, BCMA_CORE_CHIPCOMMON, 0);
|
||||
+ core = sii->icbus->drv_cc.core;
|
||||
|
||||
switch (ai_get_chip_id(sih)) {
|
||||
case BCM43224_CHIP_ID:
|
||||
@@ -286,10 +287,11 @@ u32 si_pmu_alp_clock(struct si_pub *sih)
|
||||
/* initialize PMU */
|
||||
void si_pmu_init(struct si_pub *sih)
|
||||
{
|
||||
+ struct si_info *sii = container_of(sih, struct si_info, pub);
|
||||
struct bcma_device *core;
|
||||
|
||||
/* select chipc */
|
||||
- core = ai_findcore(sih, BCMA_CORE_CHIPCOMMON, 0);
|
||||
+ core = sii->icbus->drv_cc.core;
|
||||
|
||||
if (ai_get_pmurev(sih) == 1)
|
||||
bcma_mask32(core, CHIPCREGOFFS(pmucontrol),
|
||||
@@ -301,11 +303,12 @@ void si_pmu_init(struct si_pub *sih)
|
||||
/* initialize PMU resources */
|
||||
void si_pmu_res_init(struct si_pub *sih)
|
||||
{
|
||||
+ struct si_info *sii = container_of(sih, struct si_info, pub);
|
||||
struct bcma_device *core;
|
||||
u32 min_mask = 0, max_mask = 0;
|
||||
|
||||
/* select to chipc */
|
||||
- core = ai_findcore(sih, BCMA_CORE_CHIPCOMMON, 0);
|
||||
+ core = sii->icbus->drv_cc.core;
|
||||
|
||||
/* Determine min/max rsrc masks */
|
||||
si_pmu_res_masks(sih, &min_mask, &max_mask);
|
||||
@@ -328,6 +331,7 @@ void si_pmu_res_init(struct si_pub *sih)
|
||||
|
||||
u32 si_pmu_measure_alpclk(struct si_pub *sih)
|
||||
{
|
||||
+ struct si_info *sii = container_of(sih, struct si_info, pub);
|
||||
struct bcma_device *core;
|
||||
u32 alp_khz;
|
||||
|
||||
@@ -335,7 +339,7 @@ u32 si_pmu_measure_alpclk(struct si_pub
|
||||
return 0;
|
||||
|
||||
/* Remember original core before switch to chipc */
|
||||
- core = ai_findcore(sih, BCMA_CORE_CHIPCOMMON, 0);
|
||||
+ core = sii->icbus->drv_cc.core;
|
||||
|
||||
if (bcma_read32(core, CHIPCREGOFFS(pmustatus)) & PST_EXTLPOAVAIL) {
|
||||
u32 ilp_ctr, alp_hz;
|
|
@ -1,86 +0,0 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/dma.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/dma.c
|
||||
@@ -640,10 +640,10 @@ struct dma_pub *dma_attach(char *name, s
|
||||
di->dataoffsetlow = di->ddoffsetlow;
|
||||
di->dataoffsethigh = di->ddoffsethigh;
|
||||
/* WAR64450 : DMACtl.Addr ext fields are not supported in SDIOD core. */
|
||||
- if ((core->id.id == SDIOD_CORE_ID)
|
||||
+ if ((core->id.id == BCMA_CORE_SDIO_DEV)
|
||||
&& ((rev > 0) && (rev <= 2)))
|
||||
di->addrext = false;
|
||||
- else if ((core->id.id == I2S_CORE_ID) &&
|
||||
+ else if ((core->id.id == BCMA_CORE_I2S) &&
|
||||
((rev == 0) || (rev == 1)))
|
||||
di->addrext = false;
|
||||
else
|
||||
--- a/drivers/net/wireless/brcm80211/include/soc.h
|
||||
+++ b/drivers/net/wireless/brcm80211/include/soc.h
|
||||
@@ -19,68 +19,6 @@
|
||||
|
||||
#define SI_ENUM_BASE 0x18000000 /* Enumeration space base */
|
||||
|
||||
-/* core codes */
|
||||
-#define NODEV_CORE_ID 0x700 /* Invalid coreid */
|
||||
-#define CC_CORE_ID 0x800 /* chipcommon core */
|
||||
-#define ILINE20_CORE_ID 0x801 /* iline20 core */
|
||||
-#define SRAM_CORE_ID 0x802 /* sram core */
|
||||
-#define SDRAM_CORE_ID 0x803 /* sdram core */
|
||||
-#define PCI_CORE_ID 0x804 /* pci core */
|
||||
-#define MIPS_CORE_ID 0x805 /* mips core */
|
||||
-#define ENET_CORE_ID 0x806 /* enet mac core */
|
||||
-#define CODEC_CORE_ID 0x807 /* v90 codec core */
|
||||
-#define USB_CORE_ID 0x808 /* usb 1.1 host/device core */
|
||||
-#define ADSL_CORE_ID 0x809 /* ADSL core */
|
||||
-#define ILINE100_CORE_ID 0x80a /* iline100 core */
|
||||
-#define IPSEC_CORE_ID 0x80b /* ipsec core */
|
||||
-#define UTOPIA_CORE_ID 0x80c /* utopia core */
|
||||
-#define PCMCIA_CORE_ID 0x80d /* pcmcia core */
|
||||
-#define SOCRAM_CORE_ID 0x80e /* internal memory core */
|
||||
-#define MEMC_CORE_ID 0x80f /* memc sdram core */
|
||||
-#define OFDM_CORE_ID 0x810 /* OFDM phy core */
|
||||
-#define EXTIF_CORE_ID 0x811 /* external interface core */
|
||||
-#define D11_CORE_ID 0x812 /* 802.11 MAC core */
|
||||
-#define APHY_CORE_ID 0x813 /* 802.11a phy core */
|
||||
-#define BPHY_CORE_ID 0x814 /* 802.11b phy core */
|
||||
-#define GPHY_CORE_ID 0x815 /* 802.11g phy core */
|
||||
-#define MIPS33_CORE_ID 0x816 /* mips3302 core */
|
||||
-#define USB11H_CORE_ID 0x817 /* usb 1.1 host core */
|
||||
-#define USB11D_CORE_ID 0x818 /* usb 1.1 device core */
|
||||
-#define USB20H_CORE_ID 0x819 /* usb 2.0 host core */
|
||||
-#define USB20D_CORE_ID 0x81a /* usb 2.0 device core */
|
||||
-#define SDIOH_CORE_ID 0x81b /* sdio host core */
|
||||
-#define ROBO_CORE_ID 0x81c /* roboswitch core */
|
||||
-#define ATA100_CORE_ID 0x81d /* parallel ATA core */
|
||||
-#define SATAXOR_CORE_ID 0x81e /* serial ATA & XOR DMA core */
|
||||
-#define GIGETH_CORE_ID 0x81f /* gigabit ethernet core */
|
||||
-#define PCIE_CORE_ID 0x820 /* pci express core */
|
||||
-#define NPHY_CORE_ID 0x821 /* 802.11n 2x2 phy core */
|
||||
-#define SRAMC_CORE_ID 0x822 /* SRAM controller core */
|
||||
-#define MINIMAC_CORE_ID 0x823 /* MINI MAC/phy core */
|
||||
-#define ARM11_CORE_ID 0x824 /* ARM 1176 core */
|
||||
-#define ARM7S_CORE_ID 0x825 /* ARM7tdmi-s core */
|
||||
-#define LPPHY_CORE_ID 0x826 /* 802.11a/b/g phy core */
|
||||
-#define PMU_CORE_ID 0x827 /* PMU core */
|
||||
-#define SSNPHY_CORE_ID 0x828 /* 802.11n single-stream phy core */
|
||||
-#define SDIOD_CORE_ID 0x829 /* SDIO device core */
|
||||
-#define ARMCM3_CORE_ID 0x82a /* ARM Cortex M3 core */
|
||||
-#define HTPHY_CORE_ID 0x82b /* 802.11n 4x4 phy core */
|
||||
-#define MIPS74K_CORE_ID 0x82c /* mips 74k core */
|
||||
-#define GMAC_CORE_ID 0x82d /* Gigabit MAC core */
|
||||
-#define DMEMC_CORE_ID 0x82e /* DDR1/2 memory controller core */
|
||||
-#define PCIERC_CORE_ID 0x82f /* PCIE Root Complex core */
|
||||
-#define OCP_CORE_ID 0x830 /* OCP2OCP bridge core */
|
||||
-#define SC_CORE_ID 0x831 /* shared common core */
|
||||
-#define AHB_CORE_ID 0x832 /* OCP2AHB bridge core */
|
||||
-#define SPIH_CORE_ID 0x833 /* SPI host core */
|
||||
-#define I2S_CORE_ID 0x834 /* I2S core */
|
||||
-#define DMEMS_CORE_ID 0x835 /* SDR/DDR1 memory controller core */
|
||||
-#define DEF_SHIM_COMP 0x837 /* SHIM component in ubus/6362 */
|
||||
-#define OOB_ROUTER_CORE_ID 0x367 /* OOB router core ID */
|
||||
-#define DEF_AI_COMP 0xfff /* Default component, in ai chips it
|
||||
- * maps all unused address ranges
|
||||
- */
|
||||
-
|
||||
/* Common core control flags */
|
||||
#define SICF_BIST_EN 0x8000
|
||||
#define SICF_PME_EN 0x4000
|
|
@ -1,36 +0,0 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -4220,9 +4220,8 @@ static void brcms_c_radio_timer(void *ar
|
||||
}
|
||||
|
||||
/* common low-level watchdog code */
|
||||
-static void brcms_b_watchdog(void *arg)
|
||||
+static void brcms_b_watchdog(struct brcms_c_info *wlc)
|
||||
{
|
||||
- struct brcms_c_info *wlc = (struct brcms_c_info *) arg;
|
||||
struct brcms_hardware *wlc_hw = wlc->hw;
|
||||
|
||||
BCMMSG(wlc->wiphy, "wl%d\n", wlc_hw->unit);
|
||||
@@ -4243,10 +4242,8 @@ static void brcms_b_watchdog(void *arg)
|
||||
}
|
||||
|
||||
/* common watchdog code */
|
||||
-static void brcms_c_watchdog(void *arg)
|
||||
+static void brcms_c_watchdog(struct brcms_c_info *wlc)
|
||||
{
|
||||
- struct brcms_c_info *wlc = (struct brcms_c_info *) arg;
|
||||
-
|
||||
BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit);
|
||||
|
||||
if (!wlc->pub->up)
|
||||
@@ -4286,7 +4283,9 @@ static void brcms_c_watchdog(void *arg)
|
||||
|
||||
static void brcms_c_watchdog_by_timer(void *arg)
|
||||
{
|
||||
- brcms_c_watchdog(arg);
|
||||
+ struct brcms_c_info *wlc = (struct brcms_c_info *) arg;
|
||||
+
|
||||
+ brcms_c_watchdog(wlc);
|
||||
}
|
||||
|
||||
static bool brcms_c_timers_init(struct brcms_c_info *wlc, int unit)
|
|
@ -1,202 +0,0 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -1944,7 +1944,8 @@ static bool brcms_b_radio_read_hwdisable
|
||||
* accesses phyreg throughput mac. This can be skipped since
|
||||
* only mac reg is accessed below
|
||||
*/
|
||||
- flags |= SICF_PCLKE;
|
||||
+ if (D11REV_GE(wlc_hw->corerev, 18))
|
||||
+ flags |= SICF_PCLKE;
|
||||
|
||||
/*
|
||||
* TODO: test suspend/resume
|
||||
@@ -2025,7 +2026,8 @@ void brcms_b_corereset(struct brcms_hard
|
||||
* phyreg throughput mac, AND phy_reset is skipped at early stage when
|
||||
* band->pi is invalid. need to enable PHY CLK
|
||||
*/
|
||||
- flags |= SICF_PCLKE;
|
||||
+ if (D11REV_GE(wlc_hw->corerev, 18))
|
||||
+ flags |= SICF_PCLKE;
|
||||
|
||||
/*
|
||||
* reset the core
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
|
||||
@@ -17895,6 +17895,9 @@ static u32 *wlc_phy_get_ipa_gaintbl_nphy
|
||||
nphy_tpc_txgain_ipa_2g_2057rev7;
|
||||
} else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
|
||||
tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
|
||||
+ if (pi->sh->chip == BCM47162_CHIP_ID) {
|
||||
+ tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
|
||||
+ }
|
||||
} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
|
||||
tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
|
||||
} else {
|
||||
@@ -19256,8 +19259,14 @@ static void wlc_phy_spurwar_nphy(struct
|
||||
case 38:
|
||||
case 102:
|
||||
case 118:
|
||||
- nphy_adj_tone_id_buf[0] = 0;
|
||||
- nphy_adj_noise_var_buf[0] = 0x0;
|
||||
+ if ((pi->sh->chip == BCM4716_CHIP_ID) &&
|
||||
+ (pi->sh->chippkg == BCM4717_PKG_ID)) {
|
||||
+ nphy_adj_tone_id_buf[0] = 32;
|
||||
+ nphy_adj_noise_var_buf[0] = 0x21f;
|
||||
+ } else {
|
||||
+ nphy_adj_tone_id_buf[0] = 0;
|
||||
+ nphy_adj_noise_var_buf[0] = 0x0;
|
||||
+ }
|
||||
break;
|
||||
case 134:
|
||||
nphy_adj_tone_id_buf[0] = 32;
|
||||
@@ -20697,12 +20706,22 @@ wlc_phy_chanspec_radio2056_setup(struct
|
||||
write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
|
||||
RADIO_2056_SYN, 0x1f);
|
||||
|
||||
- write_radio_reg(pi,
|
||||
- RADIO_2056_SYN_PLL_LOOPFILTER4 |
|
||||
- RADIO_2056_SYN, 0xb);
|
||||
- write_radio_reg(pi,
|
||||
- RADIO_2056_SYN_PLL_CP2 |
|
||||
- RADIO_2056_SYN, 0x14);
|
||||
+ if ((pi->sh->chip == BCM4716_CHIP_ID) ||
|
||||
+ (pi->sh->chip == BCM47162_CHIP_ID)) {
|
||||
+ write_radio_reg(pi,
|
||||
+ RADIO_2056_SYN_PLL_LOOPFILTER4 |
|
||||
+ RADIO_2056_SYN, 0x14);
|
||||
+ write_radio_reg(pi,
|
||||
+ RADIO_2056_SYN_PLL_CP2 |
|
||||
+ RADIO_2056_SYN, 0x00);
|
||||
+ } else {
|
||||
+ write_radio_reg(pi,
|
||||
+ RADIO_2056_SYN_PLL_LOOPFILTER4 |
|
||||
+ RADIO_2056_SYN, 0xb);
|
||||
+ write_radio_reg(pi,
|
||||
+ RADIO_2056_SYN_PLL_CP2 |
|
||||
+ RADIO_2056_SYN, 0x14);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20749,24 +20768,33 @@ wlc_phy_chanspec_radio2056_setup(struct
|
||||
WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
|
||||
PADG_IDAC, 0xcc);
|
||||
|
||||
- bias = 0x25;
|
||||
- cascbias = 0x20;
|
||||
+ if ((pi->sh->chip == BCM4716_CHIP_ID) ||
|
||||
+ (pi->sh->chip ==
|
||||
+ BCM47162_CHIP_ID)) {
|
||||
+ bias = 0x40;
|
||||
+ cascbias = 0x45;
|
||||
+ pag_boost_tune = 0x5;
|
||||
+ pgag_boost_tune = 0x33;
|
||||
+ padg_boost_tune = 0x77;
|
||||
+ mixg_boost_tune = 0x55;
|
||||
+ } else {
|
||||
+ bias = 0x25;
|
||||
+ cascbias = 0x20;
|
||||
|
||||
- if ((pi->sh->chip ==
|
||||
- BCM43224_CHIP_ID)
|
||||
- || (pi->sh->chip ==
|
||||
- BCM43225_CHIP_ID)) {
|
||||
- if (pi->sh->chippkg ==
|
||||
- BCM43224_FAB_SMIC) {
|
||||
- bias = 0x2a;
|
||||
- cascbias = 0x38;
|
||||
+ if ((pi->sh->chip == BCM43224_CHIP_ID)
|
||||
+ || (pi->sh->chip == BCM43225_CHIP_ID)) {
|
||||
+ if (pi->sh->chippkg ==
|
||||
+ BCM43224_FAB_SMIC) {
|
||||
+ bias = 0x2a;
|
||||
+ cascbias = 0x38;
|
||||
+ }
|
||||
}
|
||||
- }
|
||||
|
||||
- pag_boost_tune = 0x4;
|
||||
- pgag_boost_tune = 0x03;
|
||||
- padg_boost_tune = 0x77;
|
||||
- mixg_boost_tune = 0x65;
|
||||
+ pag_boost_tune = 0x4;
|
||||
+ pgag_boost_tune = 0x03;
|
||||
+ padg_boost_tune = 0x77;
|
||||
+ mixg_boost_tune = 0x65;
|
||||
+ }
|
||||
|
||||
WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
|
||||
INTPAG_IMAIN_STAT, bias);
|
||||
@@ -21180,19 +21208,27 @@ wlc_phy_chanspec_nphy_setup(struct brcms
|
||||
} else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
|
||||
if (val == 54)
|
||||
spuravoid = 1;
|
||||
- } else {
|
||||
- if (pi->nphy_aband_spurwar_en &&
|
||||
- ((val == 38) || (val == 102)
|
||||
- || (val == 118)))
|
||||
+ } else if (pi->nphy_aband_spurwar_en &&
|
||||
+ ((val == 38) || (val == 102) || (val == 118))) {
|
||||
+ if ((pi->sh->chip == BCM4716_CHIP_ID)
|
||||
+ && (pi->sh->chippkg == BCM4717_PKG_ID)) {
|
||||
+ spuravoid = 0;
|
||||
+ } else {
|
||||
spuravoid = 1;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (pi->phy_spuravoid == SPURAVOID_FORCEON)
|
||||
spuravoid = 1;
|
||||
|
||||
- wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
|
||||
- si_pmu_spuravoid_pllupdate(pi->sh->sih, spuravoid);
|
||||
- wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
|
||||
+ if ((pi->sh->chip == BCM4716_CHIP_ID) ||
|
||||
+ (pi->sh->chip == BCM47162_CHIP_ID)) {
|
||||
+ si_pmu_spuravoid_pllupdate(pi->sh->sih, spuravoid);
|
||||
+ } else {
|
||||
+ wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
|
||||
+ si_pmu_spuravoid_pllupdate(pi->sh->sih, spuravoid);
|
||||
+ wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
|
||||
+ }
|
||||
|
||||
if ((pi->sh->chip == BCM43224_CHIP_ID) ||
|
||||
(pi->sh->chip == BCM43225_CHIP_ID)) {
|
||||
@@ -21211,7 +21247,10 @@ wlc_phy_chanspec_nphy_setup(struct brcms
|
||||
}
|
||||
}
|
||||
|
||||
- wlapi_bmac_core_phypll_reset(pi->sh->physhim);
|
||||
+ if (!((pi->sh->chip == BCM4716_CHIP_ID) ||
|
||||
+ (pi->sh->chip == BCM47162_CHIP_ID))) {
|
||||
+ wlapi_bmac_core_phypll_reset(pi->sh->physhim);
|
||||
+ }
|
||||
|
||||
mod_phy_reg(pi, 0x01, (0x1 << 15),
|
||||
((spuravoid > 0) ? (0x1 << 15) : 0));
|
||||
@@ -24925,14 +24964,20 @@ wlc_phy_a2_nphy(struct brcms_phy *pi, st
|
||||
if (txgains->useindex) {
|
||||
phy_a4 = 15 - ((txgains->index) >> 3);
|
||||
if (CHSPEC_IS2G(pi->radio_chanspec)) {
|
||||
- if (NREV_GE(pi->pubpi.phy_rev, 6))
|
||||
+ if (NREV_GE(pi->pubpi.phy_rev, 6)) {
|
||||
phy_a5 = 0x00f7 | (phy_a4 << 8);
|
||||
-
|
||||
- else
|
||||
- if (NREV_IS(pi->pubpi.phy_rev, 5))
|
||||
+ if (pi->sh->chip ==
|
||||
+ BCM47162_CHIP_ID) {
|
||||
+ phy_a5 =
|
||||
+ 0x10f7 | (phy_a4 <<
|
||||
+ 8);
|
||||
+ }
|
||||
+ } else
|
||||
+ if (NREV_IS(pi->pubpi.phy_rev, 5)) {
|
||||
phy_a5 = 0x10f7 | (phy_a4 << 8);
|
||||
- else
|
||||
+ } else {
|
||||
phy_a5 = 0x50f7 | (phy_a4 << 8);
|
||||
+ }
|
||||
} else {
|
||||
phy_a5 = 0x70f7 | (phy_a4 << 8);
|
||||
}
|
|
@ -1,73 +0,0 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -271,7 +271,7 @@ struct brcms_c_bit_desc {
|
||||
*/
|
||||
|
||||
/* Starting corerev for the fifo size table */
|
||||
-#define XMTFIFOTBL_STARTREV 20
|
||||
+#define XMTFIFOTBL_STARTREV 10
|
||||
|
||||
struct d11init {
|
||||
__le16 addr;
|
||||
@@ -335,6 +335,26 @@ const u8 wlc_prio2prec_map[] = {
|
||||
};
|
||||
|
||||
static const u16 xmtfifo_sz[][NFIFO] = {
|
||||
+ /* corerev 10: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 11: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 12: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 13: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 14: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 15: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 16: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 17: 5120, 49152, 49152, 5376, 4352, 1280 */
|
||||
+ {20, 192, 192, 21, 17, 5},
|
||||
+ /* corerev 18: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 19: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
/* corerev 20: 5120, 49152, 49152, 5376, 4352, 1280 */
|
||||
{20, 192, 192, 21, 17, 5},
|
||||
/* corerev 21: 2304, 14848, 5632, 3584, 3584, 1280 */
|
||||
@@ -345,6 +365,18 @@ static const u16 xmtfifo_sz[][NFIFO] = {
|
||||
{20, 192, 192, 21, 17, 5},
|
||||
/* corerev 24: 2304, 14848, 5632, 3584, 3584, 1280 */
|
||||
{9, 58, 22, 14, 14, 5},
|
||||
+ /* corerev 25: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 26: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 27: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 28: 5120, 49152, 49152, 5376, 4352, 1280 */
|
||||
+ {20, 192, 192, 21, 17, 5},
|
||||
+ /* corerev 29: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
+ /* corerev 30: */
|
||||
+ {0, 0, 0, 0, 0, 0},
|
||||
};
|
||||
|
||||
#ifdef DEBUG
|
||||
@@ -4598,8 +4630,15 @@ static int brcms_b_attach(struct brcms_c
|
||||
wlc_hw->machwcap_backup = wlc_hw->machwcap;
|
||||
|
||||
/* init tx fifo size */
|
||||
+ WARN_ON((wlc_hw->corerev - XMTFIFOTBL_STARTREV) < 0 ||
|
||||
+ (wlc_hw->corerev - XMTFIFOTBL_STARTREV) >
|
||||
+ ARRAY_SIZE(xmtfifo_sz));
|
||||
wlc_hw->xmtfifo_sz =
|
||||
xmtfifo_sz[(wlc_hw->corerev - XMTFIFOTBL_STARTREV)];
|
||||
+ pr_err("use fifi: %i, %i, %i, %i, %i, %i\n",
|
||||
+ wlc_hw->xmtfifo_sz[0], wlc_hw->xmtfifo_sz[1],
|
||||
+ wlc_hw->xmtfifo_sz[2], wlc_hw->xmtfifo_sz[3],
|
||||
+ wlc_hw->xmtfifo_sz[4], wlc_hw->xmtfifo_sz[5]);
|
||||
|
||||
/* Get a phy for this band */
|
||||
wlc_hw->band->pi =
|
|
@ -10,7 +10,7 @@
|
|||
BCMA_CORETABLE_END
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -752,7 +752,7 @@ static void brcms_c_ucode_bsinit(struct
|
||||
@@ -734,7 +734,7 @@ static void brcms_c_ucode_bsinit(struct
|
||||
brcms_c_write_mhf(wlc_hw, wlc_hw->band->mhfs);
|
||||
|
||||
/* do band-specific ucode IHR, SHM, and SCR inits */
|
||||
|
@ -19,7 +19,7 @@
|
|||
if (BRCMS_ISNPHY(wlc_hw->band))
|
||||
brcms_c_write_inits(wlc_hw, ucode->d11n0bsinitvals16);
|
||||
else
|
||||
@@ -2277,7 +2277,7 @@ static void brcms_ucode_download(struct
|
||||
@@ -2259,7 +2259,7 @@ static void brcms_ucode_download(struct
|
||||
if (wlc_hw->ucode_loaded)
|
||||
return;
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
|||
if (BRCMS_ISNPHY(wlc_hw->band)) {
|
||||
brcms_ucode_write(wlc_hw, ucode->bcm43xx_16_mimo,
|
||||
ucode->bcm43xx_16_mimosz);
|
||||
@@ -3239,7 +3239,7 @@ static void brcms_b_coreinit(struct brcm
|
||||
@@ -3221,7 +3221,7 @@ static void brcms_b_coreinit(struct brcm
|
||||
|
||||
sflags = bcma_aread32(core, BCMA_IOST);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -4153,6 +4153,7 @@ void brcms_c_wme_setparams(struct brcms_
|
||||
@@ -4135,6 +4135,7 @@ void brcms_c_wme_setparams(struct brcms_
|
||||
M_EDCF_QINFO +
|
||||
wme_ac2fifo[aci] * M_EDCF_QLEN + i,
|
||||
*shm_entry++);
|
||||
|
@ -8,17 +8,17 @@
|
|||
}
|
||||
|
||||
if (suspend) {
|
||||
@@ -4557,7 +4558,8 @@ static int brcms_b_attach(struct brcms_c
|
||||
@@ -4537,7 +4538,8 @@ static int brcms_b_attach(struct brcms_c
|
||||
|
||||
/* check device id(srom, nvram etc.) to set bands */
|
||||
if (wlc_hw->deviceid == BCM43224_D11N_ID ||
|
||||
- wlc_hw->deviceid == BCM43224_D11N_ID_VEN1)
|
||||
+ wlc_hw->deviceid == BCM43224_D11N_ID_VEN1||
|
||||
+ wlc_hw->deviceid == BCM43224_CHIP_ID)
|
||||
+ wlc_hw->deviceid == BCM43224_D11N_ID_VEN1 ||
|
||||
+ wlc_hw->deviceid == BCM43224_CHIP_ID)
|
||||
/* Dualband boards */
|
||||
wlc_hw->_nbands = 2;
|
||||
else
|
||||
@@ -5816,7 +5818,7 @@ bool brcms_c_chipmatch(u16 vendor, u16 d
|
||||
@@ -5797,7 +5799,7 @@ static bool brcms_c_chipmatch_pci(struct
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
MODULE_DEVICE_TABLE(bcma, brcms_coreid_table);
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -752,7 +752,7 @@ static void brcms_c_ucode_bsinit(struct
|
||||
@@ -734,7 +734,7 @@ static void brcms_c_ucode_bsinit(struct
|
||||
brcms_c_write_mhf(wlc_hw, wlc_hw->band->mhfs);
|
||||
|
||||
/* do band-specific ucode IHR, SHM, and SCR inits */
|
||||
|
@ -19,7 +19,7 @@
|
|||
if (BRCMS_ISNPHY(wlc_hw->band))
|
||||
brcms_c_write_inits(wlc_hw, ucode->d11n0bsinitvals16);
|
||||
else
|
||||
@@ -2277,7 +2277,7 @@ static void brcms_ucode_download(struct
|
||||
@@ -2259,7 +2259,7 @@ static void brcms_ucode_download(struct
|
||||
if (wlc_hw->ucode_loaded)
|
||||
return;
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
|||
if (BRCMS_ISNPHY(wlc_hw->band)) {
|
||||
brcms_ucode_write(wlc_hw, ucode->bcm43xx_16_mimo,
|
||||
ucode->bcm43xx_16_mimosz);
|
||||
@@ -3239,7 +3239,7 @@ static void brcms_b_coreinit(struct brcm
|
||||
@@ -3221,7 +3221,7 @@ static void brcms_b_coreinit(struct brcm
|
||||
|
||||
sflags = bcma_aread32(core, BCMA_IOST);
|
||||
|
||||
|
@ -37,6 +37,15 @@
|
|||
if (BRCMS_ISNPHY(wlc_hw->band))
|
||||
brcms_c_write_inits(wlc_hw, ucode->d11n0initvals16);
|
||||
else
|
||||
@@ -5818,6 +5818,8 @@ static bool brcms_c_chipmatch_soc(struct
|
||||
|
||||
if (chipinfo->id == BCMA_CHIP_ID_BCM4716)
|
||||
return true;
|
||||
+ if (chipinfo->id == BCMA_CHIP_ID_BCM5357)
|
||||
+ return true;
|
||||
|
||||
pr_err("unknown chip id %04x\n", chipinfo->id);
|
||||
return false;
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.h
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.h
|
||||
@@ -65,7 +65,7 @@
|
||||
|
|
Loading…
Reference in a new issue