From: 黄涛 Date: Wed, 1 Sep 2010 05:58:37 +0000 (+0800) Subject: dsp: 打开电源域时避免访问DDR X-Git-Tag: firefly_0821_release~11207 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9d6a2b30729fd6d005322251ed12a87e190a8824;p=firefly-linux-kernel-4.4.55.git dsp: 打开电源域时避免访问DDR --- diff --git a/drivers/staging/rk2818/rk2818_dsp/rk2818_dsp.c b/drivers/staging/rk2818/rk2818_dsp/rk2818_dsp.c index f6170cf9f9df..0561611ad697 100755 --- a/drivers/staging/rk2818/rk2818_dsp/rk2818_dsp.c +++ b/drivers/staging/rk2818/rk2818_dsp/rk2818_dsp.c @@ -338,6 +338,20 @@ void dsp_set_clk(int clkrate) #endif } +#ifdef CONFIG_CHIP_RK2818 +#include +static void __tcmfunc dsp_subsys_power_on(void) +{ + unsigned long flags; + + local_irq_save(flags); + /* dsp subsys power on 0x21*/ + tcm_udelay(1, 600); //¿ªÖ®Ç°Ò²µÃ¼Ó,±ÜÃâ×ÜÏß»¹ÔÚ·ÃÎÊ + __raw_writel((__raw_readl(SCU_BASE_ADDR_VA+0x10) & (~0x21)) , SCU_BASE_ADDR_VA+0x10); + tcm_udelay(1, 600); //¹ØÖжÏʱ¼ä²»ÄÜÌ«³¤ (´ó¸ÅΪ1us) + local_irq_restore(flags); +} +#endif void dsp_powerctl(int ctl, int arg) { @@ -348,15 +362,9 @@ void dsp_powerctl(int ctl, int arg) { case DPC_NORMAL: { -#if 0 //def CONFIG_CHIP_RK2818 //coreµçѹ²»ÎÈʱ,dspÉϵç»áµ¼ÖÂAHBȡָ´íÎó,ËùÒÔdspÉϵçºóµ½Îȶ¨ÆÚ¼ä²»²Ù×÷AHB - unsigned long flags; - local_irq_save(flags); - /* dsp subsys power on 0x21*/ - ddr_pll_delay(6000); //¿ªÖ®Ç°Ò²µÃ¼Ó,±ÜÃâ×ÜÏß»¹ÔÚ·ÃÎÊ - __raw_writel((__raw_readl(SCU_BASE_ADDR_VA+0x10) & (~0x21)) , SCU_BASE_ADDR_VA+0x10); - ddr_pll_delay(6000); //¹ØÖжÏʱ¼ä²»ÄÜÌ«³¤ (6000´ó¸ÅΪ1us) - local_irq_restore(flags); - mdelay(10); +#ifdef CONFIG_CHIP_RK2818 //coreµçѹ²»ÎÈʱ,dspÉϵç»áµ¼ÖÂAHBȡָ´íÎó,ËùÒÔdspÉϵçºóµ½Îȶ¨ÆÚ¼ä²»²Ù×÷AHB + dsp_subsys_power_on(); + mdelay(10); #else /* dsp subsys power on 0x21*/ __raw_writel((__raw_readl(SCU_BASE_ADDR_VA+0x10) & (~0x21)) , SCU_BASE_ADDR_VA+0x10);