From dec79ab908ad9a0ca21e71fc861a6295948dccaf Mon Sep 17 00:00:00 2001 From: Nanxin Qin Date: Mon, 26 Mar 2018 16:04:03 +0800 Subject: [PATCH] firmware: adds fws for gxm. PD#162700: add VIDEO_DEC_H264_MULTI_GXM VIDEO_DEC_H264_MVC_GXM Change-Id: I1007e9a559f3fdf7b17b43e905df5534814ccc3b Signed-off-by: Nanxin Qin Change-Id: I7af64c9be2203ddc00dcfb48dad3e20d21d3eea8 --- .../common/firmware/firmware_type.c | 2 ++ .../common/firmware/firmware_type.h | 2 ++ .../frame_provider/decoder/h264/vh264_mvc.c | 15 +++++++++++++-- .../decoder/h264_multi/vmh264.c | 14 +++++++++++--- firmware/video/video_ucode.bin | Bin 663296 -> 722176 bytes 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/drivers/amlogic/media_modules/common/firmware/firmware_type.c b/drivers/amlogic/media_modules/common/firmware/firmware_type.c index 5ef2620638b7..d21c597bcd07 100644 --- a/drivers/amlogic/media_modules/common/firmware/firmware_type.c +++ b/drivers/amlogic/media_modules/common/firmware/firmware_type.c @@ -18,8 +18,10 @@ static const struct type_name_s type_name[] = { {VIDEO_DEC_H264_4k2K, "h264_4k2k"}, {VIDEO_DEC_H264_4k2K_SINGLE, "h264_4k2k_single"}, {VIDEO_DEC_H264_MVC, "h264_mvc"}, + {VIDEO_DEC_H264_MVC_GXM, "h264_mvc_gxm"}, {VIDEO_DEC_H264_MULTI, "h264_multi"}, {VIDEO_DEC_H264_MULTI_MMU, "h264_multi_mmu"}, + {VIDEO_DEC_H264_MULTI_GXM, "h264_multi_gxm"}, {VIDEO_DEC_HEVC, "hevc"}, {VIDEO_DEC_HEVC_MMU, "hevc_mmu"}, {VIDEO_DEC_HEVC_G12A, "hevc_g12a"}, diff --git a/drivers/amlogic/media_modules/common/firmware/firmware_type.h b/drivers/amlogic/media_modules/common/firmware/firmware_type.h index 59f53e99d850..7affd819fae1 100644 --- a/drivers/amlogic/media_modules/common/firmware/firmware_type.h +++ b/drivers/amlogic/media_modules/common/firmware/firmware_type.h @@ -34,6 +34,8 @@ enum firmware_type_e { VIDEO_DEC_AVS2_MMU, VIDEO_DEC_AVS_GXM, VIDEO_DEC_AVS_NOCABAC, + VIDEO_DEC_H264_MULTI_GXM, + VIDEO_DEC_H264_MVC_GXM, FIRMWARE_MAX }; diff --git a/drivers/amlogic/media_modules/frame_provider/decoder/h264/vh264_mvc.c b/drivers/amlogic/media_modules/frame_provider/decoder/h264/vh264_mvc.c index cf8db1c26f5b..e96446bfef75 100644 --- a/drivers/amlogic/media_modules/frame_provider/decoder/h264/vh264_mvc.c +++ b/drivers/amlogic/media_modules/frame_provider/decoder/h264/vh264_mvc.c @@ -1419,7 +1419,14 @@ static s32 vh264mvc_init(void) amvdec_enable(); if (tee_enabled()) { - if (tee_load_video_fw((u32)VIDEO_DEC_H264_MVC, 0) != 0) { + pr_info("the video fw from the teeload.\n"); + + if (get_cpu_type() >= MESON_CPU_MAJOR_ID_GXM) + ret = tee_load_video_fw((u32)VIDEO_DEC_H264_MVC_GXM, 0); + else + ret = tee_load_video_fw((u32)VIDEO_DEC_H264_MVC, 0); + + if (ret != 0) { amvdec_disable(); return -1; } @@ -1436,7 +1443,11 @@ static s32 vh264mvc_init(void) WRITE_VREG(UCODE_START_ADDR, mc_dma_handle); - size = get_firmware_data(VIDEO_DEC_H264_MVC, buf); + if (get_cpu_type() >= MESON_CPU_MAJOR_ID_GXM) + size = get_firmware_data(VIDEO_DEC_H264_MVC_GXM, buf); + else + size = get_firmware_data(VIDEO_DEC_H264_MVC, buf); + if (size < 0) { pr_err("get firmware fail."); vfree(buf); diff --git a/drivers/amlogic/media_modules/frame_provider/decoder/h264_multi/vmh264.c b/drivers/amlogic/media_modules/frame_provider/decoder/h264_multi/vmh264.c index 5b11a88b82c9..e9b936781ab3 100644 --- a/drivers/amlogic/media_modules/frame_provider/decoder/h264_multi/vmh264.c +++ b/drivers/amlogic/media_modules/frame_provider/decoder/h264_multi/vmh264.c @@ -5063,7 +5063,11 @@ static s32 vh264_init(struct vdec_h264_hw_s *hw) if (IS_ERR_OR_NULL(fw)) return -ENOMEM; - size = get_firmware_data(VIDEO_DEC_H264_MULTI, fw->data); + if (get_cpu_type() >= MESON_CPU_MAJOR_ID_GXM) + size = get_firmware_data(VIDEO_DEC_H264_MULTI_GXM, fw->data); + else + size = get_firmware_data(VIDEO_DEC_H264_MULTI, fw->data); + if (size < 0) { pr_err("get firmware fail.\n"); vfree(fw); @@ -6350,8 +6354,12 @@ static void run(struct vdec_s *vdec, unsigned long mask, start_process_time(hw); if (tee_enabled()) { - if (tee_load_video_fw((u32)VIDEO_DEC_H264_MULTI, 0) - != 0) { + unsigned int fw_type = VIDEO_DEC_H264_MULTI; + + if (get_cpu_type() >= MESON_CPU_MAJOR_ID_GXM) + fw_type = VIDEO_DEC_H264_MULTI_GXM; + + if (tee_load_video_fw(fw_type, 0) != 0) { amvdec_enable_flag = false; amvdec_disable(); pr_err("id: %d, %s: Error amvdec_vdec_loadmc fail\n", diff --git a/firmware/video/video_ucode.bin b/firmware/video/video_ucode.bin index 46f2a7c0e2238f8200ff782dfea096e63e6fa2fa..721c9b8e4fd8b001e36035becb7a2c45bcb00480 100644 GIT binary patch delta 5517 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 ZAk<3W2HZqPEe~&i8Ka?=%5F&W`43WssaXI3