From: 陈恒明 Date: Thu, 30 Dec 2010 02:39:13 +0000 (-0800) Subject: rk29: vpu: add reset and unreset when power on X-Git-Tag: firefly_0821_release~10865 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3ae2a264c171606e0f2fc585dcea712fe0cb8244;p=firefly-linux-kernel-4.4.55.git rk29: vpu: add reset and unreset when power on --- diff --git a/arch/arm/mach-rk29/vpu.c b/arch/arm/mach-rk29/vpu.c index e4c707058f1c..fb343c4c28e9 100644 --- a/arch/arm/mach-rk29/vpu.c +++ b/arch/arm/mach-rk29/vpu.c @@ -39,6 +39,8 @@ #include #include #include +#include + #define DEC_INTERRUPT_REGISTER 1 #define PP_INTERRUPT_REGISTER 60 @@ -100,28 +102,37 @@ static void vpu_put_clk(void) static void vpu_power_on(void) { - pr_debug("power on\n"); + printk("power on\n"); if (client.enabled) return; - pr_debug("power domain on\n"); + printk("power domain on\n"); pmu_set_power_domain(PD_VCODEC, true); + udelay(10); clk_enable(aclk_vepu); clk_enable(hclk_vepu); clk_enable(aclk_ddr_vepu); clk_enable(hclk_cpu_vcodec); + udelay(10); + writel( (1<<27), RK29_CRU_BASE + CRU_SOFTRST0_CON ); + writel( (1<<19), RK29_CRU_BASE + CRU_SOFTRST2_CON ); + writel( (1<<18), RK29_CRU_BASE + CRU_SOFTRST2_CON ); + writel( (1<<15), RK29_CRU_BASE + CRU_SOFTRST2_CON ); + udelay(10); + writel( 0, RK29_CRU_BASE + CRU_SOFTRST0_CON ); + writel( 0, RK29_CRU_BASE + CRU_SOFTRST2_CON ); client.enabled = true; } static void vpu_power_off(void) { - pr_debug("power off\n"); + printk("power off\n"); if (!client.enabled) return; clk_disable(hclk_cpu_vcodec); clk_disable(aclk_ddr_vepu); clk_disable(hclk_vepu); clk_disable(aclk_vepu); - pr_debug("power domain off\n"); + printk("power domain off\n"); pmu_set_power_domain(PD_VCODEC, false); client.enabled = false; }