Re: [PATCH v8, 00/15] media: mtk-vcodec: support for M8192 decoder

From: yunfei.dong@xxxxxxxxxxxx
Date: Sun Apr 10 2022 - 23:43:25 EST


Hi Nicolas,

On Thu, 2022-03-31 at 16:48 -0400, Nicolas Dufresne wrote:
> Hi Yunfei,
>
> thanks for the update, I should be testing this really soon.
>
> Le jeudi 31 mars 2022 à 10:47 +0800, Yunfei Dong a écrit :
> > This series adds support for mt8192 h264/vp8/vp9 decoder drivers.
> > Firstly, refactor
> > power/clock/interrupt interfaces for mt8192 is lat and core
> > architecture.
>
> Similarly to MT8173 and MT8183, a shared* firmware is needed for this
> CODEC to
> work (scp.img). I looked into linux-firmware[1] it has not been added
> for mt8192
> yet. As your patches are getting close to be ready, it would be
> important to
> look into this so the patchset does not get blocked due to that.
>
> best regards,
> Nicolas
>
> [1]
> https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/mediatek
> * Shared at least between MDP3 and MTK VCODEC from my knowledge
>

Thanks for your remind.

I have already sent mt8192 scp.img to github.

https://github.com/yunfeidongmediatek/linux_fw_scp_8192/commit/3ac2fc85bc7dfcebdb92b5b5808b0268cdfb772d

Waiting for to be merged.

Best Regards,
Yunfei Dong

> >
> > Secondly, add new functions to get frame buffer size and resolution
> > according
> > to decoder capability from scp side. Then add callback function to
> > get/put
> > capture buffer in order to enable lat and core decoder in parallel,
> > need to
> > adjust GStreamer at the same time.
> >
> > Then add to support MT21C compressed mode and fix v4l2-compliance
> > fail.
> >
> > Next, extract H264 request api driver to let mt8183 and mt8192 use
> > the same
> > code, and adds mt8192 frame based h264 driver for stateless
> > decoder.
> >
> > Lastly, add vp8 and vp9 stateless decoder drivers.
> >
> > Patches 1 refactor power/clock/interrupt interface.
> > Patches 2~4 get frame buffer size and resolution according to
> > decoder capability.
> > Patches 5 set capture queue bytesused.
> > Patches 6 adjust GStreamer.
> > Patch 7~11 add to support MT21C compressed mode and fix v4l2-
> > compliance fail.
> > patch 12 record capture queue format type.
> > Patch 13~14 extract h264 driver and add mt8192 frame based driver
> > for h264 decoder.
> > Patch 15~16 add vp8 and vp9 stateless decoder drivers.
> > Patch 17 prevent kernel crash when rmmod mtk-vcodec-dec.ko
> > ---
> > changes compared with v6:
> > - adjust GStreamer, separate src buffer done with
> > v4l2_ctrl_request_complete for patch 6.
> > - remove v4l2_m2m_set_dst_buffered.
> > - add new patch to set each plane bytesused in buf prepare for
> > patch 5.
> > - using upstream interface to update vp9 prob tables for patch 16.
> > - fix maintainer comments.
> > - test the driver with chrome VD and GStreamer(H264/VP9/VP8/AV1).
> > changes compared with v6:
> > - rebase to the latest media stage and fix conficts
> > - fix memcpy to memcpy_fromio or memcpy_toio
> > - fix h264 crash when test field bitstream
> > changes compared with v5:
> > - fix vp9 comments for patch 15
> > - fix vp8 comments for patch 14.
> > - fix comments for patch 12.
> > - fix build errors.
> > changes compared with v4:
> > - fix checkpatch.pl fail.
> > - fix kernel-doc fail.
> > - rebase to the latest media codec driver.
> > changes compared with v3:
> > - remove enum mtk_chip for patch 2.
> > - add vp8 stateless decoder drivers for patch 14.
> > - add vp9 stateless decoder drivers for patch 15.
> > changes compared with v2:
> > - add new patch 11 to record capture queue format type.
> > - separate patch 4 according to tzung-bi's suggestion.
> > - re-write commit message for patch 5 according to tzung-bi's
> > suggestion.
> > changes compared with v1:
> > - rewrite commit message for patch 12.
> > - rewrite cover-letter message.
> > ---
> > Yunfei Dong (17):
> > media: mediatek: vcodec: Add vdec enable/disable hardware helpers
> > media: mediatek: vcodec: Using firmware type to separate
> > different
> > firmware architecture
> > media: mediatek: vcodec: get capture queue buffer size from scp
> > media: mediatek: vcodec: Read max resolution from dec_capability
> > media: mediatek: vcodec: set each plane bytesused in buf prepare
> > media: mediatek: vcodec: Refactor get and put capture buffer flow
> > media: mediatek: vcodec: Refactor supported vdec formats and
> > framesizes
> > media: mediatek: vcodec: Getting supported decoder format types
> > media: mediatek: vcodec: Add format to support MT21C
> > media: mediatek: vcodec: disable vp8 4K capability
> > media: mediatek: vcodec: Fix v4l2-compliance fail
> > media: mediatek: vcodec: record capture queue format type
> > media: mediatek: vcodec: Extract H264 common code
> > media: mediatek: vcodec: support stateless H.264 decoding for
> > mt8192
> > media: mediatek: vcodec: support stateless VP8 decoding
> > media: mediatek: vcodec: support stateless VP9 decoding
> > media: mediatek: vcodec: prevent kernel crash when rmmod
> > mtk-vcodec-dec.ko
> >
> > .../media/platform/mediatek/vcodec/Makefile | 4 +
> > .../platform/mediatek/vcodec/mtk_vcodec_dec.c | 62 +-
> > .../mediatek/vcodec/mtk_vcodec_dec_drv.c | 8 +-
> > .../mediatek/vcodec/mtk_vcodec_dec_pm.c | 166 +-
> > .../mediatek/vcodec/mtk_vcodec_dec_pm.h | 6 +-
> > .../mediatek/vcodec/mtk_vcodec_dec_stateful.c | 19 +-
> > .../vcodec/mtk_vcodec_dec_stateless.c | 257 +-
> > .../platform/mediatek/vcodec/mtk_vcodec_drv.h | 41 +-
> > .../mediatek/vcodec/mtk_vcodec_enc_drv.c | 5 -
> > .../platform/mediatek/vcodec/mtk_vcodec_fw.c | 6 +
> > .../platform/mediatek/vcodec/mtk_vcodec_fw.h | 1 +
> > .../vcodec/vdec/vdec_h264_req_common.c | 310 +++
> > .../vcodec/vdec/vdec_h264_req_common.h | 272 +++
> > .../mediatek/vcodec/vdec/vdec_h264_req_if.c | 438 +---
> > .../vcodec/vdec/vdec_h264_req_multi_if.c | 619 +++++
> > .../mediatek/vcodec/vdec/vdec_vp8_req_if.c | 437 ++++
> > .../vcodec/vdec/vdec_vp9_req_lat_if.c | 2072
> > +++++++++++++++++
> > .../platform/mediatek/vcodec/vdec_drv_if.c | 37 +-
> > .../platform/mediatek/vcodec/vdec_drv_if.h | 3 +
> > .../platform/mediatek/vcodec/vdec_ipi_msg.h | 36 +
> > .../platform/mediatek/vcodec/vdec_msg_queue.c | 2 +
> > .../platform/mediatek/vcodec/vdec_msg_queue.h | 2 +
> > .../platform/mediatek/vcodec/vdec_vpu_if.c | 53 +-
> > .../platform/mediatek/vcodec/vdec_vpu_if.h | 15 +
> > .../platform/mediatek/vcodec/venc_vpu_if.c | 2 +-
> > include/linux/remoteproc/mtk_scp.h | 2 +
> > 26 files changed, 4274 insertions(+), 601 deletions(-)
> > create mode 100644
> > drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.c
> > create mode 100644
> > drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_common.h
> > create mode 100644
> > drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.
> > c
> > create mode 100644
> > drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c
> > create mode 100644
> > drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c
> >
>
>