diff options
author | danh-arm <dan.handley@arm.com> | 2016-08-12 12:19:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-12 12:19:43 +0100 |
commit | 50990186aa0e775a4f15935d90db9c16eda7228a (patch) | |
tree | 43d02cdecd5d93c2a4e267ee4d1e002575d4bd6d /plat/rockchip/rk3399/drivers/soc/soc.c | |
parent | ee3e93592547e78fc4ec5b88d93447e05e3b80c5 (diff) | |
parent | 78f7017cdd2290c6fded1d5d00e700424ada9cc1 (diff) |
Merge pull request #679 from rockchip-linux/support-pwm-for-rk3399
Support pwm for rk3399
Diffstat (limited to 'plat/rockchip/rk3399/drivers/soc/soc.c')
-rw-r--r-- | plat/rockchip/rk3399/drivers/soc/soc.c | 51 |
1 files changed, 34 insertions, 17 deletions
diff --git a/plat/rockchip/rk3399/drivers/soc/soc.c b/plat/rockchip/rk3399/drivers/soc/soc.c index 9ccf90c4..29bf6dda 100644 --- a/plat/rockchip/rk3399/drivers/soc/soc.c +++ b/plat/rockchip/rk3399/drivers/soc/soc.c @@ -236,7 +236,22 @@ static void _pll_suspend(uint32_t pll_id) set_pll_bypass(pll_id); } -void plls_suspend(void) +void disable_dvfs_plls(void) +{ + _pll_suspend(CPLL_ID); + _pll_suspend(NPLL_ID); + _pll_suspend(VPLL_ID); + _pll_suspend(GPLL_ID); + _pll_suspend(ABPLL_ID); + _pll_suspend(ALPLL_ID); +} + +void disable_nodvfs_plls(void) +{ + _pll_suspend(PPLL_ID); +} + +void plls_suspend_prepare(void) { uint32_t i, pll_id; @@ -251,14 +266,6 @@ void plls_suspend(void) slp_data.pmucru_clksel_con[i] = mmio_read_32(PMUCRU_BASE + PMUCRU_CLKSEL_OFFSET + i * REG_SIZE); - - _pll_suspend(CPLL_ID); - _pll_suspend(NPLL_ID); - _pll_suspend(VPLL_ID); - _pll_suspend(PPLL_ID); - _pll_suspend(GPLL_ID); - _pll_suspend(ABPLL_ID); - _pll_suspend(ALPLL_ID); } void clk_gate_con_save(void) @@ -308,7 +315,13 @@ static void set_plls_nobypass(uint32_t pll_id) PLL_NO_BYPASS_MODE); } -static void plls_resume_prepare(void) +static void _pll_resume(uint32_t pll_id) +{ + set_plls_nobypass(pll_id); + set_pll_normal_mode(pll_id); +} + +void plls_resume_finish(void) { int i; @@ -321,15 +334,19 @@ static void plls_resume_prepare(void) REG_SOC_WMSK | slp_data.pmucru_clksel_con[i]); } -void plls_resume(void) +void enable_dvfs_plls(void) { - int pll_id; + _pll_resume(ALPLL_ID); + _pll_resume(ABPLL_ID); + _pll_resume(GPLL_ID); + _pll_resume(VPLL_ID); + _pll_resume(NPLL_ID); + _pll_resume(CPLL_ID); +} - plls_resume_prepare(); - for (pll_id = ALPLL_ID; pll_id < END_PLL_ID; pll_id++) { - set_plls_nobypass(pll_id); - set_pll_normal_mode(pll_id); - } +void enable_nodvfs_plls(void) +{ + _pll_resume(PPLL_ID); } void soc_global_soft_reset_init(void) |