summaryrefslogtreecommitdiff
authorrenjiang.han <renjiang.han@amlogic.com>2019-03-21 03:16:43 (GMT)
committer Shen Liu <shen.liu@amlogic.com>2020-04-26 12:01:50 (GMT)
commit09d3e9c230e3d12269925ff26c034f6f7bbb09d1 (patch)
tree084e1784d85e3be035fb7b65df216608efd9b275
parent701b391af82e8e716019b8bcf88eadd27f2b9651 (diff)
downloadcommon-09d3e9c230e3d12269925ff26c034f6f7bbb09d1.zip
common-09d3e9c230e3d12269925ff26c034f6f7bbb09d1.tar.gz
common-09d3e9c230e3d12269925ff26c034f6f7bbb09d1.tar.bz2
PPMGR: modify phys_to_virt to codec_mm_vmap. [5/5]
PD#TV-2649 Problem: Kernel panic with phys_to_virt. Solution: Replace phys_to_virt with codec_mm_vmap. Verify: on u212 Change-Id: Ib3f94f66d37463490720cd1348b4ec94ad12aa15 Signed-off-by: renjiang.han <renjiang.han@amlogic.com>
Diffstat
-rw-r--r--drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c b/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c
index d9560b43..9a77833 100644
--- a/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c
+++ b/drivers/amlogic/media/video_processor/ppmgr/ppmgr_vpp.c
@@ -3626,7 +3626,8 @@ void stop_ppmgr_task(void)
static int tb_buffer_init(void)
{
int i;
- int flags = CODEC_MM_FLAGS_DMA_CPU | CODEC_MM_FLAGS_CMA_CLEAR;
+ //int flags = CODEC_MM_FLAGS_DMA_CPU | CODEC_MM_FLAGS_CMA_CLEAR;
+ int flags = 0;
if (tb_buffer_status)
return tb_buffer_status;
@@ -3675,7 +3676,8 @@ static int tb_buffer_init(void)
detect_buf[i].paddr = tb_buffer_start +
TB_DETECT_H * TB_DETECT_W * i;
detect_buf[i].vaddr =
- (ulong)phys_to_virt(detect_buf[i].paddr);
+ (ulong)codec_mm_vmap(detect_buf[i].paddr,
+ TB_DETECT_H * TB_DETECT_W);
if (ppmgr_device.tb_detect & 0xc) {
PPMGRVPP_INFO(
"detect buff(%d) paddr: %lx, vaddr: %lx\n",
@@ -3691,6 +3693,7 @@ static int tb_buffer_init(void)
static int tb_buffer_uninit(void)
{
+ int i;
if (tb_src_canvas) {
if (tb_src_canvas & 0xff)
canvas_pool_map_free_canvas(
@@ -3711,6 +3714,13 @@ static int tb_buffer_uninit(void)
PPMGRVPP_INFO("tb cma free addr is %x, size is %x\n",
(unsigned int)tb_buffer_start,
(unsigned int)tb_buffer_size);
+ for (i = 0; i < tb_buffer_len; i++) {
+ if (detect_buf[i].vaddr) {
+ codec_mm_unmap_phyaddr(
+ (u8 *)detect_buf[i].vaddr);
+ detect_buf[i].vaddr = 0;
+ }
+ }
codec_mm_free_for_dma(
"tb_detect",
tb_buffer_start);