diff options
author | Arend van Spriel <arend@broadcom.com> | 2011-12-12 18:15:11 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-12-13 15:48:32 -0500 |
commit | e922602edad30d1f225c32c1cddd80fb3740a8d3 (patch) | |
tree | 11ebbc1055d3703d544222346ecedc225167c18f /drivers | |
parent | 99559f136559e6822f20fcf1b63e6910df126941 (diff) |
brcm80211: smac: cleanup buscore handling in aiutils.c
Instead of storing the buscore information now the BCMA core device
is kept for quick reference in si_info structure.
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/aiutils.c | 52 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/aiutils.h | 23 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/nicpci.c | 3 |
3 files changed, 34 insertions, 44 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c index 34a5e022509..372bee8dd92 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c | |||
@@ -479,10 +479,9 @@ static bool ai_buscore_prep(struct si_info *sii) | |||
479 | static bool | 479 | static bool |
480 | ai_buscore_setup(struct si_info *sii, struct bcma_device *cc) | 480 | ai_buscore_setup(struct si_info *sii, struct bcma_device *cc) |
481 | { | 481 | { |
482 | struct bcma_device *pci = NULL; | ||
483 | struct bcma_device *pcie = NULL; | ||
482 | struct bcma_device *core; | 484 | struct bcma_device *core; |
483 | bool pci, pcie; | ||
484 | uint i; | ||
485 | uint pciidx, pcieidx, pcirev, pcierev; | ||
486 | 485 | ||
487 | 486 | ||
488 | /* no cores found, bail out */ | 487 | /* no cores found, bail out */ |
@@ -506,15 +505,7 @@ ai_buscore_setup(struct si_info *sii, struct bcma_device *cc) | |||
506 | sii->pub.pmurev = sii->pub.pmucaps & PCAP_REV_MASK; | 505 | sii->pub.pmurev = sii->pub.pmucaps & PCAP_REV_MASK; |
507 | } | 506 | } |
508 | 507 | ||
509 | /* figure out bus/orignal core idx */ | 508 | /* figure out buscore */ |
510 | sii->pub.buscoretype = NODEV_CORE_ID; | ||
511 | sii->pub.buscorerev = NOREV; | ||
512 | sii->buscoreidx = BADIDX; | ||
513 | |||
514 | pci = pcie = false; | ||
515 | pcirev = pcierev = NOREV; | ||
516 | pciidx = pcieidx = BADIDX; | ||
517 | |||
518 | list_for_each_entry(core, &cc->bus->cores, list) { | 509 | list_for_each_entry(core, &cc->bus->cores, list) { |
519 | uint cid, crev; | 510 | uint cid, crev; |
520 | 511 | ||
@@ -522,30 +513,22 @@ ai_buscore_setup(struct si_info *sii, struct bcma_device *cc) | |||
522 | crev = core->id.rev; | 513 | crev = core->id.rev; |
523 | 514 | ||
524 | if (cid == PCI_CORE_ID) { | 515 | if (cid == PCI_CORE_ID) { |
525 | pciidx = i; | 516 | pci = core; |
526 | pcirev = crev; | ||
527 | pci = true; | ||
528 | } else if (cid == PCIE_CORE_ID) { | 517 | } else if (cid == PCIE_CORE_ID) { |
529 | pcieidx = i; | 518 | pcie = core; |
530 | pcierev = crev; | ||
531 | pcie = true; | ||
532 | } | 519 | } |
533 | } | 520 | } |
534 | 521 | ||
535 | if (pci && pcie) { | 522 | if (pci && pcie) { |
536 | if (ai_ispcie(sii)) | 523 | if (ai_ispcie(sii)) |
537 | pci = false; | 524 | pci = NULL; |
538 | else | 525 | else |
539 | pcie = false; | 526 | pcie = NULL; |
540 | } | 527 | } |
541 | if (pci) { | 528 | if (pci) { |
542 | sii->pub.buscoretype = PCI_CORE_ID; | 529 | sii->buscore = pci; |
543 | sii->pub.buscorerev = pcirev; | ||
544 | sii->buscoreidx = pciidx; | ||
545 | } else if (pcie) { | 530 | } else if (pcie) { |
546 | sii->pub.buscoretype = PCIE_CORE_ID; | 531 | sii->buscore = pcie; |
547 | sii->pub.buscorerev = pcierev; | ||
548 | sii->buscoreidx = pcieidx; | ||
549 | } | 532 | } |
550 | 533 | ||
551 | /* fixup necessary chip/core configurations */ | 534 | /* fixup necessary chip/core configurations */ |
@@ -554,10 +537,8 @@ ai_buscore_setup(struct si_info *sii, struct bcma_device *cc) | |||
554 | if (sii->pch == NULL) | 537 | if (sii->pch == NULL) |
555 | return false; | 538 | return false; |
556 | } | 539 | } |
557 | if (ai_pci_fixcfg(&sii->pub)) { | 540 | if (ai_pci_fixcfg(&sii->pub)) |
558 | /* si_doattach: si_pci_fixcfg failed */ | ||
559 | return false; | 541 | return false; |
560 | } | ||
561 | 542 | ||
562 | return true; | 543 | return true; |
563 | } | 544 | } |
@@ -589,7 +570,6 @@ static struct si_info *ai_doattach(struct si_info *sii, | |||
589 | savewin = 0; | 570 | savewin = 0; |
590 | 571 | ||
591 | sii->icbus = pbus; | 572 | sii->icbus = pbus; |
592 | sii->buscoreidx = BADIDX; | ||
593 | sii->pcibus = pbus->host_pci; | 573 | sii->pcibus = pbus->host_pci; |
594 | 574 | ||
595 | /* switch to Chipcommon core */ | 575 | /* switch to Chipcommon core */ |
@@ -1248,3 +1228,15 @@ bool ai_is_otp_disabled(struct si_pub *sih) | |||
1248 | return false; | 1228 | return false; |
1249 | } | 1229 | } |
1250 | } | 1230 | } |
1231 | |||
1232 | uint ai_get_buscoretype(struct si_pub *sih) | ||
1233 | { | ||
1234 | struct si_info *sii = (struct si_info *)sih; | ||
1235 | return sii->buscore->id.id; | ||
1236 | } | ||
1237 | |||
1238 | uint ai_get_buscorerev(struct si_pub *sih) | ||
1239 | { | ||
1240 | struct si_info *sii = (struct si_info *)sih; | ||
1241 | return sii->buscore->id.rev; | ||
1242 | } | ||
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h index f9f88ddbe4a..f84c6f78169 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h +++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h | |||
@@ -146,8 +146,6 @@ | |||
146 | * public (read-only) portion of aiutils handle returned by si_attach() | 146 | * public (read-only) portion of aiutils handle returned by si_attach() |
147 | */ | 147 | */ |
148 | struct si_pub { | 148 | struct si_pub { |
149 | uint buscoretype; /* PCI_CORE_ID, PCIE_CORE_ID, PCMCIA_CORE_ID */ | ||
150 | uint buscorerev; /* buscore rev */ | ||
151 | int ccrev; /* chip common core rev */ | 149 | int ccrev; /* chip common core rev */ |
152 | u32 cccaps; /* chip common capabilities */ | 150 | u32 cccaps; /* chip common capabilities */ |
153 | int pmurev; /* pmu core rev */ | 151 | int pmurev; /* pmu core rev */ |
@@ -175,11 +173,10 @@ struct si_info { | |||
175 | struct bcma_bus *icbus; /* handle to soc interconnect bus */ | 173 | struct bcma_bus *icbus; /* handle to soc interconnect bus */ |
176 | struct pci_dev *pcibus; /* handle to pci bus */ | 174 | struct pci_dev *pcibus; /* handle to pci bus */ |
177 | struct pcicore_info *pch; /* PCI/E core handle */ | 175 | struct pcicore_info *pch; /* PCI/E core handle */ |
178 | 176 | struct bcma_device *buscore; | |
179 | struct list_head var_list; /* list of srom variables */ | 177 | struct list_head var_list; /* list of srom variables */ |
180 | 178 | ||
181 | u32 chipst; /* chip status */ | 179 | u32 chipst; /* chip status */ |
182 | uint buscoreidx; /* buscore index */ | ||
183 | }; | 180 | }; |
184 | 181 | ||
185 | /* | 182 | /* |
@@ -224,47 +221,49 @@ extern void ai_chipcontrl_epa4331(struct si_pub *sih, bool on); | |||
224 | /* Enable Ex-PA for 4313 */ | 221 | /* Enable Ex-PA for 4313 */ |
225 | extern void ai_epa_4313war(struct si_pub *sih); | 222 | extern void ai_epa_4313war(struct si_pub *sih); |
226 | 223 | ||
227 | static inline uint ai_get_buscoretype(struct si_pub *sih) | 224 | extern uint ai_get_buscoretype(struct si_pub *sih); |
228 | { | 225 | extern uint ai_get_buscorerev(struct si_pub *sih); |
229 | return sih->buscoretype; | ||
230 | } | ||
231 | 226 | ||
232 | static inline uint ai_get_buscorerev(struct si_pub *sih) | ||
233 | { | ||
234 | return sih->buscorerev; | ||
235 | } | ||
236 | static inline int ai_get_ccrev(struct si_pub *sih) | 227 | static inline int ai_get_ccrev(struct si_pub *sih) |
237 | { | 228 | { |
238 | return sih->ccrev; | 229 | return sih->ccrev; |
239 | } | 230 | } |
231 | |||
240 | static inline u32 ai_get_cccaps(struct si_pub *sih) | 232 | static inline u32 ai_get_cccaps(struct si_pub *sih) |
241 | { | 233 | { |
242 | return sih->cccaps; | 234 | return sih->cccaps; |
243 | } | 235 | } |
236 | |||
244 | static inline int ai_get_pmurev(struct si_pub *sih) | 237 | static inline int ai_get_pmurev(struct si_pub *sih) |
245 | { | 238 | { |
246 | return sih->pmurev; | 239 | return sih->pmurev; |
247 | } | 240 | } |
241 | |||
248 | static inline u32 ai_get_pmucaps(struct si_pub *sih) | 242 | static inline u32 ai_get_pmucaps(struct si_pub *sih) |
249 | { | 243 | { |
250 | return sih->pmucaps; | 244 | return sih->pmucaps; |
251 | } | 245 | } |
246 | |||
252 | static inline uint ai_get_boardtype(struct si_pub *sih) | 247 | static inline uint ai_get_boardtype(struct si_pub *sih) |
253 | { | 248 | { |
254 | return sih->boardtype; | 249 | return sih->boardtype; |
255 | } | 250 | } |
251 | |||
256 | static inline uint ai_get_boardvendor(struct si_pub *sih) | 252 | static inline uint ai_get_boardvendor(struct si_pub *sih) |
257 | { | 253 | { |
258 | return sih->boardvendor; | 254 | return sih->boardvendor; |
259 | } | 255 | } |
256 | |||
260 | static inline uint ai_get_chip_id(struct si_pub *sih) | 257 | static inline uint ai_get_chip_id(struct si_pub *sih) |
261 | { | 258 | { |
262 | return sih->chip; | 259 | return sih->chip; |
263 | } | 260 | } |
261 | |||
264 | static inline uint ai_get_chiprev(struct si_pub *sih) | 262 | static inline uint ai_get_chiprev(struct si_pub *sih) |
265 | { | 263 | { |
266 | return sih->chiprev; | 264 | return sih->chiprev; |
267 | } | 265 | } |
266 | |||
268 | static inline uint ai_get_chippkg(struct si_pub *sih) | 267 | static inline uint ai_get_chippkg(struct si_pub *sih) |
269 | { | 268 | { |
270 | return sih->chippkg; | 269 | return sih->chippkg; |
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/nicpci.c b/drivers/net/wireless/brcm80211/brcmsmac/nicpci.c index a4330416b43..7fad6dc1925 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/nicpci.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/nicpci.c | |||
@@ -408,7 +408,7 @@ pcie_mdioop(struct pcicore_info *pi, uint physmedia, uint regaddr, bool write, | |||
408 | bcma_write32(pi->core, PCIEREGOFFS(mdiocontrol), | 408 | bcma_write32(pi->core, PCIEREGOFFS(mdiocontrol), |
409 | MDIOCTL_PREAM_EN | MDIOCTL_DIVISOR_VAL); | 409 | MDIOCTL_PREAM_EN | MDIOCTL_DIVISOR_VAL); |
410 | 410 | ||
411 | if (pi->sih->buscorerev >= 10) { | 411 | if (ai_get_buscorerev(pi->sih) >= 10) { |
412 | /* new serdes is slower in rw, | 412 | /* new serdes is slower in rw, |
413 | * using two layers of reg address mapping | 413 | * using two layers of reg address mapping |
414 | */ | 414 | */ |
@@ -782,7 +782,6 @@ void pcicore_down(struct pcicore_info *pi, int state) | |||
782 | pcie_extendL1timer(pi, false); | 782 | pcie_extendL1timer(pi, false); |
783 | } | 783 | } |
784 | 784 | ||
785 | /* precondition: current core is sii->buscoretype */ | ||
786 | void pcicore_fixcfg(struct pcicore_info *pi) | 785 | void pcicore_fixcfg(struct pcicore_info *pi) |
787 | { | 786 | { |
788 | struct bcma_device *core = pi->core; | 787 | struct bcma_device *core = pi->core; |