aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ssb/driver_chipcommon_pmu.c
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2010-05-24 15:50:23 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-03 14:10:43 -0400
commitc35deb4e70d52ed564c58569fe059dd7ca5f4eec (patch)
tree3497185cb2188cd12ed3197f2c0c614f3699b3bb /drivers/ssb/driver_chipcommon_pmu.c
parent2daf6c157500b832687f675e323879e3a4c3fe27 (diff)
ssb: update PMU init to match specs
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/ssb/driver_chipcommon_pmu.c')
-rw-r--r--drivers/ssb/driver_chipcommon_pmu.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/ssb/driver_chipcommon_pmu.c b/drivers/ssb/driver_chipcommon_pmu.c
index 3d551245a4e2..5732bb2c3578 100644
--- a/drivers/ssb/driver_chipcommon_pmu.c
+++ b/drivers/ssb/driver_chipcommon_pmu.c
@@ -502,9 +502,9 @@ static void ssb_pmu_resources_init(struct ssb_chipcommon *cc)
502 chipco_write32(cc, SSB_CHIPCO_PMU_MAXRES_MSK, max_msk); 502 chipco_write32(cc, SSB_CHIPCO_PMU_MAXRES_MSK, max_msk);
503} 503}
504 504
505/* http://bcm-v4.sipsolutions.net/802.11/SSB/PmuInit */
505void ssb_pmu_init(struct ssb_chipcommon *cc) 506void ssb_pmu_init(struct ssb_chipcommon *cc)
506{ 507{
507 struct ssb_bus *bus = cc->dev->bus;
508 u32 pmucap; 508 u32 pmucap;
509 509
510 if (!(cc->capabilities & SSB_CHIPCO_CAP_PMU)) 510 if (!(cc->capabilities & SSB_CHIPCO_CAP_PMU))
@@ -516,15 +516,12 @@ void ssb_pmu_init(struct ssb_chipcommon *cc)
516 ssb_dprintk(KERN_DEBUG PFX "Found rev %u PMU (capabilities 0x%08X)\n", 516 ssb_dprintk(KERN_DEBUG PFX "Found rev %u PMU (capabilities 0x%08X)\n",
517 cc->pmu.rev, pmucap); 517 cc->pmu.rev, pmucap);
518 518
519 if (cc->pmu.rev >= 1) { 519 if (cc->pmu.rev == 1)
520 if ((bus->chip_id == 0x4325) && (bus->chip_rev < 2)) { 520 chipco_mask32(cc, SSB_CHIPCO_PMU_CTL,
521 chipco_mask32(cc, SSB_CHIPCO_PMU_CTL, 521 ~SSB_CHIPCO_PMU_CTL_NOILPONW);
522 ~SSB_CHIPCO_PMU_CTL_NOILPONW); 522 else
523 } else { 523 chipco_set32(cc, SSB_CHIPCO_PMU_CTL,
524 chipco_set32(cc, SSB_CHIPCO_PMU_CTL, 524 SSB_CHIPCO_PMU_CTL_NOILPONW);
525 SSB_CHIPCO_PMU_CTL_NOILPONW);
526 }
527 }
528 ssb_pmu_pll_init(cc); 525 ssb_pmu_pll_init(cc);
529 ssb_pmu_resources_init(cc); 526 ssb_pmu_resources_init(cc);
530} 527}