summaryrefslogtreecommitdiff
authorYvonne Chen <yvonne.chen@amlogic.com>2018-01-18 08:37:56 (GMT)
committer Zhi Zhou <zhi.zhou@amlogic.com>2018-01-30 11:56:47 (GMT)
commitacc00bcd7183f51973de7fef6604eb45b72afd4c (patch)
treedce697435bfd42d17a473d0c400e40a79152c41f
parent6fa7657f7faef02a801fd5d611ea684953a41468 (diff)
downloadmedia_modules-acc00bcd7183f51973de7fef6604eb45b72afd4c.zip
media_modules-acc00bcd7183f51973de7fef6604eb45b72afd4c.tar.gz
media_modules-acc00bcd7183f51973de7fef6604eb45b72afd4c.tar.bz2
media_modules: sec firmload extend with vdec type
PD#159071 1.change tee load call with vdec type 2. fixed h264 mmu crashed bug. Change-Id: I4114a2d0d8c5837a6c51457472bfc0ceca17a99d Signed-off-by: Yvonne Chen <yvonne.chen@amlogic.com>
Diffstat
-rw-r--r--drivers/common/firmware/firmware_drv.c2
-rw-r--r--drivers/frame_provider/decoder/h264/vh264.c2
-rw-r--r--drivers/frame_provider/decoder/h264/vh264_mvc.c2
-rw-r--r--drivers/frame_provider/decoder/h264_multi/vmh264.c13
-rw-r--r--drivers/frame_provider/decoder/utils/amvdec.c44
5 files changed, 36 insertions, 27 deletions
diff --git a/drivers/common/firmware/firmware_drv.c b/drivers/common/firmware/firmware_drv.c
index 9f5e392..a077aef 100644
--- a/drivers/common/firmware/firmware_drv.c
+++ b/drivers/common/firmware/firmware_drv.c
@@ -77,7 +77,7 @@ int get_firmware_data(enum firmware_type_e type, char *buf)
if (tee_enabled()) {
pr_info ("tee load firmware type= %d\n",(u32)type);
- ret = tee_load_video_fw((u32)type);
+ ret = tee_load_video_fw((u32)type, 0);
if (ret == 0)
ret = 1;
else
diff --git a/drivers/frame_provider/decoder/h264/vh264.c b/drivers/frame_provider/decoder/h264/vh264.c
index a4e8ff8..5d53cb3 100644
--- a/drivers/frame_provider/decoder/h264/vh264.c
+++ b/drivers/frame_provider/decoder/h264/vh264.c
@@ -2567,7 +2567,7 @@ static s32 vh264_init(void)
amvdec_enable();
if (!firmwareloaded && tee_enabled()) {
- if (tee_load_video_fw((u32)VIDEO_DEC_H264) != 0) {
+ if (tee_load_video_fw((u32)VIDEO_DEC_H264, 0) != 0) {
amvdec_disable();
return -1;
}
diff --git a/drivers/frame_provider/decoder/h264/vh264_mvc.c b/drivers/frame_provider/decoder/h264/vh264_mvc.c
index 6a71b62..cf8db1c 100644
--- a/drivers/frame_provider/decoder/h264/vh264_mvc.c
+++ b/drivers/frame_provider/decoder/h264/vh264_mvc.c
@@ -1419,7 +1419,7 @@ static s32 vh264mvc_init(void)
amvdec_enable();
if (tee_enabled()) {
- if (tee_load_video_fw((u32)VIDEO_DEC_H264_MVC) != 0) {
+ if (tee_load_video_fw((u32)VIDEO_DEC_H264_MVC, 0) != 0) {
amvdec_disable();
return -1;
}
diff --git a/drivers/frame_provider/decoder/h264_multi/vmh264.c b/drivers/frame_provider/decoder/h264_multi/vmh264.c
index bcdb59a..3cac836 100644
--- a/drivers/frame_provider/decoder/h264_multi/vmh264.c
+++ b/drivers/frame_provider/decoder/h264_multi/vmh264.c
@@ -4549,7 +4549,16 @@ static s32 vh264_init(struct vdec_h264_hw_s *hw)
}
}
if (tee_enabled() && !firmwareloaded) {
- pr_info("VMH264 start load sec firmware ...\n");
+ pr_info("VMH264 start tee load sec firmware ...\n");
+ if (mmu_enable &&
+ tee_load_video_fw((u32)VIDEO_DEC_H264_MULTI_MMU, 2)
+ != 0) {
+ amvdec_enable_flag = false;
+ amvdec_disable();
+ pr_info("%s: Error amvdec_mmu_loadmc fail\n",
+ __func__);
+ return -1;
+ }
} else {
/* -- ucode loading (amrisc and swap code) */
hw->mc_cpu_addr =
@@ -5194,7 +5203,7 @@ static void run(struct vdec_s *vdec,
start_process_time(hw);
if (tee_enabled()) {
- if (tee_load_video_fw((u32)VIDEO_DEC_H264_MULTI)
+ if (tee_load_video_fw((u32)VIDEO_DEC_H264_MULTI, 0)
!= 0) {
amvdec_enable_flag = false;
amvdec_disable();
diff --git a/drivers/frame_provider/decoder/utils/amvdec.c b/drivers/frame_provider/decoder/utils/amvdec.c
index 91a420b..1c4793a 100644
--- a/drivers/frame_provider/decoder/utils/amvdec.c
+++ b/drivers/frame_provider/decoder/utils/amvdec.c
@@ -378,68 +378,68 @@ s32 optee_load_fw(enum vformat_e type, const char *name)
s32 ret = 0;
switch ((u32)type) {
case VFORMAT_VC1:
- ret = tee_load_video_fw((u32)VIDEO_DEC_VC1);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_VC1, 0);
break;
case VFORMAT_AVS:
- ret = tee_load_video_fw((u32)VIDEO_DEC_AVS);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_AVS, 0);
break;
case VFORMAT_MPEG12:
- ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG12);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG12, 0);
break;
case VFORMAT_MJPEG:
- ret = tee_load_video_fw((u32)VIDEO_DEC_MJPEG);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_MJPEG, 0);
break;
case VFORMAT_VP9:
- ret = tee_load_video_fw((u32)VIDEO_DEC_VP9_MMU);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_VP9_MMU, 0);
break;
case VFORMAT_HEVC:
if (!strcmp(name, "vh265_mc"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_HEVC);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_HEVC, 0);
else if (!strcmp(name, "vh265_mc_mmu"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_HEVC_MMU);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_HEVC_MMU, 0);
break;
case VFORMAT_REAL:
if (!strcmp(name, "vreal_mc_8"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_REAL_V8);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_REAL_V8, 0);
else if (!strcmp(name, "vreal_mc_9"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_REAL_V9);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_REAL_V9, 0);
break;
case VFORMAT_MPEG4:
if (!strcmp(name, "vmpeg4_mc_311"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_3);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_3, 0);
else if (!strcmp(name, "vmpeg4_mc_4"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_4);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_4, 0);
else if (!strcmp(name, "vmpeg4_mc_5"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_5);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_5, 0);
else if (!strcmp(name, "h263_mc"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_FORMAT_H263);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_FORMAT_H263, 0);
break;
default:
if (!strcmp(name, "vh265_mc"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_HEVC);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_HEVC, 0);
else if (!strcmp(name, "vh265_mc_mmu"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_HEVC_MMU);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_HEVC_MMU, 0);
else if (!strcmp(name, "vmpeg4_mc_311"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_3);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_3, 0);
else if (!strcmp(name, "vmpeg4_mc_4"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_4);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_4, 0);
else if (!strcmp(name, "vmpeg4_mc_5"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_5);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_MPEG4_5, 0);
else if (!strcmp(name, "h263_mc"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_FORMAT_H263);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_FORMAT_H263, 0);
else if (!strcmp(name, "vreal_mc_8"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_REAL_V8);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_REAL_V8, 0);
else if (!strcmp(name, "vreal_mc_9"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_REAL_V9);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_REAL_V9, 0);
else if (!strcmp(name, "vmmjpeg_mc"))
- ret = tee_load_video_fw((u32)VIDEO_DEC_MJPEG_MULTI);
+ ret = tee_load_video_fw((u32)VIDEO_DEC_MJPEG_MULTI, 0);
else
pr_info("unknow dec format\n");
break;