From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
To: "Yunfei Dong" <yunfei.dong@mediatek.com>,
"Nícolas F . R . A . Prado" <nfraprado@collabora.com>,
"Hans Verkuil" <hverkuil-cisco@xs4all.nl>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Benjamin Gaignard" <benjamin.gaignard@collabora.com>,
"Nathan Hebert" <nhebert@chromium.org>
Cc: Chen-Yu Tsai <wenst@chromium.org>,
Hsin-Yi Wang <hsinyi@chromium.org>,
Fritz Koenig <frkoenig@chromium.org>,
Daniel Vetter <daniel@ffwll.ch>,
Steve Cho <stevecho@chromium.org>,
linux-media@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org,
Project_Global_Chrome_Upstream_Group@mediatek.com
Subject: Re: [PATCH v3,02/11] media: mediatek: vcodec: align fw interface
Date: Mon, 19 Jun 2023 10:45:13 -0400 [thread overview]
Message-ID: <177fc30731bf7eae91d984ab0788036cf169e69c.camel@collabora.com> (raw)
In-Reply-To: <20230617103255.20239-3-yunfei.dong@mediatek.com>
Le samedi 17 juin 2023 à 18:32 +0800, Yunfei Dong a écrit :
> Align scp and vpu firmware interface, remove the depedency for
> 'struct mtk_vcodec_dev' and 'struct mtk_vcodec_ctx'. It will be
> much easier to separate video encoder and decoder.
>
> Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
> ---
> .../media/platform/mediatek/vcodec/mtk_vcodec_fw.c | 7 +++----
> .../media/platform/mediatek/vcodec/mtk_vcodec_fw.h | 3 +--
> .../platform/mediatek/vcodec/mtk_vcodec_fw_priv.h | 11 +++++------
> .../platform/mediatek/vcodec/mtk_vcodec_fw_scp.c | 9 ++++++---
> .../platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c | 12 ++++++++----
> 5 files changed, 23 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c
> index 556e54aadac9..be9159acacf8 100644
> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c
> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.c
> @@ -5,15 +5,14 @@
> #include "mtk_vcodec_util.h"
> #include "mtk_vcodec_drv.h"
>
> -struct mtk_vcodec_fw *mtk_vcodec_fw_select(struct mtk_vcodec_dev *dev,
> - enum mtk_vcodec_fw_type type,
> +struct mtk_vcodec_fw *mtk_vcodec_fw_select(void *priv, enum mtk_vcodec_fw_type type,
> enum mtk_vcodec_fw_use fw_use)
> {
> switch (type) {
> case VPU:
> - return mtk_vcodec_fw_vpu_init(dev, fw_use);
> + return mtk_vcodec_fw_vpu_init(priv, fw_use);
> case SCP:
> - return mtk_vcodec_fw_scp_init(dev);
> + return mtk_vcodec_fw_scp_init(priv, fw_use);
> default:
> mtk_v4l2_err("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 16824114657f..d8cfbec323d5 100644
> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h
> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw.h
> @@ -25,8 +25,7 @@ struct mtk_vcodec_fw;
> typedef void (*mtk_vcodec_ipi_handler) (void *data,
> unsigned int len, void *priv);
>
> -struct mtk_vcodec_fw *mtk_vcodec_fw_select(struct mtk_vcodec_dev *dev,
> - enum mtk_vcodec_fw_type type,
> +struct mtk_vcodec_fw *mtk_vcodec_fw_select(void *priv, enum mtk_vcodec_fw_type type,
> enum mtk_vcodec_fw_use fw_use);
> void mtk_vcodec_fw_release(struct mtk_vcodec_fw *fw);
>
> 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 b41e66185cec..3438a4917344 100644
> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h
> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_priv.h
> @@ -12,6 +12,7 @@ struct mtk_vcodec_fw {
> const struct mtk_vcodec_fw_ops *ops;
> struct platform_device *pdev;
> struct mtk_scp *scp;
> + enum mtk_vcodec_fw_use fw_use;
> };
>
> struct mtk_vcodec_fw_ops {
> @@ -28,22 +29,20 @@ struct mtk_vcodec_fw_ops {
> };
>
> #if IS_ENABLED(CONFIG_VIDEO_MEDIATEK_VCODEC_VPU)
> -struct mtk_vcodec_fw *mtk_vcodec_fw_vpu_init(struct mtk_vcodec_dev *dev,
> - enum mtk_vcodec_fw_use fw_use);
> +struct mtk_vcodec_fw *mtk_vcodec_fw_vpu_init(void *priv, enum mtk_vcodec_fw_use fw_use);
> #else
> static inline struct mtk_vcodec_fw *
> -mtk_vcodec_fw_vpu_init(struct mtk_vcodec_dev *dev,
> - enum mtk_vcodec_fw_use fw_use)
> +mtk_vcodec_fw_vpu_init(void *priv, enum mtk_vcodec_fw_use fw_use)
> {
> return ERR_PTR(-ENODEV);
> }
> #endif /* CONFIG_VIDEO_MEDIATEK_VCODEC_VPU */
>
> #if IS_ENABLED(CONFIG_VIDEO_MEDIATEK_VCODEC_SCP)
> -struct mtk_vcodec_fw *mtk_vcodec_fw_scp_init(struct mtk_vcodec_dev *dev);
> +struct mtk_vcodec_fw *mtk_vcodec_fw_scp_init(void *priv, enum mtk_vcodec_fw_use fw_use);
> #else
> static inline struct mtk_vcodec_fw *
> -mtk_vcodec_fw_scp_init(struct mtk_vcodec_dev *dev)
> +mtk_vcodec_fw_scp_init(void *priv, enum mtk_vcodec_fw_use fw_use)
> {
> return ERR_PTR(-ENODEV);
> }
> 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 d8e66b645bd8..9a2472442c6f 100644
> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c
> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c
> @@ -53,18 +53,21 @@ static const struct mtk_vcodec_fw_ops mtk_vcodec_rproc_msg = {
> .release = mtk_vcodec_scp_release,
> };
>
> -struct mtk_vcodec_fw *mtk_vcodec_fw_scp_init(struct mtk_vcodec_dev *dev)
> +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;
>
> - scp = scp_get(dev->plat_dev);
> + plat_dev = dev->plat_dev;
> + scp = scp_get(plat_dev);
> if (!scp) {
> mtk_v4l2_err("could not get vdec scp handle");
> return ERR_PTR(-EPROBE_DEFER);
> }
>
> - fw = devm_kzalloc(&dev->plat_dev->dev, sizeof(*fw), GFP_KERNEL);
> + fw = devm_kzalloc(&plat_dev->dev, sizeof(*fw), GFP_KERNEL);
> fw->type = SCP;
> fw->ops = &mtk_vcodec_rproc_msg;
> fw->scp = scp;
> 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 cfc7ebed8fb7..46a028031133 100644
> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c
> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_vpu.c
> @@ -77,10 +77,11 @@ static const struct mtk_vcodec_fw_ops mtk_vcodec_vpu_msg = {
> .release = mtk_vcodec_vpu_release,
> };
>
> -struct mtk_vcodec_fw *mtk_vcodec_fw_vpu_init(struct mtk_vcodec_dev *dev,
> - enum mtk_vcodec_fw_use fw_use)
> +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;
>
> @@ -94,19 +95,22 @@ struct mtk_vcodec_fw *mtk_vcodec_fw_vpu_init(struct mtk_vcodec_dev *dev,
> break;
> }
>
> - fw_pdev = vpu_get_plat_device(dev->plat_dev);
> + plat_dev = dev->plat_dev;
> + fw_pdev = vpu_get_plat_device(plat_dev);
> if (!fw_pdev) {
> mtk_v4l2_err("firmware device is not ready");
> return ERR_PTR(-EINVAL);
> }
> +
> vpu_wdt_reg_handler(fw_pdev, mtk_vcodec_vpu_reset_handler, dev, rst_id);
>
> - fw = devm_kzalloc(&dev->plat_dev->dev, sizeof(*fw), GFP_KERNEL);
> + fw = devm_kzalloc(&plat_dev->dev, sizeof(*fw), GFP_KERNEL);
> if (!fw)
> return ERR_PTR(-ENOMEM);
> fw->type = VPU;
> fw->ops = &mtk_vcodec_vpu_msg;
> fw->pdev = fw_pdev;
> + fw->fw_use = fw_use;
>
> return fw;
> }
next prev parent reply other threads:[~2023-06-19 14:45 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-17 10:32 [PATCH v3,0/11] media: mediatek: vcodec: separate encoder and decoder Yunfei Dong
2023-06-17 10:32 ` [PATCH v3,01/11] media: mediatek: vcodec: remove unused parameter Yunfei Dong
2023-06-19 14:42 ` Nicolas Dufresne
2023-06-17 10:32 ` [PATCH v3,02/11] media: mediatek: vcodec: align fw interface Yunfei Dong
2023-06-19 14:45 ` Nicolas Dufresne [this message]
2023-06-17 10:32 ` [PATCH v3,03/11] media: mediatek: vcodec: re-write shared interface Yunfei Dong
2023-06-19 14:53 ` Nicolas Dufresne
2023-06-20 2:58 ` Yunfei Dong (董云飞)
2023-06-17 10:32 ` [PATCH v3,04/11] media: mediatek: vcodec: remove useless debug log Yunfei Dong
2023-06-17 10:32 ` [PATCH v3,05/11] media: mediatek: vcodec: remove the dependency of vcodec " Yunfei Dong
2023-06-17 10:32 ` [PATCH v3,06/11] mediatek: vcodec: replace pr_* with dev_* for v4l2 debug message Yunfei Dong
2023-06-17 10:32 ` [PATCH v3,07/11] mediatek: vcodec: separate struct mtk_vcodec_ctx Yunfei Dong
2023-06-17 10:32 ` [PATCH v3,08/11] mediatek: vcodec: separate struct mtk_vcodec_dev Yunfei Dong
2023-06-17 10:32 ` [PATCH v3,09/11] mediatek: vcodec: fix unreasonable parameter definition and style Yunfei Dong
2023-06-17 10:32 ` [PATCH v3,10/11] mediatek: vcodec: remove unused include header Yunfei Dong
2023-06-17 10:32 ` [PATCH v3,11/11] mediatek: vcodec: separete decoder and encoder Yunfei Dong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=177fc30731bf7eae91d984ab0788036cf169e69c.camel@collabora.com \
--to=nicolas.dufresne@collabora.com \
--cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=benjamin.gaignard@collabora.com \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=frkoenig@chromium.org \
--cc=hsinyi@chromium.org \
--cc=hverkuil-cisco@xs4all.nl \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=nfraprado@collabora.com \
--cc=nhebert@chromium.org \
--cc=stevecho@chromium.org \
--cc=wenst@chromium.org \
--cc=yunfei.dong@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).