diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c index f388ab35f5de..13e8a5d94b51 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c @@ -1380,16 +1380,12 @@ static void hdmitx_set_drm_pkt(struct master_display_info_s *data) static unsigned char DRM_DB[26] = {0x0}; hdmi_debug(); - if (data) - memcpy(&drm_config_data, data, - sizeof(struct master_display_info_s)); - else - memset(&drm_config_data, 0, - sizeof(struct master_display_info_s)); + memcpy(&drm_config_data, data, sizeof(struct master_display_info_s)); + if (hsty_drm_config_loc > 7) hsty_drm_config_loc = 0; memcpy(&hsty_drm_config_data[hsty_drm_config_loc++], - &drm_config_data, sizeof(struct master_display_info_s)); + data, sizeof(struct master_display_info_s)); if (hsty_drm_config_num < 8) hsty_drm_config_num++; else @@ -1605,12 +1601,7 @@ static void hdmitx_set_vsif_pkt(enum eotf_type type, static uint8_t ltmode = -1; hdmi_debug(); - if (data == NULL) - memcpy(&vsif_debug_info.data, ¶, - sizeof(struct dv_vsif_para)); - else - memcpy(&vsif_debug_info.data, data, - sizeof(struct dv_vsif_para)); + memcpy(&vsif_debug_info.data, data, sizeof(struct dv_vsif_para)); vsif_debug_info.type = type; vsif_debug_info.tunnel_mode = tunnel_mode; vsif_debug_info.signal_sdr = signal_sdr; @@ -1855,16 +1846,11 @@ static void hdmitx_set_hdr10plus_pkt(unsigned int flag, hdmi_debug(); - if (data) - memcpy(&hdr10p_config_data, data, - sizeof(struct hdr10plus_para)); - else - memset(&hdr10p_config_data, 0, - sizeof(struct hdr10plus_para)); + memcpy(&hdr10p_config_data, data, sizeof(struct hdr10plus_para)); if (hsty_hdr10p_config_loc > 7) hsty_hdr10p_config_loc = 0; memcpy(&hsty_hdr10p_config_data[hsty_hdr10p_config_loc++], - &hdr10p_config_data, sizeof(struct hdr10plus_para)); + data, sizeof(struct hdr10plus_para)); if (hsty_hdr10p_config_num < 8) hsty_hdr10p_config_num++; else @@ -1958,6 +1944,18 @@ static void hdmitx_set_emp_pkt(unsigned char *data, unsigned int type, hdmi_debug(); + emp_config_data.type = type; + emp_config_data.size = size; + if (size <= 128) + memcpy(emp_config_data.data, data, size); + else + memcpy(emp_config_data.data, data, 128); + + if (hdmitx_device.chip_type < MESON_CPU_ID_G12A) { + pr_info("this chip doesn't support emp function\n"); + return; + } + if (!data) { pr_info("the data is null\n"); return;