/* enable a clock gate */ static int pmu_enable(struct clk *clk) { int retry = 1000000; pmu_w32(pmu_r32(PWDCR(clk->module)) & ~clk->bits, PWDCR(clk->module)); do {} while (--retry && (pmu_r32(PWDSR(clk->module)) & clk->bits)); if (!retry) panic("activating PMU module failed!\n"); return 0; }
/* disable a clock gate */ static void pmu_disable(struct clk *clk) { int retry = 1000000; if (of_machine_is_compatible("lantiq,ar10") || of_machine_is_compatible("lantiq,grx390")) { pmu_w32(clk->bits, PWDCR_DIS_XRX(clk->module)); do {} while (--retry && (pmu_r32(PWDSR_XRX(clk->module)) & clk->bits)); } else { spin_lock(&g_pmu_lock); pmu_w32(pmu_r32(PWDCR(clk->module)) | clk->bits, PWDCR(clk->module)); do {} while (--retry && (!(pmu_r32(PWDSR(clk->module)) & clk->bits))); spin_unlock(&g_pmu_lock); } if (!retry) pr_warn("deactivating PMU module failed!"); }
/* enable a clock gate */ static int pmu_enable(struct clk *clk) { int retry = 1000000; if (of_machine_is_compatible("lantiq,ar10") || of_machine_is_compatible("lantiq,grx390")) { pmu_w32(clk->bits, PWDCR_EN_XRX(clk->module)); do {} while (--retry && (!(pmu_r32(PWDSR_XRX(clk->module)) & clk->bits))); } else { spin_lock(&g_pmu_lock); pmu_w32(pmu_r32(PWDCR(clk->module)) & ~clk->bits, PWDCR(clk->module)); do {} while (--retry && (pmu_r32(PWDSR(clk->module)) & clk->bits)); spin_unlock(&g_pmu_lock); } if (!retry) panic("activating PMU module failed!"); return 0; }