hdmirx: Coverity(upgraded) defect cleanup:hdmi rx [1/1]

PD#SWPL-16523

Problem:
Coverity(upgraded) defect cleanup:hdmi rx

Solution:
Modify code according to coverity

Verify:
verify on the board of x3011

Change-Id: I9dcdcede98dcf386874674442a9eea2c64d619ab
Signed-off-by: Zhengrong Zhu <zhengrong.zhu@amlogic.com>
This commit is contained in:
Zhengrong.Zhu
2019-11-18 19:12:45 +08:00
committed by Luke Go
parent 462ca5f34d
commit 9cd8faa36f
7 changed files with 133 additions and 112 deletions

View File

@@ -269,13 +269,29 @@ static unsigned int first_bit_set(uint32_t data)
*/
unsigned int rx_get_bits(unsigned int data, unsigned int mask)
{
return (data & mask) >> first_bit_set(mask);
unsigned int fstbs_rtn;
unsigned int rtn_val;
fstbs_rtn = first_bit_set(mask);
if (fstbs_rtn < 32)
rtn_val = (data & mask) >> fstbs_rtn;
else
rtn_val = 0;
return rtn_val;
}
unsigned int rx_set_bits(unsigned int data,
unsigned int mask, unsigned int value)
{
return ((value << first_bit_set(mask)) & mask) | (data & ~mask);
unsigned int fstbs_rtn;
unsigned int rtn_val;
fstbs_rtn = first_bit_set(mask);
if (fstbs_rtn < 32)
rtn_val = ((value << fstbs_rtn) & mask) | (data & ~mask);
else
rtn_val = 0;
return rtn_val;
}
bool hdmirx_repeat_support(void)
@@ -1515,7 +1531,7 @@ static ssize_t ksvlist_store(struct device *dev,
/* unsigned char t_tmp[3]; */
cnt = count;
/* t_tmp[2] = '\0'; */
rx_pr("dw hdcp %d,%d\n", cnt, sizeof(struct hdcp14_topo_s));
rx_pr("dw hdcp %d,%lu\n", cnt, sizeof(struct hdcp14_topo_s));
/*for(i = 0;i < count/2;i++) {
* memcpy(t_tmp, buf + i*2, 2);
* if (kstrtoul(t_tmp, 16, &tmp))
@@ -1836,19 +1852,19 @@ void rx_emp_resource_allocate(struct device *dev)
{
if (rx.chip_id >= CHIP_ID_TL1) {
/* allocate buffer */
if (!rx.empbuff.storeA)
rx.empbuff.storeA =
if (!rx.empbuff.store_a)
rx.empbuff.store_a =
kmalloc(EMP_BUFFER_SIZE, GFP_KERNEL);
else
rx_pr("malloc emp buffer err\n");
if (rx.empbuff.storeA)
rx.empbuff.storeB =
rx.empbuff.storeA + (EMP_BUFFER_SIZE >> 1);
if (rx.empbuff.store_a)
rx.empbuff.store_b =
rx.empbuff.store_a + (EMP_BUFFER_SIZE >> 1);
else
rx_pr("emp buff err-0\n");
rx_pr("pktbuffa=0x%p\n", rx.empbuff.storeA);
rx_pr("pktbuffb=0x%p\n", rx.empbuff.storeB);
rx_pr("pktbuffa=0x%p\n", rx.empbuff.store_a);
rx_pr("pktbuffb=0x%p\n", rx.empbuff.store_b);
rx.empbuff.dump_mode = DUMP_MODE_EMP;
/* allocate buffer for hw access*/
rx.empbuff.pg_addr =
@@ -1862,8 +1878,10 @@ void rx_emp_resource_allocate(struct device *dev)
rx.empbuff.p_addr_b =
rx.empbuff.p_addr_a + (EMP_BUFFER_SIZE >> 1);
//page_address
rx_pr("buffa paddr=0x%x\n", rx.empbuff.p_addr_a);
rx_pr("buffb paddr=0x%x\n", rx.empbuff.p_addr_b);
rx_pr("buffa paddr=0x%p\n",
(void *)rx.empbuff.p_addr_a);
rx_pr("buffb paddr=0x%p\n",
(void *)rx.empbuff.p_addr_b);
} else {
rx_pr("emp buff err-1\n");
}
@@ -1909,7 +1927,7 @@ void rx_tmds_resource_allocate(struct device *dev)
else
rx_pr("allocate tmds data buff fail\n");
rx.empbuff.dump_mode = DUMP_MODE_TMDS;
rx_pr("buffa paddr=0x%x\n", rx.empbuff.p_addr_a);
rx_pr("buffa paddr=0x%p\n", (void *)rx.empbuff.p_addr_a);
#if 0
/*clear buffer for test*/
for (i = 0; i < 10; i++) {

View File

@@ -41,13 +41,13 @@
*
*
*/
#define RX_VER1 "ver.2019/10/17"
#define RX_VER1 "ver.2019/11/05"
/*
*
*
*
*/
#define RX_VER2 "ver.2019/11/05"
#define RX_VER2 "ver.2019/11/18"
/*print type*/
#define LOG_EN 0x01
@@ -390,8 +390,8 @@ struct emp_buff {
phys_addr_t p_addr_b;
/*void __iomem *v_addr_a;*/
/*void __iomem *v_addr_b;*/
void __iomem *storeA;
void __iomem *storeB;
void __iomem *store_a;
void __iomem *store_b;
void __iomem *ready;
unsigned long irqcnt;
unsigned int emppktcnt;

View File

@@ -3230,9 +3230,9 @@ void dump_edid_reg(void)
for (i = 0; i < 16; i++) {
rx_pr("[%2d] ", i);
for (j = 0; j < 16; j++) {
rx_pr("0x%02lx, ",
hdmirx_rd_top(TOP_EDID_OFFSET +
(i * 16 + j)));
rx_pr("0x%02x, ",
hdmirx_rd_top(TOP_EDID_OFFSET +
(i * 16 + j)));
}
rx_pr("\n");
}
@@ -3240,9 +3240,9 @@ void dump_edid_reg(void)
for (i = 0; i < 16; i++) {
rx_pr("[%2d] ", i);
for (j = 0; j < 16; j++) {
rx_pr("0x%02lx, ",
hdmirx_rd_top(TOP_EDID_ADDR_S +
(i * 16 + j)));
rx_pr("0x%02x, ",
hdmirx_rd_top(TOP_EDID_ADDR_S +
(i * 16 + j)));
}
rx_pr("\n");
}
@@ -3250,27 +3250,27 @@ void dump_edid_reg(void)
for (i = 0; i < 16; i++) {
rx_pr("[%2d] ", i);
for (j = 0; j < 16; j++) {
rx_pr("0x%02lx, ",
hdmirx_rd_top(TOP_EDID_ADDR_S +
(i * 16 + j)));
rx_pr("0x%02x, ",
hdmirx_rd_top(TOP_EDID_ADDR_S +
(i * 16 + j)));
}
rx_pr("\n");
}
for (i = 0; i < 16; i++) {
rx_pr("[%2d] ", i);
for (j = 0; j < 16; j++) {
rx_pr("0x%02lx, ",
hdmirx_rd_top(TOP_EDID_PORT2_ADDR_S +
(i * 16 + j)));
rx_pr("0x%02x, ",
hdmirx_rd_top(TOP_EDID_PORT2_ADDR_S +
(i * 16 + j)));
}
rx_pr("\n");
}
for (i = 0; i < 16; i++) {
rx_pr("[%2d] ", i);
for (j = 0; j < 16; j++) {
rx_pr("0x%02lx, ",
hdmirx_rd_top(TOP_EDID_PORT3_ADDR_S +
(i * 16 + j)));
rx_pr("0x%02x, ",
hdmirx_rd_top(TOP_EDID_PORT3_ADDR_S +
(i * 16 + j)));
}
rx_pr("\n");
}
@@ -4240,9 +4240,9 @@ void rx_emp_field_done_irq(void)
recv_pagenum = (recv_byte_cnt >> PAGE_SHIFT) + 1;
if (rx.empbuff.irqcnt & 0x1)
dts_addr = rx.empbuff.storeB;
dts_addr = rx.empbuff.store_b;
else
dts_addr = rx.empbuff.storeA;
dts_addr = rx.empbuff.store_a;
if (recv_pkt_cnt >= EMP_BUFF_MAX_PKT_CNT) {
recv_pkt_cnt = EMP_BUFF_MAX_PKT_CNT - 1;
@@ -4299,11 +4299,11 @@ void rx_emp_field_done_irq(void)
void rx_emp_status(void)
{
rx_pr("p_addr_a=0x%x\n", rx.empbuff.p_addr_a);
rx_pr("p_addr_b=0x%x\n", rx.empbuff.p_addr_b);
rx_pr("storeA=0x%x\n", rx.empbuff.storeB);
rx_pr("storeB=0x%x\n", rx.empbuff.storeB);
rx_pr("irq cnt =0x%x\n", rx.empbuff.irqcnt);
rx_pr("p_addr_a=0x%p\n", (void *)rx.empbuff.p_addr_a);
rx_pr("p_addr_b=0x%p\n", (void *)rx.empbuff.p_addr_b);
rx_pr("store_a=0x%p\n", rx.empbuff.store_a);
rx_pr("store_b=0x%p\n", rx.empbuff.store_b);
rx_pr("irq cnt =0x%x\n", (unsigned int)rx.empbuff.irqcnt);
rx_pr("ready=0x%p\n", rx.empbuff.ready);
rx_pr("dump_mode =0x%x\n", rx.empbuff.dump_mode);
rx_pr("recv tmp pkt cnt=0x%x\n", rx.empbuff.emppktcnt);
@@ -4347,7 +4347,8 @@ void rx_tmds_to_ddr_init(void)
rx.empbuff.p_addr_a);
hdmirx_wr_top(TOP_EMP_DDR_START_B,
rx.empbuff.p_addr_a);
rx_pr("cfg hw addr=0x%x\n", rx.empbuff.p_addr_a);
rx_pr("cfg hw addr=0x%p\n",
(void *)rx.empbuff.p_addr_a);
}
/* max pkt count to avoid buffer overflow */

View File

@@ -127,44 +127,44 @@ void rx_pkt_debug(void)
{
uint32_t data32;
rx_pr("\npktinfo size=%d\n", sizeof(union pktinfo));
rx_pr("infoframe_st size=%d\n", sizeof(union infoframe_u));
rx_pr("fifo_rawdata_st size=%d\n", sizeof(struct fifo_rawdata_st));
rx_pr("vsi_infoframe_st size=%d\n", sizeof(struct vsi_infoframe_st));
rx_pr("avi_infoframe_st size=%d\n", sizeof(struct avi_infoframe_st));
rx_pr("spd_infoframe_st size=%d\n", sizeof(struct spd_infoframe_st));
rx_pr("aud_infoframe_st size=%d\n", sizeof(struct aud_infoframe_st));
rx_pr("ms_infoframe_st size=%d\n", sizeof(struct ms_infoframe_st));
rx_pr("vbi_infoframe_st size=%d\n", sizeof(struct vbi_infoframe_st));
rx_pr("drm_infoframe_st size=%d\n", sizeof(struct drm_infoframe_st));
rx_pr("\npktinfo size=%lu\n", sizeof(union pktinfo));
rx_pr("infoframe_st size=%lu\n", sizeof(union infoframe_u));
rx_pr("fifo_rawdata_st size=%lu\n", sizeof(struct fifo_rawdata_st));
rx_pr("vsi_infoframe_st size=%lu\n", sizeof(struct vsi_infoframe_st));
rx_pr("avi_infoframe_st size=%lu\n", sizeof(struct avi_infoframe_st));
rx_pr("spd_infoframe_st size=%lu\n", sizeof(struct spd_infoframe_st));
rx_pr("aud_infoframe_st size=%lu\n", sizeof(struct aud_infoframe_st));
rx_pr("ms_infoframe_st size=%lu\n", sizeof(struct ms_infoframe_st));
rx_pr("vbi_infoframe_st size=%lu\n", sizeof(struct vbi_infoframe_st));
rx_pr("drm_infoframe_st size=%lu\n", sizeof(struct drm_infoframe_st));
rx_pr("acr_pkt_st size=%d\n",
sizeof(struct acr_pkt_st));
rx_pr("aud_sample_pkt_st size=%d\n",
sizeof(struct aud_sample_pkt_st));
rx_pr("gcp_pkt_st size=%d\n", sizeof(struct gcp_pkt_st));
rx_pr("acp_pkt_st size=%d\n", sizeof(struct acp_pkt_st));
rx_pr("isrc_pkt_st size=%d\n", sizeof(struct isrc_pkt_st));
rx_pr("onebit_aud_pkt_st size=%d\n",
sizeof(struct obasmp_pkt_st));
rx_pr("dst_aud_pkt_st size=%d\n",
sizeof(struct dstaud_pkt_st));
rx_pr("hbr_aud_pkt_st size=%d\n",
sizeof(struct hbraud_pkt_st));
rx_pr("gamut_Meta_pkt_st size=%d\n",
sizeof(struct gamutmeta_pkt_st));
rx_pr("aud_3d_smppkt_st size=%d\n",
sizeof(struct a3dsmp_pkt_st));
rx_pr("oneb3d_smppkt_st size=%d\n",
sizeof(struct ob3d_smppkt_st));
rx_pr("aud_mtdata_pkt_st size=%d\n",
sizeof(struct audmtdata_pkt_st));
rx_pr("mulstr_audsamp_pkt_st size=%d\n",
sizeof(struct msaudsmp_pkt_st));
rx_pr("onebmtstr_smaud_pkt_st size=%d\n",
sizeof(struct obmaudsmp_pkt_st));
rx_pr("emp size=%d\n",
sizeof(struct emp_pkt_st));
rx_pr("acr_pkt_st size=%lu\n",
sizeof(struct acr_pkt_st));
rx_pr("aud_sample_pkt_st size=%lu\n",
sizeof(struct aud_sample_pkt_st));
rx_pr("gcp_pkt_st size=%lu\n", sizeof(struct gcp_pkt_st));
rx_pr("acp_pkt_st size=%lu\n", sizeof(struct acp_pkt_st));
rx_pr("isrc_pkt_st size=%lu\n", sizeof(struct isrc_pkt_st));
rx_pr("onebit_aud_pkt_st size=%lu\n",
sizeof(struct obasmp_pkt_st));
rx_pr("dst_aud_pkt_st size=%lu\n",
sizeof(struct dstaud_pkt_st));
rx_pr("hbr_aud_pkt_st size=%lu\n",
sizeof(struct hbraud_pkt_st));
rx_pr("gamut_Meta_pkt_st size=%lu\n",
sizeof(struct gamutmeta_pkt_st));
rx_pr("aud_3d_smppkt_st size=%lu\n",
sizeof(struct a3dsmp_pkt_st));
rx_pr("oneb3d_smppkt_st size=%lu\n",
sizeof(struct ob3d_smppkt_st));
rx_pr("aud_mtdata_pkt_st size=%lu\n",
sizeof(struct audmtdata_pkt_st));
rx_pr("mulstr_audsamp_pkt_st size=%lu\n",
sizeof(struct msaudsmp_pkt_st));
rx_pr("onebmtstr_smaud_pkt_st size=%lu\n",
sizeof(struct obmaudsmp_pkt_st));
rx_pr("emp size=%lu\n",
sizeof(struct emp_pkt_st));
memset(&rxpktsts, 0, sizeof(struct rxpkt_st));
data32 = hdmirx_rd_dwc(DWC_PDEC_CTRL);
@@ -201,105 +201,105 @@ void rx_get_pd_fifo_param(enum pkt_type_e pkt_type,
case PKT_TYPE_INFOFRAME_VSI:
if (rx_pkt_get_fifo_pri())
/* srcbuff = &rx.vs_info; */
memcpy(&pkt_info, &rx_pkt.vs_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.vs_info,
sizeof(struct pd_infoframe_s));
else
rx_pkt_get_vsi_ex(&pkt_info);
break;
case PKT_TYPE_INFOFRAME_AVI:
if (rx_pkt_get_fifo_pri())
/* srcbuff = &rx.avi_info; */
memcpy(&pkt_info, &rx_pkt.avi_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.avi_info,
sizeof(struct pd_infoframe_s));
else
rx_pkt_get_avi_ex(&pkt_info);
break;
case PKT_TYPE_INFOFRAME_SPD:
/* srcbuff = &rx.spd_info; */
memcpy(&pkt_info, &rx_pkt.spd_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.spd_info,
sizeof(struct pd_infoframe_s));
break;
case PKT_TYPE_INFOFRAME_AUD:
if (rx_pkt_get_fifo_pri())
/* srcbuff = &rx.aud_pktinfo; */
memcpy(&pkt_info, &rx_pkt.aud_pktinfo,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.aud_pktinfo,
sizeof(struct pd_infoframe_s));
else
rx_pkt_get_audif_ex(&pkt_info);
break;
case PKT_TYPE_INFOFRAME_MPEGSRC:
/* srcbuff = &rx.mpegs_info; */
memcpy(&pkt_info, &rx_pkt.mpegs_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.mpegs_info,
sizeof(struct pd_infoframe_s));
break;
case PKT_TYPE_INFOFRAME_NVBI:
if (rx_pkt_get_fifo_pri())
/* srcbuff = &rx.ntscvbi_info; */
memcpy(&pkt_info, &rx_pkt.ntscvbi_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.ntscvbi_info,
sizeof(struct pd_infoframe_s));
else
rx_pkt_get_ntscvbi_ex(&pkt_info);
break;
case PKT_TYPE_INFOFRAME_DRM:
if (rx_pkt_get_fifo_pri())
/* srcbuff = &rx.drm_info; */
memcpy(&pkt_info, &rx_pkt.drm_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.drm_info,
sizeof(struct pd_infoframe_s));
else
rx_pkt_get_drm_ex(&pkt_info);
break;
case PKT_TYPE_ACR:
if (rx_pkt_get_fifo_pri())
/* srcbuff = &rx.acr_info; */
memcpy(&pkt_info, &rx_pkt.acr_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.acr_info,
sizeof(struct pd_infoframe_s));
else
rx_pkt_get_acr_ex(&pkt_info);
break;
case PKT_TYPE_GCP:
if (rx_pkt_get_fifo_pri())
/* srcbuff = &rx.gcp_info; */
memcpy(&pkt_info, &rx_pkt.gcp_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.gcp_info,
sizeof(struct pd_infoframe_s));
else
rx_pkt_get_gcp_ex(&pkt_info);
break;
case PKT_TYPE_ACP:
/* srcbuff = &rx.acp_info; */
memcpy(&pkt_info, &rx_pkt.acp_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.acp_info,
sizeof(struct pd_infoframe_s));
break;
case PKT_TYPE_ISRC1:
/* srcbuff = &rx.isrc1_info; */
memcpy(&pkt_info, &rx_pkt.isrc1_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.isrc1_info,
sizeof(struct pd_infoframe_s));
break;
case PKT_TYPE_ISRC2:
/* srcbuff = &rx.isrc2_info; */
memcpy(&pkt_info, &rx_pkt.isrc2_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.isrc2_info,
sizeof(struct pd_infoframe_s));
break;
case PKT_TYPE_GAMUT_META:
if (rx_pkt_get_fifo_pri())
/* srcbuff = &rx.gameta_info; */
memcpy(&pkt_info, &rx_pkt.gameta_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.gameta_info,
sizeof(struct pd_infoframe_s));
else
rx_pkt_get_gmd_ex(&pkt_info);
break;
case PKT_TYPE_AUD_META:
if (rx_pkt_get_fifo_pri())
/* srcbuff = &rx.amp_info; */
memcpy(&pkt_info, &rx_pkt.amp_info,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, &rx_pkt.amp_info,
sizeof(struct pd_infoframe_s));
else
rx_pkt_get_amp_ex(&pkt_info);
break;
default:
if (pd_fifo_buf != NULL)
/* srcbuff = pd_fifo_buf; */
memcpy(&pkt_info, &pd_fifo_buf,
sizeof(struct pd_infoframe_s));
memcpy(pkt_info, pd_fifo_buf,
sizeof(struct pd_infoframe_s));
else
pr_err("err:pd_fifo_buf is empty\n");
break;

View File

@@ -350,7 +350,8 @@ bool rx_set_repeat_aksv(unsigned char *data, int len, int depth,
if (ksvlist_ready)
rx_poll_dwc(DWC_HDCP_RPT_CTRL, FIFO_READY,
FIFO_READY, KSV_V_WR_TH);
rx_pr("[RX]write Ready signal!\n", ksvlist_ready);
rx_pr("[RX]write Ready signal! ready:%u\n",
(unsigned int)ksvlist_ready);
return true;
}

View File

@@ -2428,7 +2428,7 @@ void rx_main_state_machine(void)
rx_audio_pll_sw_update();
}
if (log_level & AUDIO_LOG)
rx_pr("update audio-err:%d\n, aud_sts");
rx_pr("update audio-err:%d\n", aud_sts);
rx.aud_sr_unstable_cnt = 0;
}
} else

View File

@@ -220,9 +220,10 @@ static ssize_t hdmirx_ext_video_mode_show(struct device *dev,
mode_str = __plat_get_video_mode_name(mode);
if (strcmp(mode_str, "invalid") != 0) {
if (strlen(mode_str) <
(sizeof(hdmi_mode_str) - strlen(hdmi_mode_str)))
strcat(hdmi_mode_str, mode_str);
if (strlen(mode_str) < sizeof(hdmi_mode_str))
if (strlen(mode_str) <
(sizeof(hdmi_mode_str) - strlen(hdmi_mode_str)))
strcat(hdmi_mode_str, mode_str);
} else {
if (strlen(mode_str) < sizeof(hdmi_mode_str))
strcpy(hdmi_mode_str, mode_str);