]> git.baikalelectronics.ru Git - kernel.git/commitdiff
media: mediatek: vcodec: Using firmware type to separate different firmware architecture
authorYunfei Dong <yunfei.dong@mediatek.com>
Thu, 12 May 2022 02:19:35 +0000 (04:19 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 13 May 2022 12:41:17 +0000 (14:41 +0200)
MT8173 platform use vpu firmware, mt8183/mt8192 will use scp
firmware instead, using chip name is not reasonable to separate
different firmware architecture. Using firmware type is much better.

Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
Reviewed-by: Tzung-Bi Shih<tzungbi@google.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Tested-by: NĂ­colas F. R. A. Prado <nfraprado@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateless.c
drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h
drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c
drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c
drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h
drivers/media/platform/mediatek/vcodec/vdec_vpu_if.c
drivers/media/platform/mediatek/vcodec/venc_vpu_if.c

index 04ca43c77e5f7bade7d2615a3b4bba99e8db0956..7966c132be8fd578274975e620d3741a6be3c417 100644 (file)
@@ -613,7 +613,6 @@ static struct vb2_ops mtk_vdec_frame_vb2_ops = {
 };
 
 const struct mtk_vcodec_dec_pdata mtk_vdec_8173_pdata = {
-       .chip = MTK_MT8173,
        .init_vdec_params = mtk_init_vdec_params,
        .ctrls_setup = mtk_vcodec_dec_ctrls_setup,
        .vdec_vb2_ops = &mtk_vdec_frame_vb2_ops,
index 23d997ac114d2fcaaca95fc7d77e655bbff1df4c..5aebf88f997bd47980bebc576641519535138383 100644 (file)
@@ -343,7 +343,6 @@ static struct vb2_ops mtk_vdec_request_vb2_ops = {
 };
 
 const struct mtk_vcodec_dec_pdata mtk_vdec_8183_pdata = {
-       .chip = MTK_MT8183,
        .init_vdec_params = mtk_init_vdec_params,
        .ctrls_setup = mtk_vcodec_dec_ctrls_setup,
        .vdec_vb2_ops = &mtk_vdec_request_vb2_ops,
@@ -362,7 +361,6 @@ const struct mtk_vcodec_dec_pdata mtk_vdec_8183_pdata = {
 
 /* This platform data is used for one lat and one core architecture. */
 const struct mtk_vcodec_dec_pdata mtk_lat_sig_core_pdata = {
-       .chip = MTK_MT8192,
        .init_vdec_params = mtk_init_vdec_params,
        .ctrls_setup = mtk_vcodec_dec_ctrls_setup,
        .vdec_vb2_ops = &mtk_vdec_request_vb2_ops,
index 813901c4be5e9402cd3cd2ff925556f410ba72f8..bb7b8e914d24af436d3d7b66559ac1051c4bd367 100644 (file)
@@ -332,13 +332,6 @@ struct mtk_vcodec_ctx {
        struct vdec_msg_queue msg_queue;
 };
 
-enum mtk_chip {
-       MTK_MT8173,
-       MTK_MT8183,
-       MTK_MT8192,
-       MTK_MT8195,
-};
-
 /*
  * enum mtk_vdec_hw_arch - Used to separate different hardware architecture
  */
@@ -364,7 +357,6 @@ enum mtk_vdec_hw_arch {
  * @vdec_framesizes: supported video decoder frame sizes
  * @num_framesizes: count of video decoder frame sizes
  *
- * @chip: chip this decoder is compatible with
  * @hw_arch: hardware arch is used to separate pure_sin_core and lat_sin_core
  *
  * @is_subdev_supported: whether support parent-node architecture(subdev)
@@ -387,7 +379,6 @@ struct mtk_vcodec_dec_pdata {
        const struct mtk_codec_framesizes *vdec_framesizes;
        const int num_framesizes;
 
-       enum mtk_chip chip;
        enum mtk_vdec_hw_arch hw_arch;
 
        bool is_subdev_supported;
@@ -397,8 +388,6 @@ struct mtk_vcodec_dec_pdata {
 /**
  * struct mtk_vcodec_enc_pdata - compatible data for each IC
  *
- * @chip: chip this encoder is compatible with
- *
  * @uses_ext: whether the encoder uses the extended firmware messaging format
  * @min_bitrate: minimum supported encoding bitrate
  * @max_bitrate: maximum supported encoding bitrate
@@ -409,8 +398,6 @@ struct mtk_vcodec_dec_pdata {
  * @core_id: stand for h264 or vp8 encode index
  */
 struct mtk_vcodec_enc_pdata {
-       enum mtk_chip chip;
-
        bool uses_ext;
        unsigned long min_bitrate;
        unsigned long max_bitrate;
index 5172cfe0db4ab8934248fa0310e0b7fe2c28696d..95e8c29ccc651158ec3cf0610a1f52efc34b326d 100644 (file)
@@ -376,7 +376,6 @@ err_enc_pm:
 }
 
 static const struct mtk_vcodec_enc_pdata mt8173_avc_pdata = {
-       .chip = MTK_MT8173,
        .capture_formats = mtk_video_formats_capture_h264,
        .num_capture_formats = ARRAY_SIZE(mtk_video_formats_capture_h264),
        .output_formats = mtk_video_formats_output,
@@ -387,7 +386,6 @@ static const struct mtk_vcodec_enc_pdata mt8173_avc_pdata = {
 };
 
 static const struct mtk_vcodec_enc_pdata mt8173_vp8_pdata = {
-       .chip = MTK_MT8173,
        .capture_formats = mtk_video_formats_capture_vp8,
        .num_capture_formats = ARRAY_SIZE(mtk_video_formats_capture_vp8),
        .output_formats = mtk_video_formats_output,
@@ -398,7 +396,6 @@ static const struct mtk_vcodec_enc_pdata mt8173_vp8_pdata = {
 };
 
 static const struct mtk_vcodec_enc_pdata mt8183_pdata = {
-       .chip = MTK_MT8183,
        .uses_ext = true,
        .capture_formats = mtk_video_formats_capture_h264,
        .num_capture_formats = ARRAY_SIZE(mtk_video_formats_capture_h264),
@@ -410,7 +407,6 @@ static const struct mtk_vcodec_enc_pdata mt8183_pdata = {
 };
 
 static const struct mtk_vcodec_enc_pdata mt8192_pdata = {
-       .chip = MTK_MT8192,
        .uses_ext = true,
        .capture_formats = mtk_video_formats_capture_h264,
        .num_capture_formats = ARRAY_SIZE(mtk_video_formats_capture_h264),
@@ -422,7 +418,6 @@ static const struct mtk_vcodec_enc_pdata mt8192_pdata = {
 };
 
 static const struct mtk_vcodec_enc_pdata mt8195_pdata = {
-       .chip = MTK_MT8195,
        .uses_ext = true,
        .capture_formats = mtk_video_formats_capture_h264,
        .num_capture_formats = ARRAY_SIZE(mtk_video_formats_capture_h264),
index 94b39ae5c2e1e05ac0e8bce3c4a52823b4da64f8..556e54aadac9a676f7ebdac8b05e53efd7740432 100644 (file)
@@ -65,3 +65,9 @@ int mtk_vcodec_fw_ipi_send(struct mtk_vcodec_fw *fw, int id, void *buf,
        return fw->ops->ipi_send(fw, id, buf, len, wait);
 }
 EXPORT_SYMBOL_GPL(mtk_vcodec_fw_ipi_send);
+
+int mtk_vcodec_fw_get_type(struct mtk_vcodec_fw *fw)
+{
+       return fw->type;
+}
+EXPORT_SYMBOL_GPL(mtk_vcodec_fw_get_type);
index 15ab6b8e3ae28ff5f0a014ebb03926cd38707b17..16824114657f07c196f774839c402d5235da0313 100644 (file)
@@ -39,5 +39,6 @@ int mtk_vcodec_fw_ipi_register(struct mtk_vcodec_fw *fw, int id,
                               const char *name, void *priv);
 int mtk_vcodec_fw_ipi_send(struct mtk_vcodec_fw *fw, int id,
                           void *buf, unsigned int len, unsigned int wait);
+int mtk_vcodec_fw_get_type(struct mtk_vcodec_fw *fw);
 
 #endif /* _MTK_VCODEC_FW_H_ */
index dd35d2c5f920b523131ebc33ee0c58313256e773..7210061c772fe0ae9f248197030c208609c7565b 100644 (file)
@@ -33,8 +33,8 @@ static void handle_init_ack_msg(const struct vdec_vpu_ipi_init_ack *msg)
         */
        vpu->inst_id = 0xdeadbeef;
 
-       /* Firmware version field does not exist on MT8173. */
-       if (vpu->ctx->dev->vdec_pdata->chip == MTK_MT8173)
+       /* VPU firmware does not contain a version field. */
+       if (mtk_vcodec_fw_get_type(vpu->ctx->dev->fw_handler) == VPU)
                return;
 
        /* Check firmware version. */
index e7899d8a3e4ea86739c3e75aa2fe1318ebe5238c..d3570c4c177d7ba315f684f628626b37f80b2e74 100644 (file)
@@ -18,7 +18,7 @@ static void handle_enc_init_msg(struct venc_vpu_inst *vpu, const void *data)
                                             msg->vpu_inst_addr);
 
        /* Firmware version field value is unspecified on MT8173. */
-       if (vpu->ctx->dev->venc_pdata->chip == MTK_MT8173)
+       if (mtk_vcodec_fw_get_type(vpu->ctx->dev->fw_handler) == VPU)
                return;
 
        /* Check firmware version. */