Skip to content

Commit

Permalink
staging: brcm80211: change parameter in driver variable lookup
Browse files Browse the repository at this point in the history
The functions getvar() and getintvar() had to pass the buffer
containing the driver variables. Now they pass the structure
containing this buffer hiding what type of buffer/container
is used for storing the driver variables.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Roland Vossen <rvossen@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Arend van Spriel authored and Greg Kroah-Hartman committed Oct 5, 2011
1 parent f4e5c54 commit 7ddaad7
Show file tree
Hide file tree
Showing 13 changed files with 190 additions and 196 deletions.
18 changes: 8 additions & 10 deletions drivers/staging/brcm80211/brcmsmac/aiutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -1012,7 +1012,7 @@ ai_buscore_setup(struct si_info *sii, u32 savewin, uint *origidx)
/*
* get boardtype and boardrev
*/
static __used void ai_nvram_process(struct si_info *sii, char *pvars)
static __used void ai_nvram_process(struct si_info *sii)
{
uint w = 0;

Expand All @@ -1021,7 +1021,7 @@ static __used void ai_nvram_process(struct si_info *sii, char *pvars)

sii->pub.boardvendor = w & 0xffff;
sii->pub.boardtype = (w >> 16) & 0xffff;
sii->pub.boardflags = getintvar(pvars, "boardflags");
sii->pub.boardflags = getintvar(&sii->pub, "boardflags");
}

static struct si_info *ai_doattach(struct si_info *sii,
Expand All @@ -1031,7 +1031,6 @@ static struct si_info *ai_doattach(struct si_info *sii,
struct si_pub *sih = &sii->pub;
u32 w, savewin;
struct chipcregs __iomem *cc;
char *pvars = NULL;
uint socitype;
uint origidx;

Expand Down Expand Up @@ -1095,8 +1094,9 @@ static struct si_info *ai_doattach(struct si_info *sii,
if (srom_var_init(&sii->pub, cc, vars, varsz))
goto exit;

pvars = vars ? *vars : NULL;
ai_nvram_process(sii, pvars);
sii->vars = vars ? *vars : NULL;
sii->varsz = varsz ? *varsz : 0;
ai_nvram_process(sii);

/* === NVRAM, clock is ready === */
cc = (struct chipcregs __iomem *) ai_setcore(sih, CC_CORE_ID, 0);
Expand All @@ -1109,7 +1109,7 @@ static struct si_info *ai_doattach(struct si_info *sii,
u32 xtalfreq;
si_pmu_init(sih);
si_pmu_chip_init(sih);
xtalfreq = getintvar(pvars, "xtalfreq");
xtalfreq = getintvar(sih, "xtalfreq");
/* If xtalfreq var not available, try to measure it */
if (xtalfreq == 0)
xtalfreq = si_pmu_measure_alpclk(sih);
Expand All @@ -1119,14 +1119,14 @@ static struct si_info *ai_doattach(struct si_info *sii,
}

/* setup the GPIO based LED powersave register */
w = getintvar(pvars, "leddc");
w = getintvar(sih, "leddc");
if (w == 0)
w = DEFAULT_GPIOTIMERVAL;
ai_corereg(sih, SI_CC_IDX, offsetof(struct chipcregs, gpiotimerval),
~0, w);

if (PCIE(sii))
pcicore_attach(sii->pch, pvars, SI_DOATTACH);
pcicore_attach(sii->pch, SI_DOATTACH);

if (sih->chip == BCM43224_CHIP_ID) {
/*
Expand Down Expand Up @@ -1191,8 +1191,6 @@ ai_attach(void __iomem *regs, struct pci_dev *sdh, char **vars, uint *varsz)
kfree(sii);
return NULL;
}
sii->vars = vars ? *vars : NULL;
sii->varsz = varsz ? *varsz : 0;

return (struct si_pub *) sii;
}
Expand Down
15 changes: 8 additions & 7 deletions drivers/staging/brcm80211/brcmsmac/antsel.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ brcms_c_antsel_init_cfg(struct antsel_info *asi, struct brcms_antselcfg *antsel,
struct antsel_info *brcms_c_antsel_attach(struct brcms_c_info *wlc)
{
struct antsel_info *asi;
struct si_pub *sih = wlc->hw->sih;

asi = kzalloc(sizeof(struct antsel_info), GFP_ATOMIC);
if (!asi)
Expand All @@ -117,7 +118,7 @@ struct antsel_info *brcms_c_antsel_attach(struct brcms_c_info *wlc)
asi->pub = wlc->pub;
asi->antsel_type = ANTSEL_NA;
asi->antsel_avail = false;
asi->antsel_antswitch = (u8) getintvar(asi->pub->vars, "antswitch");
asi->antsel_antswitch = (u8) getintvar(sih, "antswitch");

if ((asi->pub->sromrev >= 4) && (asi->antsel_antswitch != 0)) {
switch (asi->antsel_antswitch) {
Expand All @@ -127,12 +128,12 @@ struct antsel_info *brcms_c_antsel_attach(struct brcms_c_info *wlc)
/* 4321/2 board with 2x3 switch logic */
asi->antsel_type = ANTSEL_2x3;
/* Antenna selection availability */
if (((u16) getintvar(asi->pub->vars, "aa2g") == 7) ||
((u16) getintvar(asi->pub->vars, "aa5g") == 7)) {
if (((u16) getintvar(sih, "aa2g") == 7) ||
((u16) getintvar(sih, "aa5g") == 7)) {
asi->antsel_avail = true;
} else if (
(u16) getintvar(asi->pub->vars, "aa2g") == 3 ||
(u16) getintvar(asi->pub->vars, "aa5g") == 3) {
(u16) getintvar(sih, "aa2g") == 3 ||
(u16) getintvar(sih, "aa5g") == 3) {
asi->antsel_avail = false;
} else {
asi->antsel_avail = false;
Expand All @@ -145,8 +146,8 @@ struct antsel_info *brcms_c_antsel_attach(struct brcms_c_info *wlc)
break;
}
} else if ((asi->pub->sromrev == 4) &&
((u16) getintvar(asi->pub->vars, "aa2g") == 7) &&
((u16) getintvar(asi->pub->vars, "aa5g") == 0)) {
((u16) getintvar(sih, "aa2g") == 7) &&
((u16) getintvar(sih, "aa5g") == 0)) {
/* hack to match old 4321CB2 cards with 2of3 antenna switch */
asi->antsel_type = ANTSEL_2x3;
asi->antsel_avail = true;
Expand Down
2 changes: 1 addition & 1 deletion drivers/staging/brcm80211/brcmsmac/channel.c
Original file line number Diff line number Diff line change
Expand Up @@ -1088,7 +1088,7 @@ struct brcms_cm_info *brcms_c_channel_mgr_attach(struct brcms_c_info *wlc)
wlc->cmi = wlc_cm;

/* store the country code for passing up as a regulatory hint */
ccode = getvar(wlc->pub->vars, "ccode");
ccode = getvar(wlc->hw->sih, "ccode");
if (ccode)
strncpy(wlc->pub->srom_ccode, ccode, BRCM_CNTRY_BUF_SZ - 1);

Expand Down
29 changes: 15 additions & 14 deletions drivers/staging/brcm80211/brcmsmac/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1990,7 +1990,7 @@ static char *brcms_c_get_macaddr(struct brcms_hardware *wlc_hw)
char *macaddr;

/* If macaddr exists, use it (Sromrev4, CIS, ...). */
macaddr = getvar(wlc_hw->vars, varname);
macaddr = getvar(wlc_hw->sih, varname);
if (macaddr != NULL)
return macaddr;

Expand All @@ -1999,7 +1999,7 @@ static char *brcms_c_get_macaddr(struct brcms_hardware *wlc_hw)
else
varname = "il0macaddr";

macaddr = getvar(wlc_hw->vars, varname);
macaddr = getvar(wlc_hw->sih, varname);
if (macaddr == NULL)
wiphy_err(wlc_hw->wlc->wiphy, "wl%d: wlc_get_macaddr: macaddr "
"getvar(%s) not found\n", wlc_hw->unit, varname);
Expand Down Expand Up @@ -4593,13 +4593,13 @@ static int brcms_b_attach(struct brcms_c_info *wlc, u16 vendor, u16 device,
* than those the BIOS recognizes for devices on PCMCIA_BUS,
* SDIO_BUS, and SROMless devices on PCI_BUS.
*/
var = getvar(vars, "vendid");
var = getvar(wlc_hw->sih, "vendid");
if (var && !kstrtoul(var, 0, &res)) {
vendor = (u16)res;
wiphy_err(wiphy, "Overriding vendor id = 0x%x\n",
vendor);
}
var = getvar(vars, "devid");
var = getvar(wlc_hw->sih, "devid");
if (var && !kstrtoul(var, 0, &res)) {
u16 devid = (u16)res;
if (devid != 0xffff) {
Expand Down Expand Up @@ -4656,7 +4656,7 @@ static int brcms_b_attach(struct brcms_c_info *wlc, u16 vendor, u16 device,
}

/* get the board rev, used just below */
j = getintvar(vars, "boardrev");
j = getintvar(wlc_hw->sih, "boardrev");
/* promote srom boardrev of 0xFF to 1 */
if (j == BOARDREV_PROMOTABLE)
j = BOARDREV_PROMOTED;
Expand All @@ -4668,9 +4668,9 @@ static int brcms_b_attach(struct brcms_c_info *wlc, u16 vendor, u16 device,
err = 15;
goto fail;
}
wlc_hw->sromrev = (u8) getintvar(vars, "sromrev");
wlc_hw->boardflags = (u32) getintvar(vars, "boardflags");
wlc_hw->boardflags2 = (u32) getintvar(vars, "boardflags2");
wlc_hw->sromrev = (u8) getintvar(wlc_hw->sih, "sromrev");
wlc_hw->boardflags = (u32) getintvar(wlc_hw->sih, "boardflags");
wlc_hw->boardflags2 = (u32) getintvar(wlc_hw->sih, "boardflags2");

if (wlc_hw->boardflags & BFL_NOPLLDOWN)
brcms_b_pllreq(wlc_hw, true, BRCMS_PLLREQ_SHARED);
Expand Down Expand Up @@ -4920,15 +4920,16 @@ static bool brcms_c_attach_stf_ant_init(struct brcms_c_info *wlc)
uint unit;
char *vars;
int bandtype;
struct si_pub *sih = wlc->hw->sih;

unit = wlc->pub->unit;
vars = wlc->pub->vars;
bandtype = wlc->band->bandtype;

/* get antennas available */
aa = (s8) getintvar(vars, bandtype == BRCM_BAND_5G ? "aa5g" : "aa2g");
aa = (s8) getintvar(sih, bandtype == BRCM_BAND_5G ? "aa5g" : "aa2g");
if (aa == 0)
aa = (s8) getintvar(vars,
aa = (s8) getintvar(sih,
bandtype == BRCM_BAND_5G ? "aa1" : "aa0");
if ((aa < 1) || (aa > 15)) {
wiphy_err(wlc->wiphy, "wl%d: %s: Invalid antennas available in"
Expand All @@ -4947,8 +4948,8 @@ static bool brcms_c_attach_stf_ant_init(struct brcms_c_info *wlc)
}

/* Compute Antenna Gain */
wlc->band->antgain =
(s8) getintvar(vars, bandtype == BRCM_BAND_5G ? "ag1" : "ag0");
wlc->band->antgain = (s8) getintvar(sih, bandtype == BRCM_BAND_5G ?
"ag1" : "ag0");
brcms_c_attach_antgain_init(wlc);

return true;
Expand Down Expand Up @@ -5114,9 +5115,9 @@ brcms_c_attach(struct brcms_info *wl, u16 vendor, u16 device, uint unit,

/* set maximum allowed duty cycle */
wlc->tx_duty_cycle_ofdm =
(u16) getintvar(pub->vars, "tx_duty_cycle_ofdm");
(u16) getintvar(wlc->hw->sih, "tx_duty_cycle_ofdm");
wlc->tx_duty_cycle_cck =
(u16) getintvar(pub->vars, "tx_duty_cycle_cck");
(u16) getintvar(wlc->hw->sih, "tx_duty_cycle_cck");

brcms_c_stf_phy_chain_calc(wlc);

Expand Down
4 changes: 2 additions & 2 deletions drivers/staging/brcm80211/brcmsmac/nicpci.c
Original file line number Diff line number Diff line change
Expand Up @@ -719,13 +719,13 @@ static void pcie_war_pci_setup(struct pcicore_info *pi)
}

/* ***** Functions called during driver state changes ***** */
void pcicore_attach(struct pcicore_info *pi, char *pvars, int state)
void pcicore_attach(struct pcicore_info *pi, int state)
{
struct si_pub *sih = pi->sih;

/* Determine if this board needs override */
if (PCIE_ASPM(sih)) {
if ((u32)getintvar(pvars, "boardflags2") & BFL2_PCIEWAR_OVR)
if ((u32)getintvar(sih, "boardflags2") & BFL2_PCIEWAR_OVR)
pi->pcie_war_aspm_ovr = PCIE_ASPM_DISAB;
else
pi->pcie_war_aspm_ovr = PCIE_ASPM_ENAB;
Expand Down
2 changes: 1 addition & 1 deletion drivers/staging/brcm80211/brcmsmac/nicpci.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ extern struct pcicore_info *pcicore_init(struct si_pub *sih,
struct pci_dev *pdev,
void __iomem *regs);
extern void pcicore_deinit(struct pcicore_info *pch);
extern void pcicore_attach(struct pcicore_info *pch, char *pvars, int state);
extern void pcicore_attach(struct pcicore_info *pch, int state);
extern void pcicore_hwup(struct pcicore_info *pch);
extern void pcicore_up(struct pcicore_info *pch, int state);
extern void pcicore_sleep(struct pcicore_info *pch);
Expand Down
62 changes: 29 additions & 33 deletions drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
Original file line number Diff line number Diff line change
Expand Up @@ -4817,27 +4817,25 @@ static bool wlc_phy_txpwr_srom_read_lcnphy(struct brcms_phy *pi)
s8 txpwr = 0;
int i;
struct brcms_phy_lcnphy *pi_lcn = pi->u.pi_lcnphy;
struct phy_shim_info *shim = pi->sh->physhim;

if (CHSPEC_IS2G(pi->radio_chanspec)) {
u16 cckpo = 0;
u32 offset_ofdm, offset_mcs;

pi_lcn->lcnphy_tr_isolation_mid =
(u8) wlapi_getintvar(pi->vars, "triso2g");
(u8)wlapi_getintvar(shim, "triso2g");

pi_lcn->lcnphy_rx_power_offset =
(u8) wlapi_getintvar(pi->vars, "rxpo2g");
(u8)wlapi_getintvar(shim, "rxpo2g");

pi->txpa_2g[0] = (s16) wlapi_getintvar(pi->vars, "pa0b0");
pi->txpa_2g[1] = (s16) wlapi_getintvar(pi->vars, "pa0b1");
pi->txpa_2g[2] = (s16) wlapi_getintvar(pi->vars, "pa0b2");
pi->txpa_2g[0] = (s16)wlapi_getintvar(shim, "pa0b0");
pi->txpa_2g[1] = (s16)wlapi_getintvar(shim, "pa0b1");
pi->txpa_2g[2] = (s16)wlapi_getintvar(shim, "pa0b2");

pi_lcn->lcnphy_rssi_vf =
(u8) wlapi_getintvar(pi->vars, "rssismf2g");
pi_lcn->lcnphy_rssi_vc =
(u8) wlapi_getintvar(pi->vars, "rssismc2g");
pi_lcn->lcnphy_rssi_gs =
(u8) wlapi_getintvar(pi->vars, "rssisav2g");
pi_lcn->lcnphy_rssi_vf = (u8)wlapi_getintvar(shim, "rssismf2g");
pi_lcn->lcnphy_rssi_vc = (u8)wlapi_getintvar(shim, "rssismc2g");
pi_lcn->lcnphy_rssi_gs = (u8)wlapi_getintvar(shim, "rssisav2g");

pi_lcn->lcnphy_rssi_vf_lowtemp = pi_lcn->lcnphy_rssi_vf;
pi_lcn->lcnphy_rssi_vc_lowtemp = pi_lcn->lcnphy_rssi_vc;
Expand All @@ -4847,15 +4845,15 @@ static bool wlc_phy_txpwr_srom_read_lcnphy(struct brcms_phy *pi)
pi_lcn->lcnphy_rssi_vc_hightemp = pi_lcn->lcnphy_rssi_vc;
pi_lcn->lcnphy_rssi_gs_hightemp = pi_lcn->lcnphy_rssi_gs;

txpwr = (s8) wlapi_getintvar(pi->vars, "maxp2ga0");
txpwr = (s8)wlapi_getintvar(shim, "maxp2ga0");
pi->tx_srom_max_2g = txpwr;

for (i = 0; i < PWRTBL_NUM_COEFF; i++) {
pi->txpa_2g_low_temp[i] = pi->txpa_2g[i];
pi->txpa_2g_high_temp[i] = pi->txpa_2g[i];
}

cckpo = (u16) wlapi_getintvar(pi->vars, "cck2gpo");
cckpo = (u16)wlapi_getintvar(shim, "cck2gpo");
if (cckpo) {
uint max_pwr_chan = txpwr;

Expand All @@ -4865,8 +4863,7 @@ static bool wlc_phy_txpwr_srom_read_lcnphy(struct brcms_phy *pi)
cckpo >>= 4;
}

offset_ofdm =
(u32) wlapi_getintvar(pi->vars, "ofdm2gpo");
offset_ofdm = (u32)wlapi_getintvar(shim, "ofdm2gpo");
for (i = TXP_FIRST_OFDM; i <= TXP_LAST_OFDM; i++) {
pi->tx_srom_max_rate_2g[i] =
max_pwr_chan -
Expand All @@ -4876,23 +4873,22 @@ static bool wlc_phy_txpwr_srom_read_lcnphy(struct brcms_phy *pi)
} else {
u8 opo = 0;

opo = (u8) wlapi_getintvar(pi->vars, "opo");
opo = (u8)wlapi_getintvar(shim, "opo");

for (i = TXP_FIRST_CCK; i <= TXP_LAST_CCK; i++)
pi->tx_srom_max_rate_2g[i] = txpwr;

offset_ofdm =
(u32) wlapi_getintvar(pi->vars, "ofdm2gpo");
offset_ofdm = (u32)wlapi_getintvar(shim, "ofdm2gpo");

for (i = TXP_FIRST_OFDM; i <= TXP_LAST_OFDM; i++) {
pi->tx_srom_max_rate_2g[i] = txpwr -
((offset_ofdm & 0xf) * 2);
offset_ofdm >>= 4;
}
offset_mcs =
wlapi_getintvar(pi->vars, "mcs2gpo1") << 16;
wlapi_getintvar(shim, "mcs2gpo1") << 16;
offset_mcs |=
(u16) wlapi_getintvar(pi->vars, "mcs2gpo0");
(u16) wlapi_getintvar(shim, "mcs2gpo0");
pi_lcn->lcnphy_mcs20_po = offset_mcs;
for (i = TXP_FIRST_SISO_MCS_20;
i <= TXP_LAST_SISO_MCS_20; i++) {
Expand All @@ -4903,30 +4899,30 @@ static bool wlc_phy_txpwr_srom_read_lcnphy(struct brcms_phy *pi)
}

pi_lcn->lcnphy_rawtempsense =
(u16) wlapi_getintvar(pi->vars, "rawtempsense");
(u16)wlapi_getintvar(shim, "rawtempsense");
pi_lcn->lcnphy_measPower =
(u8) wlapi_getintvar(pi->vars, "measpower");
(u8)wlapi_getintvar(shim, "measpower");
pi_lcn->lcnphy_tempsense_slope =
(u8) wlapi_getintvar(pi->vars, "tempsense_slope");
(u8)wlapi_getintvar(shim, "tempsense_slope");
pi_lcn->lcnphy_hw_iqcal_en =
(bool) wlapi_getintvar(pi->vars, "hw_iqcal_en");
(bool)wlapi_getintvar(shim, "hw_iqcal_en");
pi_lcn->lcnphy_iqcal_swp_dis =
(bool) wlapi_getintvar(pi->vars, "iqcal_swp_dis");
(bool)wlapi_getintvar(shim, "iqcal_swp_dis");
pi_lcn->lcnphy_tempcorrx =
(u8) wlapi_getintvar(pi->vars, "tempcorrx");
(u8)wlapi_getintvar(shim, "tempcorrx");
pi_lcn->lcnphy_tempsense_option =
(u8) wlapi_getintvar(pi->vars, "tempsense_option");
(u8)wlapi_getintvar(shim, "tempsense_option");
pi_lcn->lcnphy_freqoffset_corr =
(u8) wlapi_getintvar(pi->vars, "freqoffset_corr");
if ((u8) getintvar(pi->vars, "aa2g") > 1)
(u8)wlapi_getintvar(shim, "freqoffset_corr");
if ((u8)wlapi_getintvar(shim, "aa2g") > 1)
wlc_phy_ant_rxdiv_set((struct brcms_phy_pub *) pi,
(u8) getintvar(pi->vars,
"aa2g"));
(u8) wlapi_getintvar(shim,
"aa2g"));
}
pi_lcn->lcnphy_cck_dig_filt_type = -1;
if (wlapi_getvar(pi->vars, "cckdigfilttype")) {
if (wlapi_getvar(shim, "cckdigfilttype")) {
s16 temp;
temp = (s16) wlapi_getintvar(pi->vars, "cckdigfilttype");
temp = (s16)wlapi_getintvar(shim, "cckdigfilttype");
if (temp >= 0)
pi_lcn->lcnphy_cck_dig_filt_type = temp;
}
Expand Down
Loading

0 comments on commit 7ddaad7

Please sign in to comment.