static void iva_init_34xx(u32 sil_index, u32 clk_index) { struct prcm *prcm_base = (struct prcm *)PRCM_BASE; dpll_param *ptr = (dpll_param *) get_iva_dpll_param(); /* Moving to the right sysclk and ES rev base */ ptr = ptr + (3 * clk_index) + sil_index; /* IVA DPLL */ /* EN_IVA2_DPLL : CM_CLKEN_PLL_IVA2[0:2] */ sr32(&prcm_base->clken_pll_iva2, 0, 3, PLL_STOP); wait_on_value(ST_IVA2_CLK, 0, &prcm_base->idlest_pll_iva2, LDELAY); /* M2 (IVA2_DPLL_CLKOUT_DIV) : CM_CLKSEL2_PLL_IVA2[0:4] */ sr32(&prcm_base->clksel2_pll_iva2, 0, 5, ptr->m2); /* M (IVA2_DPLL_MULT) : CM_CLKSEL1_PLL_IVA2[8:18] */ sr32(&prcm_base->clksel1_pll_iva2, 8, 11, ptr->m); /* N (IVA2_DPLL_DIV) : CM_CLKSEL1_PLL_IVA2[0:6] */ sr32(&prcm_base->clksel1_pll_iva2, 0, 7, ptr->n); /* FREQSEL (IVA2_DPLL_FREQSEL) : CM_CLKEN_PLL_IVA2[4:7] */ sr32(&prcm_base->clken_pll_iva2, 4, 4, ptr->fsel); /* LOCK MODE (EN_IVA2_DPLL) : CM_CLKEN_PLL_IVA2[0:2] */ sr32(&prcm_base->clken_pll_iva2, 0, 3, PLL_LOCK); wait_on_value(ST_IVA2_CLK, 1, &prcm_base->idlest_pll_iva2, LDELAY); }
static void iva_dpll_init_34XX(int clk_index, int sil_index) { dpll_param *dpll_param_p; /* Getting the base address to IVA DPLL param table*/ dpll_param_p = (dpll_param *)get_iva_dpll_param(); /* Moving it to the right sysclk and ES rev base */ dpll_param_p = dpll_param_p + MAX_SIL_INDEX*clk_index + sil_index; /* IVA DPLL (set to 12*20=240MHz) */ sr32(CM_CLKEN_PLL_IVA2, 0, 3, PLL_STOP); wait_on_value(BIT0, 0, CM_IDLEST_PLL_IVA2, LDELAY); sr32(CM_CLKSEL2_PLL_IVA2, 0, 5, dpll_param_p->m2); /* set M2 */ /* IVA bypass clock set to CORECLK/4=(83Mhz) at OPP1 */ sr32(CM_CLKSEL1_PLL_IVA2, 19, 3, 4); /* set CLK_SRC */ sr32(CM_CLKSEL1_PLL_IVA2, 8, 11, dpll_param_p->m); /* set M */ sr32(CM_CLKSEL1_PLL_IVA2, 0, 7, dpll_param_p->n); /* set N */ sr32(CM_CLKEN_PLL_IVA2, 4, 4, dpll_param_p->fsel); /* FREQSEL */ sr32(CM_CLKEN_PLL_IVA2, 0, 3, PLL_LOCK); /* lock mode */ wait_on_value(BIT0, 1, CM_IDLEST_PLL_IVA2, LDELAY); }
static dpll_param *_get_iva_dpll(int clk_index, int sil_index) { dpll_param *ret = (dpll_param *)get_iva_dpll_param(); ret += (MAX_SIL_INDEX * clk_index) + sil_index; return ret; }