diff options
author | Sammy He <r62914@freescale.com> | 2011-05-31 17:48:12 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-07-20 13:13:57 +0800 |
commit | 2ae68edebeffb2fe4873a34a4308e2f0790c4e9e (patch) | |
tree | e99f76f60b274d28dea2126603270cf30559f43e /drivers/mxc/vpu | |
parent | e705c54669ef495fce0a511d8503d62abbb4152c (diff) |
ENGR00144306-1 VPU: remove VPU IRAM config and add iram info to plat data.
One kernel image is requested, however, we need to enable iram
for performance improvement on mx53, and disable it on mx51 due
to known issue. So use platform data to pass vpu iram disable/enable
flag. And considering requested iram size also can be different per
requirement, iram size is also set in platform data.
Signed-off-by: Sammy He <r62914@freescale.com>
Diffstat (limited to 'drivers/mxc/vpu')
-rw-r--r-- | drivers/mxc/vpu/Kconfig | 8 | ||||
-rw-r--r-- | drivers/mxc/vpu/mxc_vpu.c | 20 |
2 files changed, 9 insertions, 19 deletions
diff --git a/drivers/mxc/vpu/Kconfig b/drivers/mxc/vpu/Kconfig index 37e55e03d2f2..144a4c20b26f 100644 --- a/drivers/mxc/vpu/Kconfig +++ b/drivers/mxc/vpu/Kconfig @@ -12,14 +12,6 @@ config MXC_VPU The VPU codec device provides codec function for H.264/MPEG4/H.263, as well as MPEG2/VC-1/DivX on some platforms. -config MXC_VPU_IRAM - tristate "Use IRAM as temporary buffer for VPU to enhance performace" - depends on (ARCH_MX37 || ARCH_MX5) - default y - ---help--- - The VPU can use internal RAM as temporary buffer to save external - memroy bandwith, thus to enhance video performance. - config MXC_VPU_DEBUG bool "MXC VPU debugging" depends on MXC_VPU != n diff --git a/drivers/mxc/vpu/mxc_vpu.c b/drivers/mxc/vpu/mxc_vpu.c index afac6d95e8c3..6f7f30a86a27 100644 --- a/drivers/mxc/vpu/mxc_vpu.c +++ b/drivers/mxc/vpu/mxc_vpu.c @@ -594,13 +594,13 @@ static int vpu_dev_probe(struct platform_device *pdev) vpu_plat = pdev->dev.platform_data; - if (VPU_IRAM_SIZE) - iram_alloc(VPU_IRAM_SIZE, &addr); + if (vpu_plat && vpu_plat->iram_enable && vpu_plat->iram_size) + iram_alloc(vpu_plat->iram_size, &addr); if (addr == 0) iram.start = iram.end = 0; else { iram.start = addr; - iram.end = addr + VPU_IRAM_SIZE - 1; + iram.end = addr + vpu_plat->iram_size - 1; } if (cpu_is_mx32()) { @@ -683,8 +683,8 @@ static int vpu_dev_remove(struct platform_device *pdev) destroy_workqueue(vpu_data.workqueue); iounmap(vpu_base); - if (VPU_IRAM_SIZE) - iram_free(iram.start, VPU_IRAM_SIZE); + if (vpu_plat && vpu_plat->iram_enable && vpu_plat->iram_size) + iram_free(iram.start, vpu_plat->iram_size); return 0; } @@ -729,9 +729,8 @@ static int vpu_suspend(struct platform_device *pdev, pm_message_t state) clk_disable(vpu_clk); } - if (cpu_is_mx37() || cpu_is_mx51() || cpu_is_mx53()) - if (vpu_plat->pg) - vpu_plat->pg(1); + if ((cpu_is_mx37() || cpu_is_mx51()) && vpu_plat->pg) + vpu_plat->pg(1); return 0; @@ -745,9 +744,8 @@ static int vpu_resume(struct platform_device *pdev) { int i; - if (cpu_is_mx37() || cpu_is_mx51() || cpu_is_mx53()) - if (vpu_plat->pg) - vpu_plat->pg(0); + if ((cpu_is_mx37() || cpu_is_mx51()) && vpu_plat->pg) + vpu_plat->pg(0); if (cpu_is_mx53()) goto recover_clk; |