Lines Matching refs:cc

16 u32 bcma_chipco_pll_read(struct bcma_drv_cc *cc, u32 offset)  in bcma_chipco_pll_read()  argument
18 bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, offset); in bcma_chipco_pll_read()
19 bcma_cc_read32(cc, BCMA_CC_PLLCTL_ADDR); in bcma_chipco_pll_read()
20 return bcma_cc_read32(cc, BCMA_CC_PLLCTL_DATA); in bcma_chipco_pll_read()
24 void bcma_chipco_pll_write(struct bcma_drv_cc *cc, u32 offset, u32 value) in bcma_chipco_pll_write() argument
26 bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, offset); in bcma_chipco_pll_write()
27 bcma_cc_read32(cc, BCMA_CC_PLLCTL_ADDR); in bcma_chipco_pll_write()
28 bcma_cc_write32(cc, BCMA_CC_PLLCTL_DATA, value); in bcma_chipco_pll_write()
32 void bcma_chipco_pll_maskset(struct bcma_drv_cc *cc, u32 offset, u32 mask, in bcma_chipco_pll_maskset() argument
35 bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, offset); in bcma_chipco_pll_maskset()
36 bcma_cc_read32(cc, BCMA_CC_PLLCTL_ADDR); in bcma_chipco_pll_maskset()
37 bcma_cc_maskset32(cc, BCMA_CC_PLLCTL_DATA, mask, set); in bcma_chipco_pll_maskset()
41 void bcma_chipco_chipctl_maskset(struct bcma_drv_cc *cc, in bcma_chipco_chipctl_maskset() argument
44 bcma_cc_write32(cc, BCMA_CC_CHIPCTL_ADDR, offset); in bcma_chipco_chipctl_maskset()
45 bcma_cc_read32(cc, BCMA_CC_CHIPCTL_ADDR); in bcma_chipco_chipctl_maskset()
46 bcma_cc_maskset32(cc, BCMA_CC_CHIPCTL_DATA, mask, set); in bcma_chipco_chipctl_maskset()
50 void bcma_chipco_regctl_maskset(struct bcma_drv_cc *cc, u32 offset, u32 mask, in bcma_chipco_regctl_maskset() argument
53 bcma_cc_write32(cc, BCMA_CC_REGCTL_ADDR, offset); in bcma_chipco_regctl_maskset()
54 bcma_cc_read32(cc, BCMA_CC_REGCTL_ADDR); in bcma_chipco_regctl_maskset()
55 bcma_cc_maskset32(cc, BCMA_CC_REGCTL_DATA, mask, set); in bcma_chipco_regctl_maskset()
59 static u32 bcma_pmu_xtalfreq(struct bcma_drv_cc *cc) in bcma_pmu_xtalfreq() argument
63 if (!(bcma_cc_read32(cc, BCMA_CC_PMU_STAT) & in bcma_pmu_xtalfreq()
67 bcma_cc_write32(cc, BCMA_CC_PMU_XTAL_FREQ, in bcma_pmu_xtalfreq()
71 ilp_ctl = bcma_cc_read32(cc, BCMA_CC_PMU_XTAL_FREQ); in bcma_pmu_xtalfreq()
74 bcma_cc_write32(cc, BCMA_CC_PMU_XTAL_FREQ, 0); in bcma_pmu_xtalfreq()
80 static void bcma_pmu2_pll_init0(struct bcma_drv_cc *cc, u32 xtalfreq) in bcma_pmu2_pll_init0() argument
82 struct bcma_bus *bus = cc->core->bus; in bcma_pmu2_pll_init0()
115 pll0 = bcma_chipco_pll_read(cc, BCMA_CC_PMU15_PLL_PLLCTL0); in bcma_pmu2_pll_init0()
130 bcma_cc_mask32(cc, BCMA_CC_PMU_MINRES_MSK, mask); in bcma_pmu2_pll_init0()
131 bcma_cc_mask32(cc, BCMA_CC_PMU_MAXRES_MSK, mask); in bcma_pmu2_pll_init0()
132 bcma_wait_value(cc->core, BCMA_CLKCTLST, in bcma_pmu2_pll_init0()
139 bcma_chipco_pll_write(cc, BCMA_CC_PMU15_PLL_PLLCTL0, pll0); in bcma_pmu2_pll_init0()
142 if (cc->pmu.rev >= 2) in bcma_pmu2_pll_init0()
143 bcma_cc_set32(cc, BCMA_CC_PMU_CTL, BCMA_CC_PMU_CTL_PLL_UPD); in bcma_pmu2_pll_init0()
148 static void bcma_pmu_pll_init(struct bcma_drv_cc *cc) in bcma_pmu_pll_init() argument
150 struct bcma_bus *bus = cc->core->bus; in bcma_pmu_pll_init()
151 u32 xtalfreq = bcma_pmu_xtalfreq(cc); in bcma_pmu_pll_init()
157 bcma_pmu2_pll_init0(cc, xtalfreq); in bcma_pmu_pll_init()
162 static void bcma_pmu_resources_init(struct bcma_drv_cc *cc) in bcma_pmu_resources_init() argument
164 struct bcma_bus *bus = cc->core->bus; in bcma_pmu_resources_init()
198 bcma_cc_write32(cc, BCMA_CC_PMU_MINRES_MSK, min_msk); in bcma_pmu_resources_init()
200 bcma_cc_write32(cc, BCMA_CC_PMU_MAXRES_MSK, max_msk); in bcma_pmu_resources_init()
210 void bcma_chipco_bcm4331_ext_pa_lines_ctl(struct bcma_drv_cc *cc, bool enable) in bcma_chipco_bcm4331_ext_pa_lines_ctl() argument
212 struct bcma_bus *bus = cc->core->bus; in bcma_chipco_bcm4331_ext_pa_lines_ctl()
215 val = bcma_cc_read32(cc, BCMA_CC_CHIPCTL); in bcma_chipco_bcm4331_ext_pa_lines_ctl()
227 bcma_cc_write32(cc, BCMA_CC_CHIPCTL, val); in bcma_chipco_bcm4331_ext_pa_lines_ctl()
230 static void bcma_pmu_workarounds(struct bcma_drv_cc *cc) in bcma_pmu_workarounds() argument
232 struct bcma_bus *bus = cc->core->bus; in bcma_pmu_workarounds()
238 bcma_chipco_chipctl_maskset(cc, 0, in bcma_pmu_workarounds()
245 bcma_chipco_bcm4331_ext_pa_lines_ctl(cc, true); in bcma_pmu_workarounds()
252 bcma_cc_maskset32(cc, BCMA_CC_CHIPCTL, in bcma_pmu_workarounds()
255 bcma_chipco_chipctl_maskset(cc, 0, in bcma_pmu_workarounds()
259 bcma_chipco_chipctl_maskset(cc, 0, in bcma_pmu_workarounds()
270 void bcma_pmu_early_init(struct bcma_drv_cc *cc) in bcma_pmu_early_init() argument
274 pmucap = bcma_cc_read32(cc, BCMA_CC_PMU_CAP); in bcma_pmu_early_init()
275 cc->pmu.rev = (pmucap & BCMA_CC_PMU_CAP_REVISION); in bcma_pmu_early_init()
277 bcma_debug(cc->core->bus, "Found rev %u PMU (capabilities 0x%08X)\n", in bcma_pmu_early_init()
278 cc->pmu.rev, pmucap); in bcma_pmu_early_init()
281 void bcma_pmu_init(struct bcma_drv_cc *cc) in bcma_pmu_init() argument
283 if (cc->pmu.rev == 1) in bcma_pmu_init()
284 bcma_cc_mask32(cc, BCMA_CC_PMU_CTL, in bcma_pmu_init()
287 bcma_cc_set32(cc, BCMA_CC_PMU_CTL, in bcma_pmu_init()
290 bcma_pmu_pll_init(cc); in bcma_pmu_init()
291 bcma_pmu_resources_init(cc); in bcma_pmu_init()
292 bcma_pmu_workarounds(cc); in bcma_pmu_init()
295 u32 bcma_pmu_get_alp_clock(struct bcma_drv_cc *cc) in bcma_pmu_get_alp_clock() argument
297 struct bcma_bus *bus = cc->core->bus; in bcma_pmu_get_alp_clock()
325 if (cc->status & BCMA_CC_CHIPST_4360_XTAL_40MZ) in bcma_pmu_get_alp_clock()
331 bus->chipinfo.id, cc->pmu.rev, BCMA_CC_PMU_ALP_CLOCK); in bcma_pmu_get_alp_clock()
339 static u32 bcma_pmu_pll_clock(struct bcma_drv_cc *cc, u32 pll0, u32 m) in bcma_pmu_pll_clock() argument
342 struct bcma_bus *bus = cc->core->bus; in bcma_pmu_pll_clock()
351 tmp = bcma_cc_read32(cc, BCMA_CC_CHIPSTAT); in bcma_pmu_pll_clock()
356 tmp = bcma_chipco_pll_read(cc, pll0 + BCMA_CC_PPL_P1P2_OFF); in bcma_pmu_pll_clock()
360 tmp = bcma_chipco_pll_read(cc, pll0 + BCMA_CC_PPL_M14_OFF); in bcma_pmu_pll_clock()
364 tmp = bcma_chipco_pll_read(cc, pll0 + BCMA_CC_PPL_NM5_OFF); in bcma_pmu_pll_clock()
368 fc = bcma_pmu_get_alp_clock(cc) / 1000000; in bcma_pmu_pll_clock()
375 static u32 bcma_pmu_pll_clock_bcm4706(struct bcma_drv_cc *cc, u32 pll0, u32 m) in bcma_pmu_pll_clock_bcm4706() argument
383 tmp = bcma_chipco_pll_read(cc, pll0 + BCMA_CC_PMU6_4706_PROCPLL_OFF); in bcma_pmu_pll_clock_bcm4706()
391 tmp = bcma_cc_read32(cc, BCMA_CC_CHIPSTAT); in bcma_pmu_pll_clock_bcm4706()
406 u32 bcma_pmu_get_bus_clock(struct bcma_drv_cc *cc) in bcma_pmu_get_bus_clock() argument
408 struct bcma_bus *bus = cc->core->bus; in bcma_pmu_get_bus_clock()
414 return bcma_pmu_pll_clock(cc, BCMA_CC_PMU4716_MAINPLL_PLL0, in bcma_pmu_get_bus_clock()
417 return bcma_pmu_pll_clock(cc, BCMA_CC_PMU5356_MAINPLL_PLL0, in bcma_pmu_get_bus_clock()
421 return bcma_pmu_pll_clock(cc, BCMA_CC_PMU5357_MAINPLL_PLL0, in bcma_pmu_get_bus_clock()
424 return bcma_pmu_pll_clock_bcm4706(cc, in bcma_pmu_get_bus_clock()
431 bus->chipinfo.id, cc->pmu.rev, BCMA_CC_PMU_HT_CLOCK); in bcma_pmu_get_bus_clock()
438 u32 bcma_pmu_get_cpu_clock(struct bcma_drv_cc *cc) in bcma_pmu_get_cpu_clock() argument
440 struct bcma_bus *bus = cc->core->bus; in bcma_pmu_get_cpu_clock()
446 if (cc->pmu.rev >= 5) { in bcma_pmu_get_cpu_clock()
450 return bcma_pmu_pll_clock_bcm4706(cc, in bcma_pmu_get_cpu_clock()
465 return bcma_pmu_pll_clock(cc, pll, BCMA_CC_PMU5_MAINPLL_CPU); in bcma_pmu_get_cpu_clock()
469 return bcma_pmu_get_bus_clock(cc); in bcma_pmu_get_cpu_clock()
472 static void bcma_pmu_spuravoid_pll_write(struct bcma_drv_cc *cc, u32 offset, in bcma_pmu_spuravoid_pll_write() argument
475 bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, offset); in bcma_pmu_spuravoid_pll_write()
476 bcma_cc_write32(cc, BCMA_CC_PLLCTL_DATA, value); in bcma_pmu_spuravoid_pll_write()
479 void bcma_pmu_spuravoid_pllupdate(struct bcma_drv_cc *cc, int spuravoid) in bcma_pmu_spuravoid_pllupdate() argument
485 struct bcma_bus *bus = cc->core->bus; in bcma_pmu_spuravoid_pllupdate()
500 bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, in bcma_pmu_spuravoid_pllupdate()
502 tmp = bcma_cc_read32(cc, BCMA_CC_PLLCTL_DATA); in bcma_pmu_spuravoid_pllupdate()
505 bcma_cc_write32(cc, BCMA_CC_PLLCTL_DATA, tmp); in bcma_pmu_spuravoid_pllupdate()
508 bcma_cc_write32(cc, BCMA_CC_PLLCTL_ADDR, in bcma_pmu_spuravoid_pllupdate()
510 tmp = bcma_cc_read32(cc, BCMA_CC_PLLCTL_DATA); in bcma_pmu_spuravoid_pllupdate()
513 bcma_cc_write32(cc, BCMA_CC_PLLCTL_DATA, tmp); in bcma_pmu_spuravoid_pllupdate()
521 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, in bcma_pmu_spuravoid_pllupdate()
523 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, in bcma_pmu_spuravoid_pllupdate()
526 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, in bcma_pmu_spuravoid_pllupdate()
528 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, in bcma_pmu_spuravoid_pllupdate()
531 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, in bcma_pmu_spuravoid_pllupdate()
533 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, in bcma_pmu_spuravoid_pllupdate()
543 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, in bcma_pmu_spuravoid_pllupdate()
545 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, in bcma_pmu_spuravoid_pllupdate()
547 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, in bcma_pmu_spuravoid_pllupdate()
549 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, in bcma_pmu_spuravoid_pllupdate()
551 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, in bcma_pmu_spuravoid_pllupdate()
553 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, in bcma_pmu_spuravoid_pllupdate()
556 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, in bcma_pmu_spuravoid_pllupdate()
558 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, in bcma_pmu_spuravoid_pllupdate()
560 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, in bcma_pmu_spuravoid_pllupdate()
562 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, in bcma_pmu_spuravoid_pllupdate()
564 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, in bcma_pmu_spuravoid_pllupdate()
566 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, in bcma_pmu_spuravoid_pllupdate()
576 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, in bcma_pmu_spuravoid_pllupdate()
578 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, in bcma_pmu_spuravoid_pllupdate()
580 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, in bcma_pmu_spuravoid_pllupdate()
582 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, in bcma_pmu_spuravoid_pllupdate()
584 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, in bcma_pmu_spuravoid_pllupdate()
586 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, in bcma_pmu_spuravoid_pllupdate()
589 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, in bcma_pmu_spuravoid_pllupdate()
591 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, in bcma_pmu_spuravoid_pllupdate()
593 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, in bcma_pmu_spuravoid_pllupdate()
595 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, in bcma_pmu_spuravoid_pllupdate()
597 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, in bcma_pmu_spuravoid_pllupdate()
599 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, in bcma_pmu_spuravoid_pllupdate()
615 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, in bcma_pmu_spuravoid_pllupdate()
617 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, in bcma_pmu_spuravoid_pllupdate()
619 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, in bcma_pmu_spuravoid_pllupdate()
621 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, in bcma_pmu_spuravoid_pllupdate()
623 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, in bcma_pmu_spuravoid_pllupdate()
625 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, in bcma_pmu_spuravoid_pllupdate()
628 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL0, in bcma_pmu_spuravoid_pllupdate()
630 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL1, in bcma_pmu_spuravoid_pllupdate()
632 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL2, in bcma_pmu_spuravoid_pllupdate()
634 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL3, in bcma_pmu_spuravoid_pllupdate()
636 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL4, in bcma_pmu_spuravoid_pllupdate()
638 bcma_pmu_spuravoid_pll_write(cc, BCMA_CC_PMU_PLL_CTL5, in bcma_pmu_spuravoid_pllupdate()
649 tmp |= bcma_cc_read32(cc, BCMA_CC_PMU_CTL); in bcma_pmu_spuravoid_pllupdate()
650 bcma_cc_write32(cc, BCMA_CC_PMU_CTL, tmp); in bcma_pmu_spuravoid_pllupdate()