mirror of https://github.com/hak5/openwrt-owl.git
mac80211: brcmsmac update to version from wireless-testing tag master-2012-05-16-2
SVN-Revision: 31773owl
parent
273797f15a
commit
23f253fbdc
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,39 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
|
||||
@@ -95,6 +95,7 @@ MODULE_LICENSE("Dual BSD/GPL");
|
||||
static struct bcma_device_id brcms_coreid_table[] = {
|
||||
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 23, BCMA_ANY_CLASS),
|
||||
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 24, BCMA_ANY_CLASS),
|
||||
+// BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 17, BCMA_ANY_CLASS),
|
||||
BCMA_CORETABLE_END
|
||||
};
|
||||
MODULE_DEVICE_TABLE(bcma, brcms_coreid_table);
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -720,7 +720,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 */
|
||||
- if (D11REV_IS(wlc_hw->corerev, 23)) {
|
||||
+ if (D11REV_IS(wlc_hw->corerev, 17) || D11REV_IS(wlc_hw->corerev, 23)) {
|
||||
if (BRCMS_ISNPHY(wlc_hw->band))
|
||||
brcms_c_write_inits(wlc_hw, ucode->d11n0bsinitvals16);
|
||||
else
|
||||
@@ -2243,7 +2243,7 @@ static void brcms_ucode_download(struct
|
||||
if (wlc_hw->ucode_loaded)
|
||||
return;
|
||||
|
||||
- if (D11REV_IS(wlc_hw->corerev, 23)) {
|
||||
+ if (D11REV_IS(wlc_hw->corerev, 17) || D11REV_IS(wlc_hw->corerev, 23)) {
|
||||
if (BRCMS_ISNPHY(wlc_hw->band)) {
|
||||
brcms_ucode_write(wlc_hw, ucode->bcm43xx_16_mimo,
|
||||
ucode->bcm43xx_16_mimosz);
|
||||
@@ -3219,7 +3219,7 @@ static void brcms_b_coreinit(struct brcm
|
||||
|
||||
sflags = bcma_aread32(core, BCMA_IOST);
|
||||
|
||||
- if (D11REV_IS(wlc_hw->corerev, 23)) {
|
||||
+ if (D11REV_IS(wlc_hw->corerev, 17) || D11REV_IS(wlc_hw->corerev, 23)) {
|
||||
if (BRCMS_ISNPHY(wlc_hw->band))
|
||||
brcms_c_write_inits(wlc_hw, ucode->d11n0initvals16);
|
||||
else
|
|
@ -0,0 +1,29 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -4133,6 +4133,7 @@ void brcms_c_wme_setparams(struct brcms_
|
||||
M_EDCF_QINFO +
|
||||
wme_ac2fifo[aci] * M_EDCF_QLEN + i,
|
||||
*shm_entry++);
|
||||
+ printk("dummy\n");
|
||||
}
|
||||
|
||||
if (suspend) {
|
||||
@@ -4538,7 +4539,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)
|
||||
/* Dualband boards */
|
||||
wlc_hw->_nbands = 2;
|
||||
else
|
||||
@@ -5792,7 +5794,7 @@ bool brcms_c_chipmatch(u16 vendor, u16 d
|
||||
return false;
|
||||
}
|
||||
|
||||
- if (device == BCM43224_D11N_ID_VEN1)
|
||||
+ if (device == BCM43224_D11N_ID_VEN1 || device == BCM43224_CHIP_ID)
|
||||
return true;
|
||||
if ((device == BCM43224_D11N_ID) || (device == BCM43225_D11N2G_ID))
|
||||
return true;
|
|
@ -0,0 +1,202 @@
|
|||
--- 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);
|
||||
}
|
Loading…
Reference in New Issue