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 <nanxin.qin@amlogic.com>

Change-Id: I7af64c9be2203ddc00dcfb48dad3e20d21d3eea8
This commit is contained in:
Nanxin Qin
2018-03-26 16:04:03 +08:00
committed by Dongjin Kim
parent f275f946ac
commit dec79ab908
5 changed files with 28 additions and 5 deletions

View File

@@ -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"},

View File

@@ -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
};

View File

@@ -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);

View File

@@ -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",

Binary file not shown.