Message ID | 20230626035346.30654-1-yunfei.dong@mediatek.com |
---|---|
Headers | show |
Series | media: mediatek: vcodec: separate encoder and decoder | expand |
Le lundi 26 juin 2023 à 11:53 +0800, Yunfei Dong a écrit : > 'mtk_vcodec_debug' and 'mtk_vcodec_err' depends on 'mtk_vcodec_ctx' > to get the index of each instance. Define two different macro > mtk_vdec_debug and mtk_venc_debug for decoder and encoder, and re-write > macro mtk_vcodec_debug as the common interface which is called > by mtk_vdec_debug and mtk_venc_debug. The vcodec debug log can be > separeated by encoder and decoder. > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > --- > .../mediatek/vcodec/mtk_vcodec_util.h | 34 +++-- > .../vcodec/vdec/vdec_av1_req_lat_if.c | 123 +++++++++-------- > .../mediatek/vcodec/vdec/vdec_h264_if.c | 66 +++++----- > .../mediatek/vcodec/vdec/vdec_h264_req_if.c | 46 +++---- > .../vcodec/vdec/vdec_h264_req_multi_if.c | 124 +++++++++--------- > .../vcodec/vdec/vdec_hevc_req_multi_if.c | 94 +++++++------ > .../mediatek/vcodec/vdec/vdec_vp8_if.c | 47 ++++--- > .../mediatek/vcodec/vdec/vdec_vp8_req_if.c | 66 +++++----- > .../mediatek/vcodec/vdec/vdec_vp9_if.c | 122 ++++++++--------- > .../vcodec/vdec/vdec_vp9_req_lat_if.c | 108 +++++++-------- > .../platform/mediatek/vcodec/vdec_vpu_if.c | 45 ++++--- > .../mediatek/vcodec/venc/venc_h264_if.c | 69 +++++----- > .../mediatek/vcodec/venc/venc_vp8_if.c | 32 ++--- > .../platform/mediatek/vcodec/venc_vpu_if.c | 53 ++++---- > 14 files changed, 494 insertions(+), 535 deletions(-) > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > index a356f42362e4..a684a7e4ab6e 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > @@ -31,9 +31,8 @@ struct mtk_vcodec_dev; > #define mtk_v4l2_err(fmt, args...) \ > pr_err("[MTK_V4L2][ERROR] " fmt "\n", ##args) > > -#define mtk_vcodec_err(h, fmt, args...) \ > - pr_err("[MTK_VCODEC][ERROR][%d]: " fmt "\n", \ > - ((struct mtk_vcodec_ctx *)(h)->ctx)->id, ##args) > +#define mtk_vcodec_err(inst_id, plat_dev, fmt, args...) \ > + dev_err(&(plat_dev)->dev, "[MTK_VCODEC][ERROR][%d]: " fmt "\n", inst_id, ##args) > > #if defined(CONFIG_DEBUG_FS) > extern int mtk_v4l2_dbg_level; > @@ -46,22 +45,31 @@ extern int mtk_vcodec_dbg; > __func__, __LINE__, ##args); \ > } while (0) > > -#define mtk_vcodec_debug(h, fmt, args...) \ > - do { \ > - if (mtk_vcodec_dbg) \ > - dev_dbg(&(((struct mtk_vcodec_ctx *)(h)->ctx)->dev->plat_dev->dev), \ > - "[MTK_VCODEC][%d]: %s, %d " fmt "\n", \ > - ((struct mtk_vcodec_ctx *)(h)->ctx)->id, \ > - __func__, __LINE__, ##args); \ > +#define mtk_vcodec_debug(inst_id, plat_dev, fmt, args...) \ > + do { \ > + if (mtk_vcodec_dbg) \ > + dev_dbg(&(plat_dev)->dev, "[MTK_VCODEC][%d]: %s, %d " fmt "\n", \ > + inst_id, __func__, __LINE__, ##args); \ > } while (0) > #else > #define mtk_v4l2_debug(level, fmt, args...) pr_debug(fmt, ##args) > > -#define mtk_vcodec_debug(h, fmt, args...) \ > - pr_debug("[MTK_VCODEC][%d]: " fmt "\n", \ > - ((struct mtk_vcodec_ctx *)(h)->ctx)->id, ##args) > +#define mtk_vcodec_debug(inst_id, plat_dev, fmt, args...) \ > + dev_dbg(&(plat_dev)->dev, "[MTK_VCODEC][%d]: " fmt "\n", inst_id, ##args) > #endif > > +#define mtk_vdec_err(ctx, fmt, args...) \ > + mtk_vcodec_err((ctx)->id, (ctx)->dev->plat_dev, fmt, ##args) > + > +#define mtk_vdec_debug(ctx, fmt, args...) \ > + mtk_vcodec_debug((ctx)->id, (ctx)->dev->plat_dev, fmt, ##args) > + > +#define mtk_venc_err(ctx, fmt, args...) \ > + mtk_vcodec_err((ctx)->id, (ctx)->dev->plat_dev, fmt, ##args) > + > +#define mtk_venc_debug(ctx, fmt, args...) \ > + mtk_vcodec_debug((ctx)->id, (ctx)->dev->plat_dev, fmt, ##args) > + > void __iomem *mtk_vcodec_get_reg_addr(void __iomem **reg_base, unsigned int reg_idx); > int mtk_vcodec_mem_alloc(void *priv, struct mtk_vcodec_mem *mem); > void mtk_vcodec_mem_free(void *priv, struct mtk_vcodec_mem *mem); > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_av1_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_av1_req_lat_if.c > index 404a1a23fd40..dfed8fe7f54c 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_av1_req_lat_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_av1_req_lat_if.c > @@ -778,12 +778,11 @@ static int vdec_av1_slice_init_cdf_table(struct vdec_av1_slice_instance *instanc > remote_cdf_table = mtk_vcodec_fw_map_dm_addr(ctx->dev->fw_handler, > (u32)vsi->cdf_table_addr); > if (IS_ERR(remote_cdf_table)) { > - mtk_vcodec_err(instance, "failed to map cdf table\n"); > + mtk_vdec_err(ctx, "failed to map cdf table\n"); > return PTR_ERR(remote_cdf_table); > } > > - mtk_vcodec_debug(instance, "map cdf table to 0x%p\n", > - remote_cdf_table); > + mtk_vdec_debug(ctx, "map cdf table to 0x%p\n", remote_cdf_table); > > if (instance->cdf_table.va) > mtk_vcodec_mem_free(ctx, &instance->cdf_table); > @@ -810,11 +809,11 @@ static int vdec_av1_slice_init_iq_table(struct vdec_av1_slice_instance *instance > remote_iq_table = mtk_vcodec_fw_map_dm_addr(ctx->dev->fw_handler, > (u32)vsi->iq_table_addr); > if (IS_ERR(remote_iq_table)) { > - mtk_vcodec_err(instance, "failed to map iq table\n"); > + mtk_vdec_err(ctx, "failed to map iq table\n"); > return PTR_ERR(remote_iq_table); > } > > - mtk_vcodec_debug(instance, "map iq table to 0x%p\n", remote_iq_table); > + mtk_vdec_debug(ctx, "map iq table to 0x%p\n", remote_iq_table); > > if (instance->iq_table.va) > mtk_vcodec_mem_free(ctx, &instance->iq_table); > @@ -965,8 +964,8 @@ static int vdec_av1_slice_alloc_working_buffer(struct vdec_av1_slice_instance *i > if (level == instance->level) > return 0; > > - mtk_vcodec_debug(instance, "resolution level changed from %u to %u, %ux%u", > - instance->level, level, w, h); > + mtk_vdec_debug(ctx, "resolution level changed from %u to %u, %ux%u", > + instance->level, level, w, h); > > max_sb_w = DIV_ROUND_UP(max_w, 128); > max_sb_h = DIV_ROUND_UP(max_h, 128); > @@ -1400,17 +1399,17 @@ static int vdec_av1_slice_setup_tile_group(struct vdec_av1_slice_instance *insta > > if (tile_group->num_tiles != tge_size || > tile_group->num_tiles > V4L2_AV1_MAX_TILE_COUNT) { > - mtk_vcodec_err(instance, "invalid tge_size %d, tile_num:%d\n", > - tge_size, tile_group->num_tiles); > + mtk_vdec_err(instance->ctx, "invalid tge_size %d, tile_num:%d\n", > + tge_size, tile_group->num_tiles); > return -EINVAL; > } > > for (i = 0; i < tge_size; i++) { > if (i != ctrl_tge[i].tile_row * vsi->frame.uh.tile.tile_cols + > ctrl_tge[i].tile_col) { > - mtk_vcodec_err(instance, "invalid tge info %d, %d %d %d\n", > - i, ctrl_tge[i].tile_row, ctrl_tge[i].tile_col, > - vsi->frame.uh.tile.tile_rows); > + mtk_vdec_err(instance->ctx, "invalid tge info %d, %d %d %d\n", > + i, ctrl_tge[i].tile_row, ctrl_tge[i].tile_col, > + vsi->frame.uh.tile.tile_rows); > return -EINVAL; > } > tile_group->tile_size[i] = ctrl_tge[i].tile_size; > @@ -1639,7 +1638,7 @@ static void vdec_av1_slice_setup_seg_buffer(struct vdec_av1_slice_instance *inst > > /* reset segment buffer */ > if (uh->primary_ref_frame == AV1_PRIMARY_REF_NONE || !uh->seg.segmentation_enabled) { > - mtk_vcodec_debug(instance, "reset seg %d\n", vsi->slot_id); > + mtk_vdec_debug(instance->ctx, "reset seg %d\n", vsi->slot_id); > if (vsi->slot_id != AV1_INVALID_IDX) { > buf = &instance->seg[vsi->slot_id]; > memset(buf->va, 0, buf->size); > @@ -1690,18 +1689,18 @@ static void vdec_av1_slice_setup_tile_buffer(struct vdec_av1_slice_instance *ins > uh->disable_frame_end_update_cdf == 0) > tile_info_buf[tile_info_base + 4] |= (1 << 17); > > - mtk_vcodec_debug(instance, "// tile buf %d pos(%dx%d) offset 0x%x\n", > - tile_num, tile_row, tile_col, tile_info_base); > - mtk_vcodec_debug(instance, "// %08x %08x %08x %08x\n", > - tile_info_buf[tile_info_base + 0], > - tile_info_buf[tile_info_base + 1], > - tile_info_buf[tile_info_base + 2], > - tile_info_buf[tile_info_base + 3]); > - mtk_vcodec_debug(instance, "// %08x %08x %08x %08x\n", > - tile_info_buf[tile_info_base + 4], > - tile_info_buf[tile_info_base + 5], > - tile_info_buf[tile_info_base + 6], > - tile_info_buf[tile_info_base + 7]); > + mtk_vdec_debug(instance->ctx, "// tile buf %d pos(%dx%d) offset 0x%x\n", > + tile_num, tile_row, tile_col, tile_info_base); > + mtk_vdec_debug(instance->ctx, "// %08x %08x %08x %08x\n", > + tile_info_buf[tile_info_base + 0], > + tile_info_buf[tile_info_base + 1], > + tile_info_buf[tile_info_base + 2], > + tile_info_buf[tile_info_base + 3]); > + mtk_vdec_debug(instance->ctx, "// %08x %08x %08x %08x\n", > + tile_info_buf[tile_info_base + 4], > + tile_info_buf[tile_info_base + 5], > + tile_info_buf[tile_info_base + 6], > + tile_info_buf[tile_info_base + 7]); > } > } > > @@ -1743,8 +1742,8 @@ static int vdec_av1_slice_update_lat(struct vdec_av1_slice_instance *instance, > struct vdec_av1_slice_vsi *vsi; > > vsi = &pfc->vsi; > - mtk_vcodec_debug(instance, "frame %u LAT CRC 0x%08x, output size is %d\n", > - pfc->seq, vsi->state.crc[0], vsi->state.out_size); > + mtk_vdec_debug(instance->ctx, "frame %u LAT CRC 0x%08x, output size is %d\n", > + pfc->seq, vsi->state.crc[0], vsi->state.out_size); > > /* buffer full, need to re-decode */ > if (vsi->state.full) { > @@ -1855,12 +1854,12 @@ static int vdec_av1_slice_update_core(struct vdec_av1_slice_instance *instance, > { > struct vdec_av1_slice_vsi *vsi = instance->core_vsi; > > - mtk_vcodec_debug(instance, "frame %u Y_CRC %08x %08x %08x %08x\n", > - pfc->seq, vsi->state.crc[0], vsi->state.crc[1], > - vsi->state.crc[2], vsi->state.crc[3]); > - mtk_vcodec_debug(instance, "frame %u C_CRC %08x %08x %08x %08x\n", > - pfc->seq, vsi->state.crc[8], vsi->state.crc[9], > - vsi->state.crc[10], vsi->state.crc[11]); > + mtk_vdec_debug(instance->ctx, "frame %u Y_CRC %08x %08x %08x %08x\n", > + pfc->seq, vsi->state.crc[0], vsi->state.crc[1], > + vsi->state.crc[2], vsi->state.crc[3]); > + mtk_vdec_debug(instance->ctx, "frame %u C_CRC %08x %08x %08x %08x\n", > + pfc->seq, vsi->state.crc[8], vsi->state.crc[9], > + vsi->state.crc[10], vsi->state.crc[11]); > > return 0; > } > @@ -1883,14 +1882,14 @@ static int vdec_av1_slice_init(struct mtk_vcodec_ctx *ctx) > > ret = vpu_dec_init(&instance->vpu); > if (ret) { > - mtk_vcodec_err(instance, "failed to init vpu dec, ret %d\n", ret); > + mtk_vdec_err(ctx, "failed to init vpu dec, ret %d\n", ret); > goto error_vpu_init; > } > > /* init vsi and global flags */ > vsi = instance->vpu.vsi; > if (!vsi) { > - mtk_vcodec_err(instance, "failed to get AV1 vsi\n"); > + mtk_vdec_err(ctx, "failed to get AV1 vsi\n"); > ret = -EINVAL; > goto error_vsi; > } > @@ -1898,20 +1897,20 @@ static int vdec_av1_slice_init(struct mtk_vcodec_ctx *ctx) > instance->core_vsi = mtk_vcodec_fw_map_dm_addr(ctx->dev->fw_handler, (u32)vsi->core_vsi); > > if (!instance->core_vsi) { > - mtk_vcodec_err(instance, "failed to get AV1 core vsi\n"); > + mtk_vdec_err(ctx, "failed to get AV1 core vsi\n"); > ret = -EINVAL; > goto error_vsi; > } > > if (vsi->vsi_size != sizeof(struct vdec_av1_slice_vsi)) > - mtk_vcodec_err(instance, "remote vsi size 0x%x mismatch! expected: 0x%zx\n", > - vsi->vsi_size, sizeof(struct vdec_av1_slice_vsi)); > + mtk_vdec_err(ctx, "remote vsi size 0x%x mismatch! expected: 0x%zx\n", > + vsi->vsi_size, sizeof(struct vdec_av1_slice_vsi)); > > instance->irq_enabled = 1; > instance->inneracing_mode = IS_VDEC_INNER_RACING(instance->ctx->dev->dec_capability); > > - mtk_vcodec_debug(instance, "vsi 0x%p core_vsi 0x%llx 0x%p, inneracing_mode %d\n", > - vsi, vsi->core_vsi, instance->core_vsi, instance->inneracing_mode); > + mtk_vdec_debug(ctx, "vsi 0x%p core_vsi 0x%llx 0x%p, inneracing_mode %d\n", > + vsi, vsi->core_vsi, instance->core_vsi, instance->inneracing_mode); > > ret = vdec_av1_slice_init_cdf_table(instance); > if (ret) > @@ -1938,7 +1937,7 @@ static void vdec_av1_slice_deinit(void *h_vdec) > > if (!instance) > return; > - mtk_vcodec_debug(instance, "h_vdec 0x%p\n", h_vdec); > + mtk_vdec_debug(instance->ctx, "h_vdec 0x%p\n", h_vdec); > vpu_dec_deinit(&instance->vpu); > vdec_av1_slice_free_working_buffer(instance); > vdec_msg_queue_deinit(&instance->ctx->msg_queue, instance->ctx); > @@ -1951,7 +1950,7 @@ static int vdec_av1_slice_flush(void *h_vdec, struct mtk_vcodec_mem *bs, > struct vdec_av1_slice_instance *instance = h_vdec; > int i; > > - mtk_vcodec_debug(instance, "flush ...\n"); > + mtk_vdec_debug(instance->ctx, "flush ...\n"); > > vdec_msg_queue_wait_lat_buf_full(&instance->ctx->msg_queue); > > @@ -1966,7 +1965,7 @@ static void vdec_av1_slice_get_pic_info(struct vdec_av1_slice_instance *instance > struct mtk_vcodec_ctx *ctx = instance->ctx; > u32 data[3]; > > - mtk_vcodec_debug(instance, "w %u h %u\n", ctx->picinfo.pic_w, ctx->picinfo.pic_h); > + mtk_vdec_debug(ctx, "w %u h %u\n", ctx->picinfo.pic_w, ctx->picinfo.pic_h); > > data[0] = ctx->picinfo.pic_w; > data[1] = ctx->picinfo.pic_h; > @@ -1996,8 +1995,8 @@ static void vdec_av1_slice_get_crop_info(struct vdec_av1_slice_instance *instanc > cr->width = ctx->picinfo.pic_w; > cr->height = ctx->picinfo.pic_h; > > - mtk_vcodec_debug(instance, "l=%d, t=%d, w=%d, h=%d\n", > - cr->left, cr->top, cr->width, cr->height); > + mtk_vdec_debug(ctx, "l=%d, t=%d, w=%d, h=%d\n", > + cr->left, cr->top, cr->width, cr->height); > } > > static int vdec_av1_slice_get_param(void *h_vdec, enum vdec_get_param_type type, void *out) > @@ -2015,7 +2014,7 @@ static int vdec_av1_slice_get_param(void *h_vdec, enum vdec_get_param_type type, > vdec_av1_slice_get_crop_info(instance, out); > break; > default: > - mtk_vcodec_err(instance, "invalid get parameter type=%d\n", type); > + mtk_vdec_err(instance->ctx, "invalid get parameter type=%d\n", type); > return -EINVAL; > } > > @@ -2039,7 +2038,7 @@ static int vdec_av1_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > /* init msgQ for the first time */ > if (vdec_msg_queue_init(&ctx->msg_queue, ctx, > vdec_av1_slice_core_decode, sizeof(*pfc))) { > - mtk_vcodec_err(instance, "failed to init AV1 msg queue\n"); > + mtk_vdec_err(ctx, "failed to init AV1 msg queue\n"); > return -ENOMEM; > } > > @@ -2049,7 +2048,7 @@ static int vdec_av1_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > lat_buf = vdec_msg_queue_dqbuf(&ctx->msg_queue.lat_ctx); > if (!lat_buf) { > - mtk_vcodec_err(instance, "failed to get AV1 lat buf\n"); > + mtk_vdec_err(ctx, "failed to get AV1 lat buf\n"); > return -EAGAIN; > } > pfc = (struct vdec_av1_slice_pfc *)lat_buf->private_data; > @@ -2061,14 +2060,14 @@ static int vdec_av1_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > ret = vdec_av1_slice_setup_lat(instance, bs, lat_buf, pfc); > if (ret) { > - mtk_vcodec_err(instance, "failed to setup AV1 lat ret %d\n", ret); > + mtk_vdec_err(ctx, "failed to setup AV1 lat ret %d\n", ret); > goto err_free_fb_out; > } > > vdec_av1_slice_vsi_to_remote(vsi, instance->vsi); > ret = vpu_dec_start(&instance->vpu, NULL, 0); > if (ret) { > - mtk_vcodec_err(instance, "failed to dec AV1 ret %d\n", ret); > + mtk_vdec_err(ctx, "failed to dec AV1 ret %d\n", ret); > goto err_free_fb_out; > } > if (instance->inneracing_mode) > @@ -2080,7 +2079,7 @@ static int vdec_av1_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > MTK_VDEC_LAT0); > /* update remote vsi if decode timeout */ > if (ret) { > - mtk_vcodec_err(instance, "AV1 Frame %d decode timeout %d\n", pfc->seq, ret); > + mtk_vdec_err(ctx, "AV1 Frame %d decode timeout %d\n", pfc->seq, ret); > WRITE_ONCE(instance->vsi->state.timeout, 1); > } > vpu_dec_end(&instance->vpu); > @@ -2091,7 +2090,7 @@ static int vdec_av1_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > /* LAT trans full, re-decode */ > if (ret == -EAGAIN) { > - mtk_vcodec_err(instance, "AV1 Frame %d trans full\n", pfc->seq); > + mtk_vdec_err(ctx, "AV1 Frame %d trans full\n", pfc->seq); > if (!instance->inneracing_mode) > vdec_msg_queue_qbuf(&ctx->msg_queue.lat_ctx, lat_buf); > return 0; > @@ -2099,14 +2098,14 @@ static int vdec_av1_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > /* LAT trans full, no more UBE or decode timeout */ > if (ret == -ENOMEM || vsi->state.timeout) { > - mtk_vcodec_err(instance, "AV1 Frame %d insufficient buffer or timeout\n", pfc->seq); > + mtk_vdec_err(ctx, "AV1 Frame %d insufficient buffer or timeout\n", pfc->seq); > if (!instance->inneracing_mode) > vdec_msg_queue_qbuf(&ctx->msg_queue.lat_ctx, lat_buf); > return -EBUSY; > } > vsi->trans.dma_addr_end += ctx->msg_queue.wdma_addr.dma_addr; > - mtk_vcodec_debug(instance, "lat dma 1 0x%pad 0x%pad\n", > - &pfc->vsi.trans.dma_addr, &pfc->vsi.trans.dma_addr_end); > + mtk_vdec_debug(ctx, "lat dma 1 0x%pad 0x%pad\n", > + &pfc->vsi.trans.dma_addr, &pfc->vsi.trans.dma_addr_end); > > vdec_msg_queue_update_ube_wptr(&ctx->msg_queue, vsi->trans.dma_addr_end); > > @@ -2120,7 +2119,7 @@ static int vdec_av1_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > vdec_msg_queue_qbuf(&ctx->msg_queue.lat_ctx, lat_buf); > > if (pfc) > - mtk_vcodec_err(instance, "slice dec number: %d err: %d", pfc->seq, ret); > + mtk_vdec_err(ctx, "slice dec number: %d err: %d", pfc->seq, ret); > > return ret; > } > @@ -2153,13 +2152,13 @@ static int vdec_av1_slice_core_decode(struct vdec_lat_buf *lat_buf) > > ret = vdec_av1_slice_setup_core(instance, fb, lat_buf, pfc); > if (ret) { > - mtk_vcodec_err(instance, "vdec_av1_slice_setup_core\n"); > + mtk_vdec_err(ctx, "vdec_av1_slice_setup_core\n"); > goto err; > } > vdec_av1_slice_vsi_to_remote(&pfc->vsi, instance->core_vsi); > ret = vpu_dec_core(&instance->vpu); > if (ret) { > - mtk_vcodec_err(instance, "vpu_dec_core\n"); > + mtk_vdec_err(ctx, "vpu_dec_core\n"); > goto err; > } > > @@ -2169,7 +2168,7 @@ static int vdec_av1_slice_core_decode(struct vdec_lat_buf *lat_buf) > MTK_VDEC_CORE); > /* update remote vsi if decode timeout */ > if (ret) { > - mtk_vcodec_err(instance, "AV1 frame %d core timeout\n", pfc->seq); > + mtk_vdec_err(ctx, "AV1 frame %d core timeout\n", pfc->seq); > WRITE_ONCE(instance->vsi->state.timeout, 1); > } > vpu_dec_core_end(&instance->vpu); > @@ -2177,12 +2176,12 @@ static int vdec_av1_slice_core_decode(struct vdec_lat_buf *lat_buf) > > ret = vdec_av1_slice_update_core(instance, lat_buf, pfc); > if (ret) { > - mtk_vcodec_err(instance, "vdec_av1_slice_update_core\n"); > + mtk_vdec_err(ctx, "vdec_av1_slice_update_core\n"); > goto err; > } > > - mtk_vcodec_debug(instance, "core dma_addr_end 0x%pad\n", > - &instance->core_vsi->trans.dma_addr_end); > + mtk_vdec_debug(ctx, "core dma_addr_end 0x%pad\n", > + &instance->core_vsi->trans.dma_addr_end); > vdec_msg_queue_update_ube_rptr(&ctx->msg_queue, instance->core_vsi->trans.dma_addr_end); > > ctx->dev->vdec_pdata->cap_to_disp(ctx, 0, lat_buf->src_buf_req); > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_if.c > index 24312a90afbb..ca5437ae37f6 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_if.c > @@ -144,7 +144,7 @@ static int allocate_predication_buf(struct vdec_h264_inst *inst) > inst->pred_buf.size = BUF_PREDICTION_SZ; > err = mtk_vcodec_mem_alloc(inst->ctx, &inst->pred_buf); > if (err) { > - mtk_vcodec_err(inst, "failed to allocate ppl buf"); > + mtk_vdec_err(inst->ctx, "failed to allocate ppl buf"); > return err; > } > > @@ -176,7 +176,7 @@ static int alloc_mv_buf(struct vdec_h264_inst *inst, struct vdec_pic_info *pic) > mem->size = buf_sz; > err = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (err) { > - mtk_vcodec_err(inst, "failed to allocate mv buf"); > + mtk_vdec_err(inst->ctx, "failed to allocate mv buf"); > return err; > } > inst->vsi->mv_buf_dma[i] = mem->dma_addr; > @@ -207,9 +207,9 @@ static int check_list_validity(struct vdec_h264_inst *inst, bool disp_list) > if (list->count > H264_MAX_FB_NUM || > list->read_idx >= H264_MAX_FB_NUM || > list->write_idx >= H264_MAX_FB_NUM) { > - mtk_vcodec_err(inst, "%s list err: cnt=%d r_idx=%d w_idx=%d", > - disp_list ? "disp" : "free", list->count, > - list->read_idx, list->write_idx); > + mtk_vdec_err(inst->ctx, "%s list err: cnt=%d r_idx=%d w_idx=%d", > + disp_list ? "disp" : "free", list->count, > + list->read_idx, list->write_idx); > return -EINVAL; > } > > @@ -226,12 +226,12 @@ static void put_fb_to_free(struct vdec_h264_inst *inst, struct vdec_fb *fb) > > list = &inst->vsi->list_free; > if (list->count == H264_MAX_FB_NUM) { > - mtk_vcodec_err(inst, "[FB] put fb free_list full"); > + mtk_vdec_err(inst->ctx, "[FB] put fb free_list full"); > return; > } > > - mtk_vcodec_debug(inst, "[FB] put fb into free_list @(%p, %llx)", > - fb->base_y.va, (u64)fb->base_y.dma_addr); > + mtk_vdec_debug(inst->ctx, "[FB] put fb into free_list @(%p, %llx)", > + fb->base_y.va, (u64)fb->base_y.dma_addr); > > list->fb_list[list->write_idx].vdec_fb_va = (u64)(uintptr_t)fb; > list->write_idx = (list->write_idx == H264_MAX_FB_NUM - 1) ? > @@ -244,10 +244,9 @@ static void get_pic_info(struct vdec_h264_inst *inst, > struct vdec_pic_info *pic) > { > *pic = inst->vsi->pic; > - mtk_vcodec_debug(inst, "pic(%d, %d), buf(%d, %d)", > - pic->pic_w, pic->pic_h, pic->buf_w, pic->buf_h); > - mtk_vcodec_debug(inst, "fb size: Y(%d), C(%d)", > - pic->fb_sz[0], pic->fb_sz[1]); > + mtk_vdec_debug(inst->ctx, "pic(%d, %d), buf(%d, %d)", > + pic->pic_w, pic->pic_h, pic->buf_w, pic->buf_h); > + mtk_vdec_debug(inst->ctx, "fb size: Y(%d), C(%d)", pic->fb_sz[0], pic->fb_sz[1]); > } > > static void get_crop_info(struct vdec_h264_inst *inst, struct v4l2_rect *cr) > @@ -257,14 +256,14 @@ static void get_crop_info(struct vdec_h264_inst *inst, struct v4l2_rect *cr) > cr->width = inst->vsi->crop.width; > cr->height = inst->vsi->crop.height; > > - mtk_vcodec_debug(inst, "l=%d, t=%d, w=%d, h=%d", > - cr->left, cr->top, cr->width, cr->height); > + mtk_vdec_debug(inst->ctx, "l=%d, t=%d, w=%d, h=%d", cr->left, cr->top, > + cr->width, cr->height); > } > > static void get_dpb_size(struct vdec_h264_inst *inst, unsigned int *dpb_sz) > { > *dpb_sz = inst->vsi->dec.dpb_sz; > - mtk_vcodec_debug(inst, "sz=%d", *dpb_sz); > + mtk_vdec_debug(inst->ctx, "sz=%d", *dpb_sz); > } > > static int vdec_h264_init(struct mtk_vcodec_ctx *ctx) > @@ -283,7 +282,7 @@ static int vdec_h264_init(struct mtk_vcodec_ctx *ctx) > > err = vpu_dec_init(&inst->vpu); > if (err) { > - mtk_vcodec_err(inst, "vdec_h264 init err=%d", err); > + mtk_vdec_err(ctx, "vdec_h264 init err=%d", err); > goto error_free_inst; > } > > @@ -292,7 +291,7 @@ static int vdec_h264_init(struct mtk_vcodec_ctx *ctx) > if (err) > goto error_deinit; > > - mtk_vcodec_debug(inst, "H264 Instance >> %p", inst); > + mtk_vdec_debug(ctx, "H264 Instance >> %p", inst); > > ctx->drv_handle = inst; > return 0; > @@ -344,8 +343,8 @@ static int vdec_h264_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > uint64_t y_fb_dma = fb ? (u64)fb->base_y.dma_addr : 0; > uint64_t c_fb_dma = fb ? (u64)fb->base_c.dma_addr : 0; > > - mtk_vcodec_debug(inst, "+ [%d] FB y_dma=%llx c_dma=%llx va=%p", > - ++inst->num_nalu, y_fb_dma, c_fb_dma, fb); > + mtk_vdec_debug(inst->ctx, "+ [%d] FB y_dma=%llx c_dma=%llx va=%p", > + ++inst->num_nalu, y_fb_dma, c_fb_dma, fb); > > /* bs NULL means flush decoder */ > if (bs == NULL) > @@ -355,15 +354,15 @@ static int vdec_h264_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > buf_sz = bs->size; > nal_start_idx = find_start_code(buf, buf_sz); > if (nal_start_idx < 0) { > - mtk_vcodec_err(inst, "invalid nal start code"); > + mtk_vdec_err(inst->ctx, "invalid nal start code"); > err = -EIO; > goto err_free_fb_out; > } > > nal_start = buf[nal_start_idx]; > nal_type = NAL_TYPE(buf[nal_start_idx]); > - mtk_vcodec_debug(inst, "\n + NALU[%d] type %d +\n", inst->num_nalu, > - nal_type); > + mtk_vdec_debug(inst->ctx, "\n + NALU[%d] type %d +\n", inst->num_nalu, > + nal_type); > > if (nal_type == NAL_H264_PPS) { > buf_sz -= nal_start_idx; > @@ -384,8 +383,7 @@ static int vdec_h264_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > err = vpu_dec_start(vpu, data, 2); > if (err) { > if (err > 0 && (DEC_ERR_RET(err) == H264_ERR_NOT_VALID)) { > - mtk_vcodec_err(inst, "- error bitstream - err = %d -", > - err); > + mtk_vdec_err(inst->ctx, "- error bitstream - err = %d -", err); > err = -EIO; > } > goto err_free_fb_out; > @@ -395,7 +393,7 @@ static int vdec_h264_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > if (*res_chg) { > struct vdec_pic_info pic; > > - mtk_vcodec_debug(inst, "- resolution changed -"); > + mtk_vdec_debug(inst->ctx, "- resolution changed -"); > get_pic_info(inst, &pic); > > if (inst->vsi->dec.realloc_mv_buf) { > @@ -416,13 +414,12 @@ static int vdec_h264_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > vpu_dec_end(vpu); > } > > - mtk_vcodec_debug(inst, "\n - NALU[%d] type=%d -\n", inst->num_nalu, > - nal_type); > + mtk_vdec_debug(inst->ctx, "\n - NALU[%d] type=%d -\n", inst->num_nalu, nal_type); > return 0; > > err_free_fb_out: > put_fb_to_free(inst, fb); > - mtk_vcodec_err(inst, "\n - NALU[%d] err=%d -\n", inst->num_nalu, err); > + mtk_vdec_err(inst->ctx, "\n - NALU[%d] err=%d -\n", inst->num_nalu, err); > return err; > } > > @@ -436,8 +433,7 @@ static void vdec_h264_get_fb(struct vdec_h264_inst *inst, > return; > > if (list->count == 0) { > - mtk_vcodec_debug(inst, "[FB] there is no %s fb", > - disp_list ? "disp" : "free"); > + mtk_vdec_debug(inst->ctx, "[FB] there is no %s fb", disp_list ? "disp" : "free"); > *out_fb = NULL; > return; > } > @@ -447,10 +443,10 @@ static void vdec_h264_get_fb(struct vdec_h264_inst *inst, > fb->status |= (disp_list ? FB_ST_DISPLAY : FB_ST_FREE); > > *out_fb = fb; > - mtk_vcodec_debug(inst, "[FB] get %s fb st=%d poc=%d %llx", > - disp_list ? "disp" : "free", > - fb->status, list->fb_list[list->read_idx].poc, > - list->fb_list[list->read_idx].vdec_fb_va); > + mtk_vdec_debug(inst->ctx, "[FB] get %s fb st=%d poc=%d %llx", > + disp_list ? "disp" : "free", > + fb->status, list->fb_list[list->read_idx].poc, > + list->fb_list[list->read_idx].vdec_fb_va); > > list->read_idx = (list->read_idx == H264_MAX_FB_NUM - 1) ? > 0 : list->read_idx + 1; > @@ -484,7 +480,7 @@ static int vdec_h264_get_param(void *h_vdec, enum vdec_get_param_type type, > break; > > default: > - mtk_vcodec_err(inst, "invalid get parameter type=%d", type); > + mtk_vdec_err(inst->ctx, "invalid get parameter type=%d", type); > return -EINVAL; > } > > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_if.c > index dc6ee266f232..250746db366b 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_if.c > @@ -162,7 +162,7 @@ static int allocate_predication_buf(struct vdec_h264_slice_inst *inst) > inst->pred_buf.size = BUF_PREDICTION_SZ; > err = mtk_vcodec_mem_alloc(inst->ctx, &inst->pred_buf); > if (err) { > - mtk_vcodec_err(inst, "failed to allocate ppl buf"); > + mtk_vdec_err(inst->ctx, "failed to allocate ppl buf"); > return err; > } > > @@ -195,7 +195,7 @@ static int alloc_mv_buf(struct vdec_h264_slice_inst *inst, > mem->size = buf_sz; > err = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (err) { > - mtk_vcodec_err(inst, "failed to allocate mv buf"); > + mtk_vdec_err(inst->ctx, "failed to allocate mv buf"); > return err; > } > inst->vsi_ctx.mv_buf_dma[i] = mem->dma_addr; > @@ -230,11 +230,11 @@ static void get_pic_info(struct vdec_h264_slice_inst *inst, > ctx->q_data[MTK_Q_DATA_DST].fmt->num_planes; > > *pic = ctx->picinfo; > - mtk_vcodec_debug(inst, "pic(%d, %d), buf(%d, %d)", > - ctx->picinfo.pic_w, ctx->picinfo.pic_h, > - ctx->picinfo.buf_w, ctx->picinfo.buf_h); > - mtk_vcodec_debug(inst, "Y/C(%d, %d)", ctx->picinfo.fb_sz[0], > - ctx->picinfo.fb_sz[1]); > + mtk_vdec_debug(inst->ctx, "pic(%d, %d), buf(%d, %d)", > + ctx->picinfo.pic_w, ctx->picinfo.pic_h, > + ctx->picinfo.buf_w, ctx->picinfo.buf_h); > + mtk_vdec_debug(inst->ctx, "Y/C(%d, %d)", ctx->picinfo.fb_sz[0], > + ctx->picinfo.fb_sz[1]); > > if (ctx->last_decoded_picinfo.pic_w != ctx->picinfo.pic_w || > ctx->last_decoded_picinfo.pic_h != ctx->picinfo.pic_h) { > @@ -259,14 +259,14 @@ static void get_crop_info(struct vdec_h264_slice_inst *inst, struct v4l2_rect *c > cr->width = inst->vsi_ctx.crop.width; > cr->height = inst->vsi_ctx.crop.height; > > - mtk_vcodec_debug(inst, "l=%d, t=%d, w=%d, h=%d", > - cr->left, cr->top, cr->width, cr->height); > + mtk_vdec_debug(inst->ctx, "l=%d, t=%d, w=%d, h=%d", > + cr->left, cr->top, cr->width, cr->height); > } > > static void get_dpb_size(struct vdec_h264_slice_inst *inst, unsigned int *dpb_sz) > { > *dpb_sz = inst->vsi_ctx.dec.dpb_sz; > - mtk_vcodec_debug(inst, "sz=%d", *dpb_sz); > + mtk_vdec_debug(inst->ctx, "sz=%d", *dpb_sz); > } > > static int vdec_h264_slice_init(struct mtk_vcodec_ctx *ctx) > @@ -285,7 +285,7 @@ static int vdec_h264_slice_init(struct mtk_vcodec_ctx *ctx) > > err = vpu_dec_init(&inst->vpu); > if (err) { > - mtk_vcodec_err(inst, "vdec_h264 init err=%d", err); > + mtk_vdec_err(ctx, "vdec_h264 init err=%d", err); > goto error_free_inst; > } > > @@ -297,13 +297,13 @@ static int vdec_h264_slice_init(struct mtk_vcodec_ctx *ctx) > if (err) > goto error_deinit; > > - mtk_vcodec_debug(inst, "struct size = %zu,%zu,%zu,%zu\n", > - sizeof(struct mtk_h264_sps_param), > - sizeof(struct mtk_h264_pps_param), > - sizeof(struct mtk_h264_dec_slice_param), > - sizeof(struct mtk_h264_dpb_info)); > + mtk_vdec_debug(ctx, "struct size = %zu,%zu,%zu,%zu\n", > + sizeof(struct mtk_h264_sps_param), > + sizeof(struct mtk_h264_pps_param), > + sizeof(struct mtk_h264_dec_slice_param), > + sizeof(struct mtk_h264_dpb_info)); > > - mtk_vcodec_debug(inst, "H264 Instance >> %p", inst); > + mtk_vdec_debug(ctx, "H264 Instance >> %p", inst); > > ctx->drv_handle = inst; > return 0; > @@ -354,8 +354,8 @@ static int vdec_h264_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > y_fb_dma = fb ? (u64)fb->base_y.dma_addr : 0; > c_fb_dma = fb ? (u64)fb->base_c.dma_addr : 0; > > - mtk_vcodec_debug(inst, "+ [%d] FB y_dma=%llx c_dma=%llx va=%p", > - inst->num_nalu, y_fb_dma, c_fb_dma, fb); > + mtk_vdec_debug(inst->ctx, "+ [%d] FB y_dma=%llx c_dma=%llx va=%p", > + inst->num_nalu, y_fb_dma, c_fb_dma, fb); > > inst->vsi_ctx.dec.bs_dma = (uint64_t)bs->dma_addr; > inst->vsi_ctx.dec.y_fb_dma = y_fb_dma; > @@ -380,7 +380,7 @@ static int vdec_h264_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > *res_chg = inst->vsi_ctx.dec.resolution_changed; > if (*res_chg) { > - mtk_vcodec_debug(inst, "- resolution changed -"); > + mtk_vdec_debug(inst->ctx, "- resolution changed -"); > if (inst->vsi_ctx.dec.realloc_mv_buf) { > err = alloc_mv_buf(inst, &inst->ctx->picinfo); > inst->vsi_ctx.dec.realloc_mv_buf = false; > @@ -404,11 +404,11 @@ static int vdec_h264_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > vpu_dec_end(vpu); > > memcpy(&inst->vsi_ctx, inst->vpu.vsi, sizeof(inst->vsi_ctx)); > - mtk_vcodec_debug(inst, "\n - NALU[%d]", inst->num_nalu); > + mtk_vdec_debug(inst->ctx, "\n - NALU[%d]", inst->num_nalu); > return 0; > > err_free_fb_out: > - mtk_vcodec_err(inst, "\n - NALU[%d] err=%d -\n", inst->num_nalu, err); > + mtk_vdec_err(inst->ctx, "\n - NALU[%d] err=%d -\n", inst->num_nalu, err); > return err; > } > > @@ -430,7 +430,7 @@ static int vdec_h264_slice_get_param(void *h_vdec, enum vdec_get_param_type type > break; > > default: > - mtk_vcodec_err(inst, "invalid get parameter type=%d", type); > + mtk_vdec_err(inst->ctx, "invalid get parameter type=%d", type); > return -EINVAL; > } > > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c > index 3cb5b967f48a..2a160dcb5296 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c > @@ -199,7 +199,7 @@ static int vdec_h264_slice_fill_decode_parameters(struct vdec_h264_slice_inst *i > return PTR_ERR(pps); > > if (dec_params->flags & V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC) { > - mtk_vcodec_err(inst, "No support for H.264 field decoding."); > + mtk_vdec_err(inst->ctx, "No support for H.264 field decoding."); > inst->is_field_bitstream = true; > return -EINVAL; > } > @@ -322,7 +322,7 @@ static int vdec_h264_slice_alloc_mv_buf(struct vdec_h264_slice_inst *inst, > mem->size = buf_sz; > err = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (err) { > - mtk_vcodec_err(inst, "failed to allocate mv buf"); > + mtk_vdec_err(inst->ctx, "failed to allocate mv buf"); > return err; > } > } > @@ -359,11 +359,11 @@ static void vdec_h264_slice_get_pic_info(struct vdec_h264_slice_inst *inst) > inst->cap_num_planes = > ctx->q_data[MTK_Q_DATA_DST].fmt->num_planes; > > - mtk_vcodec_debug(inst, "pic(%d, %d), buf(%d, %d)", > - ctx->picinfo.pic_w, ctx->picinfo.pic_h, > - ctx->picinfo.buf_w, ctx->picinfo.buf_h); > - mtk_vcodec_debug(inst, "Y/C(%d, %d)", ctx->picinfo.fb_sz[0], > - ctx->picinfo.fb_sz[1]); > + mtk_vdec_debug(ctx, "pic(%d, %d), buf(%d, %d)", > + ctx->picinfo.pic_w, ctx->picinfo.pic_h, > + ctx->picinfo.buf_w, ctx->picinfo.buf_h); > + mtk_vdec_debug(ctx, "Y/C(%d, %d)", ctx->picinfo.fb_sz[0], > + ctx->picinfo.fb_sz[1]); > > if (ctx->last_decoded_picinfo.pic_w != ctx->picinfo.pic_w || > ctx->last_decoded_picinfo.pic_h != ctx->picinfo.pic_h) { > @@ -389,8 +389,8 @@ static void vdec_h264_slice_get_crop_info(struct vdec_h264_slice_inst *inst, > cr->width = inst->ctx->picinfo.pic_w; > cr->height = inst->ctx->picinfo.pic_h; > > - mtk_vcodec_debug(inst, "l=%d, t=%d, w=%d, h=%d", > - cr->left, cr->top, cr->width, cr->height); > + mtk_vdec_debug(inst->ctx, "l=%d, t=%d, w=%d, h=%d", > + cr->left, cr->top, cr->width, cr->height); > } > > static int vdec_h264_slice_init(struct mtk_vcodec_ctx *ctx) > @@ -412,7 +412,7 @@ static int vdec_h264_slice_init(struct mtk_vcodec_ctx *ctx) > > err = vpu_dec_init(&inst->vpu); > if (err) { > - mtk_vcodec_err(inst, "vdec_h264 init err=%d", err); > + mtk_vdec_err(ctx, "vdec_h264 init err=%d", err); > goto error_free_inst; > } > > @@ -423,14 +423,14 @@ static int vdec_h264_slice_init(struct mtk_vcodec_ctx *ctx) > inst->resolution_changed = true; > inst->realloc_mv_buf = true; > > - mtk_vcodec_debug(inst, "lat struct size = %d,%d,%d,%d vsi: %d\n", > - (int)sizeof(struct mtk_h264_sps_param), > - (int)sizeof(struct mtk_h264_pps_param), > - (int)sizeof(struct vdec_h264_slice_lat_dec_param), > - (int)sizeof(struct mtk_h264_dpb_info), > - vsi_size); > - mtk_vcodec_debug(inst, "lat H264 instance >> %p, codec_type = 0x%x", > - inst, inst->vpu.codec_type); > + mtk_vdec_debug(ctx, "lat struct size = %d,%d,%d,%d vsi: %d\n", > + (int)sizeof(struct mtk_h264_sps_param), > + (int)sizeof(struct mtk_h264_pps_param), > + (int)sizeof(struct vdec_h264_slice_lat_dec_param), > + (int)sizeof(struct mtk_h264_dpb_info), > + vsi_size); > + mtk_vdec_debug(ctx, "lat H264 instance >> %p, codec_type = 0x%x", > + inst, inst->vpu.codec_type); > > ctx->drv_handle = inst; > return 0; > @@ -464,14 +464,14 @@ static int vdec_h264_slice_core_decode(struct vdec_lat_buf *lat_buf) > struct mtk_vcodec_mem *mem; > struct vdec_vpu_inst *vpu = &inst->vpu; > > - mtk_vcodec_debug(inst, "[h264-core] vdec_h264 core decode"); > + mtk_vdec_debug(ctx, "[h264-core] vdec_h264 core decode"); > memcpy(&inst->vsi_core->h264_slice_params, &share_info->h264_slice_params, > sizeof(share_info->h264_slice_params)); > > fb = ctx->dev->vdec_pdata->get_cap_buffer(ctx); > if (!fb) { > err = -EBUSY; > - mtk_vcodec_err(inst, "fb buffer is NULL"); > + mtk_vdec_err(ctx, "fb buffer is NULL"); > goto vdec_dec_end; > } > > @@ -483,8 +483,7 @@ static int vdec_h264_slice_core_decode(struct vdec_lat_buf *lat_buf) > else > c_fb_dma = (u64)fb->base_c.dma_addr; > > - mtk_vcodec_debug(inst, "[h264-core] y/c addr = 0x%llx 0x%llx", y_fb_dma, > - c_fb_dma); > + mtk_vdec_debug(ctx, "[h264-core] y/c addr = 0x%llx 0x%llx", y_fb_dma, c_fb_dma); > > inst->vsi_core->dec.y_fb_dma = y_fb_dma; > inst->vsi_core->dec.c_fb_dma = c_fb_dma; > @@ -514,7 +513,7 @@ static int vdec_h264_slice_core_decode(struct vdec_lat_buf *lat_buf) > > err = vpu_dec_core(vpu); > if (err) { > - mtk_vcodec_err(inst, "core decode err=%d", err); > + mtk_vdec_err(ctx, "core decode err=%d", err); > goto vdec_dec_end; > } > > @@ -522,22 +521,21 @@ static int vdec_h264_slice_core_decode(struct vdec_lat_buf *lat_buf) > timeout = mtk_vcodec_wait_for_done_ctx(inst->ctx, MTK_INST_IRQ_RECEIVED, > WAIT_INTR_TIMEOUT_MS, MTK_VDEC_CORE); > if (timeout) > - mtk_vcodec_err(inst, "core decode timeout: pic_%d", > - ctx->decoded_frame_cnt); > + mtk_vdec_err(ctx, "core decode timeout: pic_%d", ctx->decoded_frame_cnt); > inst->vsi_core->dec.timeout = !!timeout; > > vpu_dec_core_end(vpu); > - mtk_vcodec_debug(inst, "pic[%d] crc: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", > - ctx->decoded_frame_cnt, > - inst->vsi_core->dec.crc[0], inst->vsi_core->dec.crc[1], > - inst->vsi_core->dec.crc[2], inst->vsi_core->dec.crc[3], > - inst->vsi_core->dec.crc[4], inst->vsi_core->dec.crc[5], > - inst->vsi_core->dec.crc[6], inst->vsi_core->dec.crc[7]); > + mtk_vdec_debug(ctx, "pic[%d] crc: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", > + ctx->decoded_frame_cnt, > + inst->vsi_core->dec.crc[0], inst->vsi_core->dec.crc[1], > + inst->vsi_core->dec.crc[2], inst->vsi_core->dec.crc[3], > + inst->vsi_core->dec.crc[4], inst->vsi_core->dec.crc[5], > + inst->vsi_core->dec.crc[6], inst->vsi_core->dec.crc[7]); > > vdec_dec_end: > vdec_msg_queue_update_ube_rptr(&lat_buf->ctx->msg_queue, share_info->trans_end); > ctx->dev->vdec_pdata->cap_to_disp(ctx, !!err, lat_buf->src_buf_req); > - mtk_vcodec_debug(inst, "core decode done err=%d", err); > + mtk_vdec_debug(ctx, "core decode done err=%d", err); > ctx->decoded_frame_cnt++; > return 0; > } > @@ -594,7 +592,7 @@ static int vdec_h264_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > lat_buf = vdec_msg_queue_dqbuf(&inst->ctx->msg_queue.lat_ctx); > if (!lat_buf) { > - mtk_vcodec_debug(inst, "failed to get lat buffer"); > + mtk_vdec_debug(inst->ctx, "failed to get lat buffer"); > return -EAGAIN; > } > share_info = lat_buf->private_data; > @@ -623,7 +621,7 @@ static int vdec_h264_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > *res_chg = inst->resolution_changed; > if (inst->resolution_changed) { > - mtk_vcodec_debug(inst, "- resolution changed -"); > + mtk_vdec_debug(inst->ctx, "- resolution changed -"); > if (inst->realloc_mv_buf) { > err = vdec_h264_slice_alloc_mv_buf(inst, &inst->ctx->picinfo); > inst->realloc_mv_buf = false; > @@ -646,19 +644,19 @@ static int vdec_h264_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > inst->vsi->trans_end = inst->ctx->msg_queue.wdma_rptr_addr; > inst->vsi->trans_start = inst->ctx->msg_queue.wdma_wptr_addr; > - mtk_vcodec_debug(inst, "lat:trans(0x%llx 0x%llx) err:0x%llx", > - inst->vsi->wdma_start_addr, > - inst->vsi->wdma_end_addr, > - inst->vsi->wdma_err_addr); > - > - mtk_vcodec_debug(inst, "slice(0x%llx 0x%llx) rprt((0x%llx 0x%llx))", > - inst->vsi->slice_bc_start_addr, > - inst->vsi->slice_bc_end_addr, > - inst->vsi->trans_start, > - inst->vsi->trans_end); > + mtk_vdec_debug(inst->ctx, "lat:trans(0x%llx 0x%llx) err:0x%llx", > + inst->vsi->wdma_start_addr, > + inst->vsi->wdma_end_addr, > + inst->vsi->wdma_err_addr); > + > + mtk_vdec_debug(inst->ctx, "slice(0x%llx 0x%llx) rprt((0x%llx 0x%llx))", > + inst->vsi->slice_bc_start_addr, > + inst->vsi->slice_bc_end_addr, > + inst->vsi->trans_start, > + inst->vsi->trans_end); > err = vpu_dec_start(vpu, data, 2); > if (err) { > - mtk_vcodec_debug(inst, "lat decode err: %d", err); > + mtk_vdec_debug(inst->ctx, "lat decode err: %d", err); > goto err_free_fb_out; > } > > @@ -677,7 +675,7 @@ static int vdec_h264_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > timeout = mtk_vcodec_wait_for_done_ctx(inst->ctx, MTK_INST_IRQ_RECEIVED, > WAIT_INTR_TIMEOUT_MS, MTK_VDEC_LAT0); > if (timeout) > - mtk_vcodec_err(inst, "lat decode timeout: pic_%d", inst->slice_dec_num); > + mtk_vdec_err(inst->ctx, "lat decode timeout: pic_%d", inst->slice_dec_num); > inst->vsi->dec.timeout = !!timeout; > > err = vpu_dec_end(vpu); > @@ -685,7 +683,7 @@ static int vdec_h264_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > if (!IS_VDEC_INNER_RACING(inst->ctx->dev->dec_capability)) > vdec_msg_queue_qbuf(&inst->ctx->msg_queue.lat_ctx, lat_buf); > inst->slice_dec_num++; > - mtk_vcodec_err(inst, "lat dec fail: pic_%d err:%d", inst->slice_dec_num, err); > + mtk_vdec_err(inst->ctx, "lat dec fail: pic_%d err:%d", inst->slice_dec_num, err); > return -EINVAL; > } > > @@ -698,14 +696,14 @@ static int vdec_h264_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > sizeof(share_info->h264_slice_params)); > vdec_msg_queue_qbuf(&inst->ctx->msg_queue.core_ctx, lat_buf); > } > - mtk_vcodec_debug(inst, "dec num: %d lat crc: 0x%x 0x%x 0x%x", inst->slice_dec_num, > - inst->vsi->dec.crc[0], inst->vsi->dec.crc[1], inst->vsi->dec.crc[2]); > + mtk_vdec_debug(inst->ctx, "dec num: %d lat crc: 0x%x 0x%x 0x%x", inst->slice_dec_num, > + inst->vsi->dec.crc[0], inst->vsi->dec.crc[1], inst->vsi->dec.crc[2]); > > inst->slice_dec_num++; > return 0; > err_free_fb_out: > vdec_msg_queue_qbuf(&inst->ctx->msg_queue.lat_ctx, lat_buf); > - mtk_vcodec_err(inst, "slice dec number: %d err: %d", inst->slice_dec_num, err); > + mtk_vdec_err(inst->ctx, "slice dec number: %d err: %d", inst->slice_dec_num, err); > return err; > } > > @@ -732,8 +730,8 @@ static int vdec_h264_slice_single_decode(void *h_vdec, struct mtk_vcodec_mem *bs > > y_fb_dma = fb ? (u64)fb->base_y.dma_addr : 0; > c_fb_dma = fb ? (u64)fb->base_c.dma_addr : 0; > - mtk_vcodec_debug(inst, "[h264-dec] [%d] y_dma=%llx c_dma=%llx", > - inst->ctx->decoded_frame_cnt, y_fb_dma, c_fb_dma); > + mtk_vdec_debug(inst->ctx, "[h264-dec] [%d] y_dma=%llx c_dma=%llx", > + inst->ctx->decoded_frame_cnt, y_fb_dma, c_fb_dma); > > inst->vsi_ctx.dec.bs_buf_addr = (u64)bs->dma_addr; > inst->vsi_ctx.dec.bs_buf_size = bs->size; > @@ -757,7 +755,7 @@ static int vdec_h264_slice_single_decode(void *h_vdec, struct mtk_vcodec_mem *bs > > *res_chg = inst->resolution_changed; > if (inst->resolution_changed) { > - mtk_vcodec_debug(inst, "- resolution changed -"); > + mtk_vdec_debug(inst->ctx, "- resolution changed -"); > if (inst->realloc_mv_buf) { > err = vdec_h264_slice_alloc_mv_buf(inst, &inst->ctx->picinfo); > inst->realloc_mv_buf = false; > @@ -781,8 +779,7 @@ static int vdec_h264_slice_single_decode(void *h_vdec, struct mtk_vcodec_mem *bs > err = mtk_vcodec_wait_for_done_ctx(inst->ctx, MTK_INST_IRQ_RECEIVED, > WAIT_INTR_TIMEOUT_MS, MTK_VDEC_CORE); > if (err) > - mtk_vcodec_err(inst, "decode timeout: pic_%d", > - inst->ctx->decoded_frame_cnt); > + mtk_vdec_err(inst->ctx, "decode timeout: pic_%d", inst->ctx->decoded_frame_cnt); > > inst->vsi->dec.timeout = !!err; > err = vpu_dec_end(vpu); > @@ -790,19 +787,18 @@ static int vdec_h264_slice_single_decode(void *h_vdec, struct mtk_vcodec_mem *bs > goto err_free_fb_out; > > memcpy(&inst->vsi_ctx, inst->vpu.vsi, sizeof(inst->vsi_ctx)); > - mtk_vcodec_debug(inst, "pic[%d] crc: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", > - inst->ctx->decoded_frame_cnt, > - inst->vsi_ctx.dec.crc[0], inst->vsi_ctx.dec.crc[1], > - inst->vsi_ctx.dec.crc[2], inst->vsi_ctx.dec.crc[3], > - inst->vsi_ctx.dec.crc[4], inst->vsi_ctx.dec.crc[5], > - inst->vsi_ctx.dec.crc[6], inst->vsi_ctx.dec.crc[7]); > + mtk_vdec_debug(inst->ctx, "pic[%d] crc: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", > + inst->ctx->decoded_frame_cnt, > + inst->vsi_ctx.dec.crc[0], inst->vsi_ctx.dec.crc[1], > + inst->vsi_ctx.dec.crc[2], inst->vsi_ctx.dec.crc[3], > + inst->vsi_ctx.dec.crc[4], inst->vsi_ctx.dec.crc[5], > + inst->vsi_ctx.dec.crc[6], inst->vsi_ctx.dec.crc[7]); > > inst->ctx->decoded_frame_cnt++; > return 0; > > err_free_fb_out: > - mtk_vcodec_err(inst, "dec frame number: %d err: %d", > - inst->ctx->decoded_frame_cnt, err); > + mtk_vdec_err(inst->ctx, "dec frame number: %d err: %d", inst->ctx->decoded_frame_cnt, err); > return err; > } > > @@ -839,7 +835,7 @@ static int vdec_h264_slice_get_param(void *h_vdec, enum vdec_get_param_type type > vdec_h264_slice_get_crop_info(inst, out); > break; > default: > - mtk_vcodec_err(inst, "invalid get parameter type=%d", type); > + mtk_vdec_err(inst->ctx, "invalid get parameter type=%d", type); > return -EINVAL; > } > return 0; > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c > index 0bb5b54578e9..5a864bcfe7ba 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c > @@ -657,7 +657,7 @@ static int vdec_hevc_slice_alloc_mv_buf(struct vdec_hevc_slice_inst *inst, > mem->size = buf_sz; > err = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (err) { > - mtk_vcodec_err(inst, "failed to allocate mv buf"); > + mtk_vdec_err(inst->ctx, "failed to allocate mv buf"); > return err; > } > } > @@ -694,11 +694,11 @@ static void vdec_hevc_slice_get_pic_info(struct vdec_hevc_slice_inst *inst) > inst->cap_num_planes = > ctx->q_data[MTK_Q_DATA_DST].fmt->num_planes; > > - mtk_vcodec_debug(inst, "pic(%d, %d), buf(%d, %d)", > - ctx->picinfo.pic_w, ctx->picinfo.pic_h, > - ctx->picinfo.buf_w, ctx->picinfo.buf_h); > - mtk_vcodec_debug(inst, "Y/C(%d, %d)", ctx->picinfo.fb_sz[0], > - ctx->picinfo.fb_sz[1]); > + mtk_vdec_debug(ctx, "pic(%d, %d), buf(%d, %d)", > + ctx->picinfo.pic_w, ctx->picinfo.pic_h, > + ctx->picinfo.buf_w, ctx->picinfo.buf_h); > + mtk_vdec_debug(ctx, "Y/C(%d, %d)", ctx->picinfo.fb_sz[0], > + ctx->picinfo.fb_sz[1]); > > if (ctx->last_decoded_picinfo.pic_w != ctx->picinfo.pic_w || > ctx->last_decoded_picinfo.pic_h != ctx->picinfo.pic_h) { > @@ -724,8 +724,8 @@ static void vdec_hevc_slice_get_crop_info(struct vdec_hevc_slice_inst *inst, > cr->width = inst->ctx->picinfo.pic_w; > cr->height = inst->ctx->picinfo.pic_h; > > - mtk_vcodec_debug(inst, "l=%d, t=%d, w=%d, h=%d", > - cr->left, cr->top, cr->width, cr->height); > + mtk_vdec_debug(inst->ctx, "l=%d, t=%d, w=%d, h=%d", > + cr->left, cr->top, cr->width, cr->height); > } > > static int vdec_hevc_slice_setup_lat_buffer(struct vdec_hevc_slice_inst *inst, > @@ -747,7 +747,7 @@ static int vdec_hevc_slice_setup_lat_buffer(struct vdec_hevc_slice_inst *inst, > > *res_chg = inst->resolution_changed; > if (inst->resolution_changed) { > - mtk_vcodec_debug(inst, "- resolution changed -"); > + mtk_vdec_debug(inst->ctx, "- resolution changed -"); > if (inst->realloc_mv_buf) { > err = vdec_hevc_slice_alloc_mv_buf(inst, &inst->ctx->picinfo); > inst->realloc_mv_buf = false; > @@ -779,16 +779,16 @@ static int vdec_hevc_slice_setup_lat_buffer(struct vdec_hevc_slice_inst *inst, > share_info->trans.dma_addr = inst->vsi->trans.dma_addr; > share_info->trans.dma_addr_end = inst->vsi->trans.dma_addr_end; > > - mtk_vcodec_debug(inst, "lat: ube addr/size(0x%llx 0x%llx) err:0x%llx", > - inst->vsi->ube.buf, > - inst->vsi->ube.padding, > - inst->vsi->err_map.buf); > + mtk_vdec_debug(inst->ctx, "lat: ube addr/size(0x%llx 0x%llx) err:0x%llx", > + inst->vsi->ube.buf, > + inst->vsi->ube.padding, > + inst->vsi->err_map.buf); > > - mtk_vcodec_debug(inst, "slice addr/size(0x%llx 0x%llx) trans start/end((0x%llx 0x%llx))", > - inst->vsi->slice_bc.buf, > - inst->vsi->slice_bc.padding, > - inst->vsi->trans.buf, > - inst->vsi->trans.padding); > + mtk_vdec_debug(inst->ctx, "slice addr/size(0x%llx 0x%llx) trans start/end((0x%llx 0x%llx))", > + inst->vsi->slice_bc.buf, > + inst->vsi->slice_bc.padding, > + inst->vsi->trans.buf, > + inst->vsi->trans.padding); > > return 0; > } > @@ -806,7 +806,7 @@ static int vdec_hevc_slice_setup_core_buffer(struct vdec_hevc_slice_inst *inst, > > fb = ctx->dev->vdec_pdata->get_cap_buffer(ctx); > if (!fb) { > - mtk_vcodec_err(inst, "fb buffer is NULL"); > + mtk_vdec_err(inst->ctx, "fb buffer is NULL"); > return -EBUSY; > } > > @@ -817,8 +817,7 @@ static int vdec_hevc_slice_setup_core_buffer(struct vdec_hevc_slice_inst *inst, > else > c_fb_dma = (u64)fb->base_c.dma_addr; > > - mtk_vcodec_debug(inst, "[hevc-core] y/c addr = 0x%llx 0x%llx", y_fb_dma, > - c_fb_dma); > + mtk_vdec_debug(inst->ctx, "[hevc-core] y/c addr = 0x%llx 0x%llx", y_fb_dma, c_fb_dma); > > inst->vsi_core->fb.y.dma_addr = y_fb_dma; > inst->vsi_core->fb.y.size = ctx->picinfo.fb_sz[0]; > @@ -874,7 +873,7 @@ static int vdec_hevc_slice_init(struct mtk_vcodec_ctx *ctx) > ctx->drv_handle = inst; > err = vpu_dec_init(&inst->vpu); > if (err) { > - mtk_vcodec_err(inst, "vdec_hevc init err=%d", err); > + mtk_vdec_err(ctx, "vdec_hevc init err=%d", err); > goto error_free_inst; > } > > @@ -891,14 +890,14 @@ static int vdec_hevc_slice_init(struct mtk_vcodec_ctx *ctx) > if (err) > goto error_free_inst; > > - mtk_vcodec_debug(inst, "lat struct size = %d,%d,%d,%d vsi: %d\n", > - (int)sizeof(struct mtk_hevc_sps_param), > - (int)sizeof(struct mtk_hevc_pps_param), > - (int)sizeof(struct vdec_hevc_slice_lat_dec_param), > - (int)sizeof(struct mtk_hevc_dpb_info), > + mtk_vdec_debug(ctx, "lat struct size = %d,%d,%d,%d vsi: %d\n", > + (int)sizeof(struct mtk_hevc_sps_param), > + (int)sizeof(struct mtk_hevc_pps_param), > + (int)sizeof(struct vdec_hevc_slice_lat_dec_param), > + (int)sizeof(struct mtk_hevc_dpb_info), > vsi_size); > - mtk_vcodec_debug(inst, "lat hevc instance >> %p, codec_type = 0x%x", > - inst, inst->vpu.codec_type); > + mtk_vdec_debug(ctx, "lat hevc instance >> %p, codec_type = 0x%x", > + inst, inst->vpu.codec_type); > > return 0; > error_free_inst: > @@ -930,7 +929,7 @@ static int vdec_hevc_slice_core_decode(struct vdec_lat_buf *lat_buf) > struct vdec_hevc_slice_share_info *share_info = lat_buf->private_data; > struct vdec_vpu_inst *vpu = &inst->vpu; > > - mtk_vcodec_debug(inst, "[hevc-core] vdec_hevc core decode"); > + mtk_vdec_debug(ctx, "[hevc-core] vdec_hevc core decode"); > memcpy(&inst->vsi_core->hevc_slice_params, &share_info->hevc_slice_params, > sizeof(share_info->hevc_slice_params)); > > @@ -942,7 +941,7 @@ static int vdec_hevc_slice_core_decode(struct vdec_lat_buf *lat_buf) > share_info); > err = vpu_dec_core(vpu); > if (err) { > - mtk_vcodec_err(inst, "core decode err=%d", err); > + mtk_vdec_err(ctx, "core decode err=%d", err); > goto vdec_dec_end; > } > > @@ -950,22 +949,21 @@ static int vdec_hevc_slice_core_decode(struct vdec_lat_buf *lat_buf) > timeout = mtk_vcodec_wait_for_done_ctx(inst->ctx, MTK_INST_IRQ_RECEIVED, > WAIT_INTR_TIMEOUT_MS, MTK_VDEC_CORE); > if (timeout) > - mtk_vcodec_err(inst, "core decode timeout: pic_%d", > - ctx->decoded_frame_cnt); > + mtk_vdec_err(ctx, "core decode timeout: pic_%d", ctx->decoded_frame_cnt); > inst->vsi_core->dec.timeout = !!timeout; > > vpu_dec_core_end(vpu); > - mtk_vcodec_debug(inst, "pic[%d] crc: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", > - ctx->decoded_frame_cnt, > - inst->vsi_core->dec.crc[0], inst->vsi_core->dec.crc[1], > - inst->vsi_core->dec.crc[2], inst->vsi_core->dec.crc[3], > - inst->vsi_core->dec.crc[4], inst->vsi_core->dec.crc[5], > - inst->vsi_core->dec.crc[6], inst->vsi_core->dec.crc[7]); > + mtk_vdec_debug(ctx, "pic[%d] crc: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", > + ctx->decoded_frame_cnt, > + inst->vsi_core->dec.crc[0], inst->vsi_core->dec.crc[1], > + inst->vsi_core->dec.crc[2], inst->vsi_core->dec.crc[3], > + inst->vsi_core->dec.crc[4], inst->vsi_core->dec.crc[5], > + inst->vsi_core->dec.crc[6], inst->vsi_core->dec.crc[7]); > > vdec_dec_end: > vdec_msg_queue_update_ube_rptr(&lat_buf->ctx->msg_queue, share_info->trans.dma_addr_end); > ctx->dev->vdec_pdata->cap_to_disp(ctx, !!err, lat_buf->src_buf_req); > - mtk_vcodec_debug(inst, "core decode done err=%d", err); > + mtk_vdec_debug(ctx, "core decode done err=%d", err); > ctx->decoded_frame_cnt++; > return 0; > } > @@ -993,7 +991,7 @@ static int vdec_hevc_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > lat_buf = vdec_msg_queue_dqbuf(&inst->ctx->msg_queue.lat_ctx); > if (!lat_buf) { > - mtk_vcodec_debug(inst, "failed to get lat buffer"); > + mtk_vdec_debug(inst->ctx, "failed to get lat buffer"); > return -EAGAIN; > } > > @@ -1008,7 +1006,7 @@ static int vdec_hevc_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > err = vpu_dec_start(vpu, data, 2); > if (err) { > - mtk_vcodec_debug(inst, "lat decode err: %d", err); > + mtk_vdec_debug(inst->ctx, "lat decode err: %d", err); > goto err_free_fb_out; > } > > @@ -1022,7 +1020,7 @@ static int vdec_hevc_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > timeout = mtk_vcodec_wait_for_done_ctx(inst->ctx, MTK_INST_IRQ_RECEIVED, > WAIT_INTR_TIMEOUT_MS, MTK_VDEC_LAT0); > if (timeout) > - mtk_vcodec_err(inst, "lat decode timeout: pic_%d", inst->slice_dec_num); > + mtk_vdec_err(inst->ctx, "lat decode timeout: pic_%d", inst->slice_dec_num); > inst->vsi->dec.timeout = !!timeout; > > err = vpu_dec_end(vpu); > @@ -1030,7 +1028,7 @@ static int vdec_hevc_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > if (!IS_VDEC_INNER_RACING(inst->ctx->dev->dec_capability)) > vdec_msg_queue_qbuf(&inst->ctx->msg_queue.lat_ctx, lat_buf); > inst->slice_dec_num++; > - mtk_vcodec_err(inst, "lat dec fail: pic_%d err:%d", inst->slice_dec_num, err); > + mtk_vdec_err(inst->ctx, "lat dec fail: pic_%d err:%d", inst->slice_dec_num, err); > return -EINVAL; > } > > @@ -1043,14 +1041,14 @@ static int vdec_hevc_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > sizeof(share_info->hevc_slice_params)); > vdec_msg_queue_qbuf(&inst->ctx->msg_queue.core_ctx, lat_buf); > } > - mtk_vcodec_debug(inst, "dec num: %d lat crc: 0x%x 0x%x 0x%x", inst->slice_dec_num, > - inst->vsi->dec.crc[0], inst->vsi->dec.crc[1], inst->vsi->dec.crc[2]); > + mtk_vdec_debug(inst->ctx, "dec num: %d lat crc: 0x%x 0x%x 0x%x", inst->slice_dec_num, > + inst->vsi->dec.crc[0], inst->vsi->dec.crc[1], inst->vsi->dec.crc[2]); > > inst->slice_dec_num++; > return 0; > err_free_fb_out: > vdec_msg_queue_qbuf(&inst->ctx->msg_queue.lat_ctx, lat_buf); > - mtk_vcodec_err(inst, "slice dec number: %d err: %d", inst->slice_dec_num, err); > + mtk_vdec_err(inst->ctx, "slice dec number: %d err: %d", inst->slice_dec_num, err); > return err; > } > > @@ -1081,7 +1079,7 @@ static int vdec_hevc_slice_get_param(void *h_vdec, enum vdec_get_param_type type > vdec_hevc_slice_get_crop_info(inst, out); > break; > default: > - mtk_vcodec_err(inst, "invalid get parameter type=%d", type); > + mtk_vdec_err(inst->ctx, "invalid get parameter type=%d", type); > return -EINVAL; > } > return 0; > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > index fb5bc30b113b..295cb2ee5c4a 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > @@ -284,10 +284,10 @@ static void get_pic_info(struct vdec_vp8_inst *inst, struct vdec_pic_info *pic) > { > *pic = inst->vsi->pic; > > - mtk_vcodec_debug(inst, "pic(%d, %d), buf(%d, %d)", > - pic->pic_w, pic->pic_h, pic->buf_w, pic->buf_h); > - mtk_vcodec_debug(inst, "fb size: Y(%d), C(%d)", > - pic->fb_sz[0], pic->fb_sz[1]); > + mtk_vdec_debug(inst->ctx, "pic(%d, %d), buf(%d, %d)", > + pic->pic_w, pic->pic_h, pic->buf_w, pic->buf_h); > + mtk_vdec_debug(inst->ctx, "fb size: Y(%d), C(%d)", > + pic->fb_sz[0], pic->fb_sz[1]); > } > > static void vp8_dec_finish(struct vdec_vp8_inst *inst) > @@ -295,7 +295,7 @@ static void vp8_dec_finish(struct vdec_vp8_inst *inst) > struct vdec_fb_node *node; > uint64_t prev_y_dma = inst->vsi->dec.prev_y_dma; > > - mtk_vcodec_debug(inst, "prev fb base dma=%llx", prev_y_dma); > + mtk_vdec_debug(inst->ctx, "prev fb base dma=%llx", prev_y_dma); > > /* put last decode ok frame to fb_free_list */ > if (prev_y_dma != 0) { > @@ -370,7 +370,7 @@ static int alloc_working_buf(struct vdec_vp8_inst *inst) > mem->size = VP8_WORKING_BUF_SZ; > err = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (err) { > - mtk_vcodec_err(inst, "Cannot allocate working buffer"); > + mtk_vdec_err(inst->ctx, "Cannot allocate working buffer"); > return err; > } > > @@ -404,7 +404,7 @@ static int vdec_vp8_init(struct mtk_vcodec_ctx *ctx) > > err = vpu_dec_init(&inst->vpu); > if (err) { > - mtk_vcodec_err(inst, "vdec_vp8 init err=%d", err); > + mtk_vdec_err(ctx, "vdec_vp8 init err=%d", err); > goto error_free_inst; > } > > @@ -415,7 +415,7 @@ static int vdec_vp8_init(struct mtk_vcodec_ctx *ctx) > goto error_deinit; > > get_hw_reg_base(inst); > - mtk_vcodec_debug(inst, "VP8 Instance >> %p", inst); > + mtk_vdec_debug(ctx, "VP8 Instance >> %p", inst); > > ctx->drv_handle = inst; > return 0; > @@ -448,8 +448,8 @@ static int vdec_vp8_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > y_fb_dma = fb ? (u64)fb->base_y.dma_addr : 0; > c_fb_dma = fb ? (u64)fb->base_c.dma_addr : 0; > > - mtk_vcodec_debug(inst, "+ [%d] FB y_dma=%llx c_dma=%llx fb=%p", > - inst->frm_cnt, y_fb_dma, c_fb_dma, fb); > + mtk_vdec_debug(inst->ctx, "+ [%d] FB y_dma=%llx c_dma=%llx fb=%p", > + inst->frm_cnt, y_fb_dma, c_fb_dma, fb); > > inst->cur_fb = fb; > dec->bs_dma = (unsigned long)bs->dma_addr; > @@ -457,7 +457,7 @@ static int vdec_vp8_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > dec->cur_y_fb_dma = y_fb_dma; > dec->cur_c_fb_dma = c_fb_dma; > > - mtk_vcodec_debug(inst, "\n + FRAME[%d] +\n", inst->frm_cnt); > + mtk_vdec_debug(inst->ctx, "\n + FRAME[%d] +\n", inst->frm_cnt); > > write_hw_segmentation_data(inst); > enable_hw_rw_function(inst); > @@ -472,7 +472,7 @@ static int vdec_vp8_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > if (err) { > add_fb_to_free_list(inst, fb); > if (dec->wait_key_frame) { > - mtk_vcodec_debug(inst, "wait key frame !"); > + mtk_vdec_debug(inst->ctx, "wait key frame !"); > return 0; > } > > @@ -480,7 +480,7 @@ static int vdec_vp8_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > } > > if (dec->resolution_changed) { > - mtk_vcodec_debug(inst, "- resolution_changed -"); > + mtk_vdec_debug(inst->ctx, "- resolution_changed -"); > *res_chg = true; > add_fb_to_free_list(inst, fb); > return 0; > @@ -500,14 +500,13 @@ static int vdec_vp8_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > if (err) > goto error; > > - mtk_vcodec_debug(inst, "\n - FRAME[%d] - show=%d\n", inst->frm_cnt, > - dec->show_frame); > + mtk_vdec_debug(inst->ctx, "\n - FRAME[%d] - show=%d\n", inst->frm_cnt, dec->show_frame); > inst->frm_cnt++; > *res_chg = false; > return 0; > > error: > - mtk_vcodec_err(inst, "\n - FRAME[%d] - err=%d\n", inst->frm_cnt, err); > + mtk_vdec_err(inst->ctx, "\n - FRAME[%d] - err=%d\n", inst->frm_cnt, err); > return err; > } > > @@ -522,11 +521,10 @@ static void get_disp_fb(struct vdec_vp8_inst *inst, struct vdec_fb **out_fb) > list_move_tail(&node->list, &inst->available_fb_node_list); > fb = (struct vdec_fb *)node->fb; > fb->status |= FB_ST_DISPLAY; > - mtk_vcodec_debug(inst, "[FB] get disp fb %p st=%d", > - node->fb, fb->status); > + mtk_vdec_debug(inst->ctx, "[FB] get disp fb %p st=%d", node->fb, fb->status); > } else { > fb = NULL; > - mtk_vcodec_debug(inst, "[FB] there is no disp fb"); > + mtk_vdec_debug(inst->ctx, "[FB] there is no disp fb"); > } > > *out_fb = fb; > @@ -543,11 +541,10 @@ static void get_free_fb(struct vdec_vp8_inst *inst, struct vdec_fb **out_fb) > list_move_tail(&node->list, &inst->available_fb_node_list); > fb = (struct vdec_fb *)node->fb; > fb->status |= FB_ST_FREE; > - mtk_vcodec_debug(inst, "[FB] get free fb %p st=%d", > - node->fb, fb->status); > + mtk_vdec_debug(inst->ctx, "[FB] get free fb %p st=%d", node->fb, fb->status); > } else { > fb = NULL; > - mtk_vcodec_debug(inst, "[FB] there is no free fb"); > + mtk_vdec_debug(inst->ctx, "[FB] there is no free fb"); > } > > *out_fb = fb; > @@ -559,8 +556,8 @@ static void get_crop_info(struct vdec_vp8_inst *inst, struct v4l2_rect *cr) > cr->top = 0; > cr->width = inst->vsi->pic.pic_w; > cr->height = inst->vsi->pic.pic_h; > - mtk_vcodec_debug(inst, "get crop info l=%d, t=%d, w=%d, h=%d", > - cr->left, cr->top, cr->width, cr->height); > + mtk_vdec_debug(inst->ctx, "get crop info l=%d, t=%d, w=%d, h=%d", > + cr->left, cr->top, cr->width, cr->height); > } > > static int vdec_vp8_get_param(void *h_vdec, enum vdec_get_param_type type, > @@ -590,7 +587,7 @@ static int vdec_vp8_get_param(void *h_vdec, enum vdec_get_param_type type, > break; > > default: > - mtk_vcodec_err(inst, "invalid get parameter type=%d", type); > + mtk_vdec_err(inst->ctx, "invalid get parameter type=%d", type); > return -EINVAL; > } > > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c > index f7181f4a4d2a..4193fe20bb92 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c > @@ -137,11 +137,11 @@ static void vdec_vp8_slice_get_pic_info(struct vdec_vp8_slice_inst *inst) > inst->vsi->pic.buf_h = ctx->picinfo.buf_h; > inst->vsi->pic.fb_sz[0] = ctx->picinfo.fb_sz[0]; > inst->vsi->pic.fb_sz[1] = ctx->picinfo.fb_sz[1]; > - mtk_vcodec_debug(inst, "pic(%d, %d), buf(%d, %d)", > - ctx->picinfo.pic_w, ctx->picinfo.pic_h, > - ctx->picinfo.buf_w, ctx->picinfo.buf_h); > - mtk_vcodec_debug(inst, "fb size: Y(%d), C(%d)", > - ctx->picinfo.fb_sz[0], ctx->picinfo.fb_sz[1]); > + mtk_vdec_debug(inst->ctx, "pic(%d, %d), buf(%d, %d)", > + ctx->picinfo.pic_w, ctx->picinfo.pic_h, > + ctx->picinfo.buf_w, ctx->picinfo.buf_h); > + mtk_vdec_debug(inst->ctx, "fb size: Y(%d), C(%d)", > + ctx->picinfo.fb_sz[0], ctx->picinfo.fb_sz[1]); > } > > static int vdec_vp8_slice_alloc_working_buf(struct vdec_vp8_slice_inst *inst) > @@ -153,7 +153,7 @@ static int vdec_vp8_slice_alloc_working_buf(struct vdec_vp8_slice_inst *inst) > mem->size = VP8_SEG_ID_SZ; > err = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (err) { > - mtk_vcodec_err(inst, "Cannot allocate working buffer"); > + mtk_vdec_err(inst->ctx, "Cannot allocate working buffer"); > return err; > } > inst->vsi->dec.seg_id_buf_dma = (u64)mem->dma_addr; > @@ -162,7 +162,7 @@ static int vdec_vp8_slice_alloc_working_buf(struct vdec_vp8_slice_inst *inst) > mem->size = VP8_PP_WRAPY_SZ; > err = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (err) { > - mtk_vcodec_err(inst, "cannot allocate WRAP Y buffer"); > + mtk_vdec_err(inst->ctx, "cannot allocate WRAP Y buffer"); > return err; > } > inst->vsi->dec.wrap_y_dma = (u64)mem->dma_addr; > @@ -171,7 +171,7 @@ static int vdec_vp8_slice_alloc_working_buf(struct vdec_vp8_slice_inst *inst) > mem->size = VP8_PP_WRAPC_SZ; > err = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (err) { > - mtk_vcodec_err(inst, "cannot allocate WRAP C buffer"); > + mtk_vdec_err(inst->ctx, "cannot allocate WRAP C buffer"); > return err; > } > inst->vsi->dec.wrap_c_dma = (u64)mem->dma_addr; > @@ -180,7 +180,7 @@ static int vdec_vp8_slice_alloc_working_buf(struct vdec_vp8_slice_inst *inst) > mem->size = VP8_VLD_PRED_SZ; > err = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (err) { > - mtk_vcodec_err(inst, "cannot allocate vld wrapper buffer"); > + mtk_vdec_err(inst->ctx, "cannot allocate vld wrapper buffer"); > return err; > } > inst->vsi->dec.vld_wrapper_dma = (u64)mem->dma_addr; > @@ -249,8 +249,8 @@ static int vdec_vp8_slice_get_decode_parameters(struct vdec_vp8_slice_inst *inst > vb = vb2_find_buffer(vq, referenct_ts); > if (!vb) { > if (!V4L2_VP8_FRAME_IS_KEY_FRAME(frame_header)) > - mtk_vcodec_err(inst, "reference invalid: index(%d) ts(%lld)", > - index, referenct_ts); > + mtk_vdec_err(inst->ctx, "reference invalid: index(%d) ts(%lld)", > + index, referenct_ts); > inst->vsi->vp8_dpb_info[index].reference_flag = 0; > continue; > } > @@ -291,7 +291,7 @@ static int vdec_vp8_slice_init(struct mtk_vcodec_ctx *ctx) > > err = vpu_dec_init(&inst->vpu); > if (err) { > - mtk_vcodec_err(inst, "vdec_vp8 init err=%d", err); > + mtk_vdec_err(ctx, "vdec_vp8 init err=%d", err); > goto error_free_inst; > } > > @@ -300,11 +300,11 @@ static int vdec_vp8_slice_init(struct mtk_vcodec_ctx *ctx) > if (err) > goto error_deinit; > > - mtk_vcodec_debug(inst, "vp8 struct size = %d vsi: %d\n", > - (int)sizeof(struct v4l2_ctrl_vp8_frame), > - (int)sizeof(struct vdec_vp8_slice_vsi)); > - mtk_vcodec_debug(inst, "vp8:%p, codec_type = 0x%x vsi: 0x%p", > - inst, inst->vpu.codec_type, inst->vpu.vsi); > + mtk_vdec_debug(ctx, "vp8 struct size = %d vsi: %d\n", > + (int)sizeof(struct v4l2_ctrl_vp8_frame), > + (int)sizeof(struct vdec_vp8_slice_vsi)); > + mtk_vdec_debug(ctx, "vp8:%p, codec_type = 0x%x vsi: 0x%p", > + inst, inst->vpu.codec_type, inst->vpu.vsi); > > ctx->drv_handle = inst; > return 0; > @@ -350,10 +350,10 @@ static int vdec_vp8_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > inst->vsi->dec.cur_y_fb_dma = y_fb_dma; > inst->vsi->dec.cur_c_fb_dma = c_fb_dma; > > - mtk_vcodec_debug(inst, "frame[%d] bs(%zu 0x%llx) y/c(0x%llx 0x%llx)", > - inst->ctx->decoded_frame_cnt, > - bs->size, (u64)bs->dma_addr, > - y_fb_dma, c_fb_dma); > + mtk_vdec_debug(inst->ctx, "frame[%d] bs(%zu 0x%llx) y/c(0x%llx 0x%llx)", > + inst->ctx->decoded_frame_cnt, > + bs->size, (u64)bs->dma_addr, > + y_fb_dma, c_fb_dma); > > v4l2_m2m_buf_copy_metadata(&src_buf_info->m2m_buf.vb, > &dst_buf_info->m2m_buf.vb, true); > @@ -364,12 +364,12 @@ static int vdec_vp8_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > err = vpu_dec_start(vpu, &data, 1); > if (err) { > - mtk_vcodec_debug(inst, "vp8 dec start err!"); > + mtk_vdec_debug(inst->ctx, "vp8 dec start err!"); > goto error; > } > > if (inst->vsi->dec.resolution_changed) { > - mtk_vcodec_debug(inst, "- resolution_changed -"); > + mtk_vdec_debug(inst->ctx, "- resolution_changed -"); > *res_chg = true; > return 0; > } > @@ -380,15 +380,15 @@ static int vdec_vp8_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > err = vpu_dec_end(vpu); > if (err || timeout) > - mtk_vcodec_debug(inst, "vp8 dec error timeout:%d err: %d pic_%d", > - timeout, err, inst->ctx->decoded_frame_cnt); > + mtk_vdec_debug(inst->ctx, "vp8 dec error timeout:%d err: %d pic_%d", > + timeout, err, inst->ctx->decoded_frame_cnt); > > - mtk_vcodec_debug(inst, "pic[%d] crc: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", > - inst->ctx->decoded_frame_cnt, > - inst->vsi->dec.crc[0], inst->vsi->dec.crc[1], > - inst->vsi->dec.crc[2], inst->vsi->dec.crc[3], > - inst->vsi->dec.crc[4], inst->vsi->dec.crc[5], > - inst->vsi->dec.crc[6], inst->vsi->dec.crc[7]); > + mtk_vdec_debug(inst->ctx, "pic[%d] crc: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", > + inst->ctx->decoded_frame_cnt, > + inst->vsi->dec.crc[0], inst->vsi->dec.crc[1], > + inst->vsi->dec.crc[2], inst->vsi->dec.crc[3], > + inst->vsi->dec.crc[4], inst->vsi->dec.crc[5], > + inst->vsi->dec.crc[6], inst->vsi->dec.crc[7]); > > inst->ctx->decoded_frame_cnt++; > error: > @@ -404,13 +404,13 @@ static int vdec_vp8_slice_get_param(void *h_vdec, enum vdec_get_param_type type, > vdec_vp8_slice_get_pic_info(inst); > break; > case GET_PARAM_CROP_INFO: > - mtk_vcodec_debug(inst, "No need to get vp8 crop information."); > + mtk_vdec_debug(inst->ctx, "No need to get vp8 crop information."); > break; > case GET_PARAM_DPB_SIZE: > *((unsigned int *)out) = VP8_DPB_SIZE; > break; > default: > - mtk_vcodec_err(inst, "invalid get parameter type=%d", type); > + mtk_vdec_err(inst->ctx, "invalid get parameter type=%d", type); > return -EINVAL; > } > > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_if.c > index 70b8383f7c8e..62c2b3b021e6 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_if.c > @@ -246,7 +246,7 @@ static void vp9_add_to_fb_free_list(struct vdec_vp9_inst *inst, > list_move_tail(&node->list, &inst->fb_free_list); > } > } else { > - mtk_vcodec_debug(inst, "No free fb node"); > + mtk_vdec_debug(inst->ctx, "No free fb node"); > } > } > > @@ -330,7 +330,7 @@ static int vp9_get_sf_ref_fb(struct vdec_vp9_inst *inst) > } > > if (idx == ARRAY_SIZE(vsi->sf_ref_fb)) { > - mtk_vcodec_err(inst, "List Full"); > + mtk_vdec_err(inst->ctx, "List Full"); > return -1; > } > > @@ -339,7 +339,7 @@ static int vp9_get_sf_ref_fb(struct vdec_vp9_inst *inst) > vsi->buf_len_sz_y; > > if (mtk_vcodec_mem_alloc(inst->ctx, mem_basy_y)) { > - mtk_vcodec_err(inst, "Cannot allocate sf_ref_buf y_buf"); > + mtk_vdec_err(inst->ctx, "Cannot allocate sf_ref_buf y_buf"); > return -1; > } > > @@ -348,7 +348,7 @@ static int vp9_get_sf_ref_fb(struct vdec_vp9_inst *inst) > vsi->buf_len_sz_c; > > if (mtk_vcodec_mem_alloc(inst->ctx, mem_basy_c)) { > - mtk_vcodec_err(inst, "Cannot allocate sf_ref_fb c_buf"); > + mtk_vdec_err(inst->ctx, "Cannot allocate sf_ref_fb c_buf"); > return -1; > } > vsi->sf_ref_fb[idx].used = 0; > @@ -377,17 +377,13 @@ static bool vp9_alloc_work_buf(struct vdec_vp9_inst *inst) > > if ((vsi->pic_w > max_pic_w) || > (vsi->pic_h > max_pic_h)) { > - mtk_vcodec_err(inst, "Invalid w/h %d/%d", > - vsi->pic_w, vsi->pic_h); > + mtk_vdec_err(inst->ctx, "Invalid w/h %d/%d", vsi->pic_w, vsi->pic_h); > return false; > } > > - mtk_vcodec_debug(inst, "BUF CHG(%d): w/h/sb_w/sb_h=%d/%d/%d/%d", > - vsi->resolution_changed, > - vsi->pic_w, > - vsi->pic_h, > - vsi->buf_w, > - vsi->buf_h); > + mtk_vdec_debug(inst->ctx, "BUF CHG(%d): w/h/sb_w/sb_h=%d/%d/%d/%d", > + vsi->resolution_changed, vsi->pic_w, > + vsi->pic_h, vsi->buf_w, vsi->buf_h); > > mem = &inst->mv_buf; > if (mem->va) > @@ -398,7 +394,7 @@ static bool vp9_alloc_work_buf(struct vdec_vp9_inst *inst) > result = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (result) { > mem->size = 0; > - mtk_vcodec_err(inst, "Cannot allocate mv_buf"); > + mtk_vdec_err(inst->ctx, "Cannot allocate mv_buf"); > return false; > } > /* Set the va again */ > @@ -415,7 +411,7 @@ static bool vp9_alloc_work_buf(struct vdec_vp9_inst *inst) > result = mtk_vcodec_mem_alloc(inst->ctx, mem); > if (result) { > mem->size = 0; > - mtk_vcodec_err(inst, "Cannot allocate seg_id_buf"); > + mtk_vdec_err(inst->ctx, "Cannot allocate seg_id_buf"); > return false; > } > /* Set the va again */ > @@ -436,7 +432,7 @@ static bool vp9_add_to_fb_disp_list(struct vdec_vp9_inst *inst, > struct vdec_fb_node *node; > > if (!fb) { > - mtk_vcodec_err(inst, "fb == NULL"); > + mtk_vdec_err(inst->ctx, "fb == NULL"); > return false; > } > > @@ -446,7 +442,7 @@ static bool vp9_add_to_fb_disp_list(struct vdec_vp9_inst *inst, > node->fb = fb; > list_move_tail(&node->list, &inst->fb_disp_list); > } else { > - mtk_vcodec_err(inst, "No available fb node"); > + mtk_vdec_err(inst->ctx, "No available fb node"); > return false; > } > > @@ -492,10 +488,10 @@ static void vp9_swap_frm_bufs(struct vdec_vp9_inst *inst) > * size > */ > if (frm_to_show->fb != NULL) > - mtk_vcodec_err(inst, > - "inst->cur_fb->base_y.size=%zu, frm_to_show->fb.base_y.size=%zu", > - inst->cur_fb->base_y.size, > - frm_to_show->fb->base_y.size); > + mtk_vdec_err(inst->ctx, > + "base_y.size=%zu, frm_to_show: base_y.size=%zu", > + inst->cur_fb->base_y.size, > + frm_to_show->fb->base_y.size); > } > if (!vp9_is_sf_ref_fb(inst, inst->cur_fb)) { > if (vsi->show_frame & BIT(0)) > @@ -582,20 +578,19 @@ static bool vp9_decode_end_proc(struct vdec_vp9_inst *inst) > if (!vsi->show_existing_frame) { > ret = vp9_wait_dec_end(inst); > if (!ret) { > - mtk_vcodec_err(inst, "Decode failed, Decode Timeout @[%d]", > - vsi->frm_num); > + mtk_vdec_err(inst->ctx, "Decode failed, Decode Timeout @[%d]", > + vsi->frm_num); > return false; > } > > if (vpu_dec_end(&inst->vpu)) { > - mtk_vcodec_err(inst, "vp9_dec_vpu_end failed"); > + mtk_vdec_err(inst->ctx, "vp9_dec_vpu_end failed"); > return false; > } > - mtk_vcodec_debug(inst, "Decode Ok @%d (%d/%d)", vsi->frm_num, > - vsi->pic_w, vsi->pic_h); > + mtk_vdec_debug(inst->ctx, "Decode Ok @%d (%d/%d)", vsi->frm_num, > + vsi->pic_w, vsi->pic_h); > } else { > - mtk_vcodec_debug(inst, "Decode Ok @%d (show_existing_frame)", > - vsi->frm_num); > + mtk_vdec_debug(inst->ctx, "Decode Ok @%d (show_existing_frame)", vsi->frm_num); > } > > vp9_swap_frm_bufs(inst); > @@ -624,10 +619,9 @@ static struct vdec_fb *vp9_rm_from_fb_disp_list(struct vdec_vp9_inst *inst) > fb = (struct vdec_fb *)node->fb; > fb->status |= FB_ST_DISPLAY; > list_move_tail(&node->list, &inst->available_fb_node_list); > - mtk_vcodec_debug(inst, "[FB] get disp fb %p st=%d", > - node->fb, fb->status); > + mtk_vdec_debug(inst->ctx, "[FB] get disp fb %p st=%d", node->fb, fb->status); > } else > - mtk_vcodec_debug(inst, "[FB] there is no disp fb"); > + mtk_vdec_debug(inst->ctx, "[FB] there is no disp fb"); > > return fb; > } > @@ -638,7 +632,7 @@ static bool vp9_add_to_fb_use_list(struct vdec_vp9_inst *inst, > struct vdec_fb_node *node; > > if (!fb) { > - mtk_vcodec_debug(inst, "fb == NULL"); > + mtk_vdec_debug(inst->ctx, "fb == NULL"); > return false; > } > > @@ -648,7 +642,7 @@ static bool vp9_add_to_fb_use_list(struct vdec_vp9_inst *inst, > node->fb = fb; > list_move_tail(&node->list, &inst->fb_use_list); > } else { > - mtk_vcodec_err(inst, "No free fb node"); > + mtk_vdec_err(inst->ctx, "No free fb node"); > return false; > } > return true; > @@ -665,7 +659,7 @@ static void vp9_reset(struct vdec_vp9_inst *inst) > inst->vsi->sf_next_ref_fb_idx = vp9_get_sf_ref_fb(inst); > > if (vpu_dec_reset(&inst->vpu)) > - mtk_vcodec_err(inst, "vp9_dec_vpu_reset failed"); > + mtk_vdec_err(inst->ctx, "vp9_dec_vpu_reset failed"); > > /* Set the va again, since vpu_dec_reset will clear mv_buf in vpu */ > inst->vsi->mv_buf.va = (unsigned long)inst->mv_buf.va; > @@ -706,11 +700,9 @@ static void get_pic_info(struct vdec_vp9_inst *inst, struct vdec_pic_info *pic) > pic->buf_w = inst->vsi->buf_w; > pic->buf_h = inst->vsi->buf_h; > > - mtk_vcodec_debug(inst, "pic(%d, %d), buf(%d, %d)", > - pic->pic_w, pic->pic_h, pic->buf_w, pic->buf_h); > - mtk_vcodec_debug(inst, "fb size: Y(%d), C(%d)", > - pic->fb_sz[0], > - pic->fb_sz[1]); > + mtk_vdec_debug(inst->ctx, "pic(%d, %d), buf(%d, %d)", > + pic->pic_w, pic->pic_h, pic->buf_w, pic->buf_h); > + mtk_vdec_debug(inst->ctx, "fb size: Y(%d), C(%d)", pic->fb_sz[0], pic->fb_sz[1]); > } > > static void get_disp_fb(struct vdec_vp9_inst *inst, struct vdec_fb **out_fb) > @@ -732,10 +724,9 @@ static void get_free_fb(struct vdec_vp9_inst *inst, struct vdec_fb **out_fb) > list_move_tail(&node->list, &inst->available_fb_node_list); > fb = (struct vdec_fb *)node->fb; > fb->status |= FB_ST_FREE; > - mtk_vcodec_debug(inst, "[FB] get free fb %p st=%d", > - node->fb, fb->status); > + mtk_vdec_debug(inst->ctx, "[FB] get free fb %p st=%d", node->fb, fb->status); > } else { > - mtk_vcodec_debug(inst, "[FB] there is no free fb"); > + mtk_vdec_debug(inst->ctx, "[FB] there is no free fb"); > } > > *out_fb = fb; > @@ -744,18 +735,15 @@ static void get_free_fb(struct vdec_vp9_inst *inst, struct vdec_fb **out_fb) > static int validate_vsi_array_indexes(struct vdec_vp9_inst *inst, > struct vdec_vp9_vsi *vsi) { > if (vsi->sf_frm_idx >= VP9_MAX_FRM_BUF_NUM - 1) { > - mtk_vcodec_err(inst, "Invalid vsi->sf_frm_idx=%u.", > - vsi->sf_frm_idx); > + mtk_vdec_err(inst->ctx, "Invalid vsi->sf_frm_idx=%u.", vsi->sf_frm_idx); > return -EIO; > } > if (vsi->frm_to_show_idx >= VP9_MAX_FRM_BUF_NUM) { > - mtk_vcodec_err(inst, "Invalid vsi->frm_to_show_idx=%u.", > - vsi->frm_to_show_idx); > + mtk_vdec_err(inst->ctx, "Invalid vsi->frm_to_show_idx=%u.", vsi->frm_to_show_idx); > return -EIO; > } > if (vsi->new_fb_idx >= VP9_MAX_FRM_BUF_NUM) { > - mtk_vcodec_err(inst, "Invalid vsi->new_fb_idx=%u.", > - vsi->new_fb_idx); > + mtk_vdec_err(inst->ctx, "Invalid vsi->new_fb_idx=%u.", vsi->new_fb_idx); > return -EIO; > } > return 0; > @@ -769,7 +757,7 @@ static void vdec_vp9_deinit(void *h_vdec) > > ret = vpu_dec_deinit(&inst->vpu); > if (ret) > - mtk_vcodec_err(inst, "vpu_dec_deinit failed"); > + mtk_vdec_err(inst->ctx, "vpu_dec_deinit failed"); > > mem = &inst->mv_buf; > if (mem->va) > @@ -798,7 +786,7 @@ static int vdec_vp9_init(struct mtk_vcodec_ctx *ctx) > inst->vpu.ctx = ctx; > > if (vpu_dec_init(&inst->vpu)) { > - mtk_vcodec_err(inst, "vp9_dec_vpu_init failed"); > + mtk_vdec_err(inst->ctx, "vp9_dec_vpu_init failed"); > goto err_deinit_inst; > } > > @@ -829,17 +817,17 @@ static int vdec_vp9_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > *res_chg = false; > > if ((bs == NULL) && (fb == NULL)) { > - mtk_vcodec_debug(inst, "[EOS]"); > + mtk_vdec_debug(inst->ctx, "[EOS]"); > vp9_reset(inst); > return ret; > } > > if (bs == NULL) { > - mtk_vcodec_err(inst, "bs == NULL"); > + mtk_vdec_err(inst->ctx, "bs == NULL"); > return -EINVAL; > } > > - mtk_vcodec_debug(inst, "Input BS Size = %zu", bs->size); > + mtk_vdec_debug(inst->ctx, "Input BS Size = %zu", bs->size); > > while (1) { > struct vdec_fb *cur_fb = NULL; > @@ -882,7 +870,7 @@ static int vdec_vp9_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > ret = vpu_dec_start(&inst->vpu, data, 3); > if (ret) { > - mtk_vcodec_err(inst, "vpu_dec_start failed"); > + mtk_vdec_err(inst->ctx, "vpu_dec_start failed"); > goto DECODE_ERROR; > } > > @@ -892,7 +880,7 @@ static int vdec_vp9_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > if (vsi->show_frame & BIT(2)) { > ret = vpu_dec_start(&inst->vpu, NULL, 0); > if (ret) { > - mtk_vcodec_err(inst, "vpu trig decoder failed"); > + mtk_vdec_err(inst->ctx, "vpu trig decoder failed"); > goto DECODE_ERROR; > } > } > @@ -900,7 +888,7 @@ static int vdec_vp9_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > ret = validate_vsi_array_indexes(inst, vsi); > if (ret) { > - mtk_vcodec_err(inst, "Invalid values from VPU."); > + mtk_vdec_err(inst->ctx, "Invalid values from VPU."); > goto DECODE_ERROR; > } > > @@ -926,18 +914,18 @@ static int vdec_vp9_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > if (!vp9_is_sf_ref_fb(inst, inst->cur_fb)) > vp9_add_to_fb_use_list(inst, inst->cur_fb); > > - mtk_vcodec_debug(inst, "[#pic %d]", vsi->frm_num); > + mtk_vdec_debug(inst->ctx, "[#pic %d]", vsi->frm_num); > > if (vsi->show_existing_frame) > - mtk_vcodec_debug(inst, > - "drv->new_fb_idx=%d, drv->frm_to_show_idx=%d", > - vsi->new_fb_idx, vsi->frm_to_show_idx); > + mtk_vdec_debug(inst->ctx, > + "drv->new_fb_idx=%d, drv->frm_to_show_idx=%d", > + vsi->new_fb_idx, vsi->frm_to_show_idx); > > if (vsi->show_existing_frame && (vsi->frm_to_show_idx < > VP9_MAX_FRM_BUF_NUM)) { > - mtk_vcodec_debug(inst, > - "Skip Decode drv->new_fb_idx=%d, drv->frm_to_show_idx=%d", > - vsi->new_fb_idx, vsi->frm_to_show_idx); > + mtk_vdec_debug(inst->ctx, > + "Skip Decode drv->new_fb_idx=%d, drv->frm_to_show_idx=%d", > + vsi->new_fb_idx, vsi->frm_to_show_idx); > > vp9_ref_cnt_fb(inst, &vsi->new_fb_idx, > vsi->frm_to_show_idx); > @@ -954,14 +942,14 @@ static int vdec_vp9_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > if (vsi->resolution_changed) { > *res_chg = true; > - mtk_vcodec_debug(inst, "VDEC_ST_RESOLUTION_CHANGED"); > + mtk_vdec_debug(inst->ctx, "VDEC_ST_RESOLUTION_CHANGED"); > > ret = 0; > goto DECODE_ERROR; > } > > if (!vp9_decode_end_proc(inst)) { > - mtk_vcodec_err(inst, "vp9_decode_end_proc"); > + mtk_vdec_err(inst->ctx, "vp9_decode_end_proc"); > ret = -EINVAL; > goto DECODE_ERROR; > } > @@ -985,8 +973,8 @@ static void get_crop_info(struct vdec_vp9_inst *inst, struct v4l2_rect *cr) > cr->top = 0; > cr->width = inst->vsi->pic_w; > cr->height = inst->vsi->pic_h; > - mtk_vcodec_debug(inst, "get crop info l=%d, t=%d, w=%d, h=%d\n", > - cr->left, cr->top, cr->width, cr->height); > + mtk_vdec_debug(inst->ctx, "get crop info l=%d, t=%d, w=%d, h=%d\n", > + cr->left, cr->top, cr->width, cr->height); > } > > static int vdec_vp9_get_param(void *h_vdec, enum vdec_get_param_type type, > @@ -1012,7 +1000,7 @@ static int vdec_vp9_get_param(void *h_vdec, enum vdec_get_param_type type, > get_crop_info(inst, out); > break; > default: > - mtk_vcodec_err(inst, "not supported param type %d", type); > + mtk_vdec_err(inst->ctx, "not supported param type %d", type); > ret = -EINVAL; > break; > } > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c > index c2f90848f498..913077d6e701 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c > @@ -518,7 +518,7 @@ static int vdec_vp9_slice_init_default_frame_ctx(struct vdec_vp9_slice_instance > remote_frame_ctx = mtk_vcodec_fw_map_dm_addr(ctx->dev->fw_handler, > (u32)vsi->default_frame_ctx); > if (!remote_frame_ctx) { > - mtk_vcodec_err(instance, "failed to map default frame ctx\n"); > + mtk_vdec_err(ctx, "failed to map default frame ctx\n"); > return -EINVAL; > } > > @@ -577,8 +577,8 @@ static int vdec_vp9_slice_alloc_working_buffer(struct vdec_vp9_slice_instance *i > if (level == instance->level) > return 0; > > - mtk_vcodec_debug(instance, "resolution level changed, from %u to %u, %ux%u", > - instance->level, level, w, h); > + mtk_vdec_debug(ctx, "resolution level changed, from %u to %u, %ux%u", > + instance->level, level, w, h); > > max_sb_w = DIV_ROUND_UP(max_w, 64); > max_sb_h = DIV_ROUND_UP(max_h, 64); > @@ -1025,9 +1025,9 @@ static int vdec_vp9_slice_setup_prob_buffer(struct vdec_vp9_slice_instance *inst > > uh = &vsi->frame.uh; > > - mtk_vcodec_debug(instance, "ctx dirty %u idx %d\n", > - instance->dirty[uh->frame_context_idx], > - uh->frame_context_idx); > + mtk_vdec_debug(instance->ctx, "ctx dirty %u idx %d\n", > + instance->dirty[uh->frame_context_idx], > + uh->frame_context_idx); > > if (instance->dirty[uh->frame_context_idx]) > frame_ctx = &instance->frame_ctx[uh->frame_context_idx]; > @@ -1051,7 +1051,7 @@ static void vdec_vp9_slice_setup_seg_buffer(struct vdec_vp9_slice_instance *inst > uh->error_resilient_mode || > uh->frame_width != instance->width || > uh->frame_height != instance->height) { > - mtk_vcodec_debug(instance, "reset seg\n"); > + mtk_vdec_debug(instance->ctx, "reset seg\n"); > memset(buf->va, 0, buf->size); > } > } > @@ -1093,16 +1093,14 @@ static int vdec_vp9_slice_setup_tile_buffer(struct vdec_vp9_slice_instance *inst > cols = 1 << cols_log2; > > if (rows > 4 || cols > 64) { > - mtk_vcodec_err(instance, "tile_rows %u tile_cols %u\n", > - rows, cols); > + mtk_vdec_err(instance->ctx, "tile_rows %u tile_cols %u\n", rows, cols); > return -EINVAL; > } > > offset = uh->uncompressed_header_size + > uh->header_size_in_bytes; > if (bs->size <= offset) { > - mtk_vcodec_err(instance, "bs size %zu tile offset %u\n", > - bs->size, offset); > + mtk_vdec_err(instance->ctx, "bs size %zu tile offset %u\n", bs->size, offset); > return -EINVAL; > } > > @@ -1596,14 +1594,12 @@ static int vdec_vp9_slice_update_single(struct vdec_vp9_slice_instance *instance > vsi = &pfc->vsi; > memcpy(&pfc->state[0], &vsi->state, sizeof(vsi->state)); > > - mtk_vcodec_debug(instance, "Frame %u Y_CRC %08x %08x %08x %08x\n", > - pfc->seq, > - vsi->state.crc[0], vsi->state.crc[1], > - vsi->state.crc[2], vsi->state.crc[3]); > - mtk_vcodec_debug(instance, "Frame %u C_CRC %08x %08x %08x %08x\n", > - pfc->seq, > - vsi->state.crc[4], vsi->state.crc[5], > - vsi->state.crc[6], vsi->state.crc[7]); > + mtk_vdec_debug(instance->ctx, "Frame %u Y_CRC %08x %08x %08x %08x\n", > + pfc->seq, vsi->state.crc[0], vsi->state.crc[1], > + vsi->state.crc[2], vsi->state.crc[3]); > + mtk_vdec_debug(instance->ctx, "Frame %u C_CRC %08x %08x %08x %08x\n", > + pfc->seq, vsi->state.crc[4], vsi->state.crc[5], > + vsi->state.crc[6], vsi->state.crc[7]); > > vdec_vp9_slice_update_prob(instance, vsi); > > @@ -1624,10 +1620,10 @@ static int vdec_vp9_slice_update_lat(struct vdec_vp9_slice_instance *instance, > vsi = &pfc->vsi; > memcpy(&pfc->state[0], &vsi->state, sizeof(vsi->state)); > > - mtk_vcodec_debug(instance, "Frame %u LAT CRC 0x%08x %lx %lx\n", > - pfc->seq, vsi->state.crc[0], > - (unsigned long)vsi->trans.dma_addr, > - (unsigned long)vsi->trans.dma_addr_end); > + mtk_vdec_debug(instance->ctx, "Frame %u LAT CRC 0x%08x %lx %lx\n", > + pfc->seq, vsi->state.crc[0], > + (unsigned long)vsi->trans.dma_addr, > + (unsigned long)vsi->trans.dma_addr_end); > > /* buffer full, need to re-decode */ > if (vsi->state.full) { > @@ -1844,14 +1840,12 @@ static int vdec_vp9_slice_update_core(struct vdec_vp9_slice_instance *instance, > vsi = &pfc->vsi; > memcpy(&pfc->state[1], &vsi->state, sizeof(vsi->state)); > > - mtk_vcodec_debug(instance, "Frame %u Y_CRC %08x %08x %08x %08x\n", > - pfc->seq, > - vsi->state.crc[0], vsi->state.crc[1], > - vsi->state.crc[2], vsi->state.crc[3]); > - mtk_vcodec_debug(instance, "Frame %u C_CRC %08x %08x %08x %08x\n", > - pfc->seq, > - vsi->state.crc[4], vsi->state.crc[5], > - vsi->state.crc[6], vsi->state.crc[7]); > + mtk_vdec_debug(instance->ctx, "Frame %u Y_CRC %08x %08x %08x %08x\n", > + pfc->seq, vsi->state.crc[0], vsi->state.crc[1], > + vsi->state.crc[2], vsi->state.crc[3]); > + mtk_vdec_debug(instance->ctx, "Frame %u C_CRC %08x %08x %08x %08x\n", > + pfc->seq, vsi->state.crc[4], vsi->state.crc[5], > + vsi->state.crc[6], vsi->state.crc[7]); > > return 0; > } > @@ -1874,7 +1868,7 @@ static int vdec_vp9_slice_init(struct mtk_vcodec_ctx *ctx) > > ret = vpu_dec_init(&instance->vpu); > if (ret) { > - mtk_vcodec_err(instance, "failed to init vpu dec, ret %d\n", ret); > + mtk_vdec_err(ctx, "failed to init vpu dec, ret %d\n", ret); > goto error_vpu_init; > } > > @@ -1882,7 +1876,7 @@ static int vdec_vp9_slice_init(struct mtk_vcodec_ctx *ctx) > > vsi = instance->vpu.vsi; > if (!vsi) { > - mtk_vcodec_err(instance, "failed to get VP9 vsi\n"); > + mtk_vdec_err(ctx, "failed to get VP9 vsi\n"); > ret = -EINVAL; > goto error_vsi; > } > @@ -1890,7 +1884,7 @@ static int vdec_vp9_slice_init(struct mtk_vcodec_ctx *ctx) > instance->core_vsi = mtk_vcodec_fw_map_dm_addr(ctx->dev->fw_handler, > (u32)vsi->core_vsi); > if (!instance->core_vsi) { > - mtk_vcodec_err(instance, "failed to get VP9 core vsi\n"); > + mtk_vdec_err(ctx, "failed to get VP9 core vsi\n"); > ret = -EINVAL; > goto error_vsi; > } > @@ -1931,7 +1925,7 @@ static int vdec_vp9_slice_flush(void *h_vdec, struct mtk_vcodec_mem *bs, > { > struct vdec_vp9_slice_instance *instance = h_vdec; > > - mtk_vcodec_debug(instance, "flush ...\n"); > + mtk_vdec_debug(instance->ctx, "flush ...\n"); > if (instance->ctx->dev->vdec_pdata->hw_arch != MTK_VDEC_PURE_SINGLE_CORE) > vdec_msg_queue_wait_lat_buf_full(&instance->ctx->msg_queue); > return vpu_dec_reset(&instance->vpu); > @@ -1942,8 +1936,7 @@ static void vdec_vp9_slice_get_pic_info(struct vdec_vp9_slice_instance *instance > struct mtk_vcodec_ctx *ctx = instance->ctx; > unsigned int data[3]; > > - mtk_vcodec_debug(instance, "w %u h %u\n", > - ctx->picinfo.pic_w, ctx->picinfo.pic_h); > + mtk_vdec_debug(instance->ctx, "w %u h %u\n", ctx->picinfo.pic_w, ctx->picinfo.pic_h); > > data[0] = ctx->picinfo.pic_w; > data[1] = ctx->picinfo.pic_h; > @@ -1975,11 +1968,10 @@ static int vdec_vp9_slice_get_param(void *h_vdec, enum vdec_get_param_type type, > vdec_vp9_slice_get_dpb_size(instance, out); > break; > case GET_PARAM_CROP_INFO: > - mtk_vcodec_debug(instance, "No need to get vp9 crop information."); > + mtk_vdec_debug(instance->ctx, "No need to get vp9 crop information."); > break; > default: > - mtk_vcodec_err(instance, "invalid get parameter type=%d\n", > - type); > + mtk_vdec_err(instance->ctx, "invalid get parameter type=%d\n", type); > return -EINVAL; > } > > @@ -2011,14 +2003,14 @@ static int vdec_vp9_slice_single_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > ret = vdec_vp9_slice_setup_single(instance, bs, fb, pfc); > if (ret) { > - mtk_vcodec_err(instance, "Failed to setup VP9 single ret %d\n", ret); > + mtk_vdec_err(ctx, "Failed to setup VP9 single ret %d\n", ret); > return ret; > } > vdec_vp9_slice_vsi_to_remote(vsi, instance->vsi); > > ret = vpu_dec_start(&instance->vpu, NULL, 0); > if (ret) { > - mtk_vcodec_err(instance, "Failed to dec VP9 ret %d\n", ret); > + mtk_vdec_err(ctx, "Failed to dec VP9 ret %d\n", ret); > return ret; > } > > @@ -2026,7 +2018,7 @@ static int vdec_vp9_slice_single_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > WAIT_INTR_TIMEOUT_MS, MTK_VDEC_CORE); > /* update remote vsi if decode timeout */ > if (ret) { > - mtk_vcodec_err(instance, "VP9 decode timeout %d\n", ret); > + mtk_vdec_err(ctx, "VP9 decode timeout %d\n", ret); > WRITE_ONCE(instance->vsi->state.timeout, 1); > } > > @@ -2035,7 +2027,7 @@ static int vdec_vp9_slice_single_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > vdec_vp9_slice_vsi_from_remote(vsi, instance->vsi, 0); > ret = vdec_vp9_slice_update_single(instance, pfc); > if (ret) { > - mtk_vcodec_err(instance, "VP9 decode error: %d\n", ret); > + mtk_vdec_err(ctx, "VP9 decode error: %d\n", ret); > return ret; > } > > @@ -2069,7 +2061,7 @@ static int vdec_vp9_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > lat_buf = vdec_msg_queue_dqbuf(&instance->ctx->msg_queue.lat_ctx); > if (!lat_buf) { > - mtk_vcodec_debug(instance, "Failed to get VP9 lat buf\n"); > + mtk_vdec_debug(ctx, "Failed to get VP9 lat buf\n"); > return -EAGAIN; > } > pfc = (struct vdec_vp9_slice_pfc *)lat_buf->private_data; > @@ -2081,14 +2073,14 @@ static int vdec_vp9_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > ret = vdec_vp9_slice_setup_lat(instance, bs, lat_buf, pfc); > if (ret) { > - mtk_vcodec_err(instance, "Failed to setup VP9 lat ret %d\n", ret); > + mtk_vdec_err(ctx, "Failed to setup VP9 lat ret %d\n", ret); > goto err_free_fb_out; > } > vdec_vp9_slice_vsi_to_remote(vsi, instance->vsi); > > ret = vpu_dec_start(&instance->vpu, NULL, 0); > if (ret) { > - mtk_vcodec_err(instance, "Failed to dec VP9 ret %d\n", ret); > + mtk_vdec_err(ctx, "Failed to dec VP9 ret %d\n", ret); > goto err_free_fb_out; > } > > @@ -2097,7 +2089,7 @@ static int vdec_vp9_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > WAIT_INTR_TIMEOUT_MS, MTK_VDEC_LAT0); > /* update remote vsi if decode timeout */ > if (ret) { > - mtk_vcodec_err(instance, "VP9 decode timeout %d pic %d\n", ret, pfc->seq); > + mtk_vdec_err(ctx, "VP9 decode timeout %d pic %d\n", ret, pfc->seq); > WRITE_ONCE(instance->vsi->state.timeout, 1); > } > vpu_dec_end(&instance->vpu); > @@ -2108,13 +2100,13 @@ static int vdec_vp9_slice_lat_decode(void *h_vdec, struct mtk_vcodec_mem *bs, > > /* LAT trans full, no more UBE or decode timeout */ > if (ret) { > - mtk_vcodec_err(instance, "VP9 decode error: %d\n", ret); > + mtk_vdec_err(ctx, "VP9 decode error: %d\n", ret); > goto err_free_fb_out; > } > > - mtk_vcodec_debug(instance, "lat dma addr: 0x%lx 0x%lx\n", > - (unsigned long)pfc->vsi.trans.dma_addr, > - (unsigned long)pfc->vsi.trans.dma_addr_end); > + mtk_vdec_debug(ctx, "lat dma addr: 0x%lx 0x%lx\n", > + (unsigned long)pfc->vsi.trans.dma_addr, > + (unsigned long)pfc->vsi.trans.dma_addr_end); > > vdec_msg_queue_update_ube_wptr(&ctx->msg_queue, > vsi->trans.dma_addr_end + > @@ -2169,14 +2161,14 @@ static int vdec_vp9_slice_core_decode(struct vdec_lat_buf *lat_buf) > > ret = vdec_vp9_slice_setup_core(instance, fb, lat_buf, pfc); > if (ret) { > - mtk_vcodec_err(instance, "vdec_vp9_slice_setup_core\n"); > + mtk_vdec_err(ctx, "vdec_vp9_slice_setup_core\n"); > goto err; > } > vdec_vp9_slice_vsi_to_remote(&pfc->vsi, instance->core_vsi); > > ret = vpu_dec_core(&instance->vpu); > if (ret) { > - mtk_vcodec_err(instance, "vpu_dec_core\n"); > + mtk_vdec_err(ctx, "vpu_dec_core\n"); > goto err; > } > > @@ -2185,7 +2177,7 @@ static int vdec_vp9_slice_core_decode(struct vdec_lat_buf *lat_buf) > WAIT_INTR_TIMEOUT_MS, MTK_VDEC_CORE); > /* update remote vsi if decode timeout */ > if (ret) { > - mtk_vcodec_err(instance, "VP9 core timeout pic %d\n", pfc->seq); > + mtk_vdec_err(ctx, "VP9 core timeout pic %d\n", pfc->seq); > WRITE_ONCE(instance->core_vsi->state.timeout, 1); > } > vpu_dec_core_end(&instance->vpu); > @@ -2194,13 +2186,13 @@ static int vdec_vp9_slice_core_decode(struct vdec_lat_buf *lat_buf) > vdec_vp9_slice_vsi_from_remote(&pfc->vsi, instance->core_vsi, 1); > ret = vdec_vp9_slice_update_core(instance, lat_buf, pfc); > if (ret) { > - mtk_vcodec_err(instance, "vdec_vp9_slice_update_core\n"); > + mtk_vdec_err(ctx, "vdec_vp9_slice_update_core\n"); > goto err; > } > > pfc->vsi.trans.dma_addr_end += ctx->msg_queue.wdma_addr.dma_addr; > - mtk_vcodec_debug(instance, "core dma_addr_end 0x%lx\n", > - (unsigned long)pfc->vsi.trans.dma_addr_end); > + mtk_vdec_debug(ctx, "core dma_addr_end 0x%lx\n", > + (unsigned long)pfc->vsi.trans.dma_addr_end); > vdec_msg_queue_update_ube_rptr(&ctx->msg_queue, pfc->vsi.trans.dma_addr_end); > ctx->dev->vdec_pdata->cap_to_disp(ctx, 0, lat_buf->src_buf_req); > > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > index 60e5b70fa127..ab15ee6e2005 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > @@ -16,7 +16,7 @@ static void handle_init_ack_msg(const struct vdec_vpu_ipi_init_ack *msg) > struct vdec_vpu_inst *vpu = (struct vdec_vpu_inst *) > (unsigned long)msg->ap_inst_addr; > > - mtk_vcodec_debug(vpu, "+ ap_inst_addr = 0x%llx", msg->ap_inst_addr); > + mtk_vdec_debug(vpu->ctx, "+ ap_inst_addr = 0x%llx", msg->ap_inst_addr); > > /* mapping VPU address to kernel virtual address */ > /* the content in vsi is initialized to 0 in VPU */ > @@ -24,7 +24,7 @@ static void handle_init_ack_msg(const struct vdec_vpu_ipi_init_ack *msg) > msg->vpu_inst_addr); > vpu->inst_addr = msg->vpu_inst_addr; > > - mtk_vcodec_debug(vpu, "- vpu_inst_addr = 0x%x", vpu->inst_addr); > + mtk_vdec_debug(vpu->ctx, "- vpu_inst_addr = 0x%x", vpu->inst_addr); > > /* Set default ABI version if dealing with unversioned firmware. */ > vpu->fw_abi_version = 0; > @@ -40,7 +40,7 @@ static void handle_init_ack_msg(const struct vdec_vpu_ipi_init_ack *msg) > > /* Check firmware version. */ > vpu->fw_abi_version = msg->vdec_abi_version; > - mtk_vcodec_debug(vpu, "firmware version 0x%x\n", vpu->fw_abi_version); > + mtk_vdec_debug(vpu->ctx, "firmware version 0x%x\n", vpu->fw_abi_version); > switch (vpu->fw_abi_version) { > case 1: > break; > @@ -48,8 +48,7 @@ static void handle_init_ack_msg(const struct vdec_vpu_ipi_init_ack *msg) > vpu->inst_id = msg->inst_id; > break; > default: > - mtk_vcodec_err(vpu, "unhandled firmware version 0x%x\n", > - vpu->fw_abi_version); > + mtk_vdec_err(vpu->ctx, "unhandled firmware version 0x%x\n", vpu->fw_abi_version); > vpu->failure = 1; > break; > } > @@ -60,7 +59,7 @@ static void handle_get_param_msg_ack(const struct vdec_vpu_ipi_get_param_ack *ms > struct vdec_vpu_inst *vpu = (struct vdec_vpu_inst *) > (unsigned long)msg->ap_inst_addr; > > - mtk_vcodec_debug(vpu, "+ ap_inst_addr = 0x%llx", msg->ap_inst_addr); > + mtk_vdec_debug(vpu->ctx, "+ ap_inst_addr = 0x%llx", msg->ap_inst_addr); > > /* param_type is enum vdec_get_param_type */ > switch (msg->param_type) { > @@ -69,7 +68,7 @@ static void handle_get_param_msg_ack(const struct vdec_vpu_ipi_get_param_ack *ms > vpu->fb_sz[1] = msg->data[1]; > break; > default: > - mtk_vcodec_err(vpu, "invalid get param type=%d", msg->param_type); > + mtk_vdec_err(vpu->ctx, "invalid get param type=%d", msg->param_type); > vpu->failure = 1; > break; > } > @@ -96,7 +95,7 @@ static void vpu_dec_ipi_handler(void *data, unsigned int len, void *priv) > return; > } > > - mtk_vcodec_debug(vpu, "+ id=%X", msg->msg_id); > + mtk_vdec_debug(vpu->ctx, "+ id=%X", msg->msg_id); > > vpu->failure = msg->status; > vpu->signaled = 1; > @@ -119,12 +118,12 @@ static void vpu_dec_ipi_handler(void *data, unsigned int len, void *priv) > handle_get_param_msg_ack(data); > break; > default: > - mtk_vcodec_err(vpu, "invalid msg=%X", msg->msg_id); > + mtk_vdec_err(vpu->ctx, "invalid msg=%X", msg->msg_id); > break; > } > } > > - mtk_vcodec_debug(vpu, "- id=%X", msg->msg_id); > + mtk_vdec_debug(vpu->ctx, "- id=%X", msg->msg_id); > } > > static int vcodec_vpu_send_msg(struct vdec_vpu_inst *vpu, void *msg, int len) > @@ -132,7 +131,7 @@ static int vcodec_vpu_send_msg(struct vdec_vpu_inst *vpu, void *msg, int len) > int err, id, msgid; > > msgid = *(uint32_t *)msg; > - mtk_vcodec_debug(vpu, "id=%X", msgid); > + mtk_vdec_debug(vpu->ctx, "id=%X", msgid); > > vpu->failure = 0; > vpu->signaled = 0; > @@ -150,8 +149,8 @@ static int vcodec_vpu_send_msg(struct vdec_vpu_inst *vpu, void *msg, int len) > err = mtk_vcodec_fw_ipi_send(vpu->ctx->dev->fw_handler, id, msg, > len, 2000); > if (err) { > - mtk_vcodec_err(vpu, "send fail vpu_id=%d msg_id=%X status=%d", > - id, msgid, err); > + mtk_vdec_err(vpu->ctx, "send fail vpu_id=%d msg_id=%X status=%d", > + id, msgid, err); > return err; > } > > @@ -163,7 +162,7 @@ static int vcodec_send_ap_ipi(struct vdec_vpu_inst *vpu, unsigned int msg_id) > struct vdec_ap_ipi_cmd msg; > int err = 0; > > - mtk_vcodec_debug(vpu, "+ id=%X", msg_id); > + mtk_vdec_debug(vpu->ctx, "+ id=%X", msg_id); > > memset(&msg, 0, sizeof(msg)); > msg.msg_id = msg_id; > @@ -174,7 +173,7 @@ static int vcodec_send_ap_ipi(struct vdec_vpu_inst *vpu, unsigned int msg_id) > msg.codec_type = vpu->codec_type; > > err = vcodec_vpu_send_msg(vpu, &msg, sizeof(msg)); > - mtk_vcodec_debug(vpu, "- id=%X ret=%d", msg_id, err); > + mtk_vdec_debug(vpu->ctx, "- id=%X ret=%d", msg_id, err); > return err; > } > > @@ -189,7 +188,7 @@ int vpu_dec_init(struct vdec_vpu_inst *vpu) > err = mtk_vcodec_fw_ipi_register(vpu->ctx->dev->fw_handler, vpu->id, > vpu->handler, "vdec", NULL); > if (err) { > - mtk_vcodec_err(vpu, "vpu_ipi_register fail status=%d", err); > + mtk_vdec_err(vpu->ctx, "vpu_ipi_register fail status=%d", err); > return err; > } > > @@ -198,7 +197,7 @@ int vpu_dec_init(struct vdec_vpu_inst *vpu) > vpu->core_id, vpu->handler, > "vdec", NULL); > if (err) { > - mtk_vcodec_err(vpu, "vpu_ipi_register core fail status=%d", err); > + mtk_vdec_err(vpu->ctx, "vpu_ipi_register core fail status=%d", err); > return err; > } > } > @@ -208,10 +207,10 @@ int vpu_dec_init(struct vdec_vpu_inst *vpu) > msg.ap_inst_addr = (unsigned long)vpu; > msg.codec_type = vpu->codec_type; > > - mtk_vcodec_debug(vpu, "vdec_inst=%p", vpu); > + mtk_vdec_debug(vpu->ctx, "vdec_inst=%p", vpu); > > err = vcodec_vpu_send_msg(vpu, (void *)&msg, sizeof(msg)); > - mtk_vcodec_debug(vpu, "- ret=%d", err); > + mtk_vdec_debug(vpu->ctx, "- ret=%d", err); > return err; > } > > @@ -222,7 +221,7 @@ int vpu_dec_start(struct vdec_vpu_inst *vpu, uint32_t *data, unsigned int len) > int err = 0; > > if (len > ARRAY_SIZE(msg.data)) { > - mtk_vcodec_err(vpu, "invalid len = %d\n", len); > + mtk_vdec_err(vpu->ctx, "invalid len = %d\n", len); > return -EINVAL; > } > > @@ -238,7 +237,7 @@ int vpu_dec_start(struct vdec_vpu_inst *vpu, uint32_t *data, unsigned int len) > msg.codec_type = vpu->codec_type; > > err = vcodec_vpu_send_msg(vpu, (void *)&msg, sizeof(msg)); > - mtk_vcodec_debug(vpu, "- ret=%d", err); > + mtk_vdec_debug(vpu->ctx, "- ret=%d", err); > return err; > } > > @@ -249,7 +248,7 @@ int vpu_dec_get_param(struct vdec_vpu_inst *vpu, uint32_t *data, > int err; > > if (len > ARRAY_SIZE(msg.data)) { > - mtk_vcodec_err(vpu, "invalid len = %d\n", len); > + mtk_vdec_err(vpu->ctx, "invalid len = %d\n", len); > return -EINVAL; > } > > @@ -261,7 +260,7 @@ int vpu_dec_get_param(struct vdec_vpu_inst *vpu, uint32_t *data, > msg.codec_type = vpu->codec_type; > > err = vcodec_vpu_send_msg(vpu, (void *)&msg, sizeof(msg)); > - mtk_vcodec_debug(vpu, "- ret=%d", err); > + mtk_vdec_debug(vpu->ctx, "- ret=%d", err); > return err; > } > > diff --git a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > index c821ed427537..5abc9c4e6d4f 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > @@ -240,13 +240,13 @@ static unsigned int h264_get_profile(struct venc_h264_inst *inst, > case V4L2_MPEG_VIDEO_H264_PROFILE_HIGH: > return 100; > case V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE: > - mtk_vcodec_err(inst, "unsupported CONSTRAINED_BASELINE"); > + mtk_venc_err(inst->ctx, "unsupported CONSTRAINED_BASELINE"); > return 0; > case V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED: > - mtk_vcodec_err(inst, "unsupported EXTENDED"); > + mtk_venc_err(inst->ctx, "unsupported EXTENDED"); > return 0; > default: > - mtk_vcodec_debug(inst, "unsupported profile %d", profile); > + mtk_venc_debug(inst->ctx, "unsupported profile %d", profile); > return 100; > } > } > @@ -256,7 +256,7 @@ static unsigned int h264_get_level(struct venc_h264_inst *inst, > { > switch (level) { > case V4L2_MPEG_VIDEO_H264_LEVEL_1B: > - mtk_vcodec_err(inst, "unsupported 1B"); > + mtk_venc_err(inst->ctx, "unsupported 1B"); > return 0; > case V4L2_MPEG_VIDEO_H264_LEVEL_1_0: > return 10; > @@ -289,7 +289,7 @@ static unsigned int h264_get_level(struct venc_h264_inst *inst, > case V4L2_MPEG_VIDEO_H264_LEVEL_5_1: > return 51; > default: > - mtk_vcodec_debug(inst, "unsupported level %d", level); > + mtk_venc_debug(inst->ctx, "unsupported level %d", level); > return 31; > } > } > @@ -360,8 +360,7 @@ static int h264_enc_alloc_work_buf(struct venc_h264_inst *inst, bool is_34bit) > ret = mtk_vcodec_mem_alloc(inst->ctx, > &inst->work_bufs[i]); > if (ret) { > - mtk_vcodec_err(inst, > - "cannot allocate buf %d", i); > + mtk_venc_err(inst->ctx, "cannot allocate buf %d", i); > goto err_alloc; > } > /* > @@ -385,18 +384,17 @@ static int h264_enc_alloc_work_buf(struct venc_h264_inst *inst, bool is_34bit) > else > wb[i].iova = inst->work_bufs[i].dma_addr; > > - mtk_vcodec_debug(inst, > - "work_buf[%d] va=0x%p iova=%pad size=%zu", > - i, inst->work_bufs[i].va, > - &inst->work_bufs[i].dma_addr, > - inst->work_bufs[i].size); > + mtk_venc_debug(inst->ctx, "work_buf[%d] va=0x%p iova=%pad size=%zu", > + i, inst->work_bufs[i].va, > + &inst->work_bufs[i].dma_addr, > + inst->work_bufs[i].size); > } > > /* the pps_buf is used by AP side only */ > inst->pps_buf.size = 128; > ret = mtk_vcodec_mem_alloc(inst->ctx, &inst->pps_buf); > if (ret) { > - mtk_vcodec_err(inst, "cannot allocate pps_buf"); > + mtk_venc_err(inst->ctx, "cannot allocate pps_buf"); > goto err_alloc; > } > > @@ -416,7 +414,7 @@ static unsigned int h264_enc_wait_venc_done(struct venc_h264_inst *inst) > if (!mtk_vcodec_wait_for_done_ctx(ctx, MTK_INST_IRQ_RECEIVED, > WAIT_INTR_TIMEOUT_MS, 0)) { > irq_status = ctx->irq_status; > - mtk_vcodec_debug(inst, "irq_status %x <-", irq_status); > + mtk_venc_debug(ctx, "irq_status %x <-", irq_status); > } > return irq_status; > } > @@ -450,13 +448,12 @@ static int h264_encode_sps(struct venc_h264_inst *inst, > > irq_status = h264_enc_wait_venc_done(inst); > if (irq_status != MTK_VENC_IRQ_STATUS_SPS) { > - mtk_vcodec_err(inst, "expect irq status %d", > - MTK_VENC_IRQ_STATUS_SPS); > + mtk_venc_err(inst->ctx, "expect irq status %d", MTK_VENC_IRQ_STATUS_SPS); > return -EINVAL; > } > > *bs_size = h264_read_reg(inst, VENC_PIC_BITSTREAM_BYTE_CNT); > - mtk_vcodec_debug(inst, "bs size %d <-", *bs_size); > + mtk_venc_debug(inst->ctx, "bs size %d <-", *bs_size); > > return ret; > } > @@ -474,13 +471,12 @@ static int h264_encode_pps(struct venc_h264_inst *inst, > > irq_status = h264_enc_wait_venc_done(inst); > if (irq_status != MTK_VENC_IRQ_STATUS_PPS) { > - mtk_vcodec_err(inst, "expect irq status %d", > - MTK_VENC_IRQ_STATUS_PPS); > + mtk_venc_err(inst->ctx, "expect irq status %d", MTK_VENC_IRQ_STATUS_PPS); > return -EINVAL; > } > > *bs_size = h264_read_reg(inst, VENC_PIC_BITSTREAM_BYTE_CNT); > - mtk_vcodec_debug(inst, "bs size %d <-", *bs_size); > + mtk_venc_debug(inst->ctx, "bs size %d <-", *bs_size); > > return ret; > } > @@ -519,7 +515,7 @@ static int h264_encode_frame(struct venc_h264_inst *inst, > struct venc_frame_info frame_info; > struct mtk_vcodec_ctx *ctx = inst->ctx; > > - mtk_vcodec_debug(inst, "frm_cnt = %d\n ", inst->frm_cnt); > + mtk_venc_debug(ctx, "frm_cnt = %d\n ", inst->frm_cnt); > > if (MTK_ENC_IOVA_IS_34BIT(ctx)) { > gop_size = inst->vsi_34->config.gop_size; > @@ -532,9 +528,9 @@ static int h264_encode_frame(struct venc_h264_inst *inst, > frame_info.skip_frm_count = inst->skip_frm_cnt; > frame_info.frm_type = h264_frame_type(inst->frm_cnt, gop_size, > intra_period); > - mtk_vcodec_debug(inst, "frm_count = %d,skip_frm_count =%d,frm_type=%d.\n", > - frame_info.frm_count, frame_info.skip_frm_count, > - frame_info.frm_type); > + mtk_venc_debug(ctx, "frm_count = %d,skip_frm_count =%d,frm_type=%d.\n", > + frame_info.frm_count, frame_info.skip_frm_count, > + frame_info.frm_type); > > ret = vpu_enc_encode(&inst->vpu_inst, H264_BS_MODE_FRAME, > frm_buf, bs_buf, &frame_info); > @@ -557,15 +553,15 @@ static int h264_encode_frame(struct venc_h264_inst *inst, > > irq_status = h264_enc_wait_venc_done(inst); > if (irq_status != MTK_VENC_IRQ_STATUS_FRM) { > - mtk_vcodec_err(inst, "irq_status=%d failed", irq_status); > + mtk_venc_err(ctx, "irq_status=%d failed", irq_status); > return -EIO; > } > > *bs_size = h264_read_reg(inst, VENC_PIC_BITSTREAM_BYTE_CNT); > > ++inst->frm_cnt; > - mtk_vcodec_debug(inst, "frm %d bs_size %d key_frm %d <-", > - inst->frm_cnt, *bs_size, inst->vpu_inst.is_key_frm); > + mtk_venc_debug(ctx, "frm %d bs_size %d key_frm %d <-", > + inst->frm_cnt, *bs_size, inst->vpu_inst.is_key_frm); > > return 0; > } > @@ -576,7 +572,7 @@ static void h264_encode_filler(struct venc_h264_inst *inst, void *buf, > unsigned char *p = buf; > > if (size < H264_FILLER_MARKER_SIZE) { > - mtk_vcodec_err(inst, "filler size too small %d", size); > + mtk_venc_err(inst->ctx, "filler size too small %d", size); > return; > } > > @@ -626,7 +622,7 @@ static int h264_enc_encode(void *handle, > struct venc_h264_inst *inst = (struct venc_h264_inst *)handle; > struct mtk_vcodec_ctx *ctx = inst->ctx; > > - mtk_vcodec_debug(inst, "opt %d ->", opt); > + mtk_venc_debug(ctx, "opt %d ->", opt); > > enable_irq(ctx->dev->enc_irq); > > @@ -661,7 +657,7 @@ static int h264_enc_encode(void *handle, > break; > } > > - mtk_vcodec_debug(inst, "h264_encode_frame prepend SPS/PPS"); > + mtk_venc_debug(ctx, "h264_encode_frame prepend SPS/PPS"); > > ret = h264_encode_header(inst, bs_buf, &bs_size_hdr); > if (ret) > @@ -688,9 +684,8 @@ static int h264_enc_encode(void *handle, > > result->bs_size = hdr_sz + filler_sz + bs_size_frm; > > - mtk_vcodec_debug(inst, "hdr %d filler %d frame %d bs %d", > - hdr_sz, filler_sz, bs_size_frm, > - result->bs_size); > + mtk_venc_debug(ctx, "hdr %d filler %d frame %d bs %d", > + hdr_sz, filler_sz, bs_size_frm, result->bs_size); > > inst->prepend_hdr = 0; > result->is_key_frm = inst->vpu_inst.is_key_frm; > @@ -698,7 +693,7 @@ static int h264_enc_encode(void *handle, > } > > default: > - mtk_vcodec_err(inst, "venc_start_opt %d not supported", opt); > + mtk_venc_err(ctx, "venc_start_opt %d not supported", opt); > ret = -EINVAL; > break; > } > @@ -706,7 +701,7 @@ static int h264_enc_encode(void *handle, > encode_err: > > disable_irq(ctx->dev->enc_irq); > - mtk_vcodec_debug(inst, "opt %d <-", opt); > + mtk_venc_debug(ctx, "opt %d <-", opt); > > return ret; > } > @@ -758,7 +753,7 @@ static int h264_enc_set_param(void *handle, > struct mtk_vcodec_ctx *ctx = inst->ctx; > const bool is_34bit = MTK_ENC_IOVA_IS_34BIT(ctx); > > - mtk_vcodec_debug(inst, "->type=%d", type); > + mtk_venc_debug(ctx, "->type=%d", type); > > switch (type) { > case VENC_SET_PARAM_ENC: > @@ -781,7 +776,7 @@ static int h264_enc_set_param(void *handle, > > case VENC_SET_PARAM_PREPEND_HEADER: > inst->prepend_hdr = 1; > - mtk_vcodec_debug(inst, "set prepend header mode"); > + mtk_venc_debug(ctx, "set prepend header mode"); > break; > case VENC_SET_PARAM_FORCE_INTRA: > case VENC_SET_PARAM_GOP_SIZE: > diff --git a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > index ddcdb565db17..ff54064497f1 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > @@ -171,8 +171,7 @@ static int vp8_enc_alloc_work_buf(struct venc_vp8_inst *inst) > inst->work_bufs[i].size = wb[i].size; > ret = mtk_vcodec_mem_alloc(inst->ctx, &inst->work_bufs[i]); > if (ret) { > - mtk_vcodec_err(inst, > - "cannot alloc work_bufs[%d]", i); > + mtk_venc_err(inst->ctx, "cannot alloc work_bufs[%d]", i); > goto err_alloc; > } > /* > @@ -193,11 +192,10 @@ static int vp8_enc_alloc_work_buf(struct venc_vp8_inst *inst) > } > wb[i].iova = inst->work_bufs[i].dma_addr; > > - mtk_vcodec_debug(inst, > - "work_bufs[%d] va=0x%p,iova=%pad,size=%zu", > - i, inst->work_bufs[i].va, > - &inst->work_bufs[i].dma_addr, > - inst->work_bufs[i].size); > + mtk_venc_debug(inst->ctx, "work_bufs[%d] va=0x%p,iova=%pad,size=%zu", > + i, inst->work_bufs[i].va, > + &inst->work_bufs[i].dma_addr, > + inst->work_bufs[i].size); > } > > return ret; > @@ -216,7 +214,7 @@ static unsigned int vp8_enc_wait_venc_done(struct venc_vp8_inst *inst) > if (!mtk_vcodec_wait_for_done_ctx(ctx, MTK_INST_IRQ_RECEIVED, > WAIT_INTR_TIMEOUT_MS, 0)) { > irq_status = ctx->irq_status; > - mtk_vcodec_debug(inst, "isr return %x", irq_status); > + mtk_venc_debug(ctx, "isr return %x", irq_status); > } > return irq_status; > } > @@ -261,8 +259,7 @@ static int vp8_enc_compose_one_frame(struct venc_vp8_inst *inst, > } > > if (bs_buf->size < bs_hdr_len + bs_frm_size + ac_tag_size) { > - mtk_vcodec_err(inst, "bitstream buf size is too small(%zu)", > - bs_buf->size); > + mtk_venc_err(inst->ctx, "bitstream buf size is too small(%zu)", bs_buf->size); > return -EINVAL; > } > > @@ -292,7 +289,7 @@ static int vp8_enc_encode_frame(struct venc_vp8_inst *inst, > int ret = 0; > unsigned int irq_status; > > - mtk_vcodec_debug(inst, "->frm_cnt=%d", inst->frm_cnt); > + mtk_venc_debug(inst->ctx, "->frm_cnt=%d", inst->frm_cnt); > > ret = vpu_enc_encode(&inst->vpu_inst, 0, frm_buf, bs_buf, NULL); > if (ret) > @@ -300,18 +297,17 @@ static int vp8_enc_encode_frame(struct venc_vp8_inst *inst, > > irq_status = vp8_enc_wait_venc_done(inst); > if (irq_status != MTK_VENC_IRQ_STATUS_FRM) { > - mtk_vcodec_err(inst, "irq_status=%d failed", irq_status); > + mtk_venc_err(inst->ctx, "irq_status=%d failed", irq_status); > return -EIO; > } > > if (vp8_enc_compose_one_frame(inst, bs_buf, bs_size)) { > - mtk_vcodec_err(inst, "vp8_enc_compose_one_frame failed"); > + mtk_venc_err(inst->ctx, "vp8_enc_compose_one_frame failed"); > return -EINVAL; > } > > inst->frm_cnt++; > - mtk_vcodec_debug(inst, "<-size=%d key_frm=%d", *bs_size, > - inst->vpu_inst.is_key_frm); > + mtk_venc_debug(inst->ctx, "<-size=%d key_frm=%d", *bs_size, inst->vpu_inst.is_key_frm); > > return ret; > } > @@ -364,7 +360,7 @@ static int vp8_enc_encode(void *handle, > break; > > default: > - mtk_vcodec_err(inst, "opt not support:%d", opt); > + mtk_venc_err(ctx, "opt not support:%d", opt); > ret = -EINVAL; > break; > } > @@ -382,7 +378,7 @@ static int vp8_enc_set_param(void *handle, > int ret = 0; > struct venc_vp8_inst *inst = (struct venc_vp8_inst *)handle; > > - mtk_vcodec_debug(inst, "->type=%d", type); > + mtk_venc_debug(inst->ctx, "->type=%d", type); > > switch (type) { > case VENC_SET_PARAM_ENC: > @@ -413,7 +409,7 @@ static int vp8_enc_set_param(void *handle, > */ > case VENC_SET_PARAM_TS_MODE: > inst->ts_mode = 1; > - mtk_vcodec_debug(inst, "set ts_mode"); > + mtk_venc_debug(inst->ctx, "set ts_mode"); > break; > > default: > diff --git a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > index 63ebab28242c..c69f66b6d341 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > @@ -22,14 +22,13 @@ static void handle_enc_init_msg(struct venc_vpu_inst *vpu, const void *data) > return; > > /* Check firmware version. */ > - mtk_vcodec_debug(vpu, "firmware version: 0x%x\n", > - msg->venc_abi_version); > + mtk_venc_debug(vpu->ctx, "firmware version: 0x%x\n", msg->venc_abi_version); > switch (msg->venc_abi_version) { > case 1: > break; > default: > - mtk_vcodec_err(vpu, "unhandled firmware version 0x%x\n", > - msg->venc_abi_version); > + mtk_venc_err(vpu->ctx, "unhandled firmware version 0x%x\n", > + msg->venc_abi_version); > vpu->failure = 1; > break; > } > @@ -50,13 +49,12 @@ static void vpu_enc_ipi_handler(void *data, unsigned int len, void *priv) > struct venc_vpu_inst *vpu = > (struct venc_vpu_inst *)(unsigned long)msg->venc_inst; > > - mtk_vcodec_debug(vpu, "msg_id %x inst %p status %d", > - msg->msg_id, vpu, msg->status); > + mtk_venc_debug(vpu->ctx, "msg_id %x inst %p status %d", msg->msg_id, vpu, msg->status); > > vpu->signaled = 1; > vpu->failure = (msg->status != VENC_IPI_MSG_STATUS_OK); > if (vpu->failure) { > - mtk_vcodec_err(vpu, "vpu enc status failure %d", vpu->failure); > + mtk_venc_err(vpu->ctx, "vpu enc status failure %d", vpu->failure); > return; > } > > @@ -72,7 +70,7 @@ static void vpu_enc_ipi_handler(void *data, unsigned int len, void *priv) > case VPU_IPIMSG_ENC_DEINIT_DONE: > break; > default: > - mtk_vcodec_err(vpu, "unknown msg id %x", msg->msg_id); > + mtk_venc_err(vpu->ctx, "unknown msg id %x", msg->msg_id); > break; > } > } > @@ -83,15 +81,15 @@ static int vpu_enc_send_msg(struct venc_vpu_inst *vpu, void *msg, > int status; > > if (!vpu->ctx->dev->fw_handler) { > - mtk_vcodec_err(vpu, "inst dev is NULL"); > + mtk_venc_err(vpu->ctx, "inst dev is NULL"); > return -EINVAL; > } > > status = mtk_vcodec_fw_ipi_send(vpu->ctx->dev->fw_handler, vpu->id, msg, > len, 2000); > if (status) { > - mtk_vcodec_err(vpu, "vpu_ipi_send msg_id %x len %d fail %d", > - *(uint32_t *)msg, len, status); > + mtk_venc_err(vpu->ctx, "vpu_ipi_send msg_id %x len %d fail %d", > + *(uint32_t *)msg, len, status); > return -EINVAL; > } > if (vpu->failure) > @@ -113,7 +111,7 @@ int vpu_enc_init(struct venc_vpu_inst *vpu) > vpu_enc_ipi_handler, "venc", NULL); > > if (status) { > - mtk_vcodec_err(vpu, "vpu_ipi_register fail %d", status); > + mtk_venc_err(vpu->ctx, "vpu_ipi_register fail %d", status); > return -EINVAL; > } > > @@ -121,7 +119,7 @@ int vpu_enc_init(struct venc_vpu_inst *vpu) > out.msg_id = AP_IPIMSG_ENC_INIT; > out.venc_inst = (unsigned long)vpu; > if (vpu_enc_send_msg(vpu, &out, sizeof(out))) { > - mtk_vcodec_err(vpu, "AP_IPIMSG_ENC_INIT fail"); > + mtk_venc_err(vpu->ctx, "AP_IPIMSG_ENC_INIT fail"); > return -EINVAL; > } > > @@ -157,7 +155,7 @@ int vpu_enc_set_param(struct venc_vpu_inst *vpu, > sizeof(struct venc_ap_ipi_msg_set_param); > struct venc_ap_ipi_msg_set_param_ext out; > > - mtk_vcodec_debug(vpu, "id %d ->", id); > + mtk_venc_debug(vpu->ctx, "id %d ->", id); > > memset(&out, 0, sizeof(out)); > out.base.msg_id = AP_IPIMSG_ENC_SET_PARAM; > @@ -199,16 +197,15 @@ int vpu_enc_set_param(struct venc_vpu_inst *vpu, > out.base.data_item = 0; > break; > default: > - mtk_vcodec_err(vpu, "id %d not supported", id); > + mtk_venc_err(vpu->ctx, "id %d not supported", id); > return -EINVAL; > } > if (vpu_enc_send_msg(vpu, &out, msg_size)) { > - mtk_vcodec_err(vpu, > - "AP_IPIMSG_ENC_SET_PARAM %d fail", id); > + mtk_venc_err(vpu->ctx, "AP_IPIMSG_ENC_SET_PARAM %d fail", id); > return -EINVAL; > } > > - mtk_vcodec_debug(vpu, "id %d <-", id); > + mtk_venc_debug(vpu->ctx, "id %d <-", id); > > return 0; > } > @@ -225,7 +222,7 @@ static int vpu_enc_encode_32bits(struct venc_vpu_inst *vpu, > sizeof(struct venc_ap_ipi_msg_enc); > struct venc_ap_ipi_msg_enc_ext out; > > - mtk_vcodec_debug(vpu, "bs_mode %d ->", bs_mode); > + mtk_venc_debug(vpu->ctx, "bs_mode %d ->", bs_mode); > > memset(&out, 0, sizeof(out)); > out.base.msg_id = AP_IPIMSG_ENC_ENCODE; > @@ -239,7 +236,7 @@ static int vpu_enc_encode_32bits(struct venc_vpu_inst *vpu, > out.base.input_addr[1] = frm_buf->fb_addr[1].dma_addr; > out.base.input_addr[2] = frm_buf->fb_addr[2].dma_addr; > } else { > - mtk_vcodec_err(vpu, "dma_addr not align to 16"); > + mtk_venc_err(vpu->ctx, "dma_addr not align to 16"); > return -EINVAL; > } > } > @@ -254,8 +251,7 @@ static int vpu_enc_encode_32bits(struct venc_vpu_inst *vpu, > out.data[2] = frame_info->frm_type; > } > if (vpu_enc_send_msg(vpu, &out, msg_size)) { > - mtk_vcodec_err(vpu, "AP_IPIMSG_ENC_ENCODE %d fail", > - bs_mode); > + mtk_venc_err(vpu->ctx, "AP_IPIMSG_ENC_ENCODE %d fail", bs_mode); > return -EINVAL; > } > > @@ -271,7 +267,7 @@ static int vpu_enc_encode_34bits(struct venc_vpu_inst *vpu, > struct venc_ap_ipi_msg_enc_ext_34 out; > size_t msg_size = sizeof(struct venc_ap_ipi_msg_enc_ext_34); > > - mtk_vcodec_debug(vpu, "bs_mode %d ->", bs_mode); > + mtk_venc_debug(vpu->ctx, "bs_mode %d ->", bs_mode); > > memset(&out, 0, sizeof(out)); > out.msg_id = AP_IPIMSG_ENC_ENCODE; > @@ -286,7 +282,7 @@ static int vpu_enc_encode_34bits(struct venc_vpu_inst *vpu, > out.input_addr[1] = frm_buf->fb_addr[1].dma_addr; > out.input_addr[2] = frm_buf->fb_addr[2].dma_addr; > } else { > - mtk_vcodec_err(vpu, "dma_addr not align to 16"); > + mtk_venc_err(vpu->ctx, "dma_addr not align to 16"); > return -EINVAL; > } > } > @@ -301,8 +297,7 @@ static int vpu_enc_encode_34bits(struct venc_vpu_inst *vpu, > out.data[2] = frame_info->frm_type; > } > if (vpu_enc_send_msg(vpu, &out, msg_size)) { > - mtk_vcodec_err(vpu, "AP_IPIMSG_ENC_ENCODE %d fail", > - bs_mode); > + mtk_venc_err(vpu->ctx, "AP_IPIMSG_ENC_ENCODE %d fail", bs_mode); > return -EINVAL; > } > > @@ -326,8 +321,8 @@ int vpu_enc_encode(struct venc_vpu_inst *vpu, unsigned int bs_mode, > if (ret) > return ret; > > - mtk_vcodec_debug(vpu, "bs_mode %d state %d size %d key_frm %d <-", > - bs_mode, vpu->state, vpu->bs_size, vpu->is_key_frm); > + mtk_venc_debug(vpu->ctx, "bs_mode %d state %d size %d key_frm %d <-", > + bs_mode, vpu->state, vpu->bs_size, vpu->is_key_frm); > > return 0; > } > @@ -340,7 +335,7 @@ int vpu_enc_deinit(struct venc_vpu_inst *vpu) > out.msg_id = AP_IPIMSG_ENC_DEINIT; > out.vpu_inst_addr = vpu->inst_addr; > if (vpu_enc_send_msg(vpu, &out, sizeof(out))) { > - mtk_vcodec_err(vpu, "AP_IPIMSG_ENC_DEINIT fail"); > + mtk_venc_err(vpu->ctx, "AP_IPIMSG_ENC_DEINIT fail"); > return -EINVAL; > } >
Le lundi 26 juin 2023 à 11:53 +0800, Yunfei Dong a écrit : > Adding different dev struct for encoder and decoder, remove > 'struct mtk_vcodec_dev'. > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> > --- > .../mediatek/vcodec/mtk_vcodec_com_drv.h | 71 +++++ > .../mediatek/vcodec/mtk_vcodec_dbgfs.c | 51 ++- > .../mediatek/vcodec/mtk_vcodec_dbgfs.h | 14 +- > .../platform/mediatek/vcodec/mtk_vcodec_dec.c | 4 +- > .../mediatek/vcodec/mtk_vcodec_dec_drv.c | 19 +- > .../mediatek/vcodec/mtk_vcodec_dec_drv.h | 172 +++++++++- > .../mediatek/vcodec/mtk_vcodec_dec_hw.c | 5 +- > .../mediatek/vcodec/mtk_vcodec_dec_hw.h | 4 +- > .../mediatek/vcodec/mtk_vcodec_dec_pm.c | 10 +- > .../mediatek/vcodec/mtk_vcodec_dec_pm.h | 2 +- > .../mediatek/vcodec/mtk_vcodec_dec_stateful.c | 3 +- > .../vcodec/mtk_vcodec_dec_stateless.c | 5 +- > .../platform/mediatek/vcodec/mtk_vcodec_drv.h | 295 ------------------ > .../platform/mediatek/vcodec/mtk_vcodec_enc.c | 5 +- > .../mediatek/vcodec/mtk_vcodec_enc_drv.c | 15 +- > .../mediatek/vcodec/mtk_vcodec_enc_drv.h | 93 +++++- > .../mediatek/vcodec/mtk_vcodec_enc_pm.c | 4 +- > .../mediatek/vcodec/mtk_vcodec_enc_pm.h | 4 +- > .../platform/mediatek/vcodec/mtk_vcodec_fw.c | 12 +- > .../platform/mediatek/vcodec/mtk_vcodec_fw.h | 3 +- > .../mediatek/vcodec/mtk_vcodec_fw_priv.h | 3 +- > .../mediatek/vcodec/mtk_vcodec_fw_scp.c | 21 +- > .../mediatek/vcodec/mtk_vcodec_fw_vpu.c | 18 +- > .../mediatek/vcodec/mtk_vcodec_intr.c | 4 +- > .../mediatek/vcodec/mtk_vcodec_util.c | 10 +- > .../mediatek/vcodec/mtk_vcodec_util.h | 8 +- > .../vcodec/vdec/vdec_h264_req_common.h | 2 +- > .../vcodec/vdec/vdec_h264_req_multi_if.c | 2 +- > .../platform/mediatek/vcodec/vdec_drv_if.h | 1 - > .../platform/mediatek/vcodec/vdec_msg_queue.c | 4 +- > .../platform/mediatek/vcodec/vdec_msg_queue.h | 2 +- > .../platform/mediatek/vcodec/vdec_vpu_if.c | 3 +- > .../mediatek/vcodec/venc/venc_h264_if.c | 2 +- > .../mediatek/vcodec/venc/venc_vp8_if.c | 2 +- > .../platform/mediatek/vcodec/venc_drv_base.h | 2 +- > .../platform/mediatek/vcodec/venc_drv_if.c | 4 +- > .../platform/mediatek/vcodec/venc_drv_if.h | 3 +- > .../platform/mediatek/vcodec/venc_vpu_if.c | 2 +- > 38 files changed, 465 insertions(+), 419 deletions(-) > delete mode 100644 drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_com_drv.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_com_drv.h > index 3b6e1faf60ce..6087e27bd604 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_com_drv.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_com_drv.h > @@ -17,6 +17,77 @@ > > #define MTK_VCODEC_MAX_PLANES 3 > > +#define WAIT_INTR_TIMEOUT_MS 1000 > + > +/* > + * enum mtk_q_type - Type of queue > + */ > +enum mtk_q_type { > + MTK_Q_DATA_SRC = 0, > + MTK_Q_DATA_DST = 1, > +}; > + > +/* > + * enum mtk_hw_reg_idx - MTK hw register base index > + */ > +enum mtk_hw_reg_idx { > + VDEC_SYS, > + VDEC_MISC, > + VDEC_LD, > + VDEC_TOP, > + VDEC_CM, > + VDEC_AD, > + VDEC_AV, > + VDEC_PP, > + VDEC_HWD, > + VDEC_HWQ, > + VDEC_HWB, > + VDEC_HWG, > + NUM_MAX_VDEC_REG_BASE, > + /* h264 encoder */ > + VENC_SYS = NUM_MAX_VDEC_REG_BASE, > + /* vp8 encoder */ > + VENC_LT_SYS, > + NUM_MAX_VCODEC_REG_BASE > +}; > + > +/* > + * struct mtk_vcodec_clk_info - Structure used to store clock name > + */ > +struct mtk_vcodec_clk_info { > + const char *clk_name; > + struct clk *vcodec_clk; > +}; > + > +/* > + * struct mtk_vcodec_clk - Structure used to store vcodec clock information > + */ > +struct mtk_vcodec_clk { > + struct mtk_vcodec_clk_info *clk_info; > + int clk_num; > +}; > + > +/* > + * struct mtk_vcodec_pm - Power management data structure > + */ > +struct mtk_vcodec_pm { > + struct mtk_vcodec_clk vdec_clk; > + struct mtk_vcodec_clk venc_clk; > + struct device *dev; > +}; > + > +/* > + * enum mtk_vdec_hw_id - Hardware index used to separate > + * different hardware > + */ > +enum mtk_vdec_hw_id { > + MTK_VDEC_CORE, > + MTK_VDEC_LAT0, > + MTK_VDEC_LAT1, > + MTK_VDEC_LAT_SOC, > + MTK_VDEC_HW_MAX, > +}; > + > /** > * enum mtk_instance_state - The state of an MTK Vcodec instance. > * @MTK_STATE_FREE: default state when instance is created > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c > index 0f4bbfb3bba5..c6a02b33cc74 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c > @@ -7,7 +7,8 @@ > #include <linux/debugfs.h> > > #include "mtk_vcodec_dbgfs.h" > -#include "mtk_vcodec_drv.h" > +#include "mtk_vcodec_dec_drv.h" > +#include "mtk_vcodec_enc_drv.h" > #include "mtk_vcodec_util.h" > > static void mtk_vdec_dbgfs_get_format_type(struct mtk_vcodec_dec_ctx *ctx, char *buf, > @@ -72,7 +73,7 @@ static void mtk_vdec_dbgfs_get_help(char *buf, int *used, int total) > static ssize_t mtk_vdec_dbgfs_write(struct file *filp, const char __user *ubuf, > size_t count, loff_t *ppos) > { > - struct mtk_vcodec_dev *vcodec_dev = filp->private_data; > + struct mtk_vcodec_dec_dev *vcodec_dev = filp->private_data; > struct mtk_vcodec_dbgfs *dbgfs = &vcodec_dev->dbgfs; > > mutex_lock(&dbgfs->dbgfs_lock); > @@ -88,7 +89,7 @@ static ssize_t mtk_vdec_dbgfs_write(struct file *filp, const char __user *ubuf, > static ssize_t mtk_vdec_dbgfs_read(struct file *filp, char __user *ubuf, > size_t count, loff_t *ppos) > { > - struct mtk_vcodec_dev *vcodec_dev = filp->private_data; > + struct mtk_vcodec_dec_dev *vcodec_dev = filp->private_data; > struct mtk_vcodec_dbgfs *dbgfs = &vcodec_dev->dbgfs; > struct mtk_vcodec_dbgfs_inst *dbgfs_inst; > struct mtk_vcodec_dec_ctx *ctx; > @@ -146,7 +147,7 @@ static const struct file_operations vdec_fops = { > void mtk_vcodec_dbgfs_create(struct mtk_vcodec_dec_ctx *ctx) > { > struct mtk_vcodec_dbgfs_inst *dbgfs_inst; > - struct mtk_vcodec_dev *vcodec_dev = ctx->dev; > + struct mtk_vcodec_dec_dev *vcodec_dev = ctx->dev; > > dbgfs_inst = kzalloc(sizeof(*dbgfs_inst), GFP_KERNEL); > if (!dbgfs_inst) > @@ -161,7 +162,7 @@ void mtk_vcodec_dbgfs_create(struct mtk_vcodec_dec_ctx *ctx) > } > EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_create); > > -void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dev *vcodec_dev, int ctx_id) > +void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dec_dev *vcodec_dev, int ctx_id) > { > struct mtk_vcodec_dbgfs_inst *dbgfs_inst; > > @@ -179,16 +180,13 @@ void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dev *vcodec_dev, int ctx_id) > } > EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_remove); > > -void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev, bool is_encode) > +static void mtk_vcodec_dbgfs_vdec_init(struct mtk_vcodec_dec_dev *vcodec_dev) > { > struct dentry *vcodec_root; > > - if (is_encode) > - vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-enc", NULL); > - else > - vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-dec", NULL); > + vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-dec", NULL); > if (IS_ERR(vcodec_dev->dbgfs.vcodec_root)) > - dev_err(&vcodec_dev->plat_dev->dev, "create vcodec dir err:%d\n", > + dev_err(&vcodec_dev->plat_dev->dev, "create vdec dir err:%d\n", > IS_ERR(vcodec_dev->dbgfs.vcodec_root)); > > vcodec_root = vcodec_dev->dbgfs.vcodec_root; > @@ -196,18 +194,39 @@ void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev, bool is_encode) > debugfs_create_x32("mtk_vcodec_dbg", 0644, vcodec_root, &mtk_vcodec_dbg); > > vcodec_dev->dbgfs.inst_count = 0; > - if (is_encode) > - return; > - > INIT_LIST_HEAD(&vcodec_dev->dbgfs.dbgfs_head); > debugfs_create_file("vdec", 0200, vcodec_root, vcodec_dev, &vdec_fops); > mutex_init(&vcodec_dev->dbgfs.dbgfs_lock); > } > + > +static void mtk_vcodec_dbgfs_venc_init(struct mtk_vcodec_enc_dev *vcodec_dev) > +{ > + struct dentry *vcodec_root; > + > + vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-enc", NULL); > + if (IS_ERR(vcodec_dev->dbgfs.vcodec_root)) > + dev_err(&vcodec_dev->plat_dev->dev, "create venc dir err:%d\n", > + IS_ERR(vcodec_dev->dbgfs.vcodec_root)); > + > + vcodec_root = vcodec_dev->dbgfs.vcodec_root; > + debugfs_create_x32("mtk_v4l2_dbg_level", 0644, vcodec_root, &mtk_v4l2_dbg_level); > + debugfs_create_x32("mtk_vcodec_dbg", 0644, vcodec_root, &mtk_vcodec_dbg); > + > + vcodec_dev->dbgfs.inst_count = 0; > +} > + > +void mtk_vcodec_dbgfs_init(void *vcodec_dev, bool is_encode) > +{ > + if (is_encode) > + mtk_vcodec_dbgfs_venc_init(vcodec_dev); > + else > + mtk_vcodec_dbgfs_vdec_init(vcodec_dev); > +} > EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_init); > > -void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev) > +void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dbgfs *dbgfs) > { > - debugfs_remove_recursive(vcodec_dev->dbgfs.vcodec_root); > + debugfs_remove_recursive(dbgfs->vcodec_root); > } > EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_deinit); > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h > index 372413d590c5..073d2fedb54a 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h > @@ -7,7 +7,7 @@ > #ifndef __MTK_VCODEC_DBGFS_H__ > #define __MTK_VCODEC_DBGFS_H__ > > -struct mtk_vcodec_dev; > +struct mtk_vcodec_dec_dev; I'm far in the review to think about this, but have you considered using a shorter name, like mtk_vdec_dev ? That being said, I'm not requesting any changes, this can happen later (or never). Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > struct mtk_vcodec_dec_ctx; > > /* > @@ -51,23 +51,23 @@ struct mtk_vcodec_dbgfs { > > #if defined(CONFIG_DEBUG_FS) > void mtk_vcodec_dbgfs_create(struct mtk_vcodec_dec_ctx *ctx); > -void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dev *vcodec_dev, int ctx_id); > -void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev, bool is_encode); > -void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev); > +void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dec_dev *vcodec_dev, int ctx_id); > +void mtk_vcodec_dbgfs_init(void *vcodec_dev, bool is_encode); > +void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dbgfs *dbgfs); > #else > static inline void mtk_vcodec_dbgfs_create(struct mtk_vcodec_dec_ctx *ctx) > { > } > > -static inline void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dev *vcodec_dev, int ctx_id) > +static inline void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dec_dev *vcodec_dev, int ctx_id) > { > } > > -static inline void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev, bool is_encode) > +static inline void mtk_vcodec_dbgfs_init(void *vcodec_dev, bool is_encode) > { > } > > -static inline void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev) > +static inline void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dbgfs *dbgfs) > { > } > #endif > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > index 619ff3dd8d50..0363fec572e5 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > @@ -9,7 +9,7 @@ > #include <media/v4l2-mem2mem.h> > #include <media/videobuf2-dma-contig.h> > > -#include "mtk_vcodec_drv.h" > +#include "mtk_vcodec_dec_drv.h" > #include "mtk_vcodec_dec.h" > #include "mtk_vcodec_intr.h" > #include "mtk_vcodec_util.h" > @@ -890,7 +890,7 @@ void vb2ops_vdec_stop_streaming(struct vb2_queue *q) > static void m2mops_vdec_device_run(void *priv) > { > struct mtk_vcodec_dec_ctx *ctx = priv; > - struct mtk_vcodec_dev *dev = ctx->dev; > + struct mtk_vcodec_dec_dev *dev = ctx->dev; > > queue_work(dev->decode_workqueue, &ctx->decode_work); > } > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > index 5609fd3268f2..8e3aea9a3ab0 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > @@ -17,7 +17,6 @@ > #include <media/videobuf2-dma-contig.h> > #include <media/v4l2-device.h> > > -#include "mtk_vcodec_drv.h" > #include "mtk_vcodec_dec.h" > #include "mtk_vcodec_dec_hw.h" > #include "mtk_vcodec_dec_pm.h" > @@ -25,7 +24,7 @@ > #include "mtk_vcodec_util.h" > #include "mtk_vcodec_fw.h" > > -static int mtk_vcodec_get_hw_count(struct mtk_vcodec_dec_ctx *ctx, struct mtk_vcodec_dev *dev) > +static int mtk_vcodec_get_hw_count(struct mtk_vcodec_dec_ctx *ctx, struct mtk_vcodec_dec_dev *dev) > { > switch (dev->vdec_pdata->hw_arch) { > case MTK_VDEC_PURE_SINGLE_CORE: > @@ -40,7 +39,7 @@ static int mtk_vcodec_get_hw_count(struct mtk_vcodec_dec_ctx *ctx, struct mtk_vc > > static irqreturn_t mtk_vcodec_dec_irq_handler(int irq, void *priv) > { > - struct mtk_vcodec_dev *dev = priv; > + struct mtk_vcodec_dec_dev *dev = priv; > struct mtk_vcodec_dec_ctx *ctx; > u32 cg_status = 0; > unsigned int dec_done_status = 0; > @@ -75,7 +74,7 @@ static irqreturn_t mtk_vcodec_dec_irq_handler(int irq, void *priv) > return IRQ_HANDLED; > } > > -static int mtk_vcodec_get_reg_bases(struct mtk_vcodec_dev *dev) > +static int mtk_vcodec_get_reg_bases(struct mtk_vcodec_dec_dev *dev) > { > struct platform_device *pdev = dev->plat_dev; > int reg_num, i; > @@ -99,7 +98,7 @@ static int mtk_vcodec_get_reg_bases(struct mtk_vcodec_dev *dev) > return 0; > } > > -static int mtk_vcodec_init_dec_resources(struct mtk_vcodec_dev *dev) > +static int mtk_vcodec_init_dec_resources(struct mtk_vcodec_dec_dev *dev) > { > struct platform_device *pdev = dev->plat_dev; > int ret; > @@ -136,7 +135,7 @@ static int mtk_vcodec_init_dec_resources(struct mtk_vcodec_dev *dev) > > static int fops_vcodec_open(struct file *file) > { > - struct mtk_vcodec_dev *dev = video_drvdata(file); > + struct mtk_vcodec_dec_dev *dev = video_drvdata(file); > struct mtk_vcodec_dec_ctx *ctx = NULL; > int ret = 0, i, hw_count; > struct vb2_queue *src_vq; > @@ -233,7 +232,7 @@ static int fops_vcodec_open(struct file *file) > > static int fops_vcodec_release(struct file *file) > { > - struct mtk_vcodec_dev *dev = video_drvdata(file); > + struct mtk_vcodec_dec_dev *dev = video_drvdata(file); > struct mtk_vcodec_dec_ctx *ctx = fh_to_dec_ctx(file->private_data); > > mtk_v4l2_vdec_dbg(0, ctx, "[%d] decoder", ctx->id); > @@ -270,7 +269,7 @@ static const struct v4l2_file_operations mtk_vcodec_fops = { > > static int mtk_vcodec_probe(struct platform_device *pdev) > { > - struct mtk_vcodec_dev *dev; > + struct mtk_vcodec_dec_dev *dev; > struct video_device *vfd_dec; > phandle rproc_phandle; > enum mtk_vcodec_fw_type fw_type; > @@ -477,7 +476,7 @@ MODULE_DEVICE_TABLE(of, mtk_vcodec_match); > > static void mtk_vcodec_dec_remove(struct platform_device *pdev) > { > - struct mtk_vcodec_dev *dev = platform_get_drvdata(pdev); > + struct mtk_vcodec_dec_dev *dev = platform_get_drvdata(pdev); > > destroy_workqueue(dev->decode_workqueue); > > @@ -493,7 +492,7 @@ static void mtk_vcodec_dec_remove(struct platform_device *pdev) > if (dev->vfd_dec) > video_unregister_device(dev->vfd_dec); > > - mtk_vcodec_dbgfs_deinit(dev); > + mtk_vcodec_dbgfs_deinit(&dev->dbgfs); > v4l2_device_unregister(&dev->v4l2_dev); > if (!dev->vdec_pdata->is_subdev_supported) > pm_runtime_disable(dev->pm.dev); > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > index 94870b651919..a18ba8f32d41 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > @@ -8,9 +8,49 @@ > #define _MTK_VCODEC_DEC_DRV_H_ > > #include "mtk_vcodec_com_drv.h" > +#include "mtk_vcodec_dbgfs.h" > #include "mtk_vcodec_fw_priv.h" > +#include "mtk_vcodec_util.h" > #include "vdec_msg_queue.h" > > +#define MTK_VCODEC_DEC_NAME "mtk-vcodec-dec" > + > +#define IS_VDEC_LAT_ARCH(hw_arch) ((hw_arch) >= MTK_VDEC_LAT_SINGLE_CORE) > +#define IS_VDEC_INNER_RACING(capability) ((capability) & MTK_VCODEC_INNER_RACING) > + > +/* > + * struct mtk_vdec_format_types - Structure used to get supported > + * format types according to decoder capability > + */ > +enum mtk_vdec_format_types { > + MTK_VDEC_FORMAT_MM21 = 0x20, > + MTK_VDEC_FORMAT_MT21C = 0x40, > + MTK_VDEC_FORMAT_H264_SLICE = 0x100, > + MTK_VDEC_FORMAT_VP8_FRAME = 0x200, > + MTK_VDEC_FORMAT_VP9_FRAME = 0x400, > + MTK_VDEC_FORMAT_AV1_FRAME = 0x800, > + MTK_VDEC_FORMAT_HEVC_FRAME = 0x1000, > + MTK_VCODEC_INNER_RACING = 0x20000, > +}; > + > +/* > + * enum mtk_vdec_hw_count - Supported hardware count > + */ > +enum mtk_vdec_hw_count { > + MTK_VDEC_NO_HW = 0, > + MTK_VDEC_ONE_CORE, > + MTK_VDEC_ONE_LAT_ONE_CORE, > + MTK_VDEC_MAX_HW_COUNT, > +}; > + > +/* > + * enum mtk_vdec_hw_arch - Used to separate different hardware architecture > + */ > +enum mtk_vdec_hw_arch { > + MTK_VDEC_PURE_SINGLE_CORE, > + MTK_VDEC_LAT_SINGLE_CORE, > +}; > + > /** > * struct vdec_pic_info - picture size information > * @pic_w: picture width > @@ -33,24 +73,54 @@ struct vdec_pic_info { > unsigned int reserved; > }; > > -/* > - * enum mtk_vdec_hw_id - Hardware index used to separate > - * different hardware > +/** > + * struct mtk_vcodec_dec_pdata - compatible data for each IC > + * @init_vdec_params: init vdec params > + * @ctrls_setup: init vcodec dec ctrls > + * @worker: worker to start a decode job > + * @flush_decoder: function that flushes the decoder > + * @get_cap_buffer: get capture buffer from capture queue > + * @cap_to_disp: put capture buffer to disp list for lat and core arch > + * @vdec_vb2_ops: struct vb2_ops > + * > + * @vdec_formats: supported video decoder formats > + * @num_formats: count of video decoder formats > + * @default_out_fmt: default output buffer format > + * @default_cap_fmt: default capture buffer format > + * > + * @hw_arch: hardware arch is used to separate pure_sin_core and lat_sin_core > + * > + * @is_subdev_supported: whether support parent-node architecture(subdev) > + * @uses_stateless_api: whether the decoder uses the stateless API with requests > */ > -enum mtk_vdec_hw_id { > - MTK_VDEC_CORE, > - MTK_VDEC_LAT0, > - MTK_VDEC_LAT1, > - MTK_VDEC_LAT_SOC, > - MTK_VDEC_HW_MAX, > +struct mtk_vcodec_dec_pdata { > + void (*init_vdec_params)(struct mtk_vcodec_dec_ctx *ctx); > + int (*ctrls_setup)(struct mtk_vcodec_dec_ctx *ctx); > + void (*worker)(struct work_struct *work); > + int (*flush_decoder)(struct mtk_vcodec_dec_ctx *ctx); > + struct vdec_fb *(*get_cap_buffer)(struct mtk_vcodec_dec_ctx *ctx); > + void (*cap_to_disp)(struct mtk_vcodec_dec_ctx *ctx, int error, > + struct media_request *src_buf_req); > + > + const struct vb2_ops *vdec_vb2_ops; > + > + const struct mtk_video_fmt *vdec_formats; > + const int *num_formats; > + const struct mtk_video_fmt *default_out_fmt; > + const struct mtk_video_fmt *default_cap_fmt; > + > + enum mtk_vdec_hw_arch hw_arch; > + > + bool is_subdev_supported; > + bool uses_stateless_api; > }; > > /** > * struct mtk_vcodec_dec_ctx - Context (instance) private data. > * > * @type: type of the instance - decoder or encoder > - * @dev: pointer to the mtk_vcodec_dev of the device > - * @list: link to ctx_list of mtk_vcodec_dev > + * @dev: pointer to the mtk_vcodec_dec_dev of the device > + * @list: link to ctx_list of mtk_vcodec_dec_dev > * > * @fh: struct v4l2_fh > * @m2m_ctx: pointer to the v4l2_m2m_ctx of the context > @@ -95,7 +165,7 @@ enum mtk_vdec_hw_id { > */ > struct mtk_vcodec_dec_ctx { > enum mtk_instance_type type; > - struct mtk_vcodec_dev *dev; > + struct mtk_vcodec_dec_dev *dev; > struct list_head list; > > struct v4l2_fh fh; > @@ -136,6 +206,84 @@ struct mtk_vcodec_dec_ctx { > struct vdec_msg_queue msg_queue; > }; > > +/** > + * struct mtk_vcodec_dec_dev - driver data > + * @v4l2_dev: V4L2 device to register video devices for. > + * @vfd_dec: Video device for decoder > + * @mdev_dec: Media device for decoder > + * > + * @m2m_dev_dec: m2m device for decoder > + * @plat_dev: platform device > + * @ctx_list: list of struct mtk_vcodec_ctx > + * @curr_ctx: The context that is waiting for codec hardware > + * > + * @reg_base: Mapped address of MTK Vcodec registers. > + * @vdec_pdata: decoder IC-specific data > + * > + * @fw_handler: used to communicate with the firmware. > + * @id_counter: used to identify current opened instance > + * > + * @dec_mutex: decoder hardware lock > + * @dev_mutex: video_device lock > + * @decode_workqueue: decode work queue > + * > + * @irqlock: protect data access by irq handler and work thread > + * @dec_irq: decoder irq resource > + * > + * @pm: power management control > + * @dec_capability: used to identify decode capability, ex: 4k > + * > + * @core_workqueue: queue used for core hardware decode > + * > + * @subdev_dev: subdev hardware device > + * @subdev_prob_done: check whether all used hw device is prob done > + * @subdev_bitmap: used to record hardware is ready or not > + * > + * @dec_active_cnt: used to mark whether need to record register value > + * @vdec_racing_info: record register value > + * @dec_racing_info_mutex: mutex lock used for inner racing mode > + * @dbgfs: debug log related information > + */ > +struct mtk_vcodec_dec_dev { > + struct v4l2_device v4l2_dev; > + struct video_device *vfd_dec; > + struct media_device mdev_dec; > + > + struct v4l2_m2m_dev *m2m_dev_dec; > + struct platform_device *plat_dev; > + struct list_head ctx_list; > + struct mtk_vcodec_dec_ctx *curr_ctx; > + > + void __iomem *reg_base[NUM_MAX_VCODEC_REG_BASE]; > + const struct mtk_vcodec_dec_pdata *vdec_pdata; > + > + struct mtk_vcodec_fw *fw_handler; > + unsigned long id_counter; > + > + /* decoder hardware mutex lock */ > + struct mutex dec_mutex[MTK_VDEC_HW_MAX]; > + struct mutex dev_mutex; > + struct workqueue_struct *decode_workqueue; > + > + spinlock_t irqlock; > + int dec_irq; > + > + struct mtk_vcodec_pm pm; > + unsigned int dec_capability; > + > + struct workqueue_struct *core_workqueue; > + > + void *subdev_dev[MTK_VDEC_HW_MAX]; > + int (*subdev_prob_done)(struct mtk_vcodec_dec_dev *vdec_dev); > + DECLARE_BITMAP(subdev_bitmap, MTK_VDEC_HW_MAX); > + > + atomic_t dec_active_cnt; > + u32 vdec_racing_info[132]; > + /* Protects access to vdec_racing_info data */ > + struct mutex dec_racing_info_mutex; > + struct mtk_vcodec_dbgfs dbgfs; > +}; > + > static inline struct mtk_vcodec_dec_ctx *fh_to_dec_ctx(struct v4l2_fh *fh) > { > return container_of(fh, struct mtk_vcodec_dec_ctx, fh); > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > index dde0894f2ab0..23c19efa3cf6 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > @@ -12,7 +12,6 @@ > #include <linux/pm_runtime.h> > #include <linux/slab.h> > > -#include "mtk_vcodec_drv.h" > #include "mtk_vcodec_dec.h" > #include "mtk_vcodec_dec_hw.h" > #include "mtk_vcodec_dec_pm.h" > @@ -36,7 +35,7 @@ static const struct of_device_id mtk_vdec_hw_match[] = { > }; > MODULE_DEVICE_TABLE(of, mtk_vdec_hw_match); > > -static int mtk_vdec_hw_prob_done(struct mtk_vcodec_dev *vdec_dev) > +static int mtk_vdec_hw_prob_done(struct mtk_vcodec_dec_dev *vdec_dev) > { > struct platform_device *pdev = vdec_dev->plat_dev; > struct device_node *subdev_node; > @@ -123,7 +122,7 @@ static int mtk_vdec_hw_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > struct mtk_vdec_hw_dev *subdev_dev; > - struct mtk_vcodec_dev *main_dev; > + struct mtk_vcodec_dec_dev *main_dev; > const struct of_device_id *of_id; > int hw_idx; > int ret; > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.h > index d62c7f961cfa..2b33f00e931e 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.h > @@ -10,7 +10,7 @@ > #include <linux/io.h> > #include <linux/platform_device.h> > > -#include "mtk_vcodec_drv.h" > +#include "mtk_vcodec_dec_drv.h" > > #define VDEC_HW_ACTIVE 0x10 > #define VDEC_IRQ_CFG 0x11 > @@ -45,7 +45,7 @@ enum mtk_vdec_hw_reg_idx { > */ > struct mtk_vdec_hw_dev { > struct platform_device *plat_dev; > - struct mtk_vcodec_dev *main_dev; > + struct mtk_vcodec_dec_dev *main_dev; > void __iomem *reg_base[VDEC_HW_MAX]; > > struct mtk_vcodec_dec_ctx *curr_ctx; > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > index 29ef00c4a326..ed1f503a944e 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > @@ -107,7 +107,7 @@ static void mtk_vcodec_dec_clock_off(struct mtk_vcodec_pm *pm) > clk_disable_unprepare(dec_clk->clk_info[i].vcodec_clk); > } > > -static void mtk_vcodec_dec_enable_irq(struct mtk_vcodec_dev *vdec_dev, int hw_idx) > +static void mtk_vcodec_dec_enable_irq(struct mtk_vcodec_dec_dev *vdec_dev, int hw_idx) > { > struct mtk_vdec_hw_dev *subdev_dev; > > @@ -125,7 +125,7 @@ static void mtk_vcodec_dec_enable_irq(struct mtk_vcodec_dev *vdec_dev, int hw_id > } > } > > -static void mtk_vcodec_dec_disable_irq(struct mtk_vcodec_dev *vdec_dev, int hw_idx) > +static void mtk_vcodec_dec_disable_irq(struct mtk_vcodec_dec_dev *vdec_dev, int hw_idx) > { > struct mtk_vdec_hw_dev *subdev_dev; > > @@ -171,7 +171,7 @@ static void mtk_vcodec_record_racing_info(struct mtk_vcodec_dec_ctx *ctx) > mutex_unlock(&ctx->dev->dec_racing_info_mutex); > } > > -static struct mtk_vcodec_pm *mtk_vcodec_dec_get_pm(struct mtk_vcodec_dev *vdec_dev, > +static struct mtk_vcodec_pm *mtk_vcodec_dec_get_pm(struct mtk_vcodec_dec_dev *vdec_dev, > int hw_idx) > { > struct mtk_vdec_hw_dev *subdev_dev; > @@ -191,7 +191,7 @@ static struct mtk_vcodec_pm *mtk_vcodec_dec_get_pm(struct mtk_vcodec_dev *vdec_d > return &vdec_dev->pm; > } > > -static void mtk_vcodec_dec_child_dev_on(struct mtk_vcodec_dev *vdec_dev, > +static void mtk_vcodec_dec_child_dev_on(struct mtk_vcodec_dec_dev *vdec_dev, > int hw_idx) > { > struct mtk_vcodec_pm *pm; > @@ -211,7 +211,7 @@ static void mtk_vcodec_dec_child_dev_on(struct mtk_vcodec_dev *vdec_dev, > } > } > > -static void mtk_vcodec_dec_child_dev_off(struct mtk_vcodec_dev *vdec_dev, > +static void mtk_vcodec_dec_child_dev_off(struct mtk_vcodec_dec_dev *vdec_dev, > int hw_idx) > { > struct mtk_vcodec_pm *pm; > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.h > index f6c68e57bcc1..87a50d589d42 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.h > @@ -7,7 +7,7 @@ > #ifndef _MTK_VCODEC_DEC_PM_H_ > #define _MTK_VCODEC_DEC_PM_H_ > > -#include "mtk_vcodec_drv.h" > +#include "mtk_vcodec_dec_drv.h" > > int mtk_vcodec_init_dec_clk(struct platform_device *pdev, struct mtk_vcodec_pm *pm); > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > index 93230fe7ab97..459e74a46737 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > @@ -4,7 +4,6 @@ > #include <media/v4l2-mem2mem.h> > #include <media/videobuf2-dma-contig.h> > > -#include "mtk_vcodec_drv.h" > #include "mtk_vcodec_dec.h" > #include "mtk_vcodec_intr.h" > #include "mtk_vcodec_util.h" > @@ -279,7 +278,7 @@ static void mtk_vdec_worker(struct work_struct *work) > { > struct mtk_vcodec_dec_ctx *ctx = > container_of(work, struct mtk_vcodec_dec_ctx, decode_work); > - struct mtk_vcodec_dev *dev = ctx->dev; > + struct mtk_vcodec_dec_dev *dev = ctx->dev; > struct vb2_v4l2_buffer *src_buf, *dst_buf; > struct mtk_vcodec_mem buf; > struct vdec_fb *pfb; > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > index 64e9dfd0fcb5..6268a39c2bb3 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > @@ -6,7 +6,6 @@ > #include <media/v4l2-mem2mem.h> > #include <linux/module.h> > > -#include "mtk_vcodec_drv.h" > #include "mtk_vcodec_dec.h" > #include "mtk_vcodec_intr.h" > #include "mtk_vcodec_util.h" > @@ -288,7 +287,7 @@ static void mtk_vdec_worker(struct work_struct *work) > { > struct mtk_vcodec_dec_ctx *ctx = > container_of(work, struct mtk_vcodec_dec_ctx, decode_work); > - struct mtk_vcodec_dev *dev = ctx->dev; > + struct mtk_vcodec_dec_dev *dev = ctx->dev; > struct vb2_v4l2_buffer *vb2_v4l2_src; > struct vb2_buffer *vb2_src; > struct mtk_vcodec_mem *bs_src; > @@ -444,7 +443,7 @@ const struct media_device_ops mtk_vcodec_media_ops = { > static void mtk_vcodec_add_formats(unsigned int fourcc, > struct mtk_vcodec_dec_ctx *ctx) > { > - struct mtk_vcodec_dev *dev = ctx->dev; > + struct mtk_vcodec_dec_dev *dev = ctx->dev; > const struct mtk_vcodec_dec_pdata *pdata = dev->vdec_pdata; > int count_formats = *pdata->num_formats; > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h > deleted file mode 100644 > index 76db7770d981..000000000000 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h > +++ /dev/null > @@ -1,295 +0,0 @@ > -/* SPDX-License-Identifier: GPL-2.0 */ > -/* > -* Copyright (c) 2016 MediaTek Inc. > -* Author: PC Chen <pc.chen@mediatek.com> > -* Tiffany Lin <tiffany.lin@mediatek.com> > -*/ > - > -#ifndef _MTK_VCODEC_DRV_H_ > -#define _MTK_VCODEC_DRV_H_ > - > -#include <linux/platform_device.h> > -#include <linux/videodev2.h> > -#include <media/v4l2-ctrls.h> > -#include <media/v4l2-device.h> > -#include <media/v4l2-ioctl.h> > -#include <media/v4l2-mem2mem.h> > -#include <media/videobuf2-core.h> > - > -#include "mtk_vcodec_dbgfs.h" > -#include "mtk_vcodec_dec_drv.h" > -#include "mtk_vcodec_enc_drv.h" > -#include "mtk_vcodec_util.h" > -#include "vdec_msg_queue.h" > - > -#define MTK_VCODEC_DEC_NAME "mtk-vcodec-dec" > -#define MTK_VCODEC_ENC_NAME "mtk-vcodec-enc" > - > -#define MTK_V4L2_BENCHMARK 0 > -#define WAIT_INTR_TIMEOUT_MS 1000 > -#define IS_VDEC_LAT_ARCH(hw_arch) ((hw_arch) >= MTK_VDEC_LAT_SINGLE_CORE) > -#define IS_VDEC_INNER_RACING(capability) ((capability) & MTK_VCODEC_INNER_RACING) > - > -/* > - * enum mtk_hw_reg_idx - MTK hw register base index > - */ > -enum mtk_hw_reg_idx { > - VDEC_SYS, > - VDEC_MISC, > - VDEC_LD, > - VDEC_TOP, > - VDEC_CM, > - VDEC_AD, > - VDEC_AV, > - VDEC_PP, > - VDEC_HWD, > - VDEC_HWQ, > - VDEC_HWB, > - VDEC_HWG, > - NUM_MAX_VDEC_REG_BASE, > - /* h264 encoder */ > - VENC_SYS = NUM_MAX_VDEC_REG_BASE, > - /* vp8 encoder */ > - VENC_LT_SYS, > - NUM_MAX_VCODEC_REG_BASE > -}; > - > - > - > -/* > - * enum mtk_vdec_hw_count - Supported hardware count > - */ > -enum mtk_vdec_hw_count { > - MTK_VDEC_NO_HW = 0, > - MTK_VDEC_ONE_CORE, > - MTK_VDEC_ONE_LAT_ONE_CORE, > - MTK_VDEC_MAX_HW_COUNT, > -}; > - > -/* > - * enum mtk_q_type - Type of queue > - */ > -enum mtk_q_type { > - MTK_Q_DATA_SRC = 0, > - MTK_Q_DATA_DST = 1, > -}; > - > - > -/* > - * struct mtk_vcodec_clk_info - Structure used to store clock name > - */ > -struct mtk_vcodec_clk_info { > - const char *clk_name; > - struct clk *vcodec_clk; > -}; > - > -/* > - * struct mtk_vcodec_clk - Structure used to store vcodec clock information > - */ > -struct mtk_vcodec_clk { > - struct mtk_vcodec_clk_info *clk_info; > - int clk_num; > -}; > - > -/* > - * struct mtk_vcodec_pm - Power management data structure > - */ > -struct mtk_vcodec_pm { > - struct mtk_vcodec_clk vdec_clk; > - struct mtk_vcodec_clk venc_clk; > - struct device *dev; > -}; > - > -/* > - * enum mtk_vdec_hw_arch - Used to separate different hardware architecture > - */ > -enum mtk_vdec_hw_arch { > - MTK_VDEC_PURE_SINGLE_CORE, > - MTK_VDEC_LAT_SINGLE_CORE, > -}; > - > -/* > - * struct mtk_vdec_format_types - Structure used to get supported > - * format types according to decoder capability > - */ > -enum mtk_vdec_format_types { > - MTK_VDEC_FORMAT_MM21 = 0x20, > - MTK_VDEC_FORMAT_MT21C = 0x40, > - MTK_VDEC_FORMAT_H264_SLICE = 0x100, > - MTK_VDEC_FORMAT_VP8_FRAME = 0x200, > - MTK_VDEC_FORMAT_VP9_FRAME = 0x400, > - MTK_VDEC_FORMAT_AV1_FRAME = 0x800, > - MTK_VDEC_FORMAT_HEVC_FRAME = 0x1000, > - MTK_VCODEC_INNER_RACING = 0x20000, > -}; > - > -/** > - * struct mtk_vcodec_dec_pdata - compatible data for each IC > - * @init_vdec_params: init vdec params > - * @ctrls_setup: init vcodec dec ctrls > - * @worker: worker to start a decode job > - * @flush_decoder: function that flushes the decoder > - * @get_cap_buffer: get capture buffer from capture queue > - * @cap_to_disp: put capture buffer to disp list for lat and core arch > - * @vdec_vb2_ops: struct vb2_ops > - * > - * @vdec_formats: supported video decoder formats > - * @num_formats: count of video decoder formats > - * @default_out_fmt: default output buffer format > - * @default_cap_fmt: default capture buffer format > - * > - * @hw_arch: hardware arch is used to separate pure_sin_core and lat_sin_core > - * > - * @is_subdev_supported: whether support parent-node architecture(subdev) > - * @uses_stateless_api: whether the decoder uses the stateless API with requests > - */ > - > -struct mtk_vcodec_dec_pdata { > - void (*init_vdec_params)(struct mtk_vcodec_dec_ctx *ctx); > - int (*ctrls_setup)(struct mtk_vcodec_dec_ctx *ctx); > - void (*worker)(struct work_struct *work); > - int (*flush_decoder)(struct mtk_vcodec_dec_ctx *ctx); > - struct vdec_fb *(*get_cap_buffer)(struct mtk_vcodec_dec_ctx *ctx); > - void (*cap_to_disp)(struct mtk_vcodec_dec_ctx *ctx, int error, > - struct media_request *src_buf_req); > - > - struct vb2_ops *vdec_vb2_ops; > - > - const struct mtk_video_fmt *vdec_formats; > - const int *num_formats; > - const struct mtk_video_fmt *default_out_fmt; > - const struct mtk_video_fmt *default_cap_fmt; > - > - enum mtk_vdec_hw_arch hw_arch; > - > - bool is_subdev_supported; > - bool uses_stateless_api; > -}; > - > -/** > - * struct mtk_vcodec_enc_pdata - compatible data for each IC > - * > - * @uses_ext: whether the encoder uses the extended firmware messaging format > - * @min_bitrate: minimum supported encoding bitrate > - * @max_bitrate: maximum supported encoding bitrate > - * @capture_formats: array of supported capture formats > - * @num_capture_formats: number of entries in capture_formats > - * @output_formats: array of supported output formats > - * @num_output_formats: number of entries in output_formats > - * @core_id: stand for h264 or vp8 encode index > - * @uses_34bit: whether the encoder uses 34-bit iova > - */ > -struct mtk_vcodec_enc_pdata { > - bool uses_ext; > - unsigned long min_bitrate; > - unsigned long max_bitrate; > - const struct mtk_video_fmt *capture_formats; > - size_t num_capture_formats; > - const struct mtk_video_fmt *output_formats; > - size_t num_output_formats; > - int core_id; > - bool uses_34bit; > -}; > - > -#define MTK_ENC_CTX_IS_EXT(ctx) ((ctx)->dev->venc_pdata->uses_ext) > -#define MTK_ENC_IOVA_IS_34BIT(ctx) ((ctx)->dev->venc_pdata->uses_34bit) > - > -/** > - * struct mtk_vcodec_dev - driver data > - * @v4l2_dev: V4L2 device to register video devices for. > - * @vfd_dec: Video device for decoder > - * @mdev_dec: Media device for decoder > - * @vfd_enc: Video device for encoder. > - * > - * @m2m_dev_dec: m2m device for decoder > - * @m2m_dev_enc: m2m device for encoder. > - * @plat_dev: platform device > - * @ctx_list: list of struct mtk_vcodec_dec_ctx > - * @irqlock: protect data access by irq handler and work thread > - * @curr_ctx: The context that is waiting for codec hardware > - * @curr_enc_ctx: The encoder context that is waiting for codec hardware > - * > - * @reg_base: Mapped address of MTK Vcodec registers. > - * @vdec_pdata: decoder IC-specific data > - * @venc_pdata: encoder IC-specific data > - * > - * @fw_handler: used to communicate with the firmware. > - * @id_counter: used to identify current opened instance > - * > - * @decode_workqueue: decode work queue > - * @encode_workqueue: encode work queue > - * > - * @dev_mutex: video_device lock > - * > - * @dec_irq: decoder irq resource > - * @enc_irq: h264 encoder irq resource > - * > - * @dec_mutex: decoder hardware lock > - * @enc_mutex: encoder hardware lock. > - * > - * @pm: power management control > - * @dec_capability: used to identify decode capability, ex: 4k > - * @enc_capability: used to identify encode capability > - * > - * @core_workqueue: queue used for core hardware decode > - * > - * @subdev_dev: subdev hardware device > - * @subdev_prob_done: check whether all used hw device is prob done > - * @subdev_bitmap: used to record hardware is ready or not > - * > - * @dec_active_cnt: used to mark whether need to record register value > - * @vdec_racing_info: record register value > - * @dec_racing_info_mutex: mutex lock used for inner racing mode > - * @dbgfs: debug log related information > - */ > -struct mtk_vcodec_dev { > - struct v4l2_device v4l2_dev; > - struct video_device *vfd_dec; > - struct media_device mdev_dec; > - struct video_device *vfd_enc; > - > - struct v4l2_m2m_dev *m2m_dev_dec; > - struct v4l2_m2m_dev *m2m_dev_enc; > - struct platform_device *plat_dev; > - struct list_head ctx_list; > - spinlock_t irqlock; > - struct mtk_vcodec_dec_ctx *curr_ctx; > - struct mtk_vcodec_enc_ctx *curr_enc_ctx; > - void __iomem *reg_base[NUM_MAX_VCODEC_REG_BASE]; > - const struct mtk_vcodec_dec_pdata *vdec_pdata; > - const struct mtk_vcodec_enc_pdata *venc_pdata; > - > - struct mtk_vcodec_fw *fw_handler; > - > - unsigned long id_counter; > - > - struct workqueue_struct *decode_workqueue; > - struct workqueue_struct *encode_workqueue; > - struct mutex dev_mutex; > - > - int dec_irq; > - int enc_irq; > - > - /* decoder hardware mutex lock */ > - struct mutex dec_mutex[MTK_VDEC_HW_MAX]; > - struct mutex enc_mutex; > - > - struct mtk_vcodec_pm pm; > - unsigned int dec_capability; > - unsigned int enc_capability; > - > - struct workqueue_struct *core_workqueue; > - > - void *subdev_dev[MTK_VDEC_HW_MAX]; > - int (*subdev_prob_done)(struct mtk_vcodec_dev *vdec_dev); > - DECLARE_BITMAP(subdev_bitmap, MTK_VDEC_HW_MAX); > - > - atomic_t dec_active_cnt; > - u32 vdec_racing_info[132]; > - /* Protects access to vdec_racing_info data */ > - struct mutex dec_racing_info_mutex; > - > - struct mtk_vcodec_dbgfs dbgfs; > -}; > - > -#endif /* _MTK_VCODEC_DRV_H_ */ > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > index deabf012848e..85dabb20fb11 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > @@ -10,7 +10,6 @@ > #include <media/videobuf2-dma-contig.h> > #include <linux/pm_runtime.h> > > -#include "mtk_vcodec_drv.h" > #include "mtk_vcodec_enc.h" > #include "mtk_vcodec_intr.h" > #include "mtk_vcodec_util.h" > @@ -1436,7 +1435,7 @@ int mtk_vcodec_enc_queue_init(void *priv, struct vb2_queue *src_vq, > > int mtk_venc_unlock(struct mtk_vcodec_enc_ctx *ctx) > { > - struct mtk_vcodec_dev *dev = ctx->dev; > + struct mtk_vcodec_enc_dev *dev = ctx->dev; > > mutex_unlock(&dev->enc_mutex); > return 0; > @@ -1444,7 +1443,7 @@ int mtk_venc_unlock(struct mtk_vcodec_enc_ctx *ctx) > > int mtk_venc_lock(struct mtk_vcodec_enc_ctx *ctx) > { > - struct mtk_vcodec_dev *dev = ctx->dev; > + struct mtk_vcodec_enc_dev *dev = ctx->dev; > > mutex_lock(&dev->enc_mutex); > return 0; > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > index c9b6ce9dfa2d..0830708de32f 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > @@ -16,7 +16,6 @@ > #include <media/v4l2-mem2mem.h> > #include <media/videobuf2-dma-contig.h> > > -#include "mtk_vcodec_drv.h" > #include "mtk_vcodec_enc.h" > #include "mtk_vcodec_enc_pm.h" > #include "mtk_vcodec_intr.h" > @@ -85,14 +84,14 @@ static void clean_irq_status(unsigned int irq_status, void __iomem *addr) > } > static irqreturn_t mtk_vcodec_enc_irq_handler(int irq, void *priv) > { > - struct mtk_vcodec_dev *dev = priv; > + struct mtk_vcodec_enc_dev *dev = priv; > struct mtk_vcodec_enc_ctx *ctx; > unsigned long flags; > void __iomem *addr; > int core_id; > > spin_lock_irqsave(&dev->irqlock, flags); > - ctx = dev->curr_enc_ctx; > + ctx = dev->curr_ctx; > spin_unlock_irqrestore(&dev->irqlock, flags); > > core_id = dev->venc_pdata->core_id; > @@ -116,7 +115,7 @@ static irqreturn_t mtk_vcodec_enc_irq_handler(int irq, void *priv) > > static int fops_vcodec_open(struct file *file) > { > - struct mtk_vcodec_dev *dev = video_drvdata(file); > + struct mtk_vcodec_enc_dev *dev = video_drvdata(file); > struct mtk_vcodec_enc_ctx *ctx = NULL; > int ret = 0; > struct vb2_queue *src_vq; > @@ -203,7 +202,7 @@ static int fops_vcodec_open(struct file *file) > > static int fops_vcodec_release(struct file *file) > { > - struct mtk_vcodec_dev *dev = video_drvdata(file); > + struct mtk_vcodec_enc_dev *dev = video_drvdata(file); > struct mtk_vcodec_enc_ctx *ctx = fh_to_enc_ctx(file->private_data); > > mtk_v4l2_venc_dbg(1, ctx, "[%d] encoder", ctx->id); > @@ -232,7 +231,7 @@ static const struct v4l2_file_operations mtk_vcodec_fops = { > > static int mtk_vcodec_probe(struct platform_device *pdev) > { > - struct mtk_vcodec_dev *dev; > + struct mtk_vcodec_enc_dev *dev; > struct video_device *vfd_enc; > phandle rproc_phandle; > enum mtk_vcodec_fw_type fw_type; > @@ -454,7 +453,7 @@ MODULE_DEVICE_TABLE(of, mtk_vcodec_enc_match); > > static void mtk_vcodec_enc_remove(struct platform_device *pdev) > { > - struct mtk_vcodec_dev *dev = platform_get_drvdata(pdev); > + struct mtk_vcodec_enc_dev *dev = platform_get_drvdata(pdev); > > destroy_workqueue(dev->encode_workqueue); > if (dev->m2m_dev_enc) > @@ -463,7 +462,7 @@ static void mtk_vcodec_enc_remove(struct platform_device *pdev) > if (dev->vfd_enc) > video_unregister_device(dev->vfd_enc); > > - mtk_vcodec_dbgfs_deinit(dev); > + mtk_vcodec_dbgfs_deinit(&dev->dbgfs); > v4l2_device_unregister(&dev->v4l2_dev); > pm_runtime_disable(dev->pm.dev); > mtk_vcodec_fw_release(dev->fw_handler); > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > index 6aa4afe5b796..a88ef9078848 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > @@ -8,7 +8,39 @@ > #define _MTK_VCODEC_ENC_DRV_H_ > > #include "mtk_vcodec_com_drv.h" > +#include "mtk_vcodec_dbgfs.h" > #include "mtk_vcodec_fw_priv.h" > +#include "mtk_vcodec_util.h" > + > +#define MTK_VCODEC_ENC_NAME "mtk-vcodec-enc" > + > +#define MTK_ENC_CTX_IS_EXT(ctx) ((ctx)->dev->venc_pdata->uses_ext) > +#define MTK_ENC_IOVA_IS_34BIT(ctx) ((ctx)->dev->venc_pdata->uses_34bit) > + > +/** > + * struct mtk_vcodec_enc_pdata - compatible data for each IC > + * > + * @uses_ext: whether the encoder uses the extended firmware messaging format > + * @min_bitrate: minimum supported encoding bitrate > + * @max_bitrate: maximum supported encoding bitrate > + * @capture_formats: array of supported capture formats > + * @num_capture_formats: number of entries in capture_formats > + * @output_formats: array of supported output formats > + * @num_output_formats: number of entries in output_formats > + * @core_id: stand for h264 or vp8 encode index > + * @uses_34bit: whether the encoder uses 34-bit iova > + */ > +struct mtk_vcodec_enc_pdata { > + bool uses_ext; > + unsigned long min_bitrate; > + unsigned long max_bitrate; > + const struct mtk_video_fmt *capture_formats; > + size_t num_capture_formats; > + const struct mtk_video_fmt *output_formats; > + size_t num_output_formats; > + int core_id; > + bool uses_34bit; > +}; > > /* > * enum mtk_encode_param - General encoding parameters type > @@ -61,8 +93,8 @@ struct mtk_enc_params { > * struct mtk_vcodec_enc_ctx - Context (instance) private data. > * > * @type: type of the instance - decoder or encoder > - * @dev: pointer to the mtk_vcodec_dev of the device > - * @list: link to ctx_list of mtk_vcodec_dev > + * @dev: pointer to the mtk_vcodec_enc_dev of the device > + * @list: link to ctx_list of mtk_vcodec_enc_dev > * > * @fh: struct v4l2_fh > * @m2m_ctx: pointer to the v4l2_m2m_ctx of the context > @@ -101,7 +133,7 @@ struct mtk_enc_params { > */ > struct mtk_vcodec_enc_ctx { > enum mtk_instance_type type; > - struct mtk_vcodec_dev *dev; > + struct mtk_vcodec_enc_dev *dev; > struct list_head list; > > struct v4l2_fh fh; > @@ -136,6 +168,61 @@ struct mtk_vcodec_enc_ctx { > struct mutex q_mutex; > }; > > +/** > + * struct mtk_vcodec_enc_dev - driver data > + * @v4l2_dev: V4L2 device to register video devices for. > + * @vfd_enc: Video device for encoder. > + * > + * @m2m_dev_enc: m2m device for encoder. > + * @plat_dev: platform device > + * @ctx_list: list of struct mtk_vcodec_ctx > + * @curr_ctx: The context that is waiting for codec hardware > + * > + * @reg_base: Mapped address of MTK Vcodec registers. > + * @venc_pdata: encoder IC-specific data > + * > + * @fw_handler: used to communicate with the firmware. > + * @id_counter: used to identify current opened instance > + * > + * @enc_mutex: encoder hardware lock. > + * @dev_mutex: video_device lock > + * @encode_workqueue: encode work queue > + * > + * @enc_irq: h264 encoder irq resource > + * @irqlock: protect data access by irq handler and work thread > + * > + * @pm: power management control > + * @enc_capability: used to identify encode capability > + * @dbgfs: debug log related information > + */ > +struct mtk_vcodec_enc_dev { > + struct v4l2_device v4l2_dev; > + struct video_device *vfd_enc; > + > + struct v4l2_m2m_dev *m2m_dev_enc; > + struct platform_device *plat_dev; > + struct list_head ctx_list; > + struct mtk_vcodec_enc_ctx *curr_ctx; > + > + void __iomem *reg_base[NUM_MAX_VCODEC_REG_BASE]; > + const struct mtk_vcodec_enc_pdata *venc_pdata; > + > + struct mtk_vcodec_fw *fw_handler; > + unsigned long id_counter; > + > + /* encoder hardware mutex lock */ > + struct mutex enc_mutex; > + struct mutex dev_mutex; > + struct workqueue_struct *encode_workqueue; > + > + int enc_irq; > + spinlock_t irqlock; > + > + struct mtk_vcodec_pm pm; > + unsigned int enc_capability; > + struct mtk_vcodec_dbgfs dbgfs; > +}; > + > static inline struct mtk_vcodec_enc_ctx *fh_to_enc_ctx(struct v4l2_fh *fh) > { > return container_of(fh, struct mtk_vcodec_enc_ctx, fh); > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.c > index 3165e114b221..f7481f33a0b2 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.c > @@ -9,10 +9,10 @@ > #include <linux/of_platform.h> > #include <linux/pm_runtime.h> > > +#include "mtk_vcodec_enc_drv.h" > #include "mtk_vcodec_enc_pm.h" > -#include "mtk_vcodec_util.h" > > -int mtk_vcodec_init_enc_clk(struct mtk_vcodec_dev *mtkdev) > +int mtk_vcodec_init_enc_clk(struct mtk_vcodec_enc_dev *mtkdev) > { > struct platform_device *pdev; > struct mtk_vcodec_pm *pm; > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.h > index bc455cefc0cd..e50be0575190 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.h > @@ -7,9 +7,9 @@ > #ifndef _MTK_VCODEC_ENC_PM_H_ > #define _MTK_VCODEC_ENC_PM_H_ > > -#include "mtk_vcodec_drv.h" > +#include "mtk_vcodec_enc_drv.h" > > -int mtk_vcodec_init_enc_clk(struct mtk_vcodec_dev *dev); > +int mtk_vcodec_init_enc_clk(struct mtk_vcodec_enc_dev *dev); > > void mtk_vcodec_enc_clock_on(struct mtk_vcodec_pm *pm); > void mtk_vcodec_enc_clock_off(struct mtk_vcodec_pm *pm); > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > index 623dd916d09e..5c9f04574ad1 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > @@ -1,20 +1,28 @@ > // SPDX-License-Identifier: GPL-2.0 > > +#include "mtk_vcodec_dec_drv.h" > +#include "mtk_vcodec_enc_drv.h" > #include "mtk_vcodec_fw.h" > #include "mtk_vcodec_fw_priv.h" > #include "mtk_vcodec_util.h" > -#include "mtk_vcodec_drv.h" > > struct mtk_vcodec_fw *mtk_vcodec_fw_select(void *priv, enum mtk_vcodec_fw_type type, > enum mtk_vcodec_fw_use fw_use) > { > + struct platform_device *plat_dev; > + > + if (fw_use == ENCODER) > + plat_dev = ((struct mtk_vcodec_enc_dev *)priv)->plat_dev; > + else > + plat_dev = ((struct mtk_vcodec_dec_dev *)priv)->plat_dev; > + > switch (type) { > case VPU: > return mtk_vcodec_fw_vpu_init(priv, fw_use); > case SCP: > return mtk_vcodec_fw_scp_init(priv, fw_use); > default: > - pr_err("invalid vcodec fw type"); > + dev_err(&plat_dev->dev, "invalid vcodec fw type"); > return ERR_PTR(-EINVAL); > } > } > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h > index d8cfbec323d5..83479ab70385 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h > @@ -8,7 +8,8 @@ > > #include "../vpu/mtk_vpu.h" > > -struct mtk_vcodec_dev; > +struct mtk_vcodec_dec_dev; > +struct mtk_vcodec_enc_dev; > > enum mtk_vcodec_fw_type { > VPU, > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h > index 3438a4917344..99603accd82e 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h > @@ -5,7 +5,8 @@ > > #include "mtk_vcodec_fw.h" > > -struct mtk_vcodec_dev; > +struct mtk_vcodec_dec_dev; > +struct mtk_vcodec_enc_dev; > > struct mtk_vcodec_fw { > enum mtk_vcodec_fw_type type; > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c > index 71ff1a6ae872..3cb5a5befd24 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c > @@ -1,8 +1,8 @@ > // SPDX-License-Identifier: GPL-2.0 > > +#include "mtk_vcodec_dec_drv.h" > +#include "mtk_vcodec_enc_drv.h" > #include "mtk_vcodec_fw_priv.h" > -#include "mtk_vcodec_util.h" > -#include "mtk_vcodec_drv.h" > > static int mtk_vcodec_scp_load_firmware(struct mtk_vcodec_fw *fw) > { > @@ -56,14 +56,25 @@ static const struct mtk_vcodec_fw_ops mtk_vcodec_rproc_msg = { > struct mtk_vcodec_fw *mtk_vcodec_fw_scp_init(void *priv, enum mtk_vcodec_fw_use fw_use) > { > struct mtk_vcodec_fw *fw; > - struct mtk_vcodec_dev *dev = priv; > struct platform_device *plat_dev; > struct mtk_scp *scp; > > - plat_dev = dev->plat_dev; > + if (fw_use == ENCODER) { > + struct mtk_vcodec_enc_dev *enc_dev = priv; > + > + plat_dev = enc_dev->plat_dev; > + } else if (fw_use == DECODER) { > + struct mtk_vcodec_dec_dev *dec_dev = priv; > + > + plat_dev = dec_dev->plat_dev; > + } else { > + pr_err("Invalid fw_use %d (use a resonable fw id here)\n", fw_use); > + return ERR_PTR(-EINVAL); > + } > + > scp = scp_get(plat_dev); > if (!scp) { > - dev_err(&dev->plat_dev->dev, "could not get vdec scp handle"); > + dev_err(&plat_dev->dev, "could not get vdec scp handle"); > return ERR_PTR(-EPROBE_DEFER); > } > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c > index 571072dffbfa..18274a51a8f8 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c > @@ -1,8 +1,8 @@ > // SPDX-License-Identifier: GPL-2.0 > > +#include "mtk_vcodec_dec_drv.h" > +#include "mtk_vcodec_enc_drv.h" > #include "mtk_vcodec_fw_priv.h" > -#include "mtk_vcodec_util.h" > -#include "mtk_vcodec_drv.h" > > static int mtk_vcodec_vpu_load_firmware(struct mtk_vcodec_fw *fw) > { > @@ -53,7 +53,7 @@ static void mtk_vcodec_vpu_release(struct mtk_vcodec_fw *fw) > > static void mtk_vcodec_vpu_reset_dec_handler(void *priv) > { > - struct mtk_vcodec_dev *dev = priv; > + struct mtk_vcodec_dec_dev *dev = priv; > struct mtk_vcodec_dec_ctx *ctx; > > dev_err(&dev->plat_dev->dev, "Watchdog timeout!!"); > @@ -68,7 +68,7 @@ static void mtk_vcodec_vpu_reset_dec_handler(void *priv) > > static void mtk_vcodec_vpu_reset_enc_handler(void *priv) > { > - struct mtk_vcodec_dev *dev = priv; > + struct mtk_vcodec_enc_dev *dev = priv; > struct mtk_vcodec_enc_ctx *ctx; > > dev_err(&dev->plat_dev->dev, "Watchdog timeout!!"); > @@ -94,24 +94,28 @@ static const struct mtk_vcodec_fw_ops mtk_vcodec_vpu_msg = { > struct mtk_vcodec_fw *mtk_vcodec_fw_vpu_init(void *priv, enum mtk_vcodec_fw_use fw_use) > { > struct platform_device *fw_pdev; > - struct mtk_vcodec_dev *dev = priv; > struct platform_device *plat_dev; > struct mtk_vcodec_fw *fw; > enum rst_id rst_id; > > if (fw_use == ENCODER) { > + struct mtk_vcodec_enc_dev *enc_dev = priv; > + > + plat_dev = enc_dev->plat_dev; > rst_id = VPU_RST_ENC; > } else if (fw_use == DECODER) { > + struct mtk_vcodec_dec_dev *dec_dev = priv; > + > + plat_dev = dec_dev->plat_dev; > rst_id = VPU_RST_DEC; > } else { > pr_err("Invalid fw_use %d (use a resonable fw id here)\n", fw_use); > return ERR_PTR(-EINVAL); > } > > - plat_dev = dev->plat_dev; > fw_pdev = vpu_get_plat_device(plat_dev); > if (!fw_pdev) { > - dev_err(&dev->plat_dev->dev, "firmware device is not ready"); > + dev_err(&plat_dev->dev, "firmware device is not ready"); > return ERR_PTR(-EINVAL); > } > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > index 66d1f50d8968..69dae0336a14 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > @@ -7,9 +7,9 @@ > #include <linux/errno.h> > #include <linux/wait.h> > > -#include "mtk_vcodec_drv.h" > +#include "mtk_vcodec_dec_drv.h" > +#include "mtk_vcodec_enc_drv.h" > #include "mtk_vcodec_intr.h" > -#include "mtk_vcodec_util.h" > > int mtk_vcodec_wait_for_done_ctx(void *priv, int command, unsigned int timeout_ms, > unsigned int hw_id) > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > index adaeae79558a..18f632eb0b8a 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > @@ -9,9 +9,9 @@ > #include <linux/of.h> > #include <linux/of_device.h> > > +#include "mtk_vcodec_dec_drv.h" > +#include "mtk_vcodec_enc_drv.h" > #include "mtk_vcodec_dec_hw.h" > -#include "mtk_vcodec_drv.h" > -#include "mtk_vcodec_util.h" > > #if defined(CONFIG_DEBUG_FS) > int mtk_vcodec_dbg; > @@ -75,7 +75,7 @@ void mtk_vcodec_mem_free(void *priv, struct mtk_vcodec_mem *mem) > } > EXPORT_SYMBOL(mtk_vcodec_mem_free); > > -void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dev *dev, int hw_idx) > +void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dec_dev *dev, int hw_idx) > { > if (hw_idx >= MTK_VDEC_HW_MAX || hw_idx < 0 || !dev->subdev_dev[hw_idx]) { > dev_err(&dev->plat_dev->dev, "hw idx is out of range:%d", hw_idx); > @@ -86,7 +86,7 @@ void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dev *dev, int hw_idx) > } > EXPORT_SYMBOL(mtk_vcodec_get_hw_dev); > > -void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > +void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dec_dev *vdec_dev, > struct mtk_vcodec_dec_ctx *ctx, int hw_idx) > { > unsigned long flags; > @@ -108,7 +108,7 @@ void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > } > EXPORT_SYMBOL(mtk_vcodec_set_curr_ctx); > > -struct mtk_vcodec_dec_ctx *mtk_vcodec_get_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > +struct mtk_vcodec_dec_ctx *mtk_vcodec_get_curr_ctx(struct mtk_vcodec_dec_dev *vdec_dev, > unsigned int hw_idx) > { > unsigned long flags; > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > index 4d48b516f62d..6c24bb8b1715 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > @@ -23,7 +23,7 @@ struct mtk_vcodec_fb { > }; > > struct mtk_vcodec_dec_ctx; > -struct mtk_vcodec_dev; > +struct mtk_vcodec_dec_dev; > > #undef pr_fmt > #define pr_fmt(fmt) "%s(),%d: " fmt, __func__, __LINE__ > @@ -83,10 +83,10 @@ extern int mtk_vcodec_dbg; > void __iomem *mtk_vcodec_get_reg_addr(void __iomem **reg_base, unsigned int reg_idx); > int mtk_vcodec_mem_alloc(void *priv, struct mtk_vcodec_mem *mem); > void mtk_vcodec_mem_free(void *priv, struct mtk_vcodec_mem *mem); > -void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > +void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dec_dev *vdec_dev, > struct mtk_vcodec_dec_ctx *ctx, int hw_idx); > -struct mtk_vcodec_dec_ctx *mtk_vcodec_get_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > +struct mtk_vcodec_dec_ctx *mtk_vcodec_get_curr_ctx(struct mtk_vcodec_dec_dev *vdec_dev, > unsigned int hw_idx); > -void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dev *dev, int hw_idx); > +void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dec_dev *dev, int hw_idx); > > #endif /* _MTK_VCODEC_UTIL_H_ */ > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.h b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.h > index 0dda9e2315c0..ac82be336055 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.h > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.h > @@ -13,7 +13,7 @@ > #include <media/v4l2-mem2mem.h> > #include <media/videobuf2-dma-contig.h> > > -#include "../mtk_vcodec_drv.h" > +#include "../mtk_vcodec_dec_drv.h" > > #define NAL_NON_IDR_SLICE 0x01 > #define NAL_IDR_SLICE 0x05 > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c > index 846cc39c0168..79eff921fc97 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c > @@ -540,7 +540,7 @@ static int vdec_h264_slice_core_decode(struct vdec_lat_buf *lat_buf) > return 0; > } > > -static void vdec_h264_insert_startcode(struct mtk_vcodec_dev *vcodec_dev, unsigned char *buf, > +static void vdec_h264_insert_startcode(struct mtk_vcodec_dec_dev *vcodec_dev, unsigned char *buf, > size_t *bs_size, struct mtk_h264_pps_param *pps) > { > struct device *dev = &vcodec_dev->plat_dev->dev; > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h b/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > index 816ed6ab1ed0..7b41ce23158b 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > +++ b/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > @@ -8,7 +8,6 @@ > #ifndef _VDEC_DRV_IF_H_ > #define _VDEC_DRV_IF_H_ > > -#include "mtk_vcodec_drv.h" > #include "mtk_vcodec_dec.h" > #include "mtk_vcodec_util.h" > > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c > index 0dd1374ccc38..890b955e4b31 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c > @@ -8,8 +8,8 @@ > #include <linux/interrupt.h> > #include <linux/kthread.h> > > +#include "mtk_vcodec_dec_drv.h" > #include "mtk_vcodec_dec_pm.h" > -#include "mtk_vcodec_drv.h" > #include "vdec_msg_queue.h" > > #define VDEC_MSG_QUEUE_TIMEOUT_MS 1500 > @@ -239,7 +239,7 @@ static void vdec_msg_queue_core_work(struct work_struct *work) > container_of(work, struct vdec_msg_queue, core_work); > struct mtk_vcodec_dec_ctx *ctx = > container_of(msg_queue, struct mtk_vcodec_dec_ctx, msg_queue); > - struct mtk_vcodec_dev *dev = ctx->dev; > + struct mtk_vcodec_dec_dev *dev = ctx->dev; > struct vdec_lat_buf *lat_buf; > > spin_lock(&msg_queue->core_ctx.ready_lock); > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > index 1fb3f57c2384..eeb5deb907ed 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > +++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > @@ -18,7 +18,7 @@ > > struct vdec_lat_buf; > struct mtk_vcodec_dec_ctx; > -struct mtk_vcodec_dev; > +struct mtk_vcodec_dec_dev; > typedef int (*core_decode_cb_t)(struct vdec_lat_buf *lat_buf); > > /** > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > index d82391411ba1..7fe8e196cb45 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > @@ -4,8 +4,7 @@ > * Author: PC Chen <pc.chen@mediatek.com> > */ > > -#include "mtk_vcodec_drv.h" > -#include "mtk_vcodec_util.h" > +#include "mtk_vcodec_dec_drv.h" > #include "vdec_drv_if.h" > #include "vdec_ipi_msg.h" > #include "vdec_vpu_if.h" > diff --git a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > index c5f9fc24a692..41d463d40843 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > @@ -10,7 +10,7 @@ > #include <linux/kernel.h> > #include <linux/slab.h> > > -#include "../mtk_vcodec_drv.h" > +#include "../mtk_vcodec_enc_drv.h" > #include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_intr.h" > #include "../mtk_vcodec_enc.h" > diff --git a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > index e8e4474eacc7..dfd6833576f4 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > @@ -9,7 +9,7 @@ > #include <linux/kernel.h> > #include <linux/slab.h> > > -#include "../mtk_vcodec_drv.h" > +#include "../mtk_vcodec_enc_drv.h" > #include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_intr.h" > #include "../mtk_vcodec_enc.h" > diff --git a/drivers/media/platform/mediatek/vcodec/venc_drv_base.h b/drivers/media/platform/mediatek/vcodec/venc_drv_base.h > index 17f8183461b5..856d50151bf6 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc_drv_base.h > +++ b/drivers/media/platform/mediatek/vcodec/venc_drv_base.h > @@ -9,7 +9,7 @@ > #ifndef _VENC_DRV_BASE_ > #define _VENC_DRV_BASE_ > > -#include "mtk_vcodec_drv.h" > +#include "mtk_vcodec_enc_drv.h" > > #include "venc_drv_if.h" > > diff --git a/drivers/media/platform/mediatek/vcodec/venc_drv_if.c b/drivers/media/platform/mediatek/vcodec/venc_drv_if.c > index 08083030516e..1bdaecdd64a7 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc_drv_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc_drv_if.c > @@ -65,7 +65,7 @@ int venc_if_encode(struct mtk_vcodec_enc_ctx *ctx, > mtk_venc_lock(ctx); > > spin_lock_irqsave(&ctx->dev->irqlock, flags); > - ctx->dev->curr_enc_ctx = ctx; > + ctx->dev->curr_ctx = ctx; > spin_unlock_irqrestore(&ctx->dev->irqlock, flags); > > mtk_vcodec_enc_clock_on(&ctx->dev->pm); > @@ -74,7 +74,7 @@ int venc_if_encode(struct mtk_vcodec_enc_ctx *ctx, > mtk_vcodec_enc_clock_off(&ctx->dev->pm); > > spin_lock_irqsave(&ctx->dev->irqlock, flags); > - ctx->dev->curr_enc_ctx = NULL; > + ctx->dev->curr_ctx = NULL; > spin_unlock_irqrestore(&ctx->dev->irqlock, flags); > > mtk_venc_unlock(ctx); > diff --git a/drivers/media/platform/mediatek/vcodec/venc_drv_if.h b/drivers/media/platform/mediatek/vcodec/venc_drv_if.h > index 90d714e86ede..d00fb68b8235 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc_drv_if.h > +++ b/drivers/media/platform/mediatek/vcodec/venc_drv_if.h > @@ -9,8 +9,7 @@ > #ifndef _VENC_DRV_IF_H_ > #define _VENC_DRV_IF_H_ > > -#include "mtk_vcodec_drv.h" > -#include "mtk_vcodec_util.h" > +#include "mtk_vcodec_enc_drv.h" > > /* > * enum venc_yuv_fmt - The type of input yuv format > diff --git a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > index c69f66b6d341..bfff16da0451 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > @@ -4,7 +4,7 @@ > * Author: PoChun Lin <pochun.lin@mediatek.com> > */ > > -#include "mtk_vcodec_drv.h" > +#include "mtk_vcodec_enc_drv.h" > #include "mtk_vcodec_fw.h" > #include "venc_ipi_msg.h" > #include "venc_vpu_if.h"
Le lundi 26 juin 2023 à 11:53 +0800, Yunfei Dong a écrit : > The shared struct 'mtk_vcodec_ctx/dev' will be changed to 'mtk_vcodec_enc_ctx/dev' > and 'mtk_vcodec_dec_ctx/dev' in order to separate encoder and decoder. Removing > common struct 'mtk_vcodec_ctx/dev' for shared interface which encoder and decoder > used at the same time. Then encoder and decoder can call the same interface > independently. > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> > --- > .../mediatek/vcodec/mtk_vcodec_intr.c | 30 ++++++++++++------- > .../mediatek/vcodec/mtk_vcodec_intr.h | 3 +- > .../mediatek/vcodec/mtk_vcodec_util.c | 19 +++++------- > .../mediatek/vcodec/mtk_vcodec_util.h | 9 ++---- > .../mediatek/vcodec/vdec/vdec_vp8_if.c | 14 ++++----- > .../mediatek/vcodec/venc/venc_h264_if.c | 2 +- > .../mediatek/vcodec/venc/venc_vp8_if.c | 2 +- > 7 files changed, 39 insertions(+), 40 deletions(-) > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > index 552b4c93d972..daa44f635727 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > @@ -11,32 +11,40 @@ > #include "mtk_vcodec_intr.h" > #include "mtk_vcodec_util.h" > > -int mtk_vcodec_wait_for_done_ctx(struct mtk_vcodec_ctx *ctx, > - int command, unsigned int timeout_ms, > +int mtk_vcodec_wait_for_done_ctx(void *priv, int command, unsigned int timeout_ms, > unsigned int hw_id) > { > + struct mtk_vcodec_ctx *ctx = priv; > long timeout_jiff, ret; > - int status = 0; > + int status = 0, ctx_id, ctx_type; > + int *ctx_int_cond, *ctx_int_type; > + wait_queue_head_t *ctx_queue; > + > + ctx_id = ctx->id; > + ctx_type = ctx->type; > + ctx_int_cond = ctx->int_cond; > + ctx_int_type = ctx->int_type; > + ctx_queue = ctx->queue; > > timeout_jiff = msecs_to_jiffies(timeout_ms); > - ret = wait_event_interruptible_timeout(ctx->queue[hw_id], > - ctx->int_cond[hw_id], > + ret = wait_event_interruptible_timeout(ctx_queue[hw_id], > + ctx_int_cond[hw_id], > timeout_jiff); > > if (!ret) { > status = -1; /* timeout */ > mtk_v4l2_err("[%d] cmd=%d, type=%d, dec timeout=%ums (%d %d)", > - ctx->id, command, ctx->type, timeout_ms, > - ctx->int_cond[hw_id], ctx->int_type[hw_id]); > + ctx_id, command, ctx_type, timeout_ms, > + ctx_int_cond[hw_id], ctx_int_type[hw_id]); > } else if (-ERESTARTSYS == ret) { > status = -1; > mtk_v4l2_err("[%d] cmd=%d, type=%d, dec inter fail (%d %d)", > - ctx->id, command, ctx->type, > - ctx->int_cond[hw_id], ctx->int_type[hw_id]); > + ctx_id, command, ctx_type, > + ctx_int_cond[hw_id], ctx_int_type[hw_id]); > } > > - ctx->int_cond[hw_id] = 0; > - ctx->int_type[hw_id] = 0; > + ctx_int_cond[hw_id] = 0; > + ctx_int_type[hw_id] = 0; > > return status; > } > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.h > index 9681f492813b..11bf0ef94d5d 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.h > @@ -12,8 +12,7 @@ > struct mtk_vcodec_ctx; > > /* timeout is ms */ > -int mtk_vcodec_wait_for_done_ctx(struct mtk_vcodec_ctx *ctx, > - int command, unsigned int timeout_ms, > +int mtk_vcodec_wait_for_done_ctx(void *priv, int command, unsigned int timeout_ms, > unsigned int hw_id); > > #endif /* _MTK_VCODEC_INTR_H_ */ > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > index f214e6f67005..847e321f4fcc 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > @@ -21,24 +21,20 @@ int mtk_v4l2_dbg_level; > EXPORT_SYMBOL(mtk_v4l2_dbg_level); > #endif > > -void __iomem *mtk_vcodec_get_reg_addr(struct mtk_vcodec_ctx *data, > - unsigned int reg_idx) > +void __iomem *mtk_vcodec_get_reg_addr(void __iomem **reg_base, unsigned int reg_idx) > { > - struct mtk_vcodec_ctx *ctx = (struct mtk_vcodec_ctx *)data; > - > - if (!data || reg_idx >= NUM_MAX_VCODEC_REG_BASE) { > + if (reg_idx >= NUM_MAX_VCODEC_REG_BASE) { > mtk_v4l2_err("Invalid arguments, reg_idx=%d", reg_idx); > return NULL; > } > - return ctx->dev->reg_base[reg_idx]; > + return reg_base[reg_idx]; > } > EXPORT_SYMBOL(mtk_vcodec_get_reg_addr); > > -int mtk_vcodec_mem_alloc(struct mtk_vcodec_ctx *data, > - struct mtk_vcodec_mem *mem) > +int mtk_vcodec_mem_alloc(void *priv, struct mtk_vcodec_mem *mem) > { > unsigned long size = mem->size; > - struct mtk_vcodec_ctx *ctx = (struct mtk_vcodec_ctx *)data; > + struct mtk_vcodec_ctx *ctx = priv; > struct device *dev = &ctx->dev->plat_dev->dev; > > mem->va = dma_alloc_coherent(dev, size, &mem->dma_addr, GFP_KERNEL); > @@ -57,11 +53,10 @@ int mtk_vcodec_mem_alloc(struct mtk_vcodec_ctx *data, > } > EXPORT_SYMBOL(mtk_vcodec_mem_alloc); > > -void mtk_vcodec_mem_free(struct mtk_vcodec_ctx *data, > - struct mtk_vcodec_mem *mem) > +void mtk_vcodec_mem_free(void *priv, struct mtk_vcodec_mem *mem) > { > unsigned long size = mem->size; > - struct mtk_vcodec_ctx *ctx = (struct mtk_vcodec_ctx *)data; > + struct mtk_vcodec_ctx *ctx = priv; > struct device *dev = &ctx->dev->plat_dev->dev; > > if (!mem->va) { > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > index 88d389b65f13..827937bcb4b4 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > @@ -68,12 +68,9 @@ extern int mtk_vcodec_dbg; > #define mtk_vcodec_debug_enter(h) mtk_vcodec_debug(h, "+") > #define mtk_vcodec_debug_leave(h) mtk_vcodec_debug(h, "-") > > -void __iomem *mtk_vcodec_get_reg_addr(struct mtk_vcodec_ctx *data, > - unsigned int reg_idx); > -int mtk_vcodec_mem_alloc(struct mtk_vcodec_ctx *data, > - struct mtk_vcodec_mem *mem); > -void mtk_vcodec_mem_free(struct mtk_vcodec_ctx *data, > - struct mtk_vcodec_mem *mem); > +void __iomem *mtk_vcodec_get_reg_addr(void __iomem **reg_base, unsigned int reg_idx); > +int mtk_vcodec_mem_alloc(void *priv, struct mtk_vcodec_mem *mem); > +void mtk_vcodec_mem_free(void *priv, struct mtk_vcodec_mem *mem); > void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > struct mtk_vcodec_ctx *ctx, int hw_idx); > struct mtk_vcodec_ctx *mtk_vcodec_get_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > index 88c046731754..5edbccc9ae68 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > @@ -167,13 +167,13 @@ struct vdec_vp8_inst { > > static void get_hw_reg_base(struct vdec_vp8_inst *inst) > { I'd like to suggest: + u32 reg_base = inst->ctx->dev->reg_base > - inst->reg_base.top = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_TOP); > - inst->reg_base.cm = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_CM); > - inst->reg_base.hwd = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_HWD); > - inst->reg_base.sys = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_SYS); > - inst->reg_base.misc = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_MISC); > - inst->reg_base.ld = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_LD); > - inst->reg_base.hwb = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_HWB); > + inst->reg_base.top = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, VDEC_TOP); > + inst->reg_base.cm = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, VDEC_CM); > + inst->reg_base.hwd = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, VDEC_HWD); > + inst->reg_base.sys = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, VDEC_SYS); > + inst->reg_base.misc = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, VDEC_MISC); > + inst->reg_base.ld = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, VDEC_LD); > + inst->reg_base.hwb = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, VDEC_HWB); + inst->reg_base.top = mtk_vcodec_get_reg_addr(reg_base, VDEC_TOP); + inst->reg_base.cm = mtk_vcodec_get_reg_addr(reg_base, VDEC_CM); + inst->reg_base.hwd = mtk_vcodec_get_reg_addr(reg_base, VDEC_HWD); + inst->reg_base.sys = mtk_vcodec_get_reg_addr(reg_base, VDEC_SYS); + inst->reg_base.misc = mtk_vcodec_get_reg_addr(reg_base, VDEC_MISC); + inst->reg_base.ld = mtk_vcodec_get_reg_addr(reg_base, VDEC_LD); + inst->reg_base.hwb = mtk_vcodec_get_reg_addr(reg_base, VDEC_HWB); With such minor stylistic change: Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > } > > static void write_hw_segmentation_data(struct vdec_vp8_inst *inst) > diff --git a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > index 60fd165c0d94..10365c95ebbe 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > @@ -612,7 +612,7 @@ static int h264_enc_init(struct mtk_vcodec_ctx *ctx) > inst->ctx = ctx; > inst->vpu_inst.ctx = ctx; > inst->vpu_inst.id = is_ext ? SCP_IPI_VENC_H264 : IPI_VENC_H264; > - inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx, VENC_SYS); > + inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, VENC_SYS); > > mtk_vcodec_debug_enter(inst); > > diff --git a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > index 56ce58f761f1..73ebc35d7c99 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > @@ -336,7 +336,7 @@ static int vp8_enc_init(struct mtk_vcodec_ctx *ctx) > inst->ctx = ctx; > inst->vpu_inst.ctx = ctx; > inst->vpu_inst.id = IPI_VENC_VP8; > - inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx, VENC_LT_SYS); > + inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, VENC_LT_SYS); > > mtk_vcodec_debug_enter(inst); >
Le lundi 26 juin 2023 à 11:53 +0800, Yunfei Dong a écrit : > Fix unreasonable coding style. > Fix unreasonable parameter definition. > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > --- > .../media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h | 4 ++-- > .../media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h | 8 ++++---- > 2 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > index a18ba8f32d41..1a0375dd5b6d 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > @@ -19,7 +19,7 @@ > #define IS_VDEC_INNER_RACING(capability) ((capability) & MTK_VCODEC_INNER_RACING) > > /* > - * struct mtk_vdec_format_types - Structure used to get supported > + * enum mtk_vdec_format_types - Structure used to get supported > * format types according to decoder capability > */ > enum mtk_vdec_format_types { > @@ -258,7 +258,7 @@ struct mtk_vcodec_dec_dev { > const struct mtk_vcodec_dec_pdata *vdec_pdata; > > struct mtk_vcodec_fw *fw_handler; > - unsigned long id_counter; > + u64 id_counter; > > /* decoder hardware mutex lock */ > struct mutex dec_mutex[MTK_VDEC_HW_MAX]; > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > index a88ef9078848..4804d8531a4e 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > @@ -32,13 +32,13 @@ > */ > struct mtk_vcodec_enc_pdata { > bool uses_ext; > - unsigned long min_bitrate; > - unsigned long max_bitrate; > + u64 min_bitrate; > + u64 max_bitrate; > const struct mtk_video_fmt *capture_formats; > size_t num_capture_formats; > const struct mtk_video_fmt *output_formats; > size_t num_output_formats; > - int core_id; > + u8 core_id; > bool uses_34bit; > }; > > @@ -208,7 +208,7 @@ struct mtk_vcodec_enc_dev { > const struct mtk_vcodec_enc_pdata *venc_pdata; > > struct mtk_vcodec_fw *fw_handler; > - unsigned long id_counter; > + u64 id_counter; > > /* encoder hardware mutex lock */ > struct mutex enc_mutex;
Le lundi 26 juin 2023 à 11:53 +0800, Yunfei Dong a écrit : > remove unused include header for .c files > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > --- > drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c | 2 -- > drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c | 2 -- > drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c | 1 - > drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c | 1 - > .../media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c | 2 -- > .../media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c | 2 -- > drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 2 -- > drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c | 2 -- > drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c | 2 -- > .../media/platform/mediatek/vcodec/vdec/vdec_av1_req_lat_if.c | 1 - > drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_if.c | 1 - > drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_if.c | 1 - > .../platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c | 1 - > .../platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c | 1 - > drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c | 1 - > drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c | 1 - > .../media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c | 1 - > drivers/media/platform/mediatek/vcodec/vdec_drv_if.h | 1 - > drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h | 2 -- > drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c | 1 - > drivers/media/platform/mediatek/vcodec/vdec_vpu_if.h | 2 -- > drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c | 1 - > drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c | 1 - > drivers/media/platform/mediatek/vcodec/venc_vpu_if.c | 1 - > drivers/media/platform/mediatek/vcodec/venc_vpu_if.h | 1 - > 25 files changed, 34 deletions(-) > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > index 0363fec572e5..5acb7dff18f2 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > @@ -11,8 +11,6 @@ > > #include "mtk_vcodec_dec_drv.h" > #include "mtk_vcodec_dec.h" > -#include "mtk_vcodec_intr.h" > -#include "mtk_vcodec_util.h" > #include "vdec_drv_if.h" > #include "mtk_vcodec_dec_pm.h" > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > index 8e3aea9a3ab0..36970113d069 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > @@ -21,8 +21,6 @@ > #include "mtk_vcodec_dec_hw.h" > #include "mtk_vcodec_dec_pm.h" > #include "mtk_vcodec_intr.h" > -#include "mtk_vcodec_util.h" > -#include "mtk_vcodec_fw.h" > > static int mtk_vcodec_get_hw_count(struct mtk_vcodec_dec_ctx *ctx, struct mtk_vcodec_dec_dev *dev) > { > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > index 23c19efa3cf6..fa02fcf4e8c2 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > @@ -16,7 +16,6 @@ > #include "mtk_vcodec_dec_hw.h" > #include "mtk_vcodec_dec_pm.h" > #include "mtk_vcodec_intr.h" > -#include "mtk_vcodec_util.h" > > static const struct of_device_id mtk_vdec_hw_match[] = { > { > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > index ed1f503a944e..edd3e6e2df85 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > @@ -12,7 +12,6 @@ > > #include "mtk_vcodec_dec_hw.h" > #include "mtk_vcodec_dec_pm.h" > -#include "mtk_vcodec_util.h" > > int mtk_vcodec_init_dec_clk(struct platform_device *pdev, struct mtk_vcodec_pm *pm) > { > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > index 459e74a46737..11ca2c2fbaad 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > @@ -5,8 +5,6 @@ > #include <media/videobuf2-dma-contig.h> > > #include "mtk_vcodec_dec.h" > -#include "mtk_vcodec_intr.h" > -#include "mtk_vcodec_util.h" > #include "mtk_vcodec_dec_pm.h" > #include "vdec_drv_if.h" > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > index 6268a39c2bb3..38b30c876ede 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > @@ -7,8 +7,6 @@ > #include <linux/module.h> > > #include "mtk_vcodec_dec.h" > -#include "mtk_vcodec_intr.h" > -#include "mtk_vcodec_util.h" > #include "mtk_vcodec_dec_pm.h" > #include "vdec_drv_if.h" > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > index 85dabb20fb11..8e44a051edda 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > @@ -11,8 +11,6 @@ > #include <linux/pm_runtime.h> > > #include "mtk_vcodec_enc.h" > -#include "mtk_vcodec_intr.h" > -#include "mtk_vcodec_util.h" > #include "venc_drv_if.h" > > #define MTK_VENC_MIN_W 160U > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > index 0830708de32f..f1b4d5e8cd49 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > @@ -19,8 +19,6 @@ > #include "mtk_vcodec_enc.h" > #include "mtk_vcodec_enc_pm.h" > #include "mtk_vcodec_intr.h" > -#include "mtk_vcodec_util.h" > -#include "mtk_vcodec_fw.h" > > static const struct mtk_video_fmt mtk_video_formats_output[] = { > { > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > index 5c9f04574ad1..e59ce7c78742 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > @@ -2,9 +2,7 @@ > > #include "mtk_vcodec_dec_drv.h" > #include "mtk_vcodec_enc_drv.h" > -#include "mtk_vcodec_fw.h" > #include "mtk_vcodec_fw_priv.h" > -#include "mtk_vcodec_util.h" > > struct mtk_vcodec_fw *mtk_vcodec_fw_select(void *priv, enum mtk_vcodec_fw_type type, > enum mtk_vcodec_fw_use fw_use) > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_av1_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_av1_req_lat_if.c > index 96ed4bec169e..d272fef36cd1 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_av1_req_lat_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_av1_req_lat_if.c > @@ -8,7 +8,6 @@ > #include <linux/slab.h> > #include <media/videobuf2-dma-contig.h> > > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_dec.h" > #include "../mtk_vcodec_intr.h" > #include "../vdec_drv_base.h" > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_if.c > index 69914e26cd20..a8175f977ed2 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_if.c > @@ -8,7 +8,6 @@ > #include <linux/slab.h> > > #include "../vdec_drv_if.h" > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_dec.h" > #include "../mtk_vcodec_intr.h" > #include "../vdec_vpu_if.h" > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_if.c > index 4eb98a705be4..4c5ef35199a1 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_if.c > @@ -6,7 +6,6 @@ > #include <media/v4l2-h264.h> > #include <media/videobuf2-dma-contig.h> > > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_dec.h" > #include "../mtk_vcodec_intr.h" > #include "../vdec_drv_base.h" > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c > index 79eff921fc97..0f9f7b56882f 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c > @@ -10,7 +10,6 @@ > #include <media/v4l2-mem2mem.h> > #include <media/videobuf2-dma-contig.h> > > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_dec.h" > #include "../mtk_vcodec_intr.h" > #include "../vdec_drv_base.h" > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c > index 67a5f8b82eb8..2682f40d1361 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c > @@ -8,7 +8,6 @@ > #include <linux/slab.h> > #include <media/videobuf2-dma-contig.h> > > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_dec.h" > #include "../mtk_vcodec_intr.h" > #include "../vdec_drv_base.h" > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > index a8606f74ddc1..ceddcfd9135b 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > @@ -7,7 +7,6 @@ > > #include <linux/slab.h> > #include "../vdec_drv_if.h" > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_dec.h" > #include "../mtk_vcodec_intr.h" > #include "../vdec_vpu_if.h" > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c > index d3103b877b61..c85c849d2548 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c > @@ -9,7 +9,6 @@ > #include <media/videobuf2-dma-contig.h> > #include <uapi/linux/v4l2-controls.h> > > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_dec.h" > #include "../mtk_vcodec_intr.h" > #include "../vdec_drv_base.h" > diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c > index 106ee4daf00b..3e9458470484 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c > @@ -9,7 +9,6 @@ > #include <media/videobuf2-dma-contig.h> > #include <media/v4l2-vp9.h> > > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_dec.h" > #include "../mtk_vcodec_intr.h" > #include "../vdec_drv_base.h" > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h b/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > index 7b41ce23158b..bfd297c96850 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > +++ b/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > @@ -9,7 +9,6 @@ > #define _VDEC_DRV_IF_H_ > > #include "mtk_vcodec_dec.h" > -#include "mtk_vcodec_util.h" > > > /** > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > index eeb5deb907ed..1d9beb9e4a14 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > +++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > @@ -12,8 +12,6 @@ > #include <linux/slab.h> > #include <media/videobuf2-v4l2.h> > > -#include "mtk_vcodec_util.h" > - > #define NUM_BUFFER_COUNT 3 > > struct vdec_lat_buf; > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > index 7fe8e196cb45..82c3dc8c4127 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > +++ b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > @@ -8,7 +8,6 @@ > #include "vdec_drv_if.h" > #include "vdec_ipi_msg.h" > #include "vdec_vpu_if.h" > -#include "mtk_vcodec_fw.h" > > static void handle_init_ack_msg(const struct vdec_vpu_ipi_init_ack *msg) > { > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.h b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.h > index c9766c108209..fbb3f34a73f0 100644 > --- a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.h > +++ b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.h > @@ -7,8 +7,6 @@ > #ifndef _VDEC_VPU_IF_H_ > #define _VDEC_VPU_IF_H_ > > -#include "mtk_vcodec_fw.h" > - > struct mtk_vcodec_dec_ctx; > > /** > diff --git a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > index 41d463d40843..9127bceb0db4 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > @@ -11,7 +11,6 @@ > #include <linux/slab.h> > > #include "../mtk_vcodec_enc_drv.h" > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_intr.h" > #include "../mtk_vcodec_enc.h" > #include "../mtk_vcodec_enc_pm.h" > diff --git a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > index dfd6833576f4..510f3b042670 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > @@ -10,7 +10,6 @@ > #include <linux/slab.h> > > #include "../mtk_vcodec_enc_drv.h" > -#include "../mtk_vcodec_util.h" > #include "../mtk_vcodec_intr.h" > #include "../mtk_vcodec_enc.h" > #include "../mtk_vcodec_enc_pm.h" > diff --git a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > index bfff16da0451..708db1bb32d4 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > +++ b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > @@ -5,7 +5,6 @@ > */ > > #include "mtk_vcodec_enc_drv.h" > -#include "mtk_vcodec_fw.h" > #include "venc_ipi_msg.h" > #include "venc_vpu_if.h" > > diff --git a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.h b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.h > index 71370ab98809..ede55fc3bd07 100644 > --- a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.h > +++ b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.h > @@ -7,7 +7,6 @@ > #ifndef _VENC_VPU_IF_H_ > #define _VENC_VPU_IF_H_ > > -#include "mtk_vcodec_fw.h" > #include "venc_drv_if.h" > > /*
Hi Nicolas, Thanks for you suggestion. On Mon, 2023-07-03 at 16:09 -0400, Nicolas Dufresne wrote: > > External email : Please do not click links or open attachments until > you have verified the sender or the content. > Le lundi 26 juin 2023 à 11:53 +0800, Yunfei Dong a écrit : > > The shared struct 'mtk_vcodec_ctx/dev' will be changed to > 'mtk_vcodec_enc_ctx/dev' > > and 'mtk_vcodec_dec_ctx/dev' in order to separate encoder and > decoder. Removing > > common struct 'mtk_vcodec_ctx/dev' for shared interface which > encoder and decoder > > used at the same time. Then encoder and decoder can call the same > interface > > independently. > > > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> > > --- > > .../mediatek/vcodec/mtk_vcodec_intr.c | 30 ++++++++++++--- > ---- > > .../mediatek/vcodec/mtk_vcodec_intr.h | 3 +- > > .../mediatek/vcodec/mtk_vcodec_util.c | 19 +++++------- > > .../mediatek/vcodec/mtk_vcodec_util.h | 9 ++---- > > .../mediatek/vcodec/vdec/vdec_vp8_if.c | 14 ++++----- > > .../mediatek/vcodec/venc/venc_h264_if.c | 2 +- > > .../mediatek/vcodec/venc/venc_vp8_if.c | 2 +- > > 7 files changed, 39 insertions(+), 40 deletions(-) > > > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > > index 552b4c93d972..daa44f635727 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > > @@ -11,32 +11,40 @@ > > #include "mtk_vcodec_intr.h" > > #include "mtk_vcodec_util.h" > > > > -int mtk_vcodec_wait_for_done_ctx(struct mtk_vcodec_ctx *ctx, > > - int command, unsigned int timeout_ms, > > +int mtk_vcodec_wait_for_done_ctx(void *priv, int command, unsigned > int timeout_ms, > > unsigned int hw_id) > > { > > +struct mtk_vcodec_ctx *ctx = priv; > > long timeout_jiff, ret; > > -int status = 0; > > +int status = 0, ctx_id, ctx_type; > > +int *ctx_int_cond, *ctx_int_type; > > +wait_queue_head_t *ctx_queue; > > + > > +ctx_id = ctx->id; > > +ctx_type = ctx->type; > > +ctx_int_cond = ctx->int_cond; > > +ctx_int_type = ctx->int_type; > > +ctx_queue = ctx->queue; > > > > timeout_jiff = msecs_to_jiffies(timeout_ms); > > -ret = wait_event_interruptible_timeout(ctx->queue[hw_id], > > - ctx->int_cond[hw_id], > > +ret = wait_event_interruptible_timeout(ctx_queue[hw_id], > > + ctx_int_cond[hw_id], > > timeout_jiff); > > > > if (!ret) { > > status = -1;/* timeout */ > > mtk_v4l2_err("[%d] cmd=%d, type=%d, dec timeout=%ums (%d %d)", > > - ctx->id, command, ctx->type, timeout_ms, > > - ctx->int_cond[hw_id], ctx->int_type[hw_id]); > > + ctx_id, command, ctx_type, timeout_ms, > > + ctx_int_cond[hw_id], ctx_int_type[hw_id]); > > } else if (-ERESTARTSYS == ret) { > > status = -1; > > mtk_v4l2_err("[%d] cmd=%d, type=%d, dec inter fail (%d %d)", > > - ctx->id, command, ctx->type, > > - ctx->int_cond[hw_id], ctx->int_type[hw_id]); > > + ctx_id, command, ctx_type, > > + ctx_int_cond[hw_id], ctx_int_type[hw_id]); > > } > > > > -ctx->int_cond[hw_id] = 0; > > -ctx->int_type[hw_id] = 0; > > +ctx_int_cond[hw_id] = 0; > > +ctx_int_type[hw_id] = 0; > > > > return status; > > } > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.h > > index 9681f492813b..11bf0ef94d5d 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.h > > @@ -12,8 +12,7 @@ > > struct mtk_vcodec_ctx; > > > > /* timeout is ms */ > > -int mtk_vcodec_wait_for_done_ctx(struct mtk_vcodec_ctx *ctx, > > - int command, unsigned int timeout_ms, > > +int mtk_vcodec_wait_for_done_ctx(void *priv, int command, unsigned > int timeout_ms, > > unsigned int hw_id); > > > > #endif /* _MTK_VCODEC_INTR_H_ */ > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > > index f214e6f67005..847e321f4fcc 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > > @@ -21,24 +21,20 @@ int mtk_v4l2_dbg_level; > > EXPORT_SYMBOL(mtk_v4l2_dbg_level); > > #endif > > > > -void __iomem *mtk_vcodec_get_reg_addr(struct mtk_vcodec_ctx *data, > > -unsigned int reg_idx) > > +void __iomem *mtk_vcodec_get_reg_addr(void __iomem **reg_base, > unsigned int reg_idx) > > { > > -struct mtk_vcodec_ctx *ctx = (struct mtk_vcodec_ctx *)data; > > - > > -if (!data || reg_idx >= NUM_MAX_VCODEC_REG_BASE) { > > +if (reg_idx >= NUM_MAX_VCODEC_REG_BASE) { > > mtk_v4l2_err("Invalid arguments, reg_idx=%d", reg_idx); > > return NULL; > > } > > -return ctx->dev->reg_base[reg_idx]; > > +return reg_base[reg_idx]; > > } > > EXPORT_SYMBOL(mtk_vcodec_get_reg_addr); > > > > -int mtk_vcodec_mem_alloc(struct mtk_vcodec_ctx *data, > > -struct mtk_vcodec_mem *mem) > > +int mtk_vcodec_mem_alloc(void *priv, struct mtk_vcodec_mem *mem) > > { > > unsigned long size = mem->size; > > -struct mtk_vcodec_ctx *ctx = (struct mtk_vcodec_ctx *)data; > > +struct mtk_vcodec_ctx *ctx = priv; > > struct device *dev = &ctx->dev->plat_dev->dev; > > > > mem->va = dma_alloc_coherent(dev, size, &mem->dma_addr, > GFP_KERNEL); > > @@ -57,11 +53,10 @@ int mtk_vcodec_mem_alloc(struct mtk_vcodec_ctx > *data, > > } > > EXPORT_SYMBOL(mtk_vcodec_mem_alloc); > > > > -void mtk_vcodec_mem_free(struct mtk_vcodec_ctx *data, > > -struct mtk_vcodec_mem *mem) > > +void mtk_vcodec_mem_free(void *priv, struct mtk_vcodec_mem *mem) > > { > > unsigned long size = mem->size; > > -struct mtk_vcodec_ctx *ctx = (struct mtk_vcodec_ctx *)data; > > +struct mtk_vcodec_ctx *ctx = priv; > > struct device *dev = &ctx->dev->plat_dev->dev; > > > > if (!mem->va) { > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > > index 88d389b65f13..827937bcb4b4 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > > @@ -68,12 +68,9 @@ extern int mtk_vcodec_dbg; > > #define mtk_vcodec_debug_enter(h) mtk_vcodec_debug(h, "+") > > #define mtk_vcodec_debug_leave(h) mtk_vcodec_debug(h, "-") > > > > -void __iomem *mtk_vcodec_get_reg_addr(struct mtk_vcodec_ctx *data, > > -unsigned int reg_idx); > > -int mtk_vcodec_mem_alloc(struct mtk_vcodec_ctx *data, > > -struct mtk_vcodec_mem *mem); > > -void mtk_vcodec_mem_free(struct mtk_vcodec_ctx *data, > > -struct mtk_vcodec_mem *mem); > > +void __iomem *mtk_vcodec_get_reg_addr(void __iomem **reg_base, > unsigned int reg_idx); > > +int mtk_vcodec_mem_alloc(void *priv, struct mtk_vcodec_mem *mem); > > +void mtk_vcodec_mem_free(void *priv, struct mtk_vcodec_mem *mem); > > void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > > struct mtk_vcodec_ctx *ctx, int hw_idx); > > struct mtk_vcodec_ctx *mtk_vcodec_get_curr_ctx(struct > mtk_vcodec_dev *vdec_dev, > > diff --git > a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > > index 88c046731754..5edbccc9ae68 100644 > > --- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > > +++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_if.c > > @@ -167,13 +167,13 @@ struct vdec_vp8_inst { > > > > static void get_hw_reg_base(struct vdec_vp8_inst *inst) > > { > > I'd like to suggest: > > +u32 reg_base = inst->ctx->dev->reg_base > > > -inst->reg_base.top = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_TOP); > > -inst->reg_base.cm = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_CM); > > -inst->reg_base.hwd = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_HWD); > > -inst->reg_base.sys = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_SYS); > > -inst->reg_base.misc = mtk_vcodec_get_reg_addr(inst->ctx, > VDEC_MISC); > > -inst->reg_base.ld = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_LD); > > -inst->reg_base.hwb = mtk_vcodec_get_reg_addr(inst->ctx, VDEC_HWB); > > +inst->reg_base.top = mtk_vcodec_get_reg_addr(inst->ctx->dev- > >reg_base, VDEC_TOP); > > +inst->reg_base.cm = mtk_vcodec_get_reg_addr(inst->ctx->dev- > >reg_base, VDEC_CM); > > +inst->reg_base.hwd = mtk_vcodec_get_reg_addr(inst->ctx->dev- > >reg_base, VDEC_HWD); > > +inst->reg_base.sys = mtk_vcodec_get_reg_addr(inst->ctx->dev- > >reg_base, VDEC_SYS); > > +inst->reg_base.misc = mtk_vcodec_get_reg_addr(inst->ctx->dev- > >reg_base, VDEC_MISC); > > +inst->reg_base.ld = mtk_vcodec_get_reg_addr(inst->ctx->dev- > >reg_base, VDEC_LD); > > +inst->reg_base.hwb = mtk_vcodec_get_reg_addr(inst->ctx->dev- > >reg_base, VDEC_HWB); > > +inst->reg_base.top = mtk_vcodec_get_reg_addr(reg_base, VDEC_TOP); > +inst->reg_base.cm = mtk_vcodec_get_reg_addr(reg_base, VDEC_CM); > +inst->reg_base.hwd = mtk_vcodec_get_reg_addr(reg_base, VDEC_HWD); > +inst->reg_base.sys = mtk_vcodec_get_reg_addr(reg_base, VDEC_SYS); > +inst->reg_base.misc = mtk_vcodec_get_reg_addr(reg_base, VDEC_MISC); > +inst->reg_base.ld = mtk_vcodec_get_reg_addr(reg_base, VDEC_LD); > +inst->reg_base.hwb = mtk_vcodec_get_reg_addr(reg_base, VDEC_HWB); > > With such minor stylistic change: > > Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > Fixed in patch v5, please help to review it again. Best Regards, Yunfei Dong > > } > > > > static void write_hw_segmentation_data(struct vdec_vp8_inst *inst) > > diff --git > a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > > index 60fd165c0d94..10365c95ebbe 100644 > > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > > @@ -612,7 +612,7 @@ static int h264_enc_init(struct mtk_vcodec_ctx > *ctx) > > inst->ctx = ctx; > > inst->vpu_inst.ctx = ctx; > > inst->vpu_inst.id = is_ext ? SCP_IPI_VENC_H264 : IPI_VENC_H264; > > -inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx, VENC_SYS); > > +inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, > VENC_SYS); > > > > mtk_vcodec_debug_enter(inst); > > > > diff --git > a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > > index 56ce58f761f1..73ebc35d7c99 100644 > > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > > @@ -336,7 +336,7 @@ static int vp8_enc_init(struct mtk_vcodec_ctx > *ctx) > > inst->ctx = ctx; > > inst->vpu_inst.ctx = ctx; > > inst->vpu_inst.id = IPI_VENC_VP8; > > -inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx, VENC_LT_SYS); > > +inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base, > VENC_LT_SYS); > > > > mtk_vcodec_debug_enter(inst); > > >
Hi Nicolas, Thanks for your suggestion. On Mon, 2023-07-03 at 16:06 -0400, Nicolas Dufresne wrote: > > External email : Please do not click links or open attachments until > you have verified the sender or the content. > Le lundi 26 juin 2023 à 11:53 +0800, Yunfei Dong a écrit : > > Adding different dev struct for encoder and decoder, remove > > 'struct mtk_vcodec_dev'. > > > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> > > --- > > .../mediatek/vcodec/mtk_vcodec_com_drv.h | 71 +++++ > > .../mediatek/vcodec/mtk_vcodec_dbgfs.c | 51 ++- > > .../mediatek/vcodec/mtk_vcodec_dbgfs.h | 14 +- > > .../platform/mediatek/vcodec/mtk_vcodec_dec.c | 4 +- > > .../mediatek/vcodec/mtk_vcodec_dec_drv.c | 19 +- > > .../mediatek/vcodec/mtk_vcodec_dec_drv.h | 172 +++++++++- > > .../mediatek/vcodec/mtk_vcodec_dec_hw.c | 5 +- > > .../mediatek/vcodec/mtk_vcodec_dec_hw.h | 4 +- > > .../mediatek/vcodec/mtk_vcodec_dec_pm.c | 10 +- > > .../mediatek/vcodec/mtk_vcodec_dec_pm.h | 2 +- > > .../mediatek/vcodec/mtk_vcodec_dec_stateful.c | 3 +- > > .../vcodec/mtk_vcodec_dec_stateless.c | 5 +- > > .../platform/mediatek/vcodec/mtk_vcodec_drv.h | 295 -------------- > ---- > > .../platform/mediatek/vcodec/mtk_vcodec_enc.c | 5 +- > > .../mediatek/vcodec/mtk_vcodec_enc_drv.c | 15 +- > > .../mediatek/vcodec/mtk_vcodec_enc_drv.h | 93 +++++- > > .../mediatek/vcodec/mtk_vcodec_enc_pm.c | 4 +- > > .../mediatek/vcodec/mtk_vcodec_enc_pm.h | 4 +- > > .../platform/mediatek/vcodec/mtk_vcodec_fw.c | 12 +- > > .../platform/mediatek/vcodec/mtk_vcodec_fw.h | 3 +- > > .../mediatek/vcodec/mtk_vcodec_fw_priv.h | 3 +- > > .../mediatek/vcodec/mtk_vcodec_fw_scp.c | 21 +- > > .../mediatek/vcodec/mtk_vcodec_fw_vpu.c | 18 +- > > .../mediatek/vcodec/mtk_vcodec_intr.c | 4 +- > > .../mediatek/vcodec/mtk_vcodec_util.c | 10 +- > > .../mediatek/vcodec/mtk_vcodec_util.h | 8 +- > > .../vcodec/vdec/vdec_h264_req_common.h | 2 +- > > .../vcodec/vdec/vdec_h264_req_multi_if.c | 2 +- > > .../platform/mediatek/vcodec/vdec_drv_if.h | 1 - > > .../platform/mediatek/vcodec/vdec_msg_queue.c | 4 +- > > .../platform/mediatek/vcodec/vdec_msg_queue.h | 2 +- > > .../platform/mediatek/vcodec/vdec_vpu_if.c | 3 +- > > .../mediatek/vcodec/venc/venc_h264_if.c | 2 +- > > .../mediatek/vcodec/venc/venc_vp8_if.c | 2 +- > > .../platform/mediatek/vcodec/venc_drv_base.h | 2 +- > > .../platform/mediatek/vcodec/venc_drv_if.c | 4 +- > > .../platform/mediatek/vcodec/venc_drv_if.h | 3 +- > > .../platform/mediatek/vcodec/venc_vpu_if.c | 2 +- > > 38 files changed, 465 insertions(+), 419 deletions(-) > > delete mode 100644 > drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h > > > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_com_drv.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_com_drv.h > > index 3b6e1faf60ce..6087e27bd604 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_com_drv.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_com_drv.h > > @@ -17,6 +17,77 @@ > > > > #define MTK_VCODEC_MAX_PLANES3 > > > > +#define WAIT_INTR_TIMEOUT_MS1000 > > + > > +/* > > + * enum mtk_q_type - Type of queue > > + */ > > +enum mtk_q_type { > > +MTK_Q_DATA_SRC = 0, > > +MTK_Q_DATA_DST = 1, > > +}; > > + > > +/* > > + * enum mtk_hw_reg_idx - MTK hw register base index > > + */ > > +enum mtk_hw_reg_idx { > > +VDEC_SYS, > > +VDEC_MISC, > > +VDEC_LD, > > +VDEC_TOP, > > +VDEC_CM, > > +VDEC_AD, > > +VDEC_AV, > > +VDEC_PP, > > +VDEC_HWD, > > +VDEC_HWQ, > > +VDEC_HWB, > > +VDEC_HWG, > > +NUM_MAX_VDEC_REG_BASE, > > +/* h264 encoder */ > > +VENC_SYS = NUM_MAX_VDEC_REG_BASE, > > +/* vp8 encoder */ > > +VENC_LT_SYS, > > +NUM_MAX_VCODEC_REG_BASE > > +}; > > + > > +/* > > + * struct mtk_vcodec_clk_info - Structure used to store clock name > > + */ > > +struct mtk_vcodec_clk_info { > > +const char*clk_name; > > +struct clk*vcodec_clk; > > +}; > > + > > +/* > > + * struct mtk_vcodec_clk - Structure used to store vcodec clock > information > > + */ > > +struct mtk_vcodec_clk { > > +struct mtk_vcodec_clk_info*clk_info; > > +intclk_num; > > +}; > > + > > +/* > > + * struct mtk_vcodec_pm - Power management data structure > > + */ > > +struct mtk_vcodec_pm { > > +struct mtk_vcodec_clkvdec_clk; > > +struct mtk_vcodec_clkvenc_clk; > > +struct device*dev; > > +}; > > + > > +/* > > + * enum mtk_vdec_hw_id - Hardware index used to separate > > + * different hardware > > + */ > > +enum mtk_vdec_hw_id { > > +MTK_VDEC_CORE, > > +MTK_VDEC_LAT0, > > +MTK_VDEC_LAT1, > > +MTK_VDEC_LAT_SOC, > > +MTK_VDEC_HW_MAX, > > +}; > > + > > /** > > * enum mtk_instance_state - The state of an MTK Vcodec instance. > > * @MTK_STATE_FREE: default state when instance is created > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c > > index 0f4bbfb3bba5..c6a02b33cc74 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c > > @@ -7,7 +7,8 @@ > > #include <linux/debugfs.h> > > > > #include "mtk_vcodec_dbgfs.h" > > -#include "mtk_vcodec_drv.h" > > +#include "mtk_vcodec_dec_drv.h" > > +#include "mtk_vcodec_enc_drv.h" > > #include "mtk_vcodec_util.h" > > > > static void mtk_vdec_dbgfs_get_format_type(struct > mtk_vcodec_dec_ctx *ctx, char *buf, > > @@ -72,7 +73,7 @@ static void mtk_vdec_dbgfs_get_help(char *buf, > int *used, int total) > > static ssize_t mtk_vdec_dbgfs_write(struct file *filp, const char > __user *ubuf, > > size_t count, loff_t *ppos) > > { > > -struct mtk_vcodec_dev *vcodec_dev = filp->private_data; > > +struct mtk_vcodec_dec_dev *vcodec_dev = filp->private_data; > > struct mtk_vcodec_dbgfs *dbgfs = &vcodec_dev->dbgfs; > > > > mutex_lock(&dbgfs->dbgfs_lock); > > @@ -88,7 +89,7 @@ static ssize_t mtk_vdec_dbgfs_write(struct file > *filp, const char __user *ubuf, > > static ssize_t mtk_vdec_dbgfs_read(struct file *filp, char __user > *ubuf, > > size_t count, loff_t *ppos) > > { > > -struct mtk_vcodec_dev *vcodec_dev = filp->private_data; > > +struct mtk_vcodec_dec_dev *vcodec_dev = filp->private_data; > > struct mtk_vcodec_dbgfs *dbgfs = &vcodec_dev->dbgfs; > > struct mtk_vcodec_dbgfs_inst *dbgfs_inst; > > struct mtk_vcodec_dec_ctx *ctx; > > @@ -146,7 +147,7 @@ static const struct file_operations vdec_fops = > { > > void mtk_vcodec_dbgfs_create(struct mtk_vcodec_dec_ctx *ctx) > > { > > struct mtk_vcodec_dbgfs_inst *dbgfs_inst; > > -struct mtk_vcodec_dev *vcodec_dev = ctx->dev; > > +struct mtk_vcodec_dec_dev *vcodec_dev = ctx->dev; > > > > dbgfs_inst = kzalloc(sizeof(*dbgfs_inst), GFP_KERNEL); > > if (!dbgfs_inst) > > @@ -161,7 +162,7 @@ void mtk_vcodec_dbgfs_create(struct > mtk_vcodec_dec_ctx *ctx) > > } > > EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_create); > > > > -void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dev *vcodec_dev, > int ctx_id) > > +void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dec_dev > *vcodec_dev, int ctx_id) > > { > > struct mtk_vcodec_dbgfs_inst *dbgfs_inst; > > > > @@ -179,16 +180,13 @@ void mtk_vcodec_dbgfs_remove(struct > mtk_vcodec_dev *vcodec_dev, int ctx_id) > > } > > EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_remove); > > > > -void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev, bool > is_encode) > > +static void mtk_vcodec_dbgfs_vdec_init(struct mtk_vcodec_dec_dev > *vcodec_dev) > > { > > struct dentry *vcodec_root; > > > > -if (is_encode) > > -vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-enc", > NULL); > > -else > > -vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-dec", > NULL); > > +vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-dec", > NULL); > > if (IS_ERR(vcodec_dev->dbgfs.vcodec_root)) > > -dev_err(&vcodec_dev->plat_dev->dev, "create vcodec dir err:%d\n", > > +dev_err(&vcodec_dev->plat_dev->dev, "create vdec dir err:%d\n", > > IS_ERR(vcodec_dev->dbgfs.vcodec_root)); > > > > vcodec_root = vcodec_dev->dbgfs.vcodec_root; > > @@ -196,18 +194,39 @@ void mtk_vcodec_dbgfs_init(struct > mtk_vcodec_dev *vcodec_dev, bool is_encode) > > debugfs_create_x32("mtk_vcodec_dbg", 0644, vcodec_root, > &mtk_vcodec_dbg); > > > > vcodec_dev->dbgfs.inst_count = 0; > > -if (is_encode) > > -return; > > - > > INIT_LIST_HEAD(&vcodec_dev->dbgfs.dbgfs_head); > > debugfs_create_file("vdec", 0200, vcodec_root, vcodec_dev, > &vdec_fops); > > mutex_init(&vcodec_dev->dbgfs.dbgfs_lock); > > } > > + > > +static void mtk_vcodec_dbgfs_venc_init(struct mtk_vcodec_enc_dev > *vcodec_dev) > > +{ > > +struct dentry *vcodec_root; > > + > > +vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-enc", > NULL); > > +if (IS_ERR(vcodec_dev->dbgfs.vcodec_root)) > > +dev_err(&vcodec_dev->plat_dev->dev, "create venc dir err:%d\n", > > +IS_ERR(vcodec_dev->dbgfs.vcodec_root)); > > + > > +vcodec_root = vcodec_dev->dbgfs.vcodec_root; > > +debugfs_create_x32("mtk_v4l2_dbg_level", 0644, vcodec_root, > &mtk_v4l2_dbg_level); > > +debugfs_create_x32("mtk_vcodec_dbg", 0644, vcodec_root, > &mtk_vcodec_dbg); > > + > > +vcodec_dev->dbgfs.inst_count = 0; > > +} > > + > > +void mtk_vcodec_dbgfs_init(void *vcodec_dev, bool is_encode) > > +{ > > +if (is_encode) > > +mtk_vcodec_dbgfs_venc_init(vcodec_dev); > > +else > > +mtk_vcodec_dbgfs_vdec_init(vcodec_dev); > > +} > > EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_init); > > > > -void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev) > > +void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dbgfs *dbgfs) > > { > > -debugfs_remove_recursive(vcodec_dev->dbgfs.vcodec_root); > > +debugfs_remove_recursive(dbgfs->vcodec_root); > > } > > EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_deinit); > > > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h > > index 372413d590c5..073d2fedb54a 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h > > @@ -7,7 +7,7 @@ > > #ifndef __MTK_VCODEC_DBGFS_H__ > > #define __MTK_VCODEC_DBGFS_H__ > > > > -struct mtk_vcodec_dev; > > +struct mtk_vcodec_dec_dev; > > I'm far in the review to think about this, but have you considered > using a > shorter name, like mtk_vdec_dev ? That being said, I'm not requesting > any > changes, this can happen later (or never). > > Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > I prefer to use struct mtk_vcodec_dec_dev and struct mtk_vcodec_enc_dev for current period. Maybe simply the struct name in the future. Best Regards, Yunfei Dong > > struct mtk_vcodec_dec_ctx; > > > > /* > > @@ -51,23 +51,23 @@ struct mtk_vcodec_dbgfs { > > > > #if defined(CONFIG_DEBUG_FS) > > void mtk_vcodec_dbgfs_create(struct mtk_vcodec_dec_ctx *ctx); > > -void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dev *vcodec_dev, > int ctx_id); > > -void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev, bool > is_encode); > > -void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev); > > +void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dec_dev > *vcodec_dev, int ctx_id); > > +void mtk_vcodec_dbgfs_init(void *vcodec_dev, bool is_encode); > > +void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dbgfs *dbgfs); > > #else > > static inline void mtk_vcodec_dbgfs_create(struct > mtk_vcodec_dec_ctx *ctx) > > { > > } > > > > -static inline void mtk_vcodec_dbgfs_remove(struct mtk_vcodec_dev > *vcodec_dev, int ctx_id) > > +static inline void mtk_vcodec_dbgfs_remove(struct > mtk_vcodec_dec_dev *vcodec_dev, int ctx_id) > > { > > } > > > > -static inline void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev > *vcodec_dev, bool is_encode) > > +static inline void mtk_vcodec_dbgfs_init(void *vcodec_dev, bool > is_encode) > > { > > } > > > > -static inline void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev > *vcodec_dev) > > +static inline void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dbgfs > *dbgfs) > > { > > } > > #endif > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > > index 619ff3dd8d50..0363fec572e5 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > > @@ -9,7 +9,7 @@ > > #include <media/v4l2-mem2mem.h> > > #include <media/videobuf2-dma-contig.h> > > > > -#include "mtk_vcodec_drv.h" > > +#include "mtk_vcodec_dec_drv.h" > > #include "mtk_vcodec_dec.h" > > #include "mtk_vcodec_intr.h" > > #include "mtk_vcodec_util.h" > > @@ -890,7 +890,7 @@ void vb2ops_vdec_stop_streaming(struct > vb2_queue *q) > > static void m2mops_vdec_device_run(void *priv) > > { > > struct mtk_vcodec_dec_ctx *ctx = priv; > > -struct mtk_vcodec_dev *dev = ctx->dev; > > +struct mtk_vcodec_dec_dev *dev = ctx->dev; > > > > queue_work(dev->decode_workqueue, &ctx->decode_work); > > } > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > > index 5609fd3268f2..8e3aea9a3ab0 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > > @@ -17,7 +17,6 @@ > > #include <media/videobuf2-dma-contig.h> > > #include <media/v4l2-device.h> > > > > -#include "mtk_vcodec_drv.h" > > #include "mtk_vcodec_dec.h" > > #include "mtk_vcodec_dec_hw.h" > > #include "mtk_vcodec_dec_pm.h" > > @@ -25,7 +24,7 @@ > > #include "mtk_vcodec_util.h" > > #include "mtk_vcodec_fw.h" > > > > -static int mtk_vcodec_get_hw_count(struct mtk_vcodec_dec_ctx *ctx, > struct mtk_vcodec_dev *dev) > > +static int mtk_vcodec_get_hw_count(struct mtk_vcodec_dec_ctx *ctx, > struct mtk_vcodec_dec_dev *dev) > > { > > switch (dev->vdec_pdata->hw_arch) { > > case MTK_VDEC_PURE_SINGLE_CORE: > > @@ -40,7 +39,7 @@ static int mtk_vcodec_get_hw_count(struct > mtk_vcodec_dec_ctx *ctx, struct mtk_vc > > > > static irqreturn_t mtk_vcodec_dec_irq_handler(int irq, void *priv) > > { > > -struct mtk_vcodec_dev *dev = priv; > > +struct mtk_vcodec_dec_dev *dev = priv; > > struct mtk_vcodec_dec_ctx *ctx; > > u32 cg_status = 0; > > unsigned int dec_done_status = 0; > > @@ -75,7 +74,7 @@ static irqreturn_t mtk_vcodec_dec_irq_handler(int > irq, void *priv) > > return IRQ_HANDLED; > > } > > > > -static int mtk_vcodec_get_reg_bases(struct mtk_vcodec_dev *dev) > > +static int mtk_vcodec_get_reg_bases(struct mtk_vcodec_dec_dev > *dev) > > { > > struct platform_device *pdev = dev->plat_dev; > > int reg_num, i; > > @@ -99,7 +98,7 @@ static int mtk_vcodec_get_reg_bases(struct > mtk_vcodec_dev *dev) > > return 0; > > } > > > > -static int mtk_vcodec_init_dec_resources(struct mtk_vcodec_dev > *dev) > > +static int mtk_vcodec_init_dec_resources(struct mtk_vcodec_dec_dev > *dev) > > { > > struct platform_device *pdev = dev->plat_dev; > > int ret; > > @@ -136,7 +135,7 @@ static int mtk_vcodec_init_dec_resources(struct > mtk_vcodec_dev *dev) > > > > static int fops_vcodec_open(struct file *file) > > { > > -struct mtk_vcodec_dev *dev = video_drvdata(file); > > +struct mtk_vcodec_dec_dev *dev = video_drvdata(file); > > struct mtk_vcodec_dec_ctx *ctx = NULL; > > int ret = 0, i, hw_count; > > struct vb2_queue *src_vq; > > @@ -233,7 +232,7 @@ static int fops_vcodec_open(struct file *file) > > > > static int fops_vcodec_release(struct file *file) > > { > > -struct mtk_vcodec_dev *dev = video_drvdata(file); > > +struct mtk_vcodec_dec_dev *dev = video_drvdata(file); > > struct mtk_vcodec_dec_ctx *ctx = fh_to_dec_ctx(file- > >private_data); > > > > mtk_v4l2_vdec_dbg(0, ctx, "[%d] decoder", ctx->id); > > @@ -270,7 +269,7 @@ static const struct v4l2_file_operations > mtk_vcodec_fops = { > > > > static int mtk_vcodec_probe(struct platform_device *pdev) > > { > > -struct mtk_vcodec_dev *dev; > > +struct mtk_vcodec_dec_dev *dev; > > struct video_device *vfd_dec; > > phandle rproc_phandle; > > enum mtk_vcodec_fw_type fw_type; > > @@ -477,7 +476,7 @@ MODULE_DEVICE_TABLE(of, mtk_vcodec_match); > > > > static void mtk_vcodec_dec_remove(struct platform_device *pdev) > > { > > -struct mtk_vcodec_dev *dev = platform_get_drvdata(pdev); > > +struct mtk_vcodec_dec_dev *dev = platform_get_drvdata(pdev); > > > > destroy_workqueue(dev->decode_workqueue); > > > > @@ -493,7 +492,7 @@ static void mtk_vcodec_dec_remove(struct > platform_device *pdev) > > if (dev->vfd_dec) > > video_unregister_device(dev->vfd_dec); > > > > -mtk_vcodec_dbgfs_deinit(dev); > > +mtk_vcodec_dbgfs_deinit(&dev->dbgfs); > > v4l2_device_unregister(&dev->v4l2_dev); > > if (!dev->vdec_pdata->is_subdev_supported) > > pm_runtime_disable(dev->pm.dev); > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > > index 94870b651919..a18ba8f32d41 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.h > > @@ -8,9 +8,49 @@ > > #define _MTK_VCODEC_DEC_DRV_H_ > > > > #include "mtk_vcodec_com_drv.h" > > +#include "mtk_vcodec_dbgfs.h" > > #include "mtk_vcodec_fw_priv.h" > > +#include "mtk_vcodec_util.h" > > #include "vdec_msg_queue.h" > > > > +#define MTK_VCODEC_DEC_NAME"mtk-vcodec-dec" > > + > > +#define IS_VDEC_LAT_ARCH(hw_arch) ((hw_arch) >= > MTK_VDEC_LAT_SINGLE_CORE) > > +#define IS_VDEC_INNER_RACING(capability) ((capability) & > MTK_VCODEC_INNER_RACING) > > + > > +/* > > + * struct mtk_vdec_format_types - Structure used to get supported > > + * format types according to decoder capability > > + */ > > +enum mtk_vdec_format_types { > > +MTK_VDEC_FORMAT_MM21 = 0x20, > > +MTK_VDEC_FORMAT_MT21C = 0x40, > > +MTK_VDEC_FORMAT_H264_SLICE = 0x100, > > +MTK_VDEC_FORMAT_VP8_FRAME = 0x200, > > +MTK_VDEC_FORMAT_VP9_FRAME = 0x400, > > +MTK_VDEC_FORMAT_AV1_FRAME = 0x800, > > +MTK_VDEC_FORMAT_HEVC_FRAME = 0x1000, > > +MTK_VCODEC_INNER_RACING = 0x20000, > > +}; > > + > > +/* > > + * enum mtk_vdec_hw_count - Supported hardware count > > + */ > > +enum mtk_vdec_hw_count { > > +MTK_VDEC_NO_HW = 0, > > +MTK_VDEC_ONE_CORE, > > +MTK_VDEC_ONE_LAT_ONE_CORE, > > +MTK_VDEC_MAX_HW_COUNT, > > +}; > > + > > +/* > > + * enum mtk_vdec_hw_arch - Used to separate different hardware > architecture > > + */ > > +enum mtk_vdec_hw_arch { > > +MTK_VDEC_PURE_SINGLE_CORE, > > +MTK_VDEC_LAT_SINGLE_CORE, > > +}; > > + > > /** > > * struct vdec_pic_info - picture size information > > * @pic_w: picture width > > @@ -33,24 +73,54 @@ struct vdec_pic_info { > > unsigned int reserved; > > }; > > > > -/* > > - * enum mtk_vdec_hw_id - Hardware index used to separate > > - * different hardware > > +/** > > + * struct mtk_vcodec_dec_pdata - compatible data for each IC > > + * @init_vdec_params: init vdec params > > + * @ctrls_setup: init vcodec dec ctrls > > + * @worker: worker to start a decode job > > + * @flush_decoder: function that flushes the decoder > > + * @get_cap_buffer: get capture buffer from capture queue > > + * @cap_to_disp: put capture buffer to disp list for lat and core > arch > > + * @vdec_vb2_ops: struct vb2_ops > > + * > > + * @vdec_formats: supported video decoder formats > > + * @num_formats: count of video decoder formats > > + * @default_out_fmt: default output buffer format > > + * @default_cap_fmt: default capture buffer format > > + * > > + * @hw_arch: hardware arch is used to separate pure_sin_core and > lat_sin_core > > + * > > + * @is_subdev_supported: whether support parent-node > architecture(subdev) > > + * @uses_stateless_api: whether the decoder uses the stateless API > with requests > > */ > > -enum mtk_vdec_hw_id { > > -MTK_VDEC_CORE, > > -MTK_VDEC_LAT0, > > -MTK_VDEC_LAT1, > > -MTK_VDEC_LAT_SOC, > > -MTK_VDEC_HW_MAX, > > +struct mtk_vcodec_dec_pdata { > > +void (*init_vdec_params)(struct mtk_vcodec_dec_ctx *ctx); > > +int (*ctrls_setup)(struct mtk_vcodec_dec_ctx *ctx); > > +void (*worker)(struct work_struct *work); > > +int (*flush_decoder)(struct mtk_vcodec_dec_ctx *ctx); > > +struct vdec_fb *(*get_cap_buffer)(struct mtk_vcodec_dec_ctx *ctx); > > +void (*cap_to_disp)(struct mtk_vcodec_dec_ctx *ctx, int error, > > + struct media_request *src_buf_req); > > + > > +const struct vb2_ops *vdec_vb2_ops; > > + > > +const struct mtk_video_fmt *vdec_formats; > > +const int *num_formats; > > +const struct mtk_video_fmt *default_out_fmt; > > +const struct mtk_video_fmt *default_cap_fmt; > > + > > +enum mtk_vdec_hw_arch hw_arch; > > + > > +bool is_subdev_supported; > > +bool uses_stateless_api; > > }; > > > > /** > > * struct mtk_vcodec_dec_ctx - Context (instance) private data. > > * > > * @type: type of the instance - decoder or encoder > > - * @dev: pointer to the mtk_vcodec_dev of the device > > - * @list: link to ctx_list of mtk_vcodec_dev > > + * @dev: pointer to the mtk_vcodec_dec_dev of the device > > + * @list: link to ctx_list of mtk_vcodec_dec_dev > > * > > * @fh: struct v4l2_fh > > * @m2m_ctx: pointer to the v4l2_m2m_ctx of the context > > @@ -95,7 +165,7 @@ enum mtk_vdec_hw_id { > > */ > > struct mtk_vcodec_dec_ctx { > > enum mtk_instance_type type; > > -struct mtk_vcodec_dev *dev; > > +struct mtk_vcodec_dec_dev *dev; > > struct list_head list; > > > > struct v4l2_fh fh; > > @@ -136,6 +206,84 @@ struct mtk_vcodec_dec_ctx { > > struct vdec_msg_queue msg_queue; > > }; > > > > +/** > > + * struct mtk_vcodec_dec_dev - driver data > > + * @v4l2_dev: V4L2 device to register video devices for. > > + * @vfd_dec: Video device for decoder > > + * @mdev_dec: Media device for decoder > > + * > > + * @m2m_dev_dec: m2m device for decoder > > + * @plat_dev: platform device > > + * @ctx_list: list of struct mtk_vcodec_ctx > > + * @curr_ctx: The context that is waiting for codec hardware > > + * > > + * @reg_base: Mapped address of MTK Vcodec registers. > > + * @vdec_pdata: decoder IC-specific data > > + * > > + * @fw_handler: used to communicate with the firmware. > > + * @id_counter: used to identify current opened instance > > + * > > + * @dec_mutex: decoder hardware lock > > + * @dev_mutex: video_device lock > > + * @decode_workqueue: decode work queue > > + * > > + * @irqlock: protect data access by irq handler and work thread > > + * @dec_irq: decoder irq resource > > + * > > + * @pm: power management control > > + * @dec_capability: used to identify decode capability, ex: 4k > > + * > > + * @core_workqueue: queue used for core hardware decode > > + * > > + * @subdev_dev: subdev hardware device > > + * @subdev_prob_done: check whether all used hw device is prob > done > > + * @subdev_bitmap: used to record hardware is ready or not > > + * > > + * @dec_active_cnt: used to mark whether need to record register > value > > + * @vdec_racing_info: record register value > > + * @dec_racing_info_mutex: mutex lock used for inner racing mode > > + * @dbgfs: debug log related information > > + */ > > +struct mtk_vcodec_dec_dev { > > +struct v4l2_device v4l2_dev; > > +struct video_device *vfd_dec; > > +struct media_device mdev_dec; > > + > > +struct v4l2_m2m_dev *m2m_dev_dec; > > +struct platform_device *plat_dev; > > +struct list_head ctx_list; > > +struct mtk_vcodec_dec_ctx *curr_ctx; > > + > > +void __iomem *reg_base[NUM_MAX_VCODEC_REG_BASE]; > > +const struct mtk_vcodec_dec_pdata *vdec_pdata; > > + > > +struct mtk_vcodec_fw *fw_handler; > > +unsigned long id_counter; > > + > > +/* decoder hardware mutex lock */ > > +struct mutex dec_mutex[MTK_VDEC_HW_MAX]; > > +struct mutex dev_mutex; > > +struct workqueue_struct *decode_workqueue; > > + > > +spinlock_t irqlock; > > +int dec_irq; > > + > > +struct mtk_vcodec_pm pm; > > +unsigned int dec_capability; > > + > > +struct workqueue_struct *core_workqueue; > > + > > +void *subdev_dev[MTK_VDEC_HW_MAX]; > > +int (*subdev_prob_done)(struct mtk_vcodec_dec_dev *vdec_dev); > > +DECLARE_BITMAP(subdev_bitmap, MTK_VDEC_HW_MAX); > > + > > +atomic_t dec_active_cnt; > > +u32 vdec_racing_info[132]; > > +/* Protects access to vdec_racing_info data */ > > +struct mutex dec_racing_info_mutex; > > +struct mtk_vcodec_dbgfs dbgfs; > > +}; > > + > > static inline struct mtk_vcodec_dec_ctx *fh_to_dec_ctx(struct > v4l2_fh *fh) > > { > > return container_of(fh, struct mtk_vcodec_dec_ctx, fh); > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > > index dde0894f2ab0..23c19efa3cf6 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.c > > @@ -12,7 +12,6 @@ > > #include <linux/pm_runtime.h> > > #include <linux/slab.h> > > > > -#include "mtk_vcodec_drv.h" > > #include "mtk_vcodec_dec.h" > > #include "mtk_vcodec_dec_hw.h" > > #include "mtk_vcodec_dec_pm.h" > > @@ -36,7 +35,7 @@ static const struct of_device_id > mtk_vdec_hw_match[] = { > > }; > > MODULE_DEVICE_TABLE(of, mtk_vdec_hw_match); > > > > -static int mtk_vdec_hw_prob_done(struct mtk_vcodec_dev *vdec_dev) > > +static int mtk_vdec_hw_prob_done(struct mtk_vcodec_dec_dev > *vdec_dev) > > { > > struct platform_device *pdev = vdec_dev->plat_dev; > > struct device_node *subdev_node; > > @@ -123,7 +122,7 @@ static int mtk_vdec_hw_probe(struct > platform_device *pdev) > > { > > struct device *dev = &pdev->dev; > > struct mtk_vdec_hw_dev *subdev_dev; > > -struct mtk_vcodec_dev *main_dev; > > +struct mtk_vcodec_dec_dev *main_dev; > > const struct of_device_id *of_id; > > int hw_idx; > > int ret; > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.h > > index d62c7f961cfa..2b33f00e931e 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_hw.h > > @@ -10,7 +10,7 @@ > > #include <linux/io.h> > > #include <linux/platform_device.h> > > > > -#include "mtk_vcodec_drv.h" > > +#include "mtk_vcodec_dec_drv.h" > > > > #define VDEC_HW_ACTIVE 0x10 > > #define VDEC_IRQ_CFG 0x11 > > @@ -45,7 +45,7 @@ enum mtk_vdec_hw_reg_idx { > > */ > > struct mtk_vdec_hw_dev { > > struct platform_device *plat_dev; > > -struct mtk_vcodec_dev *main_dev; > > +struct mtk_vcodec_dec_dev *main_dev; > > void __iomem *reg_base[VDEC_HW_MAX]; > > > > struct mtk_vcodec_dec_ctx *curr_ctx; > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > > index 29ef00c4a326..ed1f503a944e 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.c > > @@ -107,7 +107,7 @@ static void mtk_vcodec_dec_clock_off(struct > mtk_vcodec_pm *pm) > > clk_disable_unprepare(dec_clk->clk_info[i].vcodec_clk); > > } > > > > -static void mtk_vcodec_dec_enable_irq(struct mtk_vcodec_dev > *vdec_dev, int hw_idx) > > +static void mtk_vcodec_dec_enable_irq(struct mtk_vcodec_dec_dev > *vdec_dev, int hw_idx) > > { > > struct mtk_vdec_hw_dev *subdev_dev; > > > > @@ -125,7 +125,7 @@ static void mtk_vcodec_dec_enable_irq(struct > mtk_vcodec_dev *vdec_dev, int hw_id > > } > > } > > > > -static void mtk_vcodec_dec_disable_irq(struct mtk_vcodec_dev > *vdec_dev, int hw_idx) > > +static void mtk_vcodec_dec_disable_irq(struct mtk_vcodec_dec_dev > *vdec_dev, int hw_idx) > > { > > struct mtk_vdec_hw_dev *subdev_dev; > > > > @@ -171,7 +171,7 @@ static void > mtk_vcodec_record_racing_info(struct mtk_vcodec_dec_ctx *ctx) > > mutex_unlock(&ctx->dev->dec_racing_info_mutex); > > } > > > > -static struct mtk_vcodec_pm *mtk_vcodec_dec_get_pm(struct > mtk_vcodec_dev *vdec_dev, > > +static struct mtk_vcodec_pm *mtk_vcodec_dec_get_pm(struct > mtk_vcodec_dec_dev *vdec_dev, > > int hw_idx) > > { > > struct mtk_vdec_hw_dev *subdev_dev; > > @@ -191,7 +191,7 @@ static struct mtk_vcodec_pm > *mtk_vcodec_dec_get_pm(struct mtk_vcodec_dev *vdec_d > > return &vdec_dev->pm; > > } > > > > -static void mtk_vcodec_dec_child_dev_on(struct mtk_vcodec_dev > *vdec_dev, > > +static void mtk_vcodec_dec_child_dev_on(struct mtk_vcodec_dec_dev > *vdec_dev, > > int hw_idx) > > { > > struct mtk_vcodec_pm *pm; > > @@ -211,7 +211,7 @@ static void mtk_vcodec_dec_child_dev_on(struct > mtk_vcodec_dev *vdec_dev, > > } > > } > > > > -static void mtk_vcodec_dec_child_dev_off(struct mtk_vcodec_dev > *vdec_dev, > > +static void mtk_vcodec_dec_child_dev_off(struct mtk_vcodec_dec_dev > *vdec_dev, > > int hw_idx) > > { > > struct mtk_vcodec_pm *pm; > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.h > > index f6c68e57bcc1..87a50d589d42 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_pm.h > > @@ -7,7 +7,7 @@ > > #ifndef _MTK_VCODEC_DEC_PM_H_ > > #define _MTK_VCODEC_DEC_PM_H_ > > > > -#include "mtk_vcodec_drv.h" > > +#include "mtk_vcodec_dec_drv.h" > > > > int mtk_vcodec_init_dec_clk(struct platform_device *pdev, struct > mtk_vcodec_pm *pm); > > > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > > index 93230fe7ab97..459e74a46737 100644 > > --- > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > > +++ > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > > @@ -4,7 +4,6 @@ > > #include <media/v4l2-mem2mem.h> > > #include <media/videobuf2-dma-contig.h> > > > > -#include "mtk_vcodec_drv.h" > > #include "mtk_vcodec_dec.h" > > #include "mtk_vcodec_intr.h" > > #include "mtk_vcodec_util.h" > > @@ -279,7 +278,7 @@ static void mtk_vdec_worker(struct work_struct > *work) > > { > > struct mtk_vcodec_dec_ctx *ctx = > > container_of(work, struct mtk_vcodec_dec_ctx, decode_work); > > -struct mtk_vcodec_dev *dev = ctx->dev; > > +struct mtk_vcodec_dec_dev *dev = ctx->dev; > > struct vb2_v4l2_buffer *src_buf, *dst_buf; > > struct mtk_vcodec_mem buf; > > struct vdec_fb *pfb; > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > > index 64e9dfd0fcb5..6268a39c2bb3 100644 > > --- > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > > +++ > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c > > @@ -6,7 +6,6 @@ > > #include <media/v4l2-mem2mem.h> > > #include <linux/module.h> > > > > -#include "mtk_vcodec_drv.h" > > #include "mtk_vcodec_dec.h" > > #include "mtk_vcodec_intr.h" > > #include "mtk_vcodec_util.h" > > @@ -288,7 +287,7 @@ static void mtk_vdec_worker(struct work_struct > *work) > > { > > struct mtk_vcodec_dec_ctx *ctx = > > container_of(work, struct mtk_vcodec_dec_ctx, decode_work); > > -struct mtk_vcodec_dev *dev = ctx->dev; > > +struct mtk_vcodec_dec_dev *dev = ctx->dev; > > struct vb2_v4l2_buffer *vb2_v4l2_src; > > struct vb2_buffer *vb2_src; > > struct mtk_vcodec_mem *bs_src; > > @@ -444,7 +443,7 @@ const struct media_device_ops > mtk_vcodec_media_ops = { > > static void mtk_vcodec_add_formats(unsigned int fourcc, > > struct mtk_vcodec_dec_ctx *ctx) > > { > > -struct mtk_vcodec_dev *dev = ctx->dev; > > +struct mtk_vcodec_dec_dev *dev = ctx->dev; > > const struct mtk_vcodec_dec_pdata *pdata = dev->vdec_pdata; > > int count_formats = *pdata->num_formats; > > > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h > > deleted file mode 100644 > > index 76db7770d981..000000000000 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h > > +++ /dev/null > > @@ -1,295 +0,0 @@ > > -/* SPDX-License-Identifier: GPL-2.0 */ > > -/* > > -* Copyright (c) 2016 MediaTek Inc. > > -* Author: PC Chen <pc.chen@mediatek.com> > > -* Tiffany Lin <tiffany.lin@mediatek.com> > > -*/ > > - > > -#ifndef _MTK_VCODEC_DRV_H_ > > -#define _MTK_VCODEC_DRV_H_ > > - > > -#include <linux/platform_device.h> > > -#include <linux/videodev2.h> > > -#include <media/v4l2-ctrls.h> > > -#include <media/v4l2-device.h> > > -#include <media/v4l2-ioctl.h> > > -#include <media/v4l2-mem2mem.h> > > -#include <media/videobuf2-core.h> > > - > > -#include "mtk_vcodec_dbgfs.h" > > -#include "mtk_vcodec_dec_drv.h" > > -#include "mtk_vcodec_enc_drv.h" > > -#include "mtk_vcodec_util.h" > > -#include "vdec_msg_queue.h" > > - > > -#define MTK_VCODEC_DEC_NAME"mtk-vcodec-dec" > > -#define MTK_VCODEC_ENC_NAME"mtk-vcodec-enc" > > - > > -#define MTK_V4L2_BENCHMARK0 > > -#define WAIT_INTR_TIMEOUT_MS1000 > > -#define IS_VDEC_LAT_ARCH(hw_arch) ((hw_arch) >= > MTK_VDEC_LAT_SINGLE_CORE) > > -#define IS_VDEC_INNER_RACING(capability) ((capability) & > MTK_VCODEC_INNER_RACING) > > - > > -/* > > - * enum mtk_hw_reg_idx - MTK hw register base index > > - */ > > -enum mtk_hw_reg_idx { > > -VDEC_SYS, > > -VDEC_MISC, > > -VDEC_LD, > > -VDEC_TOP, > > -VDEC_CM, > > -VDEC_AD, > > -VDEC_AV, > > -VDEC_PP, > > -VDEC_HWD, > > -VDEC_HWQ, > > -VDEC_HWB, > > -VDEC_HWG, > > -NUM_MAX_VDEC_REG_BASE, > > -/* h264 encoder */ > > -VENC_SYS = NUM_MAX_VDEC_REG_BASE, > > -/* vp8 encoder */ > > -VENC_LT_SYS, > > -NUM_MAX_VCODEC_REG_BASE > > -}; > > - > > - > > - > > -/* > > - * enum mtk_vdec_hw_count - Supported hardware count > > - */ > > -enum mtk_vdec_hw_count { > > -MTK_VDEC_NO_HW = 0, > > -MTK_VDEC_ONE_CORE, > > -MTK_VDEC_ONE_LAT_ONE_CORE, > > -MTK_VDEC_MAX_HW_COUNT, > > -}; > > - > > -/* > > - * enum mtk_q_type - Type of queue > > - */ > > -enum mtk_q_type { > > -MTK_Q_DATA_SRC = 0, > > -MTK_Q_DATA_DST = 1, > > -}; > > - > > - > > -/* > > - * struct mtk_vcodec_clk_info - Structure used to store clock name > > - */ > > -struct mtk_vcodec_clk_info { > > -const char*clk_name; > > -struct clk*vcodec_clk; > > -}; > > - > > -/* > > - * struct mtk_vcodec_clk - Structure used to store vcodec clock > information > > - */ > > -struct mtk_vcodec_clk { > > -struct mtk_vcodec_clk_info*clk_info; > > -intclk_num; > > -}; > > - > > -/* > > - * struct mtk_vcodec_pm - Power management data structure > > - */ > > -struct mtk_vcodec_pm { > > -struct mtk_vcodec_clkvdec_clk; > > -struct mtk_vcodec_clkvenc_clk; > > -struct device*dev; > > -}; > > - > > -/* > > - * enum mtk_vdec_hw_arch - Used to separate different hardware > architecture > > - */ > > -enum mtk_vdec_hw_arch { > > -MTK_VDEC_PURE_SINGLE_CORE, > > -MTK_VDEC_LAT_SINGLE_CORE, > > -}; > > - > > -/* > > - * struct mtk_vdec_format_types - Structure used to get supported > > - * format types according to decoder capability > > - */ > > -enum mtk_vdec_format_types { > > -MTK_VDEC_FORMAT_MM21 = 0x20, > > -MTK_VDEC_FORMAT_MT21C = 0x40, > > -MTK_VDEC_FORMAT_H264_SLICE = 0x100, > > -MTK_VDEC_FORMAT_VP8_FRAME = 0x200, > > -MTK_VDEC_FORMAT_VP9_FRAME = 0x400, > > -MTK_VDEC_FORMAT_AV1_FRAME = 0x800, > > -MTK_VDEC_FORMAT_HEVC_FRAME = 0x1000, > > -MTK_VCODEC_INNER_RACING = 0x20000, > > -}; > > - > > -/** > > - * struct mtk_vcodec_dec_pdata - compatible data for each IC > > - * @init_vdec_params: init vdec params > > - * @ctrls_setup: init vcodec dec ctrls > > - * @worker: worker to start a decode job > > - * @flush_decoder: function that flushes the decoder > > - * @get_cap_buffer: get capture buffer from capture queue > > - * @cap_to_disp: put capture buffer to disp list for lat and core > arch > > - * @vdec_vb2_ops: struct vb2_ops > > - * > > - * @vdec_formats: supported video decoder formats > > - * @num_formats: count of video decoder formats > > - * @default_out_fmt: default output buffer format > > - * @default_cap_fmt: default capture buffer format > > - * > > - * @hw_arch: hardware arch is used to separate pure_sin_core and > lat_sin_core > > - * > > - * @is_subdev_supported: whether support parent-node > architecture(subdev) > > - * @uses_stateless_api: whether the decoder uses the stateless API > with requests > > - */ > > - > > -struct mtk_vcodec_dec_pdata { > > -void (*init_vdec_params)(struct mtk_vcodec_dec_ctx *ctx); > > -int (*ctrls_setup)(struct mtk_vcodec_dec_ctx *ctx); > > -void (*worker)(struct work_struct *work); > > -int (*flush_decoder)(struct mtk_vcodec_dec_ctx *ctx); > > -struct vdec_fb *(*get_cap_buffer)(struct mtk_vcodec_dec_ctx *ctx); > > -void (*cap_to_disp)(struct mtk_vcodec_dec_ctx *ctx, int error, > > - struct media_request *src_buf_req); > > - > > -struct vb2_ops *vdec_vb2_ops; > > - > > -const struct mtk_video_fmt *vdec_formats; > > -const int *num_formats; > > -const struct mtk_video_fmt *default_out_fmt; > > -const struct mtk_video_fmt *default_cap_fmt; > > - > > -enum mtk_vdec_hw_arch hw_arch; > > - > > -bool is_subdev_supported; > > -bool uses_stateless_api; > > -}; > > - > > -/** > > - * struct mtk_vcodec_enc_pdata - compatible data for each IC > > - * > > - * @uses_ext: whether the encoder uses the extended firmware > messaging format > > - * @min_bitrate: minimum supported encoding bitrate > > - * @max_bitrate: maximum supported encoding bitrate > > - * @capture_formats: array of supported capture formats > > - * @num_capture_formats: number of entries in capture_formats > > - * @output_formats: array of supported output formats > > - * @num_output_formats: number of entries in output_formats > > - * @core_id: stand for h264 or vp8 encode index > > - * @uses_34bit: whether the encoder uses 34-bit iova > > - */ > > -struct mtk_vcodec_enc_pdata { > > -bool uses_ext; > > -unsigned long min_bitrate; > > -unsigned long max_bitrate; > > -const struct mtk_video_fmt *capture_formats; > > -size_t num_capture_formats; > > -const struct mtk_video_fmt *output_formats; > > -size_t num_output_formats; > > -int core_id; > > -bool uses_34bit; > > -}; > > - > > -#define MTK_ENC_CTX_IS_EXT(ctx) ((ctx)->dev->venc_pdata->uses_ext) > > -#define MTK_ENC_IOVA_IS_34BIT(ctx) ((ctx)->dev->venc_pdata- > >uses_34bit) > > - > > -/** > > - * struct mtk_vcodec_dev - driver data > > - * @v4l2_dev: V4L2 device to register video devices for. > > - * @vfd_dec: Video device for decoder > > - * @mdev_dec: Media device for decoder > > - * @vfd_enc: Video device for encoder. > > - * > > - * @m2m_dev_dec: m2m device for decoder > > - * @m2m_dev_enc: m2m device for encoder. > > - * @plat_dev: platform device > > - * @ctx_list: list of struct mtk_vcodec_dec_ctx > > - * @irqlock: protect data access by irq handler and work thread > > - * @curr_ctx: The context that is waiting for codec hardware > > - * @curr_enc_ctx: The encoder context that is waiting for codec > hardware > > - * > > - * @reg_base: Mapped address of MTK Vcodec registers. > > - * @vdec_pdata: decoder IC-specific data > > - * @venc_pdata: encoder IC-specific data > > - * > > - * @fw_handler: used to communicate with the firmware. > > - * @id_counter: used to identify current opened instance > > - * > > - * @decode_workqueue: decode work queue > > - * @encode_workqueue: encode work queue > > - * > > - * @dev_mutex: video_device lock > > - * > > - * @dec_irq: decoder irq resource > > - * @enc_irq: h264 encoder irq resource > > - * > > - * @dec_mutex: decoder hardware lock > > - * @enc_mutex: encoder hardware lock. > > - * > > - * @pm: power management control > > - * @dec_capability: used to identify decode capability, ex: 4k > > - * @enc_capability: used to identify encode capability > > - * > > - * @core_workqueue: queue used for core hardware decode > > - * > > - * @subdev_dev: subdev hardware device > > - * @subdev_prob_done: check whether all used hw device is prob > done > > - * @subdev_bitmap: used to record hardware is ready or not > > - * > > - * @dec_active_cnt: used to mark whether need to record register > value > > - * @vdec_racing_info: record register value > > - * @dec_racing_info_mutex: mutex lock used for inner racing mode > > - * @dbgfs: debug log related information > > - */ > > -struct mtk_vcodec_dev { > > -struct v4l2_device v4l2_dev; > > -struct video_device *vfd_dec; > > -struct media_device mdev_dec; > > -struct video_device *vfd_enc; > > - > > -struct v4l2_m2m_dev *m2m_dev_dec; > > -struct v4l2_m2m_dev *m2m_dev_enc; > > -struct platform_device *plat_dev; > > -struct list_head ctx_list; > > -spinlock_t irqlock; > > -struct mtk_vcodec_dec_ctx *curr_ctx; > > -struct mtk_vcodec_enc_ctx *curr_enc_ctx; > > -void __iomem *reg_base[NUM_MAX_VCODEC_REG_BASE]; > > -const struct mtk_vcodec_dec_pdata *vdec_pdata; > > -const struct mtk_vcodec_enc_pdata *venc_pdata; > > - > > -struct mtk_vcodec_fw *fw_handler; > > - > > -unsigned long id_counter; > > - > > -struct workqueue_struct *decode_workqueue; > > -struct workqueue_struct *encode_workqueue; > > -struct mutex dev_mutex; > > - > > -int dec_irq; > > -int enc_irq; > > - > > -/* decoder hardware mutex lock */ > > -struct mutex dec_mutex[MTK_VDEC_HW_MAX]; > > -struct mutex enc_mutex; > > - > > -struct mtk_vcodec_pm pm; > > -unsigned int dec_capability; > > -unsigned int enc_capability; > > - > > -struct workqueue_struct *core_workqueue; > > - > > -void *subdev_dev[MTK_VDEC_HW_MAX]; > > -int (*subdev_prob_done)(struct mtk_vcodec_dev *vdec_dev); > > -DECLARE_BITMAP(subdev_bitmap, MTK_VDEC_HW_MAX); > > - > > -atomic_t dec_active_cnt; > > -u32 vdec_racing_info[132]; > > -/* Protects access to vdec_racing_info data */ > > -struct mutex dec_racing_info_mutex; > > - > > -struct mtk_vcodec_dbgfs dbgfs; > > -}; > > - > > -#endif /* _MTK_VCODEC_DRV_H_ */ > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > > index deabf012848e..85dabb20fb11 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c > > @@ -10,7 +10,6 @@ > > #include <media/videobuf2-dma-contig.h> > > #include <linux/pm_runtime.h> > > > > -#include "mtk_vcodec_drv.h" > > #include "mtk_vcodec_enc.h" > > #include "mtk_vcodec_intr.h" > > #include "mtk_vcodec_util.h" > > @@ -1436,7 +1435,7 @@ int mtk_vcodec_enc_queue_init(void *priv, > struct vb2_queue *src_vq, > > > > int mtk_venc_unlock(struct mtk_vcodec_enc_ctx *ctx) > > { > > -struct mtk_vcodec_dev *dev = ctx->dev; > > +struct mtk_vcodec_enc_dev *dev = ctx->dev; > > > > mutex_unlock(&dev->enc_mutex); > > return 0; > > @@ -1444,7 +1443,7 @@ int mtk_venc_unlock(struct mtk_vcodec_enc_ctx > *ctx) > > > > int mtk_venc_lock(struct mtk_vcodec_enc_ctx *ctx) > > { > > -struct mtk_vcodec_dev *dev = ctx->dev; > > +struct mtk_vcodec_enc_dev *dev = ctx->dev; > > > > mutex_lock(&dev->enc_mutex); > > return 0; > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > > index c9b6ce9dfa2d..0830708de32f 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > > @@ -16,7 +16,6 @@ > > #include <media/v4l2-mem2mem.h> > > #include <media/videobuf2-dma-contig.h> > > > > -#include "mtk_vcodec_drv.h" > > #include "mtk_vcodec_enc.h" > > #include "mtk_vcodec_enc_pm.h" > > #include "mtk_vcodec_intr.h" > > @@ -85,14 +84,14 @@ static void clean_irq_status(unsigned int > irq_status, void __iomem *addr) > > } > > static irqreturn_t mtk_vcodec_enc_irq_handler(int irq, void *priv) > > { > > -struct mtk_vcodec_dev *dev = priv; > > +struct mtk_vcodec_enc_dev *dev = priv; > > struct mtk_vcodec_enc_ctx *ctx; > > unsigned long flags; > > void __iomem *addr; > > int core_id; > > > > spin_lock_irqsave(&dev->irqlock, flags); > > -ctx = dev->curr_enc_ctx; > > +ctx = dev->curr_ctx; > > spin_unlock_irqrestore(&dev->irqlock, flags); > > > > core_id = dev->venc_pdata->core_id; > > @@ -116,7 +115,7 @@ static irqreturn_t > mtk_vcodec_enc_irq_handler(int irq, void *priv) > > > > static int fops_vcodec_open(struct file *file) > > { > > -struct mtk_vcodec_dev *dev = video_drvdata(file); > > +struct mtk_vcodec_enc_dev *dev = video_drvdata(file); > > struct mtk_vcodec_enc_ctx *ctx = NULL; > > int ret = 0; > > struct vb2_queue *src_vq; > > @@ -203,7 +202,7 @@ static int fops_vcodec_open(struct file *file) > > > > static int fops_vcodec_release(struct file *file) > > { > > -struct mtk_vcodec_dev *dev = video_drvdata(file); > > +struct mtk_vcodec_enc_dev *dev = video_drvdata(file); > > struct mtk_vcodec_enc_ctx *ctx = fh_to_enc_ctx(file- > >private_data); > > > > mtk_v4l2_venc_dbg(1, ctx, "[%d] encoder", ctx->id); > > @@ -232,7 +231,7 @@ static const struct v4l2_file_operations > mtk_vcodec_fops = { > > > > static int mtk_vcodec_probe(struct platform_device *pdev) > > { > > -struct mtk_vcodec_dev *dev; > > +struct mtk_vcodec_enc_dev *dev; > > struct video_device *vfd_enc; > > phandle rproc_phandle; > > enum mtk_vcodec_fw_type fw_type; > > @@ -454,7 +453,7 @@ MODULE_DEVICE_TABLE(of, mtk_vcodec_enc_match); > > > > static void mtk_vcodec_enc_remove(struct platform_device *pdev) > > { > > -struct mtk_vcodec_dev *dev = platform_get_drvdata(pdev); > > +struct mtk_vcodec_enc_dev *dev = platform_get_drvdata(pdev); > > > > destroy_workqueue(dev->encode_workqueue); > > if (dev->m2m_dev_enc) > > @@ -463,7 +462,7 @@ static void mtk_vcodec_enc_remove(struct > platform_device *pdev) > > if (dev->vfd_enc) > > video_unregister_device(dev->vfd_enc); > > > > -mtk_vcodec_dbgfs_deinit(dev); > > +mtk_vcodec_dbgfs_deinit(&dev->dbgfs); > > v4l2_device_unregister(&dev->v4l2_dev); > > pm_runtime_disable(dev->pm.dev); > > mtk_vcodec_fw_release(dev->fw_handler); > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > > index 6aa4afe5b796..a88ef9078848 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.h > > @@ -8,7 +8,39 @@ > > #define _MTK_VCODEC_ENC_DRV_H_ > > > > #include "mtk_vcodec_com_drv.h" > > +#include "mtk_vcodec_dbgfs.h" > > #include "mtk_vcodec_fw_priv.h" > > +#include "mtk_vcodec_util.h" > > + > > +#define MTK_VCODEC_ENC_NAME"mtk-vcodec-enc" > > + > > +#define MTK_ENC_CTX_IS_EXT(ctx) ((ctx)->dev->venc_pdata->uses_ext) > > +#define MTK_ENC_IOVA_IS_34BIT(ctx) ((ctx)->dev->venc_pdata- > >uses_34bit) > > + > > +/** > > + * struct mtk_vcodec_enc_pdata - compatible data for each IC > > + * > > + * @uses_ext: whether the encoder uses the extended firmware > messaging format > > + * @min_bitrate: minimum supported encoding bitrate > > + * @max_bitrate: maximum supported encoding bitrate > > + * @capture_formats: array of supported capture formats > > + * @num_capture_formats: number of entries in capture_formats > > + * @output_formats: array of supported output formats > > + * @num_output_formats: number of entries in output_formats > > + * @core_id: stand for h264 or vp8 encode index > > + * @uses_34bit: whether the encoder uses 34-bit iova > > + */ > > +struct mtk_vcodec_enc_pdata { > > +bool uses_ext; > > +unsigned long min_bitrate; > > +unsigned long max_bitrate; > > +const struct mtk_video_fmt *capture_formats; > > +size_t num_capture_formats; > > +const struct mtk_video_fmt *output_formats; > > +size_t num_output_formats; > > +int core_id; > > +bool uses_34bit; > > +}; > > > > /* > > * enum mtk_encode_param - General encoding parameters type > > @@ -61,8 +93,8 @@ struct mtk_enc_params { > > * struct mtk_vcodec_enc_ctx - Context (instance) private data. > > * > > * @type: type of the instance - decoder or encoder > > - * @dev: pointer to the mtk_vcodec_dev of the device > > - * @list: link to ctx_list of mtk_vcodec_dev > > + * @dev: pointer to the mtk_vcodec_enc_dev of the device > > + * @list: link to ctx_list of mtk_vcodec_enc_dev > > * > > * @fh: struct v4l2_fh > > * @m2m_ctx: pointer to the v4l2_m2m_ctx of the context > > @@ -101,7 +133,7 @@ struct mtk_enc_params { > > */ > > struct mtk_vcodec_enc_ctx { > > enum mtk_instance_type type; > > -struct mtk_vcodec_dev *dev; > > +struct mtk_vcodec_enc_dev *dev; > > struct list_head list; > > > > struct v4l2_fh fh; > > @@ -136,6 +168,61 @@ struct mtk_vcodec_enc_ctx { > > struct mutex q_mutex; > > }; > > > > +/** > > + * struct mtk_vcodec_enc_dev - driver data > > + * @v4l2_dev: V4L2 device to register video devices for. > > + * @vfd_enc: Video device for encoder. > > + * > > + * @m2m_dev_enc: m2m device for encoder. > > + * @plat_dev: platform device > > + * @ctx_list: list of struct mtk_vcodec_ctx > > + * @curr_ctx: The context that is waiting for codec hardware > > + * > > + * @reg_base: Mapped address of MTK Vcodec registers. > > + * @venc_pdata: encoder IC-specific data > > + * > > + * @fw_handler: used to communicate with the firmware. > > + * @id_counter: used to identify current opened instance > > + * > > + * @enc_mutex: encoder hardware lock. > > + * @dev_mutex: video_device lock > > + * @encode_workqueue: encode work queue > > + * > > + * @enc_irq: h264 encoder irq resource > > + * @irqlock: protect data access by irq handler and work thread > > + * > > + * @pm: power management control > > + * @enc_capability: used to identify encode capability > > + * @dbgfs: debug log related information > > + */ > > +struct mtk_vcodec_enc_dev { > > +struct v4l2_device v4l2_dev; > > +struct video_device *vfd_enc; > > + > > +struct v4l2_m2m_dev *m2m_dev_enc; > > +struct platform_device *plat_dev; > > +struct list_head ctx_list; > > +struct mtk_vcodec_enc_ctx *curr_ctx; > > + > > +void __iomem *reg_base[NUM_MAX_VCODEC_REG_BASE]; > > +const struct mtk_vcodec_enc_pdata *venc_pdata; > > + > > +struct mtk_vcodec_fw *fw_handler; > > +unsigned long id_counter; > > + > > +/* encoder hardware mutex lock */ > > +struct mutex enc_mutex; > > +struct mutex dev_mutex; > > +struct workqueue_struct *encode_workqueue; > > + > > +int enc_irq; > > +spinlock_t irqlock; > > + > > +struct mtk_vcodec_pm pm; > > +unsigned int enc_capability; > > +struct mtk_vcodec_dbgfs dbgfs; > > +}; > > + > > static inline struct mtk_vcodec_enc_ctx *fh_to_enc_ctx(struct > v4l2_fh *fh) > > { > > return container_of(fh, struct mtk_vcodec_enc_ctx, fh); > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.c > > index 3165e114b221..f7481f33a0b2 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.c > > @@ -9,10 +9,10 @@ > > #include <linux/of_platform.h> > > #include <linux/pm_runtime.h> > > > > +#include "mtk_vcodec_enc_drv.h" > > #include "mtk_vcodec_enc_pm.h" > > -#include "mtk_vcodec_util.h" > > > > -int mtk_vcodec_init_enc_clk(struct mtk_vcodec_dev *mtkdev) > > +int mtk_vcodec_init_enc_clk(struct mtk_vcodec_enc_dev *mtkdev) > > { > > struct platform_device *pdev; > > struct mtk_vcodec_pm *pm; > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.h > > index bc455cefc0cd..e50be0575190 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_pm.h > > @@ -7,9 +7,9 @@ > > #ifndef _MTK_VCODEC_ENC_PM_H_ > > #define _MTK_VCODEC_ENC_PM_H_ > > > > -#include "mtk_vcodec_drv.h" > > +#include "mtk_vcodec_enc_drv.h" > > > > -int mtk_vcodec_init_enc_clk(struct mtk_vcodec_dev *dev); > > +int mtk_vcodec_init_enc_clk(struct mtk_vcodec_enc_dev *dev); > > > > void mtk_vcodec_enc_clock_on(struct mtk_vcodec_pm *pm); > > void mtk_vcodec_enc_clock_off(struct mtk_vcodec_pm *pm); > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > > index 623dd916d09e..5c9f04574ad1 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c > > @@ -1,20 +1,28 @@ > > // SPDX-License-Identifier: GPL-2.0 > > > > +#include "mtk_vcodec_dec_drv.h" > > +#include "mtk_vcodec_enc_drv.h" > > #include "mtk_vcodec_fw.h" > > #include "mtk_vcodec_fw_priv.h" > > #include "mtk_vcodec_util.h" > > -#include "mtk_vcodec_drv.h" > > > > struct mtk_vcodec_fw *mtk_vcodec_fw_select(void *priv, enum > mtk_vcodec_fw_type type, > > enum mtk_vcodec_fw_use fw_use) > > { > > +struct platform_device *plat_dev; > > + > > +if (fw_use == ENCODER) > > +plat_dev = ((struct mtk_vcodec_enc_dev *)priv)->plat_dev; > > +else > > +plat_dev = ((struct mtk_vcodec_dec_dev *)priv)->plat_dev; > > + > > switch (type) { > > case VPU: > > return mtk_vcodec_fw_vpu_init(priv, fw_use); > > case SCP: > > return mtk_vcodec_fw_scp_init(priv, fw_use); > > default: > > -pr_err("invalid vcodec fw type"); > > +dev_err(&plat_dev->dev, "invalid vcodec fw type"); > > return ERR_PTR(-EINVAL); > > } > > } > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h > > index d8cfbec323d5..83479ab70385 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h > > @@ -8,7 +8,8 @@ > > > > #include "../vpu/mtk_vpu.h" > > > > -struct mtk_vcodec_dev; > > +struct mtk_vcodec_dec_dev; > > +struct mtk_vcodec_enc_dev; > > > > enum mtk_vcodec_fw_type { > > VPU, > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h > > index 3438a4917344..99603accd82e 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h > > @@ -5,7 +5,8 @@ > > > > #include "mtk_vcodec_fw.h" > > > > -struct mtk_vcodec_dev; > > +struct mtk_vcodec_dec_dev; > > +struct mtk_vcodec_enc_dev; > > > > struct mtk_vcodec_fw { > > enum mtk_vcodec_fw_type type; > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c > > index 71ff1a6ae872..3cb5a5befd24 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c > > @@ -1,8 +1,8 @@ > > // SPDX-License-Identifier: GPL-2.0 > > > > +#include "mtk_vcodec_dec_drv.h" > > +#include "mtk_vcodec_enc_drv.h" > > #include "mtk_vcodec_fw_priv.h" > > -#include "mtk_vcodec_util.h" > > -#include "mtk_vcodec_drv.h" > > > > static int mtk_vcodec_scp_load_firmware(struct mtk_vcodec_fw *fw) > > { > > @@ -56,14 +56,25 @@ static const struct mtk_vcodec_fw_ops > mtk_vcodec_rproc_msg = { > > struct mtk_vcodec_fw *mtk_vcodec_fw_scp_init(void *priv, enum > mtk_vcodec_fw_use fw_use) > > { > > struct mtk_vcodec_fw *fw; > > -struct mtk_vcodec_dev *dev = priv; > > struct platform_device *plat_dev; > > struct mtk_scp *scp; > > > > -plat_dev = dev->plat_dev; > > +if (fw_use == ENCODER) { > > +struct mtk_vcodec_enc_dev *enc_dev = priv; > > + > > +plat_dev = enc_dev->plat_dev; > > +} else if (fw_use == DECODER) { > > +struct mtk_vcodec_dec_dev *dec_dev = priv; > > + > > +plat_dev = dec_dev->plat_dev; > > +} else { > > +pr_err("Invalid fw_use %d (use a resonable fw id here)\n", > fw_use); > > +return ERR_PTR(-EINVAL); > > +} > > + > > scp = scp_get(plat_dev); > > if (!scp) { > > -dev_err(&dev->plat_dev->dev, "could not get vdec scp handle"); > > +dev_err(&plat_dev->dev, "could not get vdec scp handle"); > > return ERR_PTR(-EPROBE_DEFER); > > } > > > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c > > index 571072dffbfa..18274a51a8f8 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c > > @@ -1,8 +1,8 @@ > > // SPDX-License-Identifier: GPL-2.0 > > > > +#include "mtk_vcodec_dec_drv.h" > > +#include "mtk_vcodec_enc_drv.h" > > #include "mtk_vcodec_fw_priv.h" > > -#include "mtk_vcodec_util.h" > > -#include "mtk_vcodec_drv.h" > > > > static int mtk_vcodec_vpu_load_firmware(struct mtk_vcodec_fw *fw) > > { > > @@ -53,7 +53,7 @@ static void mtk_vcodec_vpu_release(struct > mtk_vcodec_fw *fw) > > > > static void mtk_vcodec_vpu_reset_dec_handler(void *priv) > > { > > -struct mtk_vcodec_dev *dev = priv; > > +struct mtk_vcodec_dec_dev *dev = priv; > > struct mtk_vcodec_dec_ctx *ctx; > > > > dev_err(&dev->plat_dev->dev, "Watchdog timeout!!"); > > @@ -68,7 +68,7 @@ static void mtk_vcodec_vpu_reset_dec_handler(void > *priv) > > > > static void mtk_vcodec_vpu_reset_enc_handler(void *priv) > > { > > -struct mtk_vcodec_dev *dev = priv; > > +struct mtk_vcodec_enc_dev *dev = priv; > > struct mtk_vcodec_enc_ctx *ctx; > > > > dev_err(&dev->plat_dev->dev, "Watchdog timeout!!"); > > @@ -94,24 +94,28 @@ static const struct mtk_vcodec_fw_ops > mtk_vcodec_vpu_msg = { > > struct mtk_vcodec_fw *mtk_vcodec_fw_vpu_init(void *priv, enum > mtk_vcodec_fw_use fw_use) > > { > > struct platform_device *fw_pdev; > > -struct mtk_vcodec_dev *dev = priv; > > struct platform_device *plat_dev; > > struct mtk_vcodec_fw *fw; > > enum rst_id rst_id; > > > > if (fw_use == ENCODER) { > > +struct mtk_vcodec_enc_dev *enc_dev = priv; > > + > > +plat_dev = enc_dev->plat_dev; > > rst_id = VPU_RST_ENC; > > } else if (fw_use == DECODER) { > > +struct mtk_vcodec_dec_dev *dec_dev = priv; > > + > > +plat_dev = dec_dev->plat_dev; > > rst_id = VPU_RST_DEC; > > } else { > > pr_err("Invalid fw_use %d (use a resonable fw id here)\n", > fw_use); > > return ERR_PTR(-EINVAL); > > } > > > > -plat_dev = dev->plat_dev; > > fw_pdev = vpu_get_plat_device(plat_dev); > > if (!fw_pdev) { > > -dev_err(&dev->plat_dev->dev, "firmware device is not ready"); > > +dev_err(&plat_dev->dev, "firmware device is not ready"); > > return ERR_PTR(-EINVAL); > > } > > > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > > index 66d1f50d8968..69dae0336a14 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_intr.c > > @@ -7,9 +7,9 @@ > > #include <linux/errno.h> > > #include <linux/wait.h> > > > > -#include "mtk_vcodec_drv.h" > > +#include "mtk_vcodec_dec_drv.h" > > +#include "mtk_vcodec_enc_drv.h" > > #include "mtk_vcodec_intr.h" > > -#include "mtk_vcodec_util.h" > > > > int mtk_vcodec_wait_for_done_ctx(void *priv, int command, unsigned > int timeout_ms, > > unsigned int hw_id) > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > > index adaeae79558a..18f632eb0b8a 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.c > > @@ -9,9 +9,9 @@ > > #include <linux/of.h> > > #include <linux/of_device.h> > > > > +#include "mtk_vcodec_dec_drv.h" > > +#include "mtk_vcodec_enc_drv.h" > > #include "mtk_vcodec_dec_hw.h" > > -#include "mtk_vcodec_drv.h" > > -#include "mtk_vcodec_util.h" > > > > #if defined(CONFIG_DEBUG_FS) > > int mtk_vcodec_dbg; > > @@ -75,7 +75,7 @@ void mtk_vcodec_mem_free(void *priv, struct > mtk_vcodec_mem *mem) > > } > > EXPORT_SYMBOL(mtk_vcodec_mem_free); > > > > -void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dev *dev, int > hw_idx) > > +void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dec_dev *dev, int > hw_idx) > > { > > if (hw_idx >= MTK_VDEC_HW_MAX || hw_idx < 0 || !dev- > >subdev_dev[hw_idx]) { > > dev_err(&dev->plat_dev->dev, "hw idx is out of range:%d", hw_idx); > > @@ -86,7 +86,7 @@ void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dev > *dev, int hw_idx) > > } > > EXPORT_SYMBOL(mtk_vcodec_get_hw_dev); > > > > -void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > > +void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dec_dev *vdec_dev, > > struct mtk_vcodec_dec_ctx *ctx, int hw_idx) > > { > > unsigned long flags; > > @@ -108,7 +108,7 @@ void mtk_vcodec_set_curr_ctx(struct > mtk_vcodec_dev *vdec_dev, > > } > > EXPORT_SYMBOL(mtk_vcodec_set_curr_ctx); > > > > -struct mtk_vcodec_dec_ctx *mtk_vcodec_get_curr_ctx(struct > mtk_vcodec_dev *vdec_dev, > > +struct mtk_vcodec_dec_ctx *mtk_vcodec_get_curr_ctx(struct > mtk_vcodec_dec_dev *vdec_dev, > > unsigned int hw_idx) > > { > > unsigned long flags; > > diff --git > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > > index 4d48b516f62d..6c24bb8b1715 100644 > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_util.h > > @@ -23,7 +23,7 @@ struct mtk_vcodec_fb { > > }; > > > > struct mtk_vcodec_dec_ctx; > > -struct mtk_vcodec_dev; > > +struct mtk_vcodec_dec_dev; > > > > #undef pr_fmt > > #define pr_fmt(fmt) "%s(),%d: " fmt, __func__, __LINE__ > > @@ -83,10 +83,10 @@ extern int mtk_vcodec_dbg; > > void __iomem *mtk_vcodec_get_reg_addr(void __iomem **reg_base, > unsigned int reg_idx); > > int mtk_vcodec_mem_alloc(void *priv, struct mtk_vcodec_mem *mem); > > void mtk_vcodec_mem_free(void *priv, struct mtk_vcodec_mem *mem); > > -void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dev *vdec_dev, > > +void mtk_vcodec_set_curr_ctx(struct mtk_vcodec_dec_dev *vdec_dev, > > struct mtk_vcodec_dec_ctx *ctx, int hw_idx); > > -struct mtk_vcodec_dec_ctx *mtk_vcodec_get_curr_ctx(struct > mtk_vcodec_dev *vdec_dev, > > +struct mtk_vcodec_dec_ctx *mtk_vcodec_get_curr_ctx(struct > mtk_vcodec_dec_dev *vdec_dev, > > unsigned int hw_idx); > > -void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dev *dev, int > hw_idx); > > +void *mtk_vcodec_get_hw_dev(struct mtk_vcodec_dec_dev *dev, int > hw_idx); > > > > #endif /* _MTK_VCODEC_UTIL_H_ */ > > diff --git > a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.h > b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.h > > index 0dda9e2315c0..ac82be336055 100644 > > --- > a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.h > > +++ > b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.h > > @@ -13,7 +13,7 @@ > > #include <media/v4l2-mem2mem.h> > > #include <media/videobuf2-dma-contig.h> > > > > -#include "../mtk_vcodec_drv.h" > > +#include "../mtk_vcodec_dec_drv.h" > > > > #define NAL_NON_IDR_SLICE0x01 > > #define NAL_IDR_SLICE0x05 > > diff --git > a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if. > c > b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if. > c > > index 846cc39c0168..79eff921fc97 100644 > > --- > a/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if. > c > > +++ > b/drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if. > c > > @@ -540,7 +540,7 @@ static int vdec_h264_slice_core_decode(struct > vdec_lat_buf *lat_buf) > > return 0; > > } > > > > -static void vdec_h264_insert_startcode(struct mtk_vcodec_dev > *vcodec_dev, unsigned char *buf, > > +static void vdec_h264_insert_startcode(struct mtk_vcodec_dec_dev > *vcodec_dev, unsigned char *buf, > > size_t *bs_size, struct mtk_h264_pps_param *pps) > > { > > struct device *dev = &vcodec_dev->plat_dev->dev; > > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > b/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > > index 816ed6ab1ed0..7b41ce23158b 100644 > > --- a/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > > +++ b/drivers/media/platform/mediatek/vcodec/vdec_drv_if.h > > @@ -8,7 +8,6 @@ > > #ifndef _VDEC_DRV_IF_H_ > > #define _VDEC_DRV_IF_H_ > > > > -#include "mtk_vcodec_drv.h" > > #include "mtk_vcodec_dec.h" > > #include "mtk_vcodec_util.h" > > > > diff --git > a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c > b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c > > index 0dd1374ccc38..890b955e4b31 100644 > > --- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c > > +++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c > > @@ -8,8 +8,8 @@ > > #include <linux/interrupt.h> > > #include <linux/kthread.h> > > > > +#include "mtk_vcodec_dec_drv.h" > > #include "mtk_vcodec_dec_pm.h" > > -#include "mtk_vcodec_drv.h" > > #include "vdec_msg_queue.h" > > > > #define VDEC_MSG_QUEUE_TIMEOUT_MS 1500 > > @@ -239,7 +239,7 @@ static void vdec_msg_queue_core_work(struct > work_struct *work) > > container_of(work, struct vdec_msg_queue, core_work); > > struct mtk_vcodec_dec_ctx *ctx = > > container_of(msg_queue, struct mtk_vcodec_dec_ctx, msg_queue); > > -struct mtk_vcodec_dev *dev = ctx->dev; > > +struct mtk_vcodec_dec_dev *dev = ctx->dev; > > struct vdec_lat_buf *lat_buf; > > > > spin_lock(&msg_queue->core_ctx.ready_lock); > > diff --git > a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > > index 1fb3f57c2384..eeb5deb907ed 100644 > > --- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > > +++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.h > > @@ -18,7 +18,7 @@ > > > > struct vdec_lat_buf; > > struct mtk_vcodec_dec_ctx; > > -struct mtk_vcodec_dev; > > +struct mtk_vcodec_dec_dev; > > typedef int (*core_decode_cb_t)(struct vdec_lat_buf *lat_buf); > > > > /** > > diff --git a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > > index d82391411ba1..7fe8e196cb45 100644 > > --- a/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > > +++ b/drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c > > @@ -4,8 +4,7 @@ > > * Author: PC Chen <pc.chen@mediatek.com> > > */ > > > > -#include "mtk_vcodec_drv.h" > > -#include "mtk_vcodec_util.h" > > +#include "mtk_vcodec_dec_drv.h" > > #include "vdec_drv_if.h" > > #include "vdec_ipi_msg.h" > > #include "vdec_vpu_if.h" > > diff --git > a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > > index c5f9fc24a692..41d463d40843 100644 > > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_h264_if.c > > @@ -10,7 +10,7 @@ > > #include <linux/kernel.h> > > #include <linux/slab.h> > > > > -#include "../mtk_vcodec_drv.h" > > +#include "../mtk_vcodec_enc_drv.h" > > #include "../mtk_vcodec_util.h" > > #include "../mtk_vcodec_intr.h" > > #include "../mtk_vcodec_enc.h" > > diff --git > a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > > index e8e4474eacc7..dfd6833576f4 100644 > > --- a/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > > +++ b/drivers/media/platform/mediatek/vcodec/venc/venc_vp8_if.c > > @@ -9,7 +9,7 @@ > > #include <linux/kernel.h> > > #include <linux/slab.h> > > > > -#include "../mtk_vcodec_drv.h" > > +#include "../mtk_vcodec_enc_drv.h" > > #include "../mtk_vcodec_util.h" > > #include "../mtk_vcodec_intr.h" > > #include "../mtk_vcodec_enc.h" > > diff --git a/drivers/media/platform/mediatek/vcodec/venc_drv_base.h > b/drivers/media/platform/mediatek/vcodec/venc_drv_base.h > > index 17f8183461b5..856d50151bf6 100644 > > --- a/drivers/media/platform/mediatek/vcodec/venc_drv_base.h > > +++ b/drivers/media/platform/mediatek/vcodec/venc_drv_base.h > > @@ -9,7 +9,7 @@ > > #ifndef _VENC_DRV_BASE_ > > #define _VENC_DRV_BASE_ > > > > -#include "mtk_vcodec_drv.h" > > +#include "mtk_vcodec_enc_drv.h" > > > > #include "venc_drv_if.h" > > > > diff --git a/drivers/media/platform/mediatek/vcodec/venc_drv_if.c > b/drivers/media/platform/mediatek/vcodec/venc_drv_if.c > > index 08083030516e..1bdaecdd64a7 100644 > > --- a/drivers/media/platform/mediatek/vcodec/venc_drv_if.c > > +++ b/drivers/media/platform/mediatek/vcodec/venc_drv_if.c > > @@ -65,7 +65,7 @@ int venc_if_encode(struct mtk_vcodec_enc_ctx > *ctx, > > mtk_venc_lock(ctx); > > > > spin_lock_irqsave(&ctx->dev->irqlock, flags); > > -ctx->dev->curr_enc_ctx = ctx; > > +ctx->dev->curr_ctx = ctx; > > spin_unlock_irqrestore(&ctx->dev->irqlock, flags); > > > > mtk_vcodec_enc_clock_on(&ctx->dev->pm); > > @@ -74,7 +74,7 @@ int venc_if_encode(struct mtk_vcodec_enc_ctx > *ctx, > > mtk_vcodec_enc_clock_off(&ctx->dev->pm); > > > > spin_lock_irqsave(&ctx->dev->irqlock, flags); > > -ctx->dev->curr_enc_ctx = NULL; > > +ctx->dev->curr_ctx = NULL; > > spin_unlock_irqrestore(&ctx->dev->irqlock, flags); > > > > mtk_venc_unlock(ctx); > > diff --git a/drivers/media/platform/mediatek/vcodec/venc_drv_if.h > b/drivers/media/platform/mediatek/vcodec/venc_drv_if.h > > index 90d714e86ede..d00fb68b8235 100644 > > --- a/drivers/media/platform/mediatek/vcodec/venc_drv_if.h > > +++ b/drivers/media/platform/mediatek/vcodec/venc_drv_if.h > > @@ -9,8 +9,7 @@ > > #ifndef _VENC_DRV_IF_H_ > > #define _VENC_DRV_IF_H_ > > > > -#include "mtk_vcodec_drv.h" > > -#include "mtk_vcodec_util.h" > > +#include "mtk_vcodec_enc_drv.h" > > > > /* > > * enum venc_yuv_fmt - The type of input yuv format > > diff --git a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > > index c69f66b6d341..bfff16da0451 100644 > > --- a/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > > +++ b/drivers/media/platform/mediatek/vcodec/venc_vpu_if.c > > @@ -4,7 +4,7 @@ > > * Author: PoChun Lin <pochun.lin@mediatek.com> > > */ > > > > -#include "mtk_vcodec_drv.h" > > +#include "mtk_vcodec_enc_drv.h" > > #include "mtk_vcodec_fw.h" > > #include "venc_ipi_msg.h" > > #include "venc_vpu_if.h" >