All of lore.kernel.org
 help / color / mirror / Atom feed
From: "yunfei.dong@mediatek.com" <yunfei.dong@mediatek.com>
To: Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Alexandre Courbot <acourbot@chromium.org>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	"Tzung-Bi Shih" <tzungbi@chromium.org>,
	Tiffany Lin <tiffany.lin@mediatek.com>,
	Andrew-CT Chen <andrew-ct.chen@mediatek.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Tomasz Figa <tfiga@google.com>
Cc: Hsin-Yi Wang <hsinyi@chromium.org>,
	Fritz Koenig <frkoenig@chromium.org>,
	Dafna Hirschfeld <dafna.hirschfeld@collabora.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	Irui Wang <irui.wang@mediatek.com>, <linux-media@vger.kernel.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<srv_heupstream@mediatek.com>,
	<linux-mediatek@lists.infradead.org>,
	<Project_Global_Chrome_Upstream_Group@mediatek.com>
Subject: Re: [PATCH v11, 01/19] media: mtk-vcodec: Get numbers of register bases from DT
Date: Thu, 2 Dec 2021 10:24:44 +0800	[thread overview]
Message-ID: <a33337000556c17e7de0f1ffe43cf21f159b4582.camel@mediatek.com> (raw)
In-Reply-To: <5e350a02-eb4b-5080-8d13-fe01ccf5dd70@collabora.com>

Hi Benjamin,

Thanks for your suggestion.
On Tue, 2021-11-30 at 14:20 +0100, Benjamin Gaignard wrote:
> Le 29/11/2021 à 04:41, Yunfei Dong a écrit :
> > Different platform may has different numbers of register bases.
> > Gets the
> > numbers of register bases from DT (sizeof(u32) * 4 bytes for each).
> > 
> > Reviewed-by: Tzung-Bi Shih<tzungbi@google.com>
> > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
> > ---
> >   .../platform/mtk-vcodec/mtk_vcodec_dec_drv.c  | 37
> > ++++++++++++++-----
> >   1 file changed, 28 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c 
> > b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > index e6e6a8203eeb..59caf2163349 100644
> > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > @@ -78,6 +78,30 @@ 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)
> > +{
> > +	struct platform_device *pdev = dev->plat_dev;
> > +	int reg_num, i;
> > +
> > +	/* Sizeof(u32) * 4 bytes for each register base. */
> > +	reg_num = of_property_count_elems_of_size(pdev->dev.of_node,
> > "reg",
> > +		sizeof(u32) * 4);
> 
> It looks strange for me to have a "reg" size equal to sizeof(u32) *
> 4. Usually
> we more see reg size = sizeof(u32).
> 
For the definition of reg in dtsi is reg = <0 0x16000000 0 0x800>,
Need to using sizeof(u32) * 4, not sizeof(u32).
> > +	if (reg_num <= 0 || reg_num > NUM_MAX_VDEC_REG_BASE) {
> 
> If reg_num = NUM_MAX_VDEC_REG_BASE you will iterate out of bounds of
> dev->reg_base array.
> That never happens because dev->reg_base size equal
> NUM_MAX_VCODEC_REG_BASE.
> The question is what is the real needed size for dev->reg_base array
> ? NUM_MAX_VDEC_REG_BASE or
> NUM_MAX_VCODEC_REG_BASE ?
> 
> NUM_MAX_VDEC_REG_BASE is used for video decoder, and
> NUM_MAX_VCODEC_REG_BASE is used for encoder.

The max register number of video decoder is NUM_MAX_VDEC_REG_BASE, and
the ranges is 0 ~ NUM_MAX_VDEC_REG_BASE - 1.

> Regards,
> Benjamin
> 
Best Regards,
Yunfei Dong
> > +		dev_err(&pdev->dev, "Invalid register property size:
> > %d\n", reg_num);
> > +		return -EINVAL;
> > +	}
> > +
> > +	for (i = 0; i < reg_num; i++) {
> > +		dev->reg_base[i] = devm_platform_ioremap_resource(pdev,
> > i);
> > +		if (IS_ERR(dev->reg_base[i]))
> > +			return PTR_ERR(dev->reg_base[i]);
> > +
> > +		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev-
> > >reg_base[i]);
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> >   static int fops_vcodec_open(struct file *file)
> >   {
> >   	struct mtk_vcodec_dev *dev = video_drvdata(file);
> > @@ -206,7 +230,7 @@ static int mtk_vcodec_probe(struct
> > platform_device *pdev)
> >   	struct resource *res;
> >   	phandle rproc_phandle;
> >   	enum mtk_vcodec_fw_type fw_type;
> > -	int i, ret;
> > +	int ret;
> >   
> >   	dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
> >   	if (!dev)
> > @@ -238,14 +262,9 @@ static int mtk_vcodec_probe(struct
> > platform_device *pdev)
> >   		goto err_dec_pm;
> >   	}
> >   
> > -	for (i = 0; i < NUM_MAX_VDEC_REG_BASE; i++) {
> > -		dev->reg_base[i] = devm_platform_ioremap_resource(pdev,
> > i);
> > -		if (IS_ERR((__force void *)dev->reg_base[i])) {
> > -			ret = PTR_ERR((__force void *)dev-
> > >reg_base[i]);
> > -			goto err_res;
> > -		}
> > -		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev-
> > >reg_base[i]);
> > -	}
> > +	ret = mtk_vcodec_get_reg_bases(dev);
> > +	if (ret)
> > +		goto err_res;
> >   
> >   	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> >   	if (res == NULL) {

WARNING: multiple messages have this Message-ID (diff)
From: "yunfei.dong@mediatek.com" <yunfei.dong@mediatek.com>
To: Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Alexandre Courbot <acourbot@chromium.org>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	"Tzung-Bi Shih" <tzungbi@chromium.org>,
	Tiffany Lin <tiffany.lin@mediatek.com>,
	Andrew-CT Chen <andrew-ct.chen@mediatek.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Tomasz Figa <tfiga@google.com>
Cc: Irui Wang <irui.wang@mediatek.com>,
	Dafna Hirschfeld <dafna.hirschfeld@collabora.com>,
	srv_heupstream@mediatek.com, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	dri-devel <dri-devel@lists.freedesktop.org>,
	Project_Global_Chrome_Upstream_Group@mediatek.com,
	linux-mediatek@lists.infradead.org,
	Hsin-Yi Wang <hsinyi@chromium.org>,
	Fritz Koenig <frkoenig@chromium.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-media@vger.kernel.org
Subject: Re: [PATCH v11, 01/19] media: mtk-vcodec: Get numbers of register bases from DT
Date: Thu, 2 Dec 2021 10:24:44 +0800	[thread overview]
Message-ID: <a33337000556c17e7de0f1ffe43cf21f159b4582.camel@mediatek.com> (raw)
In-Reply-To: <5e350a02-eb4b-5080-8d13-fe01ccf5dd70@collabora.com>

Hi Benjamin,

Thanks for your suggestion.
On Tue, 2021-11-30 at 14:20 +0100, Benjamin Gaignard wrote:
> Le 29/11/2021 à 04:41, Yunfei Dong a écrit :
> > Different platform may has different numbers of register bases.
> > Gets the
> > numbers of register bases from DT (sizeof(u32) * 4 bytes for each).
> > 
> > Reviewed-by: Tzung-Bi Shih<tzungbi@google.com>
> > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
> > ---
> >   .../platform/mtk-vcodec/mtk_vcodec_dec_drv.c  | 37
> > ++++++++++++++-----
> >   1 file changed, 28 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c 
> > b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > index e6e6a8203eeb..59caf2163349 100644
> > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > @@ -78,6 +78,30 @@ 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)
> > +{
> > +	struct platform_device *pdev = dev->plat_dev;
> > +	int reg_num, i;
> > +
> > +	/* Sizeof(u32) * 4 bytes for each register base. */
> > +	reg_num = of_property_count_elems_of_size(pdev->dev.of_node,
> > "reg",
> > +		sizeof(u32) * 4);
> 
> It looks strange for me to have a "reg" size equal to sizeof(u32) *
> 4. Usually
> we more see reg size = sizeof(u32).
> 
For the definition of reg in dtsi is reg = <0 0x16000000 0 0x800>,
Need to using sizeof(u32) * 4, not sizeof(u32).
> > +	if (reg_num <= 0 || reg_num > NUM_MAX_VDEC_REG_BASE) {
> 
> If reg_num = NUM_MAX_VDEC_REG_BASE you will iterate out of bounds of
> dev->reg_base array.
> That never happens because dev->reg_base size equal
> NUM_MAX_VCODEC_REG_BASE.
> The question is what is the real needed size for dev->reg_base array
> ? NUM_MAX_VDEC_REG_BASE or
> NUM_MAX_VCODEC_REG_BASE ?
> 
> NUM_MAX_VDEC_REG_BASE is used for video decoder, and
> NUM_MAX_VCODEC_REG_BASE is used for encoder.

The max register number of video decoder is NUM_MAX_VDEC_REG_BASE, and
the ranges is 0 ~ NUM_MAX_VDEC_REG_BASE - 1.

> Regards,
> Benjamin
> 
Best Regards,
Yunfei Dong
> > +		dev_err(&pdev->dev, "Invalid register property size:
> > %d\n", reg_num);
> > +		return -EINVAL;
> > +	}
> > +
> > +	for (i = 0; i < reg_num; i++) {
> > +		dev->reg_base[i] = devm_platform_ioremap_resource(pdev,
> > i);
> > +		if (IS_ERR(dev->reg_base[i]))
> > +			return PTR_ERR(dev->reg_base[i]);
> > +
> > +		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev-
> > >reg_base[i]);
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> >   static int fops_vcodec_open(struct file *file)
> >   {
> >   	struct mtk_vcodec_dev *dev = video_drvdata(file);
> > @@ -206,7 +230,7 @@ static int mtk_vcodec_probe(struct
> > platform_device *pdev)
> >   	struct resource *res;
> >   	phandle rproc_phandle;
> >   	enum mtk_vcodec_fw_type fw_type;
> > -	int i, ret;
> > +	int ret;
> >   
> >   	dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
> >   	if (!dev)
> > @@ -238,14 +262,9 @@ static int mtk_vcodec_probe(struct
> > platform_device *pdev)
> >   		goto err_dec_pm;
> >   	}
> >   
> > -	for (i = 0; i < NUM_MAX_VDEC_REG_BASE; i++) {
> > -		dev->reg_base[i] = devm_platform_ioremap_resource(pdev,
> > i);
> > -		if (IS_ERR((__force void *)dev->reg_base[i])) {
> > -			ret = PTR_ERR((__force void *)dev-
> > >reg_base[i]);
> > -			goto err_res;
> > -		}
> > -		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev-
> > >reg_base[i]);
> > -	}
> > +	ret = mtk_vcodec_get_reg_bases(dev);
> > +	if (ret)
> > +		goto err_res;
> >   
> >   	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> >   	if (res == NULL) {

WARNING: multiple messages have this Message-ID (diff)
From: "yunfei.dong@mediatek.com" <yunfei.dong@mediatek.com>
To: Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Alexandre Courbot <acourbot@chromium.org>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	"Tzung-Bi Shih" <tzungbi@chromium.org>,
	Tiffany Lin <tiffany.lin@mediatek.com>,
	Andrew-CT Chen <andrew-ct.chen@mediatek.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Tomasz Figa <tfiga@google.com>
Cc: Hsin-Yi Wang <hsinyi@chromium.org>,
	Fritz Koenig <frkoenig@chromium.org>,
	 Dafna Hirschfeld <dafna.hirschfeld@collabora.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	Irui Wang <irui.wang@mediatek.com>, <linux-media@vger.kernel.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<srv_heupstream@mediatek.com>,
	<linux-mediatek@lists.infradead.org>,
	<Project_Global_Chrome_Upstream_Group@mediatek.com>
Subject: Re: [PATCH v11, 01/19] media: mtk-vcodec: Get numbers of register bases from DT
Date: Thu, 2 Dec 2021 10:24:44 +0800	[thread overview]
Message-ID: <a33337000556c17e7de0f1ffe43cf21f159b4582.camel@mediatek.com> (raw)
In-Reply-To: <5e350a02-eb4b-5080-8d13-fe01ccf5dd70@collabora.com>

Hi Benjamin,

Thanks for your suggestion.
On Tue, 2021-11-30 at 14:20 +0100, Benjamin Gaignard wrote:
> Le 29/11/2021 à 04:41, Yunfei Dong a écrit :
> > Different platform may has different numbers of register bases.
> > Gets the
> > numbers of register bases from DT (sizeof(u32) * 4 bytes for each).
> > 
> > Reviewed-by: Tzung-Bi Shih<tzungbi@google.com>
> > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
> > ---
> >   .../platform/mtk-vcodec/mtk_vcodec_dec_drv.c  | 37
> > ++++++++++++++-----
> >   1 file changed, 28 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c 
> > b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > index e6e6a8203eeb..59caf2163349 100644
> > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > @@ -78,6 +78,30 @@ 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)
> > +{
> > +	struct platform_device *pdev = dev->plat_dev;
> > +	int reg_num, i;
> > +
> > +	/* Sizeof(u32) * 4 bytes for each register base. */
> > +	reg_num = of_property_count_elems_of_size(pdev->dev.of_node,
> > "reg",
> > +		sizeof(u32) * 4);
> 
> It looks strange for me to have a "reg" size equal to sizeof(u32) *
> 4. Usually
> we more see reg size = sizeof(u32).
> 
For the definition of reg in dtsi is reg = <0 0x16000000 0 0x800>,
Need to using sizeof(u32) * 4, not sizeof(u32).
> > +	if (reg_num <= 0 || reg_num > NUM_MAX_VDEC_REG_BASE) {
> 
> If reg_num = NUM_MAX_VDEC_REG_BASE you will iterate out of bounds of
> dev->reg_base array.
> That never happens because dev->reg_base size equal
> NUM_MAX_VCODEC_REG_BASE.
> The question is what is the real needed size for dev->reg_base array
> ? NUM_MAX_VDEC_REG_BASE or
> NUM_MAX_VCODEC_REG_BASE ?
> 
> NUM_MAX_VDEC_REG_BASE is used for video decoder, and
> NUM_MAX_VCODEC_REG_BASE is used for encoder.

The max register number of video decoder is NUM_MAX_VDEC_REG_BASE, and
the ranges is 0 ~ NUM_MAX_VDEC_REG_BASE - 1.

> Regards,
> Benjamin
> 
Best Regards,
Yunfei Dong
> > +		dev_err(&pdev->dev, "Invalid register property size:
> > %d\n", reg_num);
> > +		return -EINVAL;
> > +	}
> > +
> > +	for (i = 0; i < reg_num; i++) {
> > +		dev->reg_base[i] = devm_platform_ioremap_resource(pdev,
> > i);
> > +		if (IS_ERR(dev->reg_base[i]))
> > +			return PTR_ERR(dev->reg_base[i]);
> > +
> > +		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev-
> > >reg_base[i]);
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> >   static int fops_vcodec_open(struct file *file)
> >   {
> >   	struct mtk_vcodec_dev *dev = video_drvdata(file);
> > @@ -206,7 +230,7 @@ static int mtk_vcodec_probe(struct
> > platform_device *pdev)
> >   	struct resource *res;
> >   	phandle rproc_phandle;
> >   	enum mtk_vcodec_fw_type fw_type;
> > -	int i, ret;
> > +	int ret;
> >   
> >   	dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
> >   	if (!dev)
> > @@ -238,14 +262,9 @@ static int mtk_vcodec_probe(struct
> > platform_device *pdev)
> >   		goto err_dec_pm;
> >   	}
> >   
> > -	for (i = 0; i < NUM_MAX_VDEC_REG_BASE; i++) {
> > -		dev->reg_base[i] = devm_platform_ioremap_resource(pdev,
> > i);
> > -		if (IS_ERR((__force void *)dev->reg_base[i])) {
> > -			ret = PTR_ERR((__force void *)dev-
> > >reg_base[i]);
> > -			goto err_res;
> > -		}
> > -		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev-
> > >reg_base[i]);
> > -	}
> > +	ret = mtk_vcodec_get_reg_bases(dev);
> > +	if (ret)
> > +		goto err_res;
> >   
> >   	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> >   	if (res == NULL) {
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

WARNING: multiple messages have this Message-ID (diff)
From: "yunfei.dong@mediatek.com" <yunfei.dong@mediatek.com>
To: Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Alexandre Courbot <acourbot@chromium.org>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	"Tzung-Bi Shih" <tzungbi@chromium.org>,
	Tiffany Lin <tiffany.lin@mediatek.com>,
	Andrew-CT Chen <andrew-ct.chen@mediatek.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Tomasz Figa <tfiga@google.com>
Cc: Hsin-Yi Wang <hsinyi@chromium.org>,
	Fritz Koenig <frkoenig@chromium.org>,
	 Dafna Hirschfeld <dafna.hirschfeld@collabora.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	Irui Wang <irui.wang@mediatek.com>, <linux-media@vger.kernel.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<srv_heupstream@mediatek.com>,
	<linux-mediatek@lists.infradead.org>,
	<Project_Global_Chrome_Upstream_Group@mediatek.com>
Subject: Re: [PATCH v11, 01/19] media: mtk-vcodec: Get numbers of register bases from DT
Date: Thu, 2 Dec 2021 10:24:44 +0800	[thread overview]
Message-ID: <a33337000556c17e7de0f1ffe43cf21f159b4582.camel@mediatek.com> (raw)
In-Reply-To: <5e350a02-eb4b-5080-8d13-fe01ccf5dd70@collabora.com>

Hi Benjamin,

Thanks for your suggestion.
On Tue, 2021-11-30 at 14:20 +0100, Benjamin Gaignard wrote:
> Le 29/11/2021 à 04:41, Yunfei Dong a écrit :
> > Different platform may has different numbers of register bases.
> > Gets the
> > numbers of register bases from DT (sizeof(u32) * 4 bytes for each).
> > 
> > Reviewed-by: Tzung-Bi Shih<tzungbi@google.com>
> > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
> > ---
> >   .../platform/mtk-vcodec/mtk_vcodec_dec_drv.c  | 37
> > ++++++++++++++-----
> >   1 file changed, 28 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c 
> > b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > index e6e6a8203eeb..59caf2163349 100644
> > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
> > @@ -78,6 +78,30 @@ 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)
> > +{
> > +	struct platform_device *pdev = dev->plat_dev;
> > +	int reg_num, i;
> > +
> > +	/* Sizeof(u32) * 4 bytes for each register base. */
> > +	reg_num = of_property_count_elems_of_size(pdev->dev.of_node,
> > "reg",
> > +		sizeof(u32) * 4);
> 
> It looks strange for me to have a "reg" size equal to sizeof(u32) *
> 4. Usually
> we more see reg size = sizeof(u32).
> 
For the definition of reg in dtsi is reg = <0 0x16000000 0 0x800>,
Need to using sizeof(u32) * 4, not sizeof(u32).
> > +	if (reg_num <= 0 || reg_num > NUM_MAX_VDEC_REG_BASE) {
> 
> If reg_num = NUM_MAX_VDEC_REG_BASE you will iterate out of bounds of
> dev->reg_base array.
> That never happens because dev->reg_base size equal
> NUM_MAX_VCODEC_REG_BASE.
> The question is what is the real needed size for dev->reg_base array
> ? NUM_MAX_VDEC_REG_BASE or
> NUM_MAX_VCODEC_REG_BASE ?
> 
> NUM_MAX_VDEC_REG_BASE is used for video decoder, and
> NUM_MAX_VCODEC_REG_BASE is used for encoder.

The max register number of video decoder is NUM_MAX_VDEC_REG_BASE, and
the ranges is 0 ~ NUM_MAX_VDEC_REG_BASE - 1.

> Regards,
> Benjamin
> 
Best Regards,
Yunfei Dong
> > +		dev_err(&pdev->dev, "Invalid register property size:
> > %d\n", reg_num);
> > +		return -EINVAL;
> > +	}
> > +
> > +	for (i = 0; i < reg_num; i++) {
> > +		dev->reg_base[i] = devm_platform_ioremap_resource(pdev,
> > i);
> > +		if (IS_ERR(dev->reg_base[i]))
> > +			return PTR_ERR(dev->reg_base[i]);
> > +
> > +		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev-
> > >reg_base[i]);
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> >   static int fops_vcodec_open(struct file *file)
> >   {
> >   	struct mtk_vcodec_dev *dev = video_drvdata(file);
> > @@ -206,7 +230,7 @@ static int mtk_vcodec_probe(struct
> > platform_device *pdev)
> >   	struct resource *res;
> >   	phandle rproc_phandle;
> >   	enum mtk_vcodec_fw_type fw_type;
> > -	int i, ret;
> > +	int ret;
> >   
> >   	dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
> >   	if (!dev)
> > @@ -238,14 +262,9 @@ static int mtk_vcodec_probe(struct
> > platform_device *pdev)
> >   		goto err_dec_pm;
> >   	}
> >   
> > -	for (i = 0; i < NUM_MAX_VDEC_REG_BASE; i++) {
> > -		dev->reg_base[i] = devm_platform_ioremap_resource(pdev,
> > i);
> > -		if (IS_ERR((__force void *)dev->reg_base[i])) {
> > -			ret = PTR_ERR((__force void *)dev-
> > >reg_base[i]);
> > -			goto err_res;
> > -		}
> > -		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev-
> > >reg_base[i]);
> > -	}
> > +	ret = mtk_vcodec_get_reg_bases(dev);
> > +	if (ret)
> > +		goto err_res;
> >   
> >   	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> >   	if (res == NULL) {
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-12-02  2:24 UTC|newest]

Thread overview: 155+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-29  3:41 [PATCH v11, 00/19] Support multi hardware decode using of_platform_populate Yunfei Dong
2021-11-29  3:41 ` Yunfei Dong
2021-11-29  3:41 ` Yunfei Dong
2021-11-29  3:41 ` Yunfei Dong
2021-11-29  3:41 ` [PATCH v11, 01/19] media: mtk-vcodec: Get numbers of register bases from DT Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-30 13:20   ` Benjamin Gaignard
2021-11-30 13:20     ` Benjamin Gaignard
2021-11-30 13:20     ` Benjamin Gaignard
2021-11-30 13:20     ` Benjamin Gaignard
2021-12-02  2:24     ` yunfei.dong [this message]
2021-12-02  2:24       ` yunfei.dong
2021-12-02  2:24       ` yunfei.dong
2021-12-02  2:24       ` yunfei.dong
2021-12-01 23:36   ` Steve Cho
2021-12-02  2:38     ` yunfei.dong
2021-12-02 16:38       ` Steve Cho
2021-11-29  3:41 ` [PATCH v11, 02/19] media: mtk-vcodec: Align vcodec wake up interrupt interface Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-12-01 23:55   ` Steve Cho
2021-12-01 23:55     ` Steve Cho
2021-12-01 23:55     ` Steve Cho
2021-12-01 23:55     ` Steve Cho
2021-12-01 23:58     ` Steve Cho
2021-12-01 23:58       ` Steve Cho
2021-12-01 23:58       ` Steve Cho
2021-12-01 23:58       ` Steve Cho
2021-11-29  3:41 ` [PATCH v11, 03/19] media: mtk-vcodec: Refactor vcodec pm interface Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-12-02  0:10   ` Steve Cho
2021-12-02  0:10     ` Steve Cho
2021-12-02  0:10     ` Steve Cho
2021-12-02  0:10     ` Steve Cho
2021-11-29  3:41 ` [PATCH v11, 04/19] media: mtk-vcodec: export decoder pm functions Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-30 13:34   ` Benjamin Gaignard
2021-11-30 13:34     ` Benjamin Gaignard
2021-11-30 13:34     ` Benjamin Gaignard
2021-11-30 13:34     ` Benjamin Gaignard
2021-12-03  1:50     ` yunfei.dong
2021-12-03  1:50       ` yunfei.dong
2021-12-03  1:50       ` yunfei.dong
2021-12-03  1:50       ` yunfei.dong
2021-12-01 12:09   ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 23:59     ` Steve Cho
2021-12-01 23:59       ` Steve Cho
2021-12-01 23:59       ` Steve Cho
2021-12-01 23:59       ` Steve Cho
2021-11-29  3:41 ` [PATCH v11, 05/19] media: mtk-vcodec: Support MT8192 Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-12-01 12:09   ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 23:58     ` Steve Cho
2021-12-01 23:58       ` Steve Cho
2021-12-01 23:58       ` Steve Cho
2021-12-01 23:58       ` Steve Cho
2021-11-29  3:41 ` [PATCH v11, 06/19] media: mtk-vcodec: Add to support multi hardware decode Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41 ` [PATCH v11, 07/19] dt-bindings: media: mtk-vcodec: Separate video encoder and decoder dt-bindings Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41 ` [PATCH v11, 08/19] media: mtk-vcodec: Use pure single core for MT8183 Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41 ` [PATCH v11, 09/19] media: mtk-vcodec: Add irq interface for multi hardware Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-12-01 12:09   ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-11-29  3:41 ` [PATCH v11, 10/19] media: mtk-vcodec: Add msg queue feature for lat and core architecture Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-12-01 12:09   ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-03  1:55     ` yunfei.dong
2021-12-03  1:55       ` yunfei.dong
2021-12-03  1:55       ` yunfei.dong
2021-12-03  1:55       ` yunfei.dong
2021-11-29  3:41 ` [PATCH v11, 11/19] media: mtk-vcodec: Generalize power and clock on/off interfaces Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-12-01 12:09   ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-11-29  3:41 ` [PATCH v11, 12/19] media: mtk-vcodec: Add new interface to lock different hardware Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41 ` [PATCH v11, 13/19] media: mtk-vcodec: Add work queue for core hardware decode Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41 ` [PATCH v11, 14/19] media: mtk-vcodec: Support 34bits dma address for vdec Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` [PATCH v11,14/19] " Yunfei Dong
2021-12-01 12:09   ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-12-01 12:09     ` AngeloGioacchino Del Regno
2021-11-29  3:41 ` [PATCH v11, 15/19] dt-bindings: media: mtk-vcodec: Adds decoder dt-bindings for mt8192 Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41 ` [PATCH v11, 16/19] media: mtk-vcodec: Add core dec and dec end ipi msg Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41 ` [PATCH v11, 17/19] media: mtk-vcodec: Use codec type to separate different hardware Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:41   ` Yunfei Dong
2021-11-29  3:42 ` [PATCH v11, 18/19] media: mtk-vcodec: Remove mtk_vcodec_release_dec_pm Yunfei Dong
2021-11-29  3:42   ` Yunfei Dong
2021-11-29  3:42   ` Yunfei Dong
2021-11-29  3:42   ` Yunfei Dong
2021-12-01 12:08   ` AngeloGioacchino Del Regno
2021-12-01 12:08     ` AngeloGioacchino Del Regno
2021-12-01 12:08     ` AngeloGioacchino Del Regno
2021-12-01 12:08     ` AngeloGioacchino Del Regno
2021-11-29  3:42 ` [PATCH v11, 19/19] media: mtk-vcodec: Remove mtk_vcodec_release_enc_pm Yunfei Dong
2021-11-29  3:42   ` Yunfei Dong
2021-11-29  3:42   ` Yunfei Dong
2021-11-29  3:42   ` Yunfei Dong
2021-12-01 12:08   ` AngeloGioacchino Del Regno
2021-12-01 12:08     ` AngeloGioacchino Del Regno
2021-12-01 12:08     ` AngeloGioacchino Del Regno
2021-12-01 12:08     ` AngeloGioacchino Del Regno

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=a33337000556c17e7de0f1ffe43cf21f159b4582.camel@mediatek.com \
    --to=yunfei.dong@mediatek.com \
    --cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
    --cc=acourbot@chromium.org \
    --cc=andrew-ct.chen@mediatek.com \
    --cc=benjamin.gaignard@collabora.com \
    --cc=dafna.hirschfeld@collabora.com \
    --cc=daniel@ffwll.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=frkoenig@chromium.org \
    --cc=hsinyi@chromium.org \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=irui.wang@mediatek.com \
    --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=matthias.bgg@gmail.com \
    --cc=mchehab@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=srv_heupstream@mediatek.com \
    --cc=tfiga@google.com \
    --cc=tiffany.lin@mediatek.com \
    --cc=tzungbi@chromium.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.