clk_mgt
val = readl(prcmu_base + clk_mgt[clock].offset);
val |= (PRCM_CLK_MGT_CLKEN | clk_mgt[clock].pllsw);
clk_mgt[clock].pllsw = (val & PRCM_CLK_MGT_CLKPLLSW_MASK);
writel(val, prcmu_base + clk_mgt[clock].offset);
val = readl(prcmu_base + clk_mgt[clock].offset);
if (clk_mgt[clock].clk38div && (val & PRCM_CLK_MGT_CLK38DIV))
val |= clk_mgt[clock].pllsw;
rate = pll_rate(PRCM_PLLSOC0_FREQ, rate, clk_mgt[clock].branch);
rate = pll_rate(PRCM_PLLSOC1_FREQ, rate, clk_mgt[clock].branch);
rate = pll_rate(PRCM_PLLDDR_FREQ, rate, clk_mgt[clock].branch);
val = readl(prcmu_base + clk_mgt[clock].offset);
src_rate = clock_source_rate((val | clk_mgt[clock].pllsw),
clk_mgt[clock].branch);
if (clk_mgt[clock].clk38div) {
val = readl(prcmu_base + clk_mgt[clock].offset);
src_rate = clock_source_rate((val | clk_mgt[clock].pllsw),
clk_mgt[clock].branch);
if (clk_mgt[clock].clk38div) {
writel(val, prcmu_base + clk_mgt[clock].offset);
static struct clk_mgt clk_mgt[PRCMU_NUM_REG_CLOCKS] = {