soc/mediatek: Add function to raise the CPU frequency of MT8192

Rename all mt_pll_raise_ca53_freq() into mt_pll_raise_little_cpu_freq().
Implement mt_pll_raise_little_cpu_freq() in MT8192.

Signed-off-by: Weiyi Lu <weiyi.lu@mediatek.com>
Change-Id: I97d9a61f39f2eb27f0c6f911a9199bf0eaae4fbe
Reviewed-on: https://review.coreboot.org/c/coreboot/+/45401
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
Weiyi Lu 2020-06-19 15:28:55 +08:00 committed by Hung-Te Lin
parent 83b33f62cf
commit 86b3bf10e6
7 changed files with 32 additions and 6 deletions

View File

@ -57,7 +57,7 @@ void platform_romstage_main(void)
mt6358_init(); mt6358_init();
/* Adjust VSIM2 down to 2.7V because it is shared with IT6505. */ /* Adjust VSIM2 down to 2.7V because it is shared with IT6505. */
pmic_set_vsim2_cali(2700); pmic_set_vsim2_cali(2700);
mt_pll_raise_ca53_freq(1989 * MHz); mt_pll_raise_little_cpu_freq(1989 * MHz);
pmic_init_scp_voltage(); pmic_init_scp_voltage();
rtc_boot(); rtc_boot();
mt_mem_init(&dparam_ops); mt_mem_init(&dparam_ops);

View File

@ -28,9 +28,9 @@ void platform_romstage_main(void)
/* Set to maximum frequency */ /* Set to maximum frequency */
if (board_id() + CONFIG_BOARD_ID_ADJUSTMENT < 5) if (board_id() + CONFIG_BOARD_ID_ADJUSTMENT < 5)
mt_pll_raise_ca53_freq(1600 * MHz); mt_pll_raise_little_cpu_freq(1600 * MHz);
else else
mt_pll_raise_ca53_freq(1700 * MHz); mt_pll_raise_little_cpu_freq(1700 * MHz);
mtk_mmu_after_dram(); mtk_mmu_after_dram();
} }

View File

@ -58,6 +58,6 @@ void pll_set_pcw_change(const struct pll *pll);
void mux_set_sel(const struct mux *mux, u32 sel); void mux_set_sel(const struct mux *mux, u32 sel);
int pll_set_rate(const struct pll *pll, u32 rate); int pll_set_rate(const struct pll *pll, u32 rate);
void mt_pll_init(void); void mt_pll_init(void);
void mt_pll_raise_ca53_freq(u32 freq); void mt_pll_raise_little_cpu_freq(u32 freq);
#endif #endif

View File

@ -417,7 +417,7 @@ void mt_pll_set_aud_div(u32 rate)
} }
} }
void mt_pll_raise_ca53_freq(u32 freq) void mt_pll_raise_little_cpu_freq(u32 freq)
{ {
pll_set_rate(&plls[APMIXED_ARMCA7PLL], freq); /* freq in Hz */ pll_set_rate(&plls[APMIXED_ARMCA7PLL], freq); /* freq in Hz */
} }

View File

@ -362,7 +362,7 @@ void mt_pll_init(void)
setbits32(&mt8183_infracfg->module_sw_cg_2_clr, 1 << 4); setbits32(&mt8183_infracfg->module_sw_cg_2_clr, 1 << 4);
} }
void mt_pll_raise_ca53_freq(u32 freq) void mt_pll_raise_little_cpu_freq(u32 freq)
{ {
/* enable [4] intermediate clock armpll_divider_pll1_ck */ /* enable [4] intermediate clock armpll_divider_pll1_ck */
setbits32(&mtk_topckgen->clk_misc_cfg_0, 1 << 4); setbits32(&mtk_topckgen->clk_misc_cfg_0, 1 << 4);

View File

@ -249,6 +249,7 @@ enum {
MCU_MUX_MASK = 0x3 << 9, MCU_MUX_MASK = 0x3 << 9,
MCU_MUX_SRC_PLL = 0x1 << 9, MCU_MUX_SRC_PLL = 0x1 << 9,
MCU_MUX_SRC_DIV_PLL1 = 0x2 << 9,
}; };
enum { enum {

View File

@ -434,3 +434,28 @@ void mt_pll_init(void)
/* enable [14] dramc_pll104m_ck */ /* enable [14] dramc_pll104m_ck */
setbits32(&mtk_topckgen->clk_misc_cfg_0, 1 << 14); setbits32(&mtk_topckgen->clk_misc_cfg_0, 1 << 14);
} }
void mt_pll_raise_little_cpu_freq(u32 freq)
{
/* enable [4] intermediate clock armpll_divider_pll1_ck */
setbits32(&mtk_topckgen->clk_misc_cfg_0, 1 << 4);
/* switch ca55 clock source to intermediate clock */
clrsetbits32(&mt8192_mcucfg->cpu_plldiv_cfg0, MCU_MUX_MASK, MCU_MUX_SRC_DIV_PLL1);
/* disable armpll_ll frequency output */
clrbits32(plls[APMIXED_ARMPLL_LL].reg, PLL_EN);
/* raise armpll_ll frequency */
pll_set_rate(&plls[APMIXED_ARMPLL_LL], freq);
/* enable armpll_ll frequency output */
setbits32(plls[APMIXED_ARMPLL_LL].reg, PLL_EN);
udelay(PLL_EN_DELAY);
/* switch ca55 clock source back to armpll_ll */
clrsetbits32(&mt8192_mcucfg->cpu_plldiv_cfg0, MCU_MUX_MASK, MCU_MUX_SRC_PLL);
/* disable [4] intermediate clock armpll_divider_pll1_ck */
clrbits32(&mtk_topckgen->clk_misc_cfg_0, 1 << 4);
}