[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d99811831065542167c8dae6285ecdada946104d.camel@mediatek.com>
Date: Thu, 25 Dec 2025 02:20:41 +0000
From: Kyrie Wu (吴晗) <Kyrie.Wu@...iatek.com>
To: "nicolas@...fresne.ca" <nicolas@...fresne.ca>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-mediatek@...ts.infradead.org" <linux-mediatek@...ts.infradead.org>,
"linux-media@...r.kernel.org" <linux-media@...r.kernel.org>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
"mchehab@...nel.org" <mchehab@...nel.org>,
Kyrie Wu (吴晗) <Kyrie.Wu@...iatek.com>,
"conor+dt@...nel.org" <conor+dt@...nel.org>, "robh@...nel.org"
<robh@...nel.org>, "hverkuil-cisco@...all.nl" <hverkuil-cisco@...all.nl>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>, "matthias.bgg@...il.com"
<matthias.bgg@...il.com>, "krzk+dt@...nel.org" <krzk+dt@...nel.org>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>
Subject: Re: [PATCH v11 01/12] media: mediatek: jpeg: fix jpeg hw count
setting
On Tue, 2025-12-16 at 15:57 -0500, Nicolas Dufresne wrote:
> Hi,
>
> Le mardi 02 décembre 2025 à 17:47 +0800, Kyrie Wu a écrit :
> > Different ICs have different amounts of hardware,
> > use a variable to set the amount of hardware.
>
> Did you mean different amount of cores ? The use of "hardware" is
> strange in
> this description.
Yes, it's right. I will change it in the next version.
Thanks.
>
> >
> > Fixes: 934e8bccac95 ("mtk-jpegenc: support jpegenc multi-hardware")
> > Fixes: 0fa49df4222f ("media: mtk-jpegdec: support jpegdec multi-
> > hardware")
>
> Its not clear from your description if this is in preparation of
> MT8196 or an
> actual fix. If its in preparation of, drop this, if it fixes some
> existing SoC,
> please tell use which one. And tell us how it breaks without this
> fix.
>
> regards,
> Nicolas
Dear Nicolas,
The macro was first used to represent the amount of cores for MT8195.
However, the cores' quantity of MT8196 is different from that in the
MT8195,
and it may also differ in the coming ICs. Therefore, the definition of
the macro can not used to represent the amount of cores.
But if you think this is normal setting patch rather than a fixed one,
I will change the commit messages in the next version.
Look forward to your further reply.
Thanks.
Regards,
Kyrie.
>
> >
> > Signed-off-by: Kyrie Wu <kyrie.wu@...iatek.com>
> > Reviewed-by: AngeloGioacchino Del Regno <
> > angelogioacchino.delregno@...labora.com>
> > ---
> > drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c | 8 ++++---
> > -
> > drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.h | 2 ++
> > drivers/media/platform/mediatek/jpeg/mtk_jpeg_dec_hw.c | 1 +
> > drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c | 1 +
> > 4 files changed, 8 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> > b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> > index 6268d651bdcf..6a7e01130f1c 100644
> > --- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> > +++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> > @@ -1467,7 +1467,7 @@ static int mtk_jpegenc_get_hw(struct
> > mtk_jpeg_ctx *ctx)
> > int i;
> >
> > spin_lock_irqsave(&jpeg->hw_lock, flags);
> > - for (i = 0; i < MTK_JPEGENC_HW_MAX; i++) {
> > + for (i = 0; i < jpeg->max_hw_count; i++) {
> > comp_jpeg = jpeg->enc_hw_dev[i];
> > if (comp_jpeg->hw_state == MTK_JPEG_HW_IDLE) {
> > hw_id = i;
> > @@ -1514,7 +1514,7 @@ static int mtk_jpegdec_get_hw(struct
> > mtk_jpeg_ctx *ctx)
> > int i;
> >
> > spin_lock_irqsave(&jpeg->hw_lock, flags);
> > - for (i = 0; i < MTK_JPEGDEC_HW_MAX; i++) {
> > + for (i = 0; i < jpeg->max_hw_count; i++) {
> > comp_jpeg = jpeg->dec_hw_dev[i];
> > if (comp_jpeg->hw_state == MTK_JPEG_HW_IDLE) {
> > hw_id = i;
> > @@ -1597,7 +1597,7 @@ static void mtk_jpegenc_worker(struct
> > work_struct *work)
> > jpeg_work);
> > struct mtk_jpeg_dev *jpeg = ctx->jpeg;
> >
> > - for (i = 0; i < MTK_JPEGENC_HW_MAX; i++)
> > + for (i = 0; i < jpeg->max_hw_count; i++)
> > comp_jpeg[i] = jpeg->enc_hw_dev[i];
> > i = 0;
> >
> > @@ -1692,7 +1692,7 @@ static void mtk_jpegdec_worker(struct
> > work_struct *work)
> > struct mtk_jpeg_fb fb;
> > unsigned long flags;
> >
> > - for (i = 0; i < MTK_JPEGDEC_HW_MAX; i++)
> > + for (i = 0; i < jpeg->max_hw_count; i++)
> > comp_jpeg[i] = jpeg->dec_hw_dev[i];
> > i = 0;
> >
> > diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.h
> > b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.h
> > index 02ed0ed5b736..6be5cf30dea1 100644
> > --- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.h
> > +++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.h
> > @@ -212,6 +212,7 @@ struct mtk_jpegdec_comp_dev {
> > * @reg_decbase: jpg decode register base addr
> > * @dec_hw_dev: jpg decode hardware device
> > * @hw_index: jpg hw index
> > + * @max_hw_count: jpeg hw-core count
> > */
> > struct mtk_jpeg_dev {
> > struct mutex lock;
> > @@ -234,6 +235,7 @@ struct mtk_jpeg_dev {
> > void __iomem *reg_decbase[MTK_JPEGDEC_HW_MAX];
> > struct mtk_jpegdec_comp_dev *dec_hw_dev[MTK_JPEGDEC_HW_MAX];
> > atomic_t hw_index;
> > + u32 max_hw_count;
> > };
> >
> > /**
> > diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_dec_hw.c
> > b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_dec_hw.c
> > index e78e1d11093c..a1e54715cb7e 100644
> > --- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_dec_hw.c
> > +++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_dec_hw.c
> > @@ -664,6 +664,7 @@ static int mtk_jpegdec_hw_probe(struct
> > platform_device *pdev)
> > master_dev->dec_hw_dev[i] = dev;
> > master_dev->reg_decbase[i] = dev->reg_base;
> > dev->master_dev = master_dev;
> > + master_dev->max_hw_count++;
> >
> > platform_set_drvdata(pdev, dev);
> > pm_runtime_enable(&pdev->dev);
> > diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c
> > b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c
> > index 9ab27aee302a..28d05909c96f 100644
> > --- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c
> > +++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c
> > @@ -386,6 +386,7 @@ static int mtk_jpegenc_hw_probe(struct
> > platform_device *pdev)
> > master_dev->enc_hw_dev[i] = dev;
> > master_dev->reg_encbase[i] = dev->reg_base;
> > dev->master_dev = master_dev;
> > + master_dev->max_hw_count++;
> >
> > platform_set_drvdata(pdev, dev);
> > pm_runtime_enable(&pdev->dev);
Powered by blists - more mailing lists