From acc00bcd7183f51973de7fef6604eb45b72afd4c Mon Sep 17 00:00:00 2001 From: Yvonne Chen Date: Thu, 18 Jan 2018 08:37:56 +0000 Subject: 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 --- 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; -- cgit