diff --git a/drivers/media/vin/tvin/vdin/vdin_ctl.c b/drivers/media/vin/tvin/vdin/vdin_ctl.c index 1cffa1811..4f08997d9 100644 --- a/drivers/media/vin/tvin/vdin/vdin_ctl.c +++ b/drivers/media/vin/tvin/vdin/vdin_ctl.c @@ -5422,10 +5422,11 @@ void vdin_dolby_buffer_update(struct vdin_dev_s *devp, unsigned int index) u32 crc1 = 0; u32 max_pkt = 15; static u32 cnt; - u32 rpt_cnt = 0, tail_cnt = 0, rev_cnt = 0, end_flag = 0; + u32 rpt_cnt = 0; //start type pkt num + u32 tail_cnt = 0, rev_cnt = 0, end_flag = 0; u8 pkt_type; struct dv_meta_pkt *pkt_p; - u32 cp_size, cp_offset, cp_sum = 0; + u32 cp_size = 0, cp_offset = 0, cp_sum = 0; u32 *src_meta = devp->dv.meta_data_raw_buffer1; devp->dv.dv_crc_check = true; @@ -5506,8 +5507,9 @@ void vdin_dolby_buffer_update(struct vdin_dev_s *devp, unsigned int index) } if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_NORMAL)) - pr_info("pkt_type %d:0x%x\n", i, - pkt_type); + pr_info("pkt_type(%d-%d):%02x %02x %02x %02x %02x %02x\n", + count, i, pkt_type, c[i * 4], c[i * 4 + 1], + c[i * 4 + 2], c[i * 4 + 3], c[i * 4 + 4]); } if (i == 31 && multimeta_flag == 0) @@ -5515,13 +5517,21 @@ void vdin_dolby_buffer_update(struct vdin_dev_s *devp, unsigned int index) } } + //print raw meta data + if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_META_PKT_DATA)) { + vdin_dv_pr_meta_data(c, 128 * 2, index); + pr_info("raw data(%d-%d) rpt_cnt:%d tail_cnt:%d rev_cnt:%d max_pkt:%d\n", + devp->irq_cnt, count, rpt_cnt, tail_cnt, rev_cnt, max_pkt); + } + meta_size = (c[3] << 8) | c[4]; if (meta_size > 1024 || rev_cnt > 20 || rpt_cnt != tail_cnt || (meta_size > 128 && rev_cnt == 1)) { if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_NORMAL)) - pr_info("err size:%d rp_cnt:%d, tal_cnt:%d, rv_cnt:%d max_pkt:%d\n", - meta_size, rpt_cnt, tail_cnt, rev_cnt, max_pkt); + pr_info("err:%d-%d-%d size:%d rpt:%d tal:%d rv_cnt:%d max_pkt:%d\n", + devp->irq_cnt, index, count, meta_size, rpt_cnt, + tail_cnt, rev_cnt, max_pkt); devp->dv.dv_crc_check = false; return; @@ -5546,10 +5556,6 @@ void vdin_dolby_buffer_update(struct vdin_dev_s *devp, unsigned int index) crc1 = pkt_p->crc; crc1_r = crc32(0, (char *)pkt_p, 124); crc1_r = swap32(crc1_r); - if (((cnt % dv_dbg_log_du) == 0) && - (dv_dbg_log & DV_DEBUG_NORMAL)) - pr_info("crc:0x%x, 0x%x\n", - crc1, crc1_r); if (crc1 == crc1_r) { cp_offset += j + 128 * i; memcpy(cp, @@ -5562,7 +5568,7 @@ void vdin_dolby_buffer_update(struct vdin_dev_s *devp, unsigned int index) if (rpt_cnt == 0) break; if (((cnt % dv_dbg_log_du) == 0) && - (dv_dbg_log & DV_DEBUG_NORMAL)) + (dv_dbg_log & DV_DEBUG_HW_META_DATA)) pr_info("data idx %d:0x%x\n", j, c[j] & 0xc0); } @@ -5573,10 +5579,11 @@ void vdin_dolby_buffer_update(struct vdin_dev_s *devp, unsigned int index) } if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_NORMAL)) { - pr_info("mult_flag=%d tail_flag=%d meta_size=%d\n", - multimeta_flag, multimetatail_flag, meta_size); - pr_info("rpt_cnt:%d tail_cnt:%d rev_cnt:%d cp_sum:%d\n", - rpt_cnt, tail_cnt, rev_cnt, cp_sum); + pr_info("irq_cnt:%d count:%d mult_flag=%d tail_flag=%d crc:(%#x:%#x %#x:%#x)\n", + devp->irq_cnt, count, multimeta_flag, multimetatail_flag, + crc, crc_r, crc1, crc1_r); + pr_info("meta_size:%d rpt_cnt:%d tail_cnt:%d rev_cnt:%d pkt:%d cp_sum:%d\n", + meta_size, rpt_cnt, tail_cnt, rev_cnt, max_pkt, cp_sum); } if (crc == crc_r) { @@ -5590,10 +5597,6 @@ void vdin_dolby_buffer_update(struct vdin_dev_s *devp, unsigned int index) } } - /*meta data pkt data*/ - if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_META_PKT_DATA)) - vdin_dv_pr_meta_data(c, 128 * rev_cnt, index); - if (crc != crc_r || (multimeta_flag == 1 && multimetatail_flag == 1 && crc1 != crc1_r)) { @@ -5602,15 +5605,14 @@ void vdin_dolby_buffer_update(struct vdin_dev_s *devp, unsigned int index) */ devp->vfp->dv_buf[index] = &c[5]; devp->vfp->dv_buf_size[index] = 4; - if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_ERR_META_DATA)) { - pr_err("%s:hdmi dovi meta crc error:%08x!=%08x\n", - __func__, crc, crc_r); - pr_info("%s:index:%d dma:%x vaddr:%p size:%d\n", + if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_NORMAL)) { + pr_err("%s irq:%d meta crc error(%#x:%#x %#x:%#x)\n", + __func__, devp->irq_cnt, crc, crc_r, crc1, crc1_r); + pr_info("%s index:%d dma:%x vaddr:%p size:%d\n", __func__, index, devp->vfp->dv_buf_mem[index], devp->vfp->dv_buf_vmem[index], meta_size); - vdin_dv_pr_meta_data(p, 128, index); } devp->dv.dv_crc_check = false; } else { @@ -5622,18 +5624,14 @@ void vdin_dolby_buffer_update(struct vdin_dev_s *devp, unsigned int index) cp = devp->dv.temp_meta_data; memcpy(c, cp, meta_size); if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_NORMAL)) - pr_info("cp %d meta to buff\n", meta_size); + pr_info("irq:%d cp %d meta to buff ok\n", devp->irq_cnt, meta_size); } else if (meta_size > DV_META_SINGLE_PKT_SIZE) { devp->dv.dv_crc_check = false; + if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_NORMAL)) + pr_info("irq:%d cp %d meta to buff ng\n", devp->irq_cnt, meta_size); } - if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_NORMAL)) - pr_info("%s:index:%d dma:%x vaddr:%p size:%d crc:%x crc1:%x\n", - __func__, index, - devp->vfp->dv_buf_mem[index], - devp->vfp->dv_buf_vmem[index], - meta_size, crc, crc1); - /*meta data raw data*/ + /* print meta data packet body */ if (((cnt % dv_dbg_log_du) == 0) && (dv_dbg_log & DV_DEBUG_OK_META_DATA)) vdin_dv_pr_meta_data(c, meta_size, index); } @@ -5966,7 +5964,7 @@ int vdin_event_cb(int type, void *data, void *op_arg) spin_unlock_irqrestore(&p->dv_lock, flags); if (dv_dbg_log & DV_DEBUG_EVENT_META_DATA) { - pr_info("%s(type 0x%x vf index 0x%x)=>size 0x%x\n", + pr_info("%s(type %#x vf index %#x)=>size %#x\n", __func__, type, index, req->aux_size); vdin_dv_pr_event_meta_data(req->aux_buf, req->aux_size, index); diff --git a/drivers/media/vin/tvin/vdin/vdin_ctl.h b/drivers/media/vin/tvin/vdin/vdin_ctl.h index 9a899db80..dcc8fdaf2 100644 --- a/drivers/media/vin/tvin/vdin/vdin_ctl.h +++ b/drivers/media/vin/tvin/vdin/vdin_ctl.h @@ -78,11 +78,12 @@ #define DV_DEBUG_NORMAL (BIT(0)) #define DV_DEBUG_ERR_META_DATA (BIT(3)) -#define DV_DEBUG_OK_META_DATA (BIT(4)) -#define DV_DEBUG_META_PKT_DATA (BIT(5)) -#define DV_DEBUG_RAW_DATA (BIT(6)) +#define DV_DEBUG_OK_META_DATA (BIT(4)) //print meta data packet body +#define DV_DEBUG_META_PKT_DATA (BIT(5)) //print raw meta data +#define DV_DEBUG_RAW_DATA (BIT(6)) //print tvin_dv_vsif_raw_s #define DV_DEBUG_CANVAS_NUM (BIT(7)) -#define DV_DEBUG_EVENT_META_DATA (BIT(8)) +#define DV_DEBUG_EVENT_META_DATA (BIT(8)) //print dv get data +#define DV_DEBUG_HW_META_DATA (BIT(9)) #define CTL_DEBUG_NORMAL (BIT(0)) #define CTL_DEBUG_EVENT_INDEX (BIT(2)) diff --git a/drivers/media/vin/tvin/vdin/vdin_debug.c b/drivers/media/vin/tvin/vdin/vdin_debug.c index 42772cc56..9d12ff931 100644 --- a/drivers/media/vin/tvin/vdin/vdin_debug.c +++ b/drivers/media/vin/tvin/vdin/vdin_debug.c @@ -1881,7 +1881,8 @@ static void vdin_dump_state(struct vdin_dev_s *devp) devp->prop.vtem_data.base_framerate); pr_info("vdin_vrr_flag: pre=%d,cur:%d\n", devp->pre_prop.vdin_vrr_flag, devp->prop.vdin_vrr_flag); - pr_info("vdin_pc_mode:%d force_pc_mode:%d\n", vdin_pc_mode, devp->debug.force_pc_mode); + pr_info("vdin_pc_mode:%d vdin_cur_mode:%d force_pc_mode:%d\n", vdin_pc_mode, + devp->vdin_pc_mode, devp->debug.force_pc_mode); pr_info("afbce_flag: %#x %#x\n", devp->dts_config.afbce_flag_cfg, devp->afbce_flag); pr_info("afbce_mode: %d, afbce_valid: %d\n", devp->afbce_mode, diff --git a/drivers/media/vin/tvin/vdin/vdin_drv.h b/drivers/media/vin/tvin/vdin/vdin_drv.h index 6d5b49699..9f4391823 100644 --- a/drivers/media/vin/tvin/vdin/vdin_drv.h +++ b/drivers/media/vin/tvin/vdin/vdin_drv.h @@ -611,7 +611,7 @@ struct vdin_dv_s { void *meta_data_raw_v_buffer0;/*for t7*/ void *meta_data_raw_buffer1;/*for t7*/ unsigned int dv_flag_cnt;/*cnt for no dv input*/ - u8 dv_flag; + u8 dv_flag; /*is signal dolby version 1:vsif 2:emp */ bool dv_config; bool dv_path_idx; bool dv_crc_check;/*0:fail;1:ok*/