|
@@ -108,37 +108,6 @@
|
|
|
#define RES4313_HT_AVAIL_RSRC 14
|
|
|
#define RES4313_MACPHY_CLK_AVAIL_RSRC 15
|
|
|
|
|
|
-/* Determine min/max rsrc masks. Value 0 leaves hardware at default. */
|
|
|
-static void si_pmu_res_masks(struct si_pub *sih, u32 * pmin, u32 * pmax)
|
|
|
-{
|
|
|
- u32 min_mask = 0, max_mask = 0;
|
|
|
- uint rsrcs;
|
|
|
-
|
|
|
- /* # resources */
|
|
|
- rsrcs = (ai_get_pmucaps(sih) & PCAP_RC_MASK) >> PCAP_RC_SHIFT;
|
|
|
-
|
|
|
- /* determine min/max rsrc masks */
|
|
|
- switch (ai_get_chip_id(sih)) {
|
|
|
- case BCM43224_CHIP_ID:
|
|
|
- case BCM43225_CHIP_ID:
|
|
|
- /* ??? */
|
|
|
- break;
|
|
|
-
|
|
|
- case BCM4313_CHIP_ID:
|
|
|
- min_mask = PMURES_BIT(RES4313_BB_PU_RSRC) |
|
|
|
- PMURES_BIT(RES4313_XTAL_PU_RSRC) |
|
|
|
- PMURES_BIT(RES4313_ALP_AVAIL_RSRC) |
|
|
|
- PMURES_BIT(RES4313_BB_PLL_PWRSW_RSRC);
|
|
|
- max_mask = 0xffff;
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- *pmin = min_mask;
|
|
|
- *pmax = max_mask;
|
|
|
-}
|
|
|
-
|
|
|
void si_pmu_spuravoid_pllupdate(struct si_pub *sih, u8 spuravoid)
|
|
|
{
|
|
|
u32 tmp = 0;
|
|
@@ -284,51 +253,6 @@ u32 si_pmu_alp_clock(struct si_pub *sih)
|
|
|
return clock;
|
|
|
}
|
|
|
|
|
|
-/* initialize PMU */
|
|
|
-void si_pmu_init(struct si_pub *sih)
|
|
|
-{
|
|
|
- struct si_info *sii = container_of(sih, struct si_info, pub);
|
|
|
- struct bcma_device *core;
|
|
|
-
|
|
|
- /* select chipc */
|
|
|
- core = sii->icbus->drv_cc.core;
|
|
|
-
|
|
|
- if (ai_get_pmurev(sih) == 1)
|
|
|
- bcma_mask32(core, CHIPCREGOFFS(pmucontrol),
|
|
|
- ~PCTL_NOILP_ON_WAIT);
|
|
|
- else if (ai_get_pmurev(sih) >= 2)
|
|
|
- bcma_set32(core, CHIPCREGOFFS(pmucontrol), PCTL_NOILP_ON_WAIT);
|
|
|
-}
|
|
|
-
|
|
|
-/* initialize PMU resources */
|
|
|
-void si_pmu_res_init(struct si_pub *sih)
|
|
|
-{
|
|
|
- struct si_info *sii = container_of(sih, struct si_info, pub);
|
|
|
- struct bcma_device *core;
|
|
|
- u32 min_mask = 0, max_mask = 0;
|
|
|
-
|
|
|
- /* select to chipc */
|
|
|
- core = sii->icbus->drv_cc.core;
|
|
|
-
|
|
|
- /* Determine min/max rsrc masks */
|
|
|
- si_pmu_res_masks(sih, &min_mask, &max_mask);
|
|
|
-
|
|
|
- /* It is required to program max_mask first and then min_mask */
|
|
|
-
|
|
|
- /* Program max resource mask */
|
|
|
-
|
|
|
- if (max_mask)
|
|
|
- bcma_write32(core, CHIPCREGOFFS(max_res_mask), max_mask);
|
|
|
-
|
|
|
- /* Program min resource mask */
|
|
|
-
|
|
|
- if (min_mask)
|
|
|
- bcma_write32(core, CHIPCREGOFFS(min_res_mask), min_mask);
|
|
|
-
|
|
|
- /* Add some delay; allow resources to come up and settle. */
|
|
|
- mdelay(2);
|
|
|
-}
|
|
|
-
|
|
|
u32 si_pmu_measure_alpclk(struct si_pub *sih)
|
|
|
{
|
|
|
struct si_info *sii = container_of(sih, struct si_info, pub);
|