From 3ae2a264c171606e0f2fc585dcea712fe0cb8244 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=99=88=E6=81=92=E6=98=8E?= Date: Wed, 29 Dec 2010 18:39:13 -0800 Subject: [PATCH] rk29: vpu: add reset and unreset when power on --- arch/arm/mach-rk29/vpu.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) 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; } -- 2.34.1