Devicetree
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Remove unused variant and code clean up
@ 2026-09-24 11:08 Benjamin Gaignard
  2026-09-24 11:08 ` [PATCH v2 1/3] media: verisilicon: Remove deprecated variant Benjamin Gaignard
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Benjamin Gaignard @ 2026-09-24 11:08 UTC (permalink / raw)
  To: nicolas.dufresne, benjamin.gaignard, p.zabel, mchehab, robh,
	krzk+dt, conor+dt, Frank.Li, s.hauer, kernel, festevam
  Cc: linux-media, linux-rockchip, devicetree, imx, linux-arm-kernel,
	linux-kernel, kernel

"nxp,imx8mq-vpu" variant has been tagged as deprecated since 4 years
now. This series remove it and make some context's fields useless so
remove them too.

changes in v2:
- have a separate patch for documentation
- fix dt-bindings
- rebased on v7.3-rc1

Benjamin Gaignard (3):
  media: verisilicon: Remove deprecated variant
  media: dt-bindings: media: nxp, imx8mq-vpu: Remove nxp,imx8mq-vpu
  media: verisilicon: Remove useless internal fields

 .../bindings/media/nxp,imx8mq-vpu.yaml        | 10 ++--
 drivers/media/platform/verisilicon/hantro.h   |  8 +--
 .../media/platform/verisilicon/hantro_drv.c   | 21 ++-----
 .../media/platform/verisilicon/imx8m_vpu_hw.c | 60 -------------------
 4 files changed, 11 insertions(+), 88 deletions(-)

-- 
2.53.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/3] media: verisilicon: Remove deprecated variant
  2026-09-24 11:08 [PATCH v2 0/3] Remove unused variant and code clean up Benjamin Gaignard
@ 2026-09-24 11:08 ` Benjamin Gaignard
  2026-09-24 11:25   ` sashiko-bot
  2026-09-24 11:08 ` [PATCH v2 2/3] media: dt-bindings: media: nxp, imx8mq-vpu: Remove nxp,imx8mq-vpu Benjamin Gaignard
  2026-09-24 11:08 ` [PATCH v2 3/3] media: verisilicon: Remove useless internal fields Benjamin Gaignard
  2 siblings, 1 reply; 7+ messages in thread
From: Benjamin Gaignard @ 2026-09-24 11:08 UTC (permalink / raw)
  To: nicolas.dufresne, benjamin.gaignard, p.zabel, mchehab, robh,
	krzk+dt, conor+dt, Frank.Li, s.hauer, kernel, festevam
  Cc: linux-media, linux-rockchip, devicetree, imx, linux-arm-kernel,
	linux-kernel, kernel

"nxp,imx8mq-vpu" is tagged as deprecated since:
commit f3116f2e52e6 ("media: dt-bindings: media: nxp, imx8mq-vpu: Split G1 and G2 nodes")
merged since v5.17-rc1.
There is more reference to it since that.
Remove for driver to clean up the code.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
---
changes in v2:
- have a separate patch for documentation
- rebased on v7.3-rc1

 .../media/platform/verisilicon/hantro_drv.c   |  1 -
 .../media/platform/verisilicon/imx8m_vpu_hw.c | 60 -------------------
 2 files changed, 61 deletions(-)

diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
index ad71c0402ef3..70de47ddb023 100644
--- a/drivers/media/platform/verisilicon/hantro_drv.c
+++ b/drivers/media/platform/verisilicon/hantro_drv.c
@@ -725,7 +725,6 @@ static const struct of_device_id of_hantro_match[] = {
 #endif
 #ifdef CONFIG_VIDEO_HANTRO_IMX8M
 	{ .compatible = "nxp,imx8mm-vpu-g1", .data = &imx8mm_vpu_g1_variant, },
-	{ .compatible = "nxp,imx8mq-vpu", .data = &imx8mq_vpu_variant, },
 	{ .compatible = "nxp,imx8mq-vpu-g1", .data = &imx8mq_vpu_g1_variant },
 	{ .compatible = "nxp,imx8mq-vpu-g2", .data = &imx8mq_vpu_g2_variant },
 #endif
diff --git a/drivers/media/platform/verisilicon/imx8m_vpu_hw.c b/drivers/media/platform/verisilicon/imx8m_vpu_hw.c
index fa4224de4b99..3b63f626d33f 100644
--- a/drivers/media/platform/verisilicon/imx8m_vpu_hw.c
+++ b/drivers/media/platform/verisilicon/imx8m_vpu_hw.c
@@ -42,38 +42,6 @@ static void imx8m_soft_reset(struct hantro_dev *vpu, u32 reset_bits)
 	writel(val, vpu->ctrl_base + CTRL_SOFT_RESET);
 }
 
-static void imx8m_clk_enable(struct hantro_dev *vpu, u32 clock_bits)
-{
-	u32 val;
-
-	val = readl(vpu->ctrl_base + CTRL_CLOCK_ENABLE);
-	val |= clock_bits;
-	writel(val, vpu->ctrl_base + CTRL_CLOCK_ENABLE);
-}
-
-static int imx8mq_runtime_resume(struct hantro_dev *vpu)
-{
-	int ret;
-
-	ret = clk_bulk_prepare_enable(vpu->variant->num_clocks, vpu->clocks);
-	if (ret) {
-		dev_err(vpu->dev, "Failed to enable clocks\n");
-		return ret;
-	}
-
-	imx8m_soft_reset(vpu, RESET_G1 | RESET_G2);
-	imx8m_clk_enable(vpu, CLOCK_G1 | CLOCK_G2);
-
-	/* Set values of the fuse registers */
-	writel(0xffffffff, vpu->ctrl_base + CTRL_G1_DEC_FUSE);
-	writel(0xffffffff, vpu->ctrl_base + CTRL_G1_PP_FUSE);
-	writel(0xffffffff, vpu->ctrl_base + CTRL_G2_DEC_FUSE);
-
-	clk_bulk_disable_unprepare(vpu->variant->num_clocks, vpu->clocks);
-
-	return 0;
-}
-
 /*
  * Supported formats.
  */
@@ -234,13 +202,6 @@ static const struct hantro_fmt imx8m_vpu_g2_dec_fmts[] = {
 	},
 };
 
-static int imx8mq_vpu_hw_init(struct hantro_dev *vpu)
-{
-	vpu->ctrl_base = vpu->reg_bases[vpu->variant->num_regs - 1];
-
-	return 0;
-}
-
 static void imx8m_vpu_g1_reset(struct hantro_ctx *ctx)
 {
 	struct hantro_dev *vpu = ctx->dev;
@@ -319,30 +280,9 @@ static const struct hantro_irq imx8mq_g2_irqs[] = {
 	{ "g2", hantro_g2_irq },
 };
 
-static const char * const imx8mq_clk_names[] = { "g1", "g2", "bus" };
-static const char * const imx8mq_reg_names[] = { "g1", "g2", "ctrl" };
 static const char * const imx8mq_g1_clk_names[] = { "g1" };
 static const char * const imx8mq_g2_clk_names[] = { "g2" };
 
-const struct hantro_variant imx8mq_vpu_variant = {
-	.dec_fmts = imx8m_vpu_dec_fmts,
-	.num_dec_fmts = ARRAY_SIZE(imx8m_vpu_dec_fmts),
-	.postproc_fmts = imx8m_vpu_postproc_fmts,
-	.num_postproc_fmts = ARRAY_SIZE(imx8m_vpu_postproc_fmts),
-	.postproc_ops = &hantro_g1_postproc_ops,
-	.codec = HANTRO_MPEG2_DECODER | HANTRO_VP8_DECODER |
-		 HANTRO_H264_DECODER,
-	.codec_ops = imx8mq_vpu_codec_ops,
-	.init = imx8mq_vpu_hw_init,
-	.runtime_resume = imx8mq_runtime_resume,
-	.irqs = imx8mq_irqs,
-	.num_irqs = ARRAY_SIZE(imx8mq_irqs),
-	.clk_names = imx8mq_clk_names,
-	.num_clocks = ARRAY_SIZE(imx8mq_clk_names),
-	.reg_names = imx8mq_reg_names,
-	.num_regs = ARRAY_SIZE(imx8mq_reg_names)
-};
-
 static const struct of_device_id imx8mq_vpu_shared_resources[] = {
 	{ .compatible = "nxp,imx8mq-vpu-g1", },
 	{ .compatible = "nxp,imx8mq-vpu-g2", },
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/3] media: dt-bindings: media: nxp, imx8mq-vpu: Remove nxp,imx8mq-vpu
  2026-09-24 11:08 [PATCH v2 0/3] Remove unused variant and code clean up Benjamin Gaignard
  2026-09-24 11:08 ` [PATCH v2 1/3] media: verisilicon: Remove deprecated variant Benjamin Gaignard
@ 2026-09-24 11:08 ` Benjamin Gaignard
  2026-09-24 11:18   ` sashiko-bot
  2026-09-24 11:08 ` [PATCH v2 3/3] media: verisilicon: Remove useless internal fields Benjamin Gaignard
  2 siblings, 1 reply; 7+ messages in thread
From: Benjamin Gaignard @ 2026-09-24 11:08 UTC (permalink / raw)
  To: nicolas.dufresne, benjamin.gaignard, p.zabel, mchehab, robh,
	krzk+dt, conor+dt, Frank.Li, s.hauer, kernel, festevam
  Cc: linux-media, linux-rockchip, devicetree, imx, linux-arm-kernel,
	linux-kernel, kernel

nxp,imx8mq-vpu has been tagged has deprecated since a while.
After driver clean up it is time to remove it.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
---
changes in v2:
- have a separate patch for documentation
- fix dt-bindings

 .../devicetree/bindings/media/nxp,imx8mq-vpu.yaml      | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml b/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
index 19528262810a..69619d2c86fa 100644
--- a/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
+++ b/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
@@ -14,12 +14,10 @@ description:
 
 properties:
   compatible:
-    oneOf:
-      - const: nxp,imx8mq-vpu
-        deprecated: true
-      - const: nxp,imx8mq-vpu-g1
-      - const: nxp,imx8mq-vpu-g2
-      - const: nxp,imx8mm-vpu-g1
+    enum:
+      - nxp,imx8mq-vpu-g1
+      - nxp,imx8mq-vpu-g2
+      - nxp,imx8mm-vpu-g1
 
   reg:
     maxItems: 1
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 3/3] media: verisilicon: Remove useless internal fields
  2026-09-24 11:08 [PATCH v2 0/3] Remove unused variant and code clean up Benjamin Gaignard
  2026-09-24 11:08 ` [PATCH v2 1/3] media: verisilicon: Remove deprecated variant Benjamin Gaignard
  2026-09-24 11:08 ` [PATCH v2 2/3] media: dt-bindings: media: nxp, imx8mq-vpu: Remove nxp,imx8mq-vpu Benjamin Gaignard
@ 2026-09-24 11:08 ` Benjamin Gaignard
  2026-09-24 11:25   ` sashiko-bot
  2 siblings, 1 reply; 7+ messages in thread
From: Benjamin Gaignard @ 2026-09-24 11:08 UTC (permalink / raw)
  To: nicolas.dufresne, benjamin.gaignard, p.zabel, mchehab, robh,
	krzk+dt, conor+dt, Frank.Li, s.hauer, kernel, festevam
  Cc: linux-media, linux-rockchip, devicetree, imx, linux-arm-kernel,
	linux-kernel, kernel

No more variants are using multiple registers regions.
Remove the useless fields and simplify driver code.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
---
 drivers/media/platform/verisilicon/hantro.h   |  8 ++------
 .../media/platform/verisilicon/hantro_drv.c   | 20 +++++--------------
 2 files changed, 7 insertions(+), 21 deletions(-)

diff --git a/drivers/media/platform/verisilicon/hantro.h b/drivers/media/platform/verisilicon/hantro.h
index 0353de154a1e..20c3afb3b817 100644
--- a/drivers/media/platform/verisilicon/hantro.h
+++ b/drivers/media/platform/verisilicon/hantro.h
@@ -72,8 +72,6 @@ struct hantro_irq {
  * @num_irqs:			number of irqs in the array
  * @clk_names:			array of clock names
  * @num_clocks:			number of clocks in the array
- * @reg_names:			array of register range names
- * @num_regs:			number of register range names in the array
  * @double_buffer:		core needs double buffering
  * @legacy_regs:		core uses legacy register set
  * @late_postproc:		postproc must be set up at the end of the job
@@ -97,8 +95,6 @@ struct hantro_variant {
 	int num_irqs;
 	const char * const *clk_names;
 	int num_clocks;
-	const char * const *reg_names;
-	int num_regs;
 	unsigned int double_buffer : 1;
 	unsigned int legacy_regs : 1;
 	unsigned int late_postproc : 1;
@@ -184,7 +180,7 @@ hantro_vdev_to_func(struct video_device *vdev)
  *			dev_ macros.
  * @clocks:		Array of clock handles.
  * @resets:		Array of reset handles.
- * @reg_bases:		Mapped addresses of VPU registers.
+ * @reg_base:		Mapped address of VPU registers.
  * @enc_base:		Mapped address of VPU encoder register for convenience.
  * @dec_base:		Mapped address of VPU decoder register for convenience.
  * @ctrl_base:		Mapped address of VPU control block.
@@ -204,7 +200,7 @@ struct hantro_dev {
 	struct device *dev;
 	struct clk_bulk_data *clocks;
 	struct reset_control *resets;
-	void __iomem **reg_bases;
+	void __iomem *reg_base;
 	void __iomem *enc_base;
 	void __iomem *dec_base;
 	void __iomem *ctrl_base;
diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
index 70de47ddb023..f418b0427985 100644
--- a/drivers/media/platform/verisilicon/hantro_drv.c
+++ b/drivers/media/platform/verisilicon/hantro_drv.c
@@ -1080,7 +1080,6 @@ static int hantro_probe(struct platform_device *pdev)
 {
 	const struct of_device_id *match;
 	struct hantro_dev *vpu;
-	int num_bases;
 	int i, ret;
 
 	vpu = devm_kzalloc(&pdev->dev, sizeof(*vpu), GFP_KERNEL);
@@ -1137,21 +1136,12 @@ static int hantro_probe(struct platform_device *pdev)
 	if (IS_ERR(vpu->resets))
 		return PTR_ERR(vpu->resets);
 
-	num_bases = vpu->variant->num_regs ?: 1;
-	vpu->reg_bases = devm_kcalloc(&pdev->dev, num_bases,
-				      sizeof(*vpu->reg_bases), GFP_KERNEL);
-	if (!vpu->reg_bases)
-		return -ENOMEM;
+	vpu->reg_base = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(vpu->reg_base))
+		return PTR_ERR(vpu->reg_base);
 
-	for (i = 0; i < num_bases; i++) {
-		vpu->reg_bases[i] = vpu->variant->reg_names ?
-		      devm_platform_ioremap_resource_byname(pdev, vpu->variant->reg_names[i]) :
-		      devm_platform_ioremap_resource(pdev, 0);
-		if (IS_ERR(vpu->reg_bases[i]))
-			return PTR_ERR(vpu->reg_bases[i]);
-	}
-	vpu->enc_base = vpu->reg_bases[0] + vpu->variant->enc_offset;
-	vpu->dec_base = vpu->reg_bases[0] + vpu->variant->dec_offset;
+	vpu->enc_base = vpu->reg_base + vpu->variant->enc_offset;
+	vpu->dec_base = vpu->reg_base + vpu->variant->dec_offset;
 
 	/**
 	 * TODO: Eventually allow taking advantage of full 64-bit address space.
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/3] media: dt-bindings: media: nxp, imx8mq-vpu: Remove nxp,imx8mq-vpu
  2026-09-24 11:08 ` [PATCH v2 2/3] media: dt-bindings: media: nxp, imx8mq-vpu: Remove nxp,imx8mq-vpu Benjamin Gaignard
@ 2026-09-24 11:18   ` sashiko-bot
  0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-09-24 11:18 UTC (permalink / raw)
  To: Benjamin Gaignard; +Cc: robh, media-ci, Frank.Li, conor+dt, imx, devicetree

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] dt-bindings: removing deprecated nxp,imx8mq-vpu breaks DT ABI backward compatibility
- [Medium] media: leftover warning for deprecated nxp,imx8mq-vpu prints wrong string
--

commit 3bc65c4891afcd4ded470db943d49d0c8d78f2db
Author: Benjamin Gaignard <benjamin.gaignard@collabora.com>

media: dt-bindings: media: nxp, imx8mq-vpu: Remove nxp,imx8mq-vpu

nxp,imx8mq-vpu has been tagged has deprecated since a while.
After driver clean up it is time to remove it.

> diff --git a/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml b/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
> index 19528262810a5..69619d2c86fa0 100644
> --- a/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
> +++ b/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
> @@ -14,12 +14,10 @@ description:
>  
>  properties:
>    compatible:
> -    oneOf:
> -      - const: nxp,imx8mq-vpu
> -        deprecated: true

[Severity: High]
Does removing this deprecated string break backward compatibility for older
DTBs? Devices booting with older Device Tree Binaries that only specify
compatible = "nxp,imx8mq-vpu" will no longer bind to the driver or pass schema
validation.

> -      - const: nxp,imx8mq-vpu-g1
> -      - const: nxp,imx8mq-vpu-g2
> -      - const: nxp,imx8mm-vpu-g1
> +    enum:
> +      - nxp,imx8mq-vpu-g1
> +      - nxp,imx8mq-vpu-g2
> +      - nxp,imx8mm-vpu-g1

[Severity: Medium]
Since the old string is being removed from the driver match table in this
series, could the fallback warning in the hantro driver print the wrong string
or become dead code?

In drivers/media/platform/verisilicon/hantro_drv.c:hantro_probe():

	if (of_device_is_compatible(pdev->dev.of_node, "nxp,imx8mq-vpu"))
		dev_warn(&pdev->dev, "%s compatible is deprecated\n",
			 match->compatible);

If a device tree uses a fallback string (e.g., "nxp,imx8mq-vpu-g1",
"nxp,imx8mq-vpu"), it will match "nxp,imx8mq-vpu-g1". The
of_device_is_compatible() check for the old string succeeds, but
match->compatible points to "nxp,imx8mq-vpu-g1". The driver then incorrectly
warns that the new "nxp,imx8mq-vpu-g1" compatible is deprecated.

If only the old string is present, the driver fails to probe, making the
warning dead code.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260924110825.166238-1-benjamin.gaignard@collabora.com?part=2

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/3] media: verisilicon: Remove deprecated variant
  2026-09-24 11:08 ` [PATCH v2 1/3] media: verisilicon: Remove deprecated variant Benjamin Gaignard
@ 2026-09-24 11:25   ` sashiko-bot
  0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-09-24 11:25 UTC (permalink / raw)
  To: Benjamin Gaignard; +Cc: devicetree, imx, robh, Frank.Li, conor+dt, media-ci

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] media: verisilicon: DT ABI breakage and unreachable deprecation warning
- [Low] media: verisilicon: unused codec ops and reset functions left as dead code
--

commit bd50c02dbeb6cf3a61e4c9cb1e9948505f4bb9e8
Author: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Subject: media: verisilicon: Remove deprecated variant

This commit removes the deprecated "nxp,imx8mq-vpu" compatible string
and its associated variant data structure from the hantro driver to clean
up the code. The variant has been deprecated since v5.17-rc1.

> diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
> index ad71c0402ef3b..70de47ddb023b 100644
> --- a/drivers/media/platform/verisilicon/hantro_drv.c
> +++ b/drivers/media/platform/verisilicon/hantro_drv.c
> @@ -725,7 +725,6 @@ static const struct of_device_id of_hantro_match[] = {
>  #endif
>  #ifdef CONFIG_VIDEO_HANTRO_IMX8M
>  	{ .compatible = "nxp,imx8mm-vpu-g1", .data = &imx8mm_vpu_g1_variant, },
> -	{ .compatible = "nxp,imx8mq-vpu", .data = &imx8mq_vpu_variant, },

[Severity: Medium]
Does removing this compatible string completely break backward compatibility
for systems booting with older Device Trees containing only nxp,imx8mq-vpu?

Since the driver no longer matches this string, hantro_probe() is never
invoked for it. This renders the backwards compatibility check and dev_warn()
further down in hantro_probe() completely unreachable:

drivers/media/platform/verisilicon/hantro_drv.c:hantro_probe() {
    ...
	/*
	 * Support for nxp,imx8mq-vpu is kept for backwards compatibility
	 * but it's deprecated. Please update your DTS file to use
	 * nxp,imx8mq-vpu-g1 or nxp,imx8mq-vpu-g2 instead.
	 */
	if (of_device_is_compatible(pdev->dev.of_node, "nxp,imx8mq-vpu"))
		dev_warn(&pdev->dev, "%s compatible is deprecated\n",
			 match->compatible);
    ...
}

Is it intentional to prevent the driver from binding entirely instead of just
warning about the deprecation? If so, should the unreachable warning block
in hantro_probe() also be removed?

>  	{ .compatible = "nxp,imx8mq-vpu-g1", .data = &imx8mq_vpu_g1_variant },
>  	{ .compatible = "nxp,imx8mq-vpu-g2", .data = &imx8mq_vpu_g2_variant },
>  #endif

[ ... ]

> diff --git a/drivers/media/platform/verisilicon/imx8m_vpu_hw.c b/drivers/media/platform/verisilicon/imx8m_vpu_hw.c
> index fa4224de4b996..3b63f626d33f2 100644
> --- a/drivers/media/platform/verisilicon/imx8m_vpu_hw.c
> +++ b/drivers/media/platform/verisilicon/imx8m_vpu_hw.c

[ ... ]

> @@ -319,30 +280,9 @@ static const struct hantro_irq imx8mq_g2_irqs[] = {
>  	{ "g2", hantro_g2_irq },
>  };
>  
> -static const char * const imx8mq_clk_names[] = { "g1", "g2", "bus" };
> -static const char * const imx8mq_reg_names[] = { "g1", "g2", "ctrl" };
>  static const char * const imx8mq_g1_clk_names[] = { "g1" };
>  static const char * const imx8mq_g2_clk_names[] = { "g2" };
>  
> -const struct hantro_variant imx8mq_vpu_variant = {
> -	.dec_fmts = imx8m_vpu_dec_fmts,
> -	.num_dec_fmts = ARRAY_SIZE(imx8m_vpu_dec_fmts),
> -	.postproc_fmts = imx8m_vpu_postproc_fmts,
> -	.num_postproc_fmts = ARRAY_SIZE(imx8m_vpu_postproc_fmts),
> -	.postproc_ops = &hantro_g1_postproc_ops,
> -	.codec = HANTRO_MPEG2_DECODER | HANTRO_VP8_DECODER |
> -		 HANTRO_H264_DECODER,
> -	.codec_ops = imx8mq_vpu_codec_ops,
> -	.init = imx8mq_vpu_hw_init,
> -	.runtime_resume = imx8mq_runtime_resume,
> -	.irqs = imx8mq_irqs,
> -	.num_irqs = ARRAY_SIZE(imx8mq_irqs),
> -	.clk_names = imx8mq_clk_names,
> -	.num_clocks = ARRAY_SIZE(imx8mq_clk_names),
> -	.reg_names = imx8mq_reg_names,
> -	.num_regs = ARRAY_SIZE(imx8mq_reg_names)
> -};
> -

[Severity: Low]
Does the removal of imx8mq_vpu_variant leave several other functions and
declarations orphaned as dead code?

By removing the variant, there are no remaining references to the static
array imx8mq_vpu_codec_ops. That array is the only caller of imx8m_vpu_g1_reset,
which in turn uniquely calls imx8m_soft_reset.

Should these unused declarations, along with the extern declaration for
imx8mq_vpu_variant in drivers/media/platform/verisilicon/hantro_hw.h,
also be removed to prevent compiler warnings about unused variables and
functions?

>  static const struct of_device_id imx8mq_vpu_shared_resources[] = {
>  	{ .compatible = "nxp,imx8mq-vpu-g1", },
>  	{ .compatible = "nxp,imx8mq-vpu-g2", },

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260924110825.166238-1-benjamin.gaignard@collabora.com?part=1

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 3/3] media: verisilicon: Remove useless internal fields
  2026-09-24 11:08 ` [PATCH v2 3/3] media: verisilicon: Remove useless internal fields Benjamin Gaignard
@ 2026-09-24 11:25   ` sashiko-bot
  0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-09-24 11:25 UTC (permalink / raw)
  To: Benjamin Gaignard; +Cc: conor+dt, media-ci, Frank.Li, imx, robh, devicetree

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] media: hantro: break backward compatibility by removing DT compatible string
- [Low] media: hantro: dead code and uninitialized pointer ctrl_base left behind
--

commit c57de89560179f851e42f6a6ea8c48063d12e4c8
Author: Benjamin Gaignard <benjamin.gaignard@collabora.com>

media: verisilicon: Remove useless internal fields
    
No more variants are using multiple registers regions.
Remove the useless fields and simplify driver code.

> diff --git a/drivers/media/platform/verisilicon/hantro.h b/drivers/media/platform/verisilicon/hantro.h
> index 0353de154a1ec..20c3afb3b8176 100644
> --- a/drivers/media/platform/verisilicon/hantro.h
> +++ b/drivers/media/platform/verisilicon/hantro.h
[ ... ]
> @@ -204,7 +200,7 @@ struct hantro_dev {
>  	struct device *dev;
>  	struct clk_bulk_data *clocks;
>  	struct reset_control *resets;
> -	void __iomem **reg_bases;
> +	void __iomem *reg_base;
>  	void __iomem *enc_base;
>  	void __iomem *dec_base;
>  	void __iomem *ctrl_base;

[Severity: Low]
Does this struct still need the ctrl_base pointer?

The initialization of vpu->ctrl_base was removed when the multi-base mapping
was dropped, leaving this field uninitialized.

Additionally, imx8mq_vpu_codec_ops in imx8m_vpu_hw.c and its associated reset
function imx8m_soft_reset() still unconditionally dereference this pointer.
Since imx8mq_vpu_variant was removed, they appear to be dead code.

Could these orphaned structures and the ctrl_base field be removed?

> diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
> index 70de47ddb023b..f418b04279856 100644
> --- a/drivers/media/platform/verisilicon/hantro_drv.c
> +++ b/drivers/media/platform/verisilicon/hantro_drv.c
> @@ -1080,7 +1080,6 @@ static int hantro_probe(struct platform_device *pdev)
>  {
>  	const struct of_device_id *match;
>  	struct hantro_dev *vpu;
> -	int num_bases;

[Severity: High]
Does the removal of the nxp,imx8mq-vpu compatible string in this series break
backwards compatibility for older Device Trees?

Because the driver no longer matches that string, it will completely fail to
probe on systems booting with older DTBs, rendering the hardware unusable.

Additionally, since the string is missing from of_hantro_match, the driver
will not probe at all, which makes the existing fallback warning inside
hantro_probe() unreachable dead code:

    if (of_device_is_compatible(pdev->dev.of_node, "nxp,imx8mq-vpu"))
            dev_warn(&pdev->dev, "%s compatible is deprecated\n",
                     match->compatible);

Since kernel policy strictly maintains DT ABI compatibility, should this
deprecated string be restored to the match array so existing systems continue
to boot and the warning mechanism works as intended?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260924110825.166238-1-benjamin.gaignard@collabora.com?part=3

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-09-24 11:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-24 11:08 [PATCH v2 0/3] Remove unused variant and code clean up Benjamin Gaignard
2026-09-24 11:08 ` [PATCH v2 1/3] media: verisilicon: Remove deprecated variant Benjamin Gaignard
2026-09-24 11:25   ` sashiko-bot
2026-09-24 11:08 ` [PATCH v2 2/3] media: dt-bindings: media: nxp, imx8mq-vpu: Remove nxp,imx8mq-vpu Benjamin Gaignard
2026-09-24 11:18   ` sashiko-bot
2026-09-24 11:08 ` [PATCH v2 3/3] media: verisilicon: Remove useless internal fields Benjamin Gaignard
2026-09-24 11:25   ` sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox