aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ssb
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2013-04-23 14:09:39 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-04-23 14:09:39 -0400
commitec094144cdd54a36e65a69161e9705959c09cb23 (patch)
tree5a41c0f766143e462bfde8515ca6547d4ee7f78e /drivers/ssb
parentc43933e61ea9b630521bf0d5cf06c155478308a7 (diff)
parentf09a878511997c25a76bf111a32f6b8345a701a5 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Conflicts: drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
Diffstat (limited to 'drivers/ssb')
-rw-r--r--drivers/ssb/driver_chipcommon_pmu.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/ssb/driver_chipcommon_pmu.c b/drivers/ssb/driver_chipcommon_pmu.c
index 791da2c0d8f6..23c5dbfea115 100644
--- a/drivers/ssb/driver_chipcommon_pmu.c
+++ b/drivers/ssb/driver_chipcommon_pmu.c
@@ -670,3 +670,32 @@ u32 ssb_pmu_get_controlclock(struct ssb_chipcommon *cc)
670 return 0; 670 return 0;
671 } 671 }
672} 672}
673
674void ssb_pmu_spuravoid_pllupdate(struct ssb_chipcommon *cc, int spuravoid)
675{
676 u32 pmu_ctl = 0;
677
678 switch (cc->dev->bus->chip_id) {
679 case 0x4322:
680 ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL0, 0x11100070);
681 ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL1, 0x1014140a);
682 ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL5, 0x88888854);
683 if (spuravoid == 1)
684 ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL2, 0x05201828);
685 else
686 ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL2, 0x05001828);
687 pmu_ctl = SSB_CHIPCO_PMU_CTL_PLL_UPD;
688 break;
689 case 43222:
690 /* TODO: BCM43222 requires updating PLLs too */
691 return;
692 default:
693 ssb_printk(KERN_ERR PFX
694 "Unknown spuravoidance settings for chip 0x%04X, not changing PLL\n",
695 cc->dev->bus->chip_id);
696 return;
697 }
698
699 chipco_set32(cc, SSB_CHIPCO_PMU_CTL, pmu_ctl);
700}
701EXPORT_SYMBOL_GPL(ssb_pmu_spuravoid_pllupdate);