All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's
@ 2021-12-23 17:30 Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt Lad Prabhakar
                   ` (12 more replies)
  0 siblings, 13 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar

Hi All,

This patch series aims to drop using platform_get_resource() for IRQ types
in preparation for removal of static setup of IRQ resource from DT core
code.

Dropping usage of platform_get_resource() was agreed based on
the discussion [0].

[0] https://patchwork.kernel.org/project/linux-renesas-soc/
patch/20211209001056.29774-1-prabhakar.mahadev-lad.rj@bp.renesas.com/

Cheers,
Prabhakar

Lad Prabhakar (13):
  media: vsp1: Use platform_get_irq() to get the interrupt
  media: camss: Use platform_get_irq_byname() to get the interrupt
  media: bdisp: Use platform_get_irq() to get the interrupt
  media: s5p-mfc: Use platform_get_irq() to get the interrupt
  media: stm32-dma2d: Use platform_get_irq() to get the interrupt
  media: davinci: vpif: Use platform_get_irq_optional() to get the
    interrupt
  media: exynos-gsc: Use platform_get_irq() to get the interrupt
  media: marvell-ccic: Use platform_get_irq() to get the interrupt
  media: mtk-vcodec: Drop unnecessary call to platform_get_resource()
  media: exynos4-is: Use platform_get_irq() to get the interrupt
  media: s5p-g2d: Use platform_get_irq() to get the interrupt
  media: mtk-vpu: Drop unnecessary call to platform_get_resource()
  media: coda: Use platform_get_irq() to get the interrupt

 drivers/media/platform/coda/imx-vdoa.c          |  9 ++++-----
 drivers/media/platform/davinci/vpif.c           | 17 ++++++++++++++---
 drivers/media/platform/davinci/vpif_capture.c   | 16 +++++++---------
 drivers/media/platform/davinci/vpif_display.c   | 13 ++++++-------
 drivers/media/platform/exynos-gsc/gsc-core.c    | 14 ++++++--------
 drivers/media/platform/exynos4-is/fimc-core.c   | 11 +++++------
 drivers/media/platform/exynos4-is/fimc-lite.c   | 11 +++++------
 .../media/platform/marvell-ccic/mmp-driver.c    |  8 +++-----
 .../platform/mtk-vcodec/mtk_vcodec_dec_drv.c    | 11 ++++-------
 .../platform/mtk-vcodec/mtk_vcodec_enc_drv.c    | 10 +++-------
 drivers/media/platform/mtk-vpu/mtk_vpu.c        | 10 +++-------
 drivers/media/platform/qcom/camss/camss-csid.c  | 12 ++++--------
 .../media/platform/qcom/camss/camss-csiphy.c    | 12 ++++--------
 drivers/media/platform/qcom/camss/camss-ispif.c | 12 ++++--------
 drivers/media/platform/qcom/camss/camss-vfe.c   | 12 ++++--------
 drivers/media/platform/s5p-g2d/g2d.c            | 10 +++-------
 drivers/media/platform/s5p-mfc/s5p_mfc.c        | 11 ++++-------
 drivers/media/platform/sti/bdisp/bdisp-v4l2.c   | 10 +++-------
 drivers/media/platform/stm32/dma2d/dma2d.c      |  9 +++------
 drivers/media/platform/vsp1/vsp1_drv.c          | 13 +++++--------
 20 files changed, 94 insertions(+), 137 deletions(-)

-- 
2.17.1


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

* [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
@ 2021-12-23 17:30 ` Lad Prabhakar
  2021-12-30  0:06   ` Laurent Pinchart
  2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
                   ` (11 subsequent siblings)
  12 siblings, 1 reply; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Laurent Pinchart, Kieran Bingham, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/vsp1/vsp1_drv.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/vsp1/vsp1_drv.c b/drivers/media/platform/vsp1/vsp1_drv.c
index c9044785b903..bbba91a65a0f 100644
--- a/drivers/media/platform/vsp1/vsp1_drv.c
+++ b/drivers/media/platform/vsp1/vsp1_drv.c
@@ -794,7 +794,6 @@ static int vsp1_probe(struct platform_device *pdev)
 {
 	struct vsp1_device *vsp1;
 	struct device_node *fcp_node;
-	struct resource *irq;
 	unsigned int i;
 	int ret;
 
@@ -813,14 +812,12 @@ static int vsp1_probe(struct platform_device *pdev)
 	if (IS_ERR(vsp1->mmio))
 		return PTR_ERR(vsp1->mmio);
 
-	irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!irq) {
-		dev_err(&pdev->dev, "missing IRQ\n");
-		return -EINVAL;
-	}
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
+		return ret;
 
-	ret = devm_request_irq(&pdev->dev, irq->start, vsp1_irq_handler,
-			      IRQF_SHARED, dev_name(&pdev->dev), vsp1);
+	ret = devm_request_irq(&pdev->dev, ret, vsp1_irq_handler,
+			       IRQF_SHARED, dev_name(&pdev->dev), vsp1);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "failed to request IRQ\n");
 		return ret;
-- 
2.17.1


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

* [PATCH 02/13] media: camss: Use platform_get_irq_byname() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt Lad Prabhakar
@ 2021-12-23 17:30 ` Lad Prabhakar
  2021-12-23 18:06   ` Bjorn Andersson
  2021-12-23 17:30 ` [PATCH 03/13] media: bdisp: Use platform_get_irq() " Lad Prabhakar
                   ` (10 subsequent siblings)
  12 siblings, 1 reply; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Robert Foss, Todor Tomov, Andy Gross,
	Bjorn Andersson, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-msm

platform_get_resource_byname(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq_byname().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/qcom/camss/camss-csid.c   | 12 ++++--------
 drivers/media/platform/qcom/camss/camss-csiphy.c | 12 ++++--------
 drivers/media/platform/qcom/camss/camss-ispif.c  | 12 ++++--------
 drivers/media/platform/qcom/camss/camss-vfe.c    | 12 ++++--------
 4 files changed, 16 insertions(+), 32 deletions(-)

diff --git a/drivers/media/platform/qcom/camss/camss-csid.c b/drivers/media/platform/qcom/camss/camss-csid.c
index a1637b78568b..ac3504e98668 100644
--- a/drivers/media/platform/qcom/camss/camss-csid.c
+++ b/drivers/media/platform/qcom/camss/camss-csid.c
@@ -544,7 +544,6 @@ int msm_csid_subdev_init(struct camss *camss, struct csid_device *csid,
 {
 	struct device *dev = camss->dev;
 	struct platform_device *pdev = to_platform_device(dev);
-	struct resource *r;
 	int i, j;
 	int ret;
 
@@ -571,14 +570,11 @@ int msm_csid_subdev_init(struct camss *camss, struct csid_device *csid,
 
 	/* Interrupt */
 
-	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
-					 res->interrupt[0]);
-	if (!r) {
-		dev_err(dev, "missing IRQ\n");
-		return -EINVAL;
-	}
+	ret = platform_get_irq_byname(pdev, res->interrupt[0]);
+	if (ret < 0)
+		return ret;
 
-	csid->irq = r->start;
+	csid->irq = ret;
 	snprintf(csid->irq_name, sizeof(csid->irq_name), "%s_%s%d",
 		 dev_name(dev), MSM_CSID_NAME, csid->id);
 	ret = devm_request_irq(dev, csid->irq, csid->ops->isr,
diff --git a/drivers/media/platform/qcom/camss/camss-csiphy.c b/drivers/media/platform/qcom/camss/camss-csiphy.c
index 24eec16197e7..6b225d06f35a 100644
--- a/drivers/media/platform/qcom/camss/camss-csiphy.c
+++ b/drivers/media/platform/qcom/camss/camss-csiphy.c
@@ -568,7 +568,6 @@ int msm_csiphy_subdev_init(struct camss *camss,
 {
 	struct device *dev = camss->dev;
 	struct platform_device *pdev = to_platform_device(dev);
-	struct resource *r;
 	int i, j;
 	int ret;
 
@@ -611,14 +610,11 @@ int msm_csiphy_subdev_init(struct camss *camss,
 
 	/* Interrupt */
 
-	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
-					 res->interrupt[0]);
-	if (!r) {
-		dev_err(dev, "missing IRQ\n");
-		return -EINVAL;
-	}
+	ret = platform_get_irq_byname(pdev, res->interrupt[0]);
+	if (ret < 0)
+		return ret;
 
-	csiphy->irq = r->start;
+	csiphy->irq = ret;
 	snprintf(csiphy->irq_name, sizeof(csiphy->irq_name), "%s_%s%d",
 		 dev_name(dev), MSM_CSIPHY_NAME, csiphy->id);
 
diff --git a/drivers/media/platform/qcom/camss/camss-ispif.c b/drivers/media/platform/qcom/camss/camss-ispif.c
index ba5d65f6ef34..4ee11bb979cd 100644
--- a/drivers/media/platform/qcom/camss/camss-ispif.c
+++ b/drivers/media/platform/qcom/camss/camss-ispif.c
@@ -1100,7 +1100,6 @@ int msm_ispif_subdev_init(struct camss *camss,
 	struct device *dev = camss->dev;
 	struct ispif_device *ispif = camss->ispif;
 	struct platform_device *pdev = to_platform_device(dev);
-	struct resource *r;
 	int i;
 	int ret;
 
@@ -1153,14 +1152,11 @@ int msm_ispif_subdev_init(struct camss *camss,
 
 	/* Interrupt */
 
-	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ, res->interrupt);
-
-	if (!r) {
-		dev_err(dev, "missing IRQ\n");
-		return -EINVAL;
-	}
+	ret = platform_get_irq_byname(pdev, res->interrupt);
+	if (ret < 0)
+		return ret;
 
-	ispif->irq = r->start;
+	ispif->irq = ret;
 	snprintf(ispif->irq_name, sizeof(ispif->irq_name), "%s_%s",
 		 dev_name(dev), MSM_ISPIF_NAME);
 	if (camss->version == CAMSS_8x16)
diff --git a/drivers/media/platform/qcom/camss/camss-vfe.c b/drivers/media/platform/qcom/camss/camss-vfe.c
index 71f78b40e7f5..7c2311d70546 100644
--- a/drivers/media/platform/qcom/camss/camss-vfe.c
+++ b/drivers/media/platform/qcom/camss/camss-vfe.c
@@ -1279,7 +1279,6 @@ int msm_vfe_subdev_init(struct camss *camss, struct vfe_device *vfe,
 {
 	struct device *dev = camss->dev;
 	struct platform_device *pdev = to_platform_device(dev);
-	struct resource *r;
 	int i, j;
 	int ret;
 
@@ -1312,14 +1311,11 @@ int msm_vfe_subdev_init(struct camss *camss, struct vfe_device *vfe,
 
 	/* Interrupt */
 
-	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
-					 res->interrupt[0]);
-	if (!r) {
-		dev_err(dev, "missing IRQ\n");
-		return -EINVAL;
-	}
+	ret = platform_get_irq_byname(pdev, res->interrupt[0]);
+	if (ret < 0)
+		return ret;
 
-	vfe->irq = r->start;
+	vfe->irq = ret;
 	snprintf(vfe->irq_name, sizeof(vfe->irq_name), "%s_%s%d",
 		 dev_name(dev), MSM_VFE_NAME, vfe->id);
 	ret = devm_request_irq(dev, vfe->irq, vfe->ops->isr,
-- 
2.17.1


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

* [PATCH 03/13] media: bdisp: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
@ 2021-12-23 17:30 ` Lad Prabhakar
  2021-12-23 17:30   ` Lad Prabhakar
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Fabien Dessenne, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/sti/bdisp/bdisp-v4l2.c b/drivers/media/platform/sti/bdisp/bdisp-v4l2.c
index 01ce7b711774..5aa79d9277c8 100644
--- a/drivers/media/platform/sti/bdisp/bdisp-v4l2.c
+++ b/drivers/media/platform/sti/bdisp/bdisp-v4l2.c
@@ -1284,7 +1284,6 @@ static int bdisp_remove(struct platform_device *pdev)
 static int bdisp_probe(struct platform_device *pdev)
 {
 	struct bdisp_dev *bdisp;
-	struct resource *res;
 	struct device *dev = &pdev->dev;
 	int ret;
 
@@ -1335,14 +1334,11 @@ static int bdisp_probe(struct platform_device *pdev)
 		goto err_wq;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(dev, "failed to get IRQ resource\n");
-		ret = -EINVAL;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto err_clk;
-	}
 
-	ret = devm_request_threaded_irq(dev, res->start, bdisp_irq_handler,
+	ret = devm_request_threaded_irq(dev, ret, bdisp_irq_handler,
 					bdisp_irq_thread, IRQF_ONESHOT,
 					pdev->name, bdisp);
 	if (ret) {
-- 
2.17.1


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

* [PATCH 04/13] media: s5p-mfc: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
@ 2021-12-23 17:30   ` Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
                     ` (11 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Marek Szyprowski, Andrzej Hajda, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/s5p-mfc/s5p_mfc.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
index f6732f031e96..761341934925 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
@@ -1268,7 +1268,6 @@ static int s5p_mfc_probe(struct platform_device *pdev)
 {
 	struct s5p_mfc_dev *dev;
 	struct video_device *vfd;
-	struct resource *res;
 	int ret;
 
 	pr_debug("%s++\n", __func__);
@@ -1294,12 +1293,10 @@ static int s5p_mfc_probe(struct platform_device *pdev)
 	if (IS_ERR(dev->regs_base))
 		return PTR_ERR(dev->regs_base);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "failed to get irq resource\n");
-		return -ENOENT;
-	}
-	dev->irq = res->start;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
+		return ret;
+	dev->irq = ret;
 	ret = devm_request_irq(&pdev->dev, dev->irq, s5p_mfc_irq,
 					0, pdev->name, dev);
 	if (ret) {
-- 
2.17.1


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

* [PATCH 04/13] media: s5p-mfc: Use platform_get_irq() to get the interrupt
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Marek Szyprowski, Andrzej Hajda, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/s5p-mfc/s5p_mfc.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
index f6732f031e96..761341934925 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
@@ -1268,7 +1268,6 @@ static int s5p_mfc_probe(struct platform_device *pdev)
 {
 	struct s5p_mfc_dev *dev;
 	struct video_device *vfd;
-	struct resource *res;
 	int ret;
 
 	pr_debug("%s++\n", __func__);
@@ -1294,12 +1293,10 @@ static int s5p_mfc_probe(struct platform_device *pdev)
 	if (IS_ERR(dev->regs_base))
 		return PTR_ERR(dev->regs_base);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "failed to get irq resource\n");
-		return -ENOENT;
-	}
-	dev->irq = res->start;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
+		return ret;
+	dev->irq = ret;
 	ret = devm_request_irq(&pdev->dev, dev->irq, s5p_mfc_irq,
 					0, pdev->name, dev);
 	if (ret) {
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 05/13] media: stm32-dma2d: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
@ 2021-12-23 17:30   ` Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
                     ` (11 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Mauro Carvalho Chehab, Maxime Coquelin, Alexandre Torgue
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-stm32, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/stm32/dma2d/dma2d.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/media/platform/stm32/dma2d/dma2d.c b/drivers/media/platform/stm32/dma2d/dma2d.c
index 17af90d86898..9706aa41b5d2 100644
--- a/drivers/media/platform/stm32/dma2d/dma2d.c
+++ b/drivers/media/platform/stm32/dma2d/dma2d.c
@@ -633,14 +633,11 @@ static int dma2d_probe(struct platform_device *pdev)
 		goto put_clk_gate;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "failed to find IRQ\n");
-		ret = -ENXIO;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto unprep_clk_gate;
-	}
 
-	dev->irq = res->start;
+	dev->irq = ret;
 
 	ret = devm_request_irq(&pdev->dev, dev->irq, dma2d_isr,
 			       0, pdev->name, dev);
-- 
2.17.1


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

* [PATCH 05/13] media: stm32-dma2d: Use platform_get_irq() to get the interrupt
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Mauro Carvalho Chehab, Maxime Coquelin, Alexandre Torgue
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-stm32, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/stm32/dma2d/dma2d.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/media/platform/stm32/dma2d/dma2d.c b/drivers/media/platform/stm32/dma2d/dma2d.c
index 17af90d86898..9706aa41b5d2 100644
--- a/drivers/media/platform/stm32/dma2d/dma2d.c
+++ b/drivers/media/platform/stm32/dma2d/dma2d.c
@@ -633,14 +633,11 @@ static int dma2d_probe(struct platform_device *pdev)
 		goto put_clk_gate;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "failed to find IRQ\n");
-		ret = -ENXIO;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto unprep_clk_gate;
-	}
 
-	dev->irq = res->start;
+	dev->irq = ret;
 
 	ret = devm_request_irq(&pdev->dev, dev->irq, dma2d_isr,
 			       0, pdev->name, dev);
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
                   ` (4 preceding siblings ...)
  2021-12-23 17:30   ` Lad Prabhakar
@ 2021-12-23 17:30 ` Lad Prabhakar
  2021-12-25 17:32   ` Andy Shevchenko
  2021-12-23 17:30   ` Lad Prabhakar
                   ` (6 subsequent siblings)
  12 siblings, 1 reply; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Lad, Prabhakar, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, linux-renesas-soc,
	Lad Prabhakar

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq_optional().

Also this patch propagates error code in case devm_request_irq()
fails instead of returing -EINVAL.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/davinci/vpif.c         | 17 ++++++++++++++---
 drivers/media/platform/davinci/vpif_capture.c | 16 +++++++---------
 drivers/media/platform/davinci/vpif_display.c | 13 ++++++-------
 3 files changed, 27 insertions(+), 19 deletions(-)

diff --git a/drivers/media/platform/davinci/vpif.c b/drivers/media/platform/davinci/vpif.c
index 5a89d885d0e3..c3c78e1afdda 100644
--- a/drivers/media/platform/davinci/vpif.c
+++ b/drivers/media/platform/davinci/vpif.c
@@ -20,8 +20,10 @@
 #include <linux/err.h>
 #include <linux/init.h>
 #include <linux/io.h>
+#include <linux/irq.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
+#include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
 #include <linux/spinlock.h>
@@ -428,6 +430,7 @@ static int vpif_probe(struct platform_device *pdev)
 	static struct resource *res_irq;
 	struct platform_device *pdev_capture, *pdev_display;
 	struct device_node *endpoint = NULL;
+	int irq;
 
 	vpif_base = devm_platform_ioremap_resource(pdev, 0);
 	if (IS_ERR(vpif_base))
@@ -453,12 +456,20 @@ static int vpif_probe(struct platform_device *pdev)
 	 * For DT platforms, manually create platform_devices for
 	 * capture/display drivers.
 	 */
-	res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0) {
+		pm_runtime_put(&pdev->dev);
+		return irq;
+	}
+	res_irq = devm_kzalloc(&pdev->dev, sizeof(*res_irq), GFP_KERNEL);
 	if (!res_irq) {
-		dev_warn(&pdev->dev, "Missing IRQ resource.\n");
 		pm_runtime_put(&pdev->dev);
-		return -EINVAL;
+		return -ENOMEM;
 	}
+	res_irq->flags = IORESOURCE_IRQ | irq_get_trigger_type(irq);
+	res_irq->start = irq;
+	res_irq->end = irq;
+	res_irq->name = dev_of_node(&pdev->dev) ? of_node_full_name(pdev->dev.of_node) : NULL;
 
 	pdev_capture = devm_kzalloc(&pdev->dev, sizeof(*pdev_capture),
 				    GFP_KERNEL);
diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c
index 8fe55374c5a3..c1a67a221743 100644
--- a/drivers/media/platform/davinci/vpif_capture.c
+++ b/drivers/media/platform/davinci/vpif_capture.c
@@ -1607,7 +1607,6 @@ static __init int vpif_probe(struct platform_device *pdev)
 {
 	struct vpif_subdev_info *subdevdata;
 	struct i2c_adapter *i2c_adap;
-	struct resource *res;
 	int subdev_count;
 	int res_idx = 0;
 	int i, err;
@@ -1632,15 +1631,14 @@ static __init int vpif_probe(struct platform_device *pdev)
 		goto vpif_free;
 	}
 
-	while ((res = platform_get_resource(pdev, IORESOURCE_IRQ, res_idx))) {
-		err = devm_request_irq(&pdev->dev, res->start, vpif_channel_isr,
-					IRQF_SHARED, VPIF_DRIVER_NAME,
-					(void *)(&vpif_obj.dev[res_idx]->
-					channel_id));
-		if (err) {
-			err = -EINVAL;
+	while ((err = platform_get_irq_optional(pdev, res_idx)) != -ENXIO) {
+		if (err < 0)
+			goto vpif_unregister;
+		err = devm_request_irq(&pdev->dev, err, vpif_channel_isr,
+				       IRQF_SHARED, VPIF_DRIVER_NAME,
+				       (void *)(&vpif_obj.dev[res_idx]->channel_id));
+		if (err)
 			goto vpif_unregister;
-		}
 		res_idx++;
 	}
 
diff --git a/drivers/media/platform/davinci/vpif_display.c b/drivers/media/platform/davinci/vpif_display.c
index 59f6b782e104..9c552ea3787e 100644
--- a/drivers/media/platform/davinci/vpif_display.c
+++ b/drivers/media/platform/davinci/vpif_display.c
@@ -1221,7 +1221,6 @@ static __init int vpif_probe(struct platform_device *pdev)
 {
 	struct vpif_subdev_info *subdevdata;
 	struct i2c_adapter *i2c_adap;
-	struct resource *res;
 	int subdev_count;
 	int res_idx = 0;
 	int i, err;
@@ -1245,13 +1244,13 @@ static __init int vpif_probe(struct platform_device *pdev)
 		goto vpif_free;
 	}
 
-	while ((res = platform_get_resource(pdev, IORESOURCE_IRQ, res_idx))) {
-		err = devm_request_irq(&pdev->dev, res->start, vpif_channel_isr,
-					IRQF_SHARED, VPIF_DRIVER_NAME,
-					(void *)(&vpif_obj.dev[res_idx]->
-					channel_id));
+	while ((err = platform_get_irq_optional(pdev, res_idx)) != -ENXIO) {
+		if (err < 0)
+			goto vpif_unregister;
+		err = devm_request_irq(&pdev->dev, err, vpif_channel_isr,
+				       IRQF_SHARED, VPIF_DRIVER_NAME,
+				       (void *)(&vpif_obj.dev[res_idx]->channel_id));
 		if (err) {
-			err = -EINVAL;
 			vpif_err("VPIF IRQ request failed\n");
 			goto vpif_unregister;
 		}
-- 
2.17.1


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

* [PATCH 07/13] media: exynos-gsc: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
@ 2021-12-23 17:30   ` Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
                     ` (11 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Mauro Carvalho Chehab, Krzysztof Kozlowski
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-samsung-soc

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/exynos-gsc/gsc-core.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c
index cfd6ae70b8d8..e3559b047092 100644
--- a/drivers/media/platform/exynos-gsc/gsc-core.c
+++ b/drivers/media/platform/exynos-gsc/gsc-core.c
@@ -1106,9 +1106,9 @@ MODULE_DEVICE_TABLE(of, exynos_gsc_match);
 static int gsc_probe(struct platform_device *pdev)
 {
 	struct gsc_dev *gsc;
-	struct resource *res;
 	struct device *dev = &pdev->dev;
 	const struct gsc_driverdata *drv_data = of_device_get_match_data(dev);
+	int irq;
 	int ret;
 	int i;
 
@@ -1141,11 +1141,9 @@ static int gsc_probe(struct platform_device *pdev)
 	if (IS_ERR(gsc->regs))
 		return PTR_ERR(gsc->regs);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(dev, "failed to get IRQ resource\n");
-		return -ENXIO;
-	}
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0)
+		return irq;
 
 	for (i = 0; i < gsc->num_clocks; i++) {
 		gsc->clock[i] = devm_clk_get(dev, drv_data->clk_names[i]);
@@ -1167,8 +1165,8 @@ static int gsc_probe(struct platform_device *pdev)
 		}
 	}
 
-	ret = devm_request_irq(dev, res->start, gsc_irq_handler,
-				0, pdev->name, gsc);
+	ret = devm_request_irq(dev, irq, gsc_irq_handler,
+			       0, pdev->name, gsc);
 	if (ret) {
 		dev_err(dev, "failed to install irq (%d)\n", ret);
 		goto err_clk;
-- 
2.17.1


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

* [PATCH 07/13] media: exynos-gsc: Use platform_get_irq() to get the interrupt
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Mauro Carvalho Chehab, Krzysztof Kozlowski
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-samsung-soc

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/exynos-gsc/gsc-core.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c
index cfd6ae70b8d8..e3559b047092 100644
--- a/drivers/media/platform/exynos-gsc/gsc-core.c
+++ b/drivers/media/platform/exynos-gsc/gsc-core.c
@@ -1106,9 +1106,9 @@ MODULE_DEVICE_TABLE(of, exynos_gsc_match);
 static int gsc_probe(struct platform_device *pdev)
 {
 	struct gsc_dev *gsc;
-	struct resource *res;
 	struct device *dev = &pdev->dev;
 	const struct gsc_driverdata *drv_data = of_device_get_match_data(dev);
+	int irq;
 	int ret;
 	int i;
 
@@ -1141,11 +1141,9 @@ static int gsc_probe(struct platform_device *pdev)
 	if (IS_ERR(gsc->regs))
 		return PTR_ERR(gsc->regs);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(dev, "failed to get IRQ resource\n");
-		return -ENXIO;
-	}
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0)
+		return irq;
 
 	for (i = 0; i < gsc->num_clocks; i++) {
 		gsc->clock[i] = devm_clk_get(dev, drv_data->clk_names[i]);
@@ -1167,8 +1165,8 @@ static int gsc_probe(struct platform_device *pdev)
 		}
 	}
 
-	ret = devm_request_irq(dev, res->start, gsc_irq_handler,
-				0, pdev->name, gsc);
+	ret = devm_request_irq(dev, irq, gsc_irq_handler,
+			       0, pdev->name, gsc);
 	if (ret) {
 		dev_err(dev, "failed to install irq (%d)\n", ret);
 		goto err_clk;
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 08/13] media: marvell-ccic: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
                   ` (6 preceding siblings ...)
  2021-12-23 17:30   ` Lad Prabhakar
@ 2021-12-23 17:30 ` Lad Prabhakar
  2021-12-23 17:30   ` Lad Prabhakar
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/marvell-ccic/mmp-driver.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/media/platform/marvell-ccic/mmp-driver.c b/drivers/media/platform/marvell-ccic/mmp-driver.c
index 343ab4f7d807..df16899ab1cb 100644
--- a/drivers/media/platform/marvell-ccic/mmp-driver.c
+++ b/drivers/media/platform/marvell-ccic/mmp-driver.c
@@ -270,12 +270,10 @@ static int mmpcam_probe(struct platform_device *pdev)
 	 * Finally, set up our IRQ now that the core is ready to
 	 * deal with it.
 	 */
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		ret = -ENODEV;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto out;
-	}
-	cam->irq = res->start;
+	cam->irq = ret;
 	ret = devm_request_irq(&pdev->dev, cam->irq, mmpcam_irq, IRQF_SHARED,
 					"mmp-camera", mcam);
 	if (ret)
-- 
2.17.1


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

* [PATCH 09/13] media: mtk-vcodec: Drop unnecessary call to platform_get_resource()
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt Lad Prabhakar
@ 2021-12-23 17:30   ` Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 03/13] media: bdisp: Use platform_get_irq() " Lad Prabhakar
                     ` (10 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Tiffany Lin, Andrew-CT Chen, Mauro Carvalho Chehab,
	Matthias Brugger
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-mediatek

mtk_vcodec_probe() calls platform_get_resource(pdev, IORESOURCE_IRQ, ..)
to check if IRQ resource exists and later calls platform_get_irq(pdev, ..)
to get the actual IRQ.

This patch drops an unnecessary call to platform_get_resource() and
checks the return value of platform_get_irq(pdev, ..) to check if the
IRQ line is valid.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 .../media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c    | 11 ++++-------
 .../media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c    | 10 +++-------
 2 files changed, 7 insertions(+), 14 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 40c39e1e596b..1509c2a4de84 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
@@ -200,7 +200,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 {
 	struct mtk_vcodec_dev *dev;
 	struct video_device *vfd_dec;
-	struct resource *res;
 	phandle rproc_phandle;
 	enum mtk_vcodec_fw_type fw_type;
 	int i, ret;
@@ -244,14 +243,12 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev->reg_base[i]);
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(&pdev->dev, "failed to get irq resource");
-		ret = -ENOENT;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto err_res;
-	}
 
-	dev->dec_irq = platform_get_irq(pdev, 0);
+	dev->dec_irq = ret;
+
 	irq_set_status_flags(dev->dec_irq, IRQ_NOAUTOEN);
 	ret = devm_request_irq(&pdev->dev, dev->dec_irq,
 			mtk_vcodec_dec_irq_handler, 0, pdev->name, dev);
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c
index aeaecb8d416e..86e70d826754 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c
@@ -236,7 +236,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 {
 	struct mtk_vcodec_dev *dev;
 	struct video_device *vfd_enc;
-	struct resource *res;
 	phandle rproc_phandle;
 	enum mtk_vcodec_fw_type fw_type;
 	int ret;
@@ -280,14 +279,11 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 		goto err_res;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(&pdev->dev, "failed to get irq resource");
-		ret = -ENOENT;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto err_res;
-	}
 
-	dev->enc_irq = platform_get_irq(pdev, 0);
+	dev->enc_irq = ret;
 	irq_set_status_flags(dev->enc_irq, IRQ_NOAUTOEN);
 	ret = devm_request_irq(&pdev->dev, dev->enc_irq,
 			       mtk_vcodec_enc_irq_handler,
-- 
2.17.1


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

* [PATCH 09/13] media: mtk-vcodec: Drop unnecessary call to platform_get_resource()
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Tiffany Lin, Andrew-CT Chen, Mauro Carvalho Chehab,
	Matthias Brugger
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-mediatek

mtk_vcodec_probe() calls platform_get_resource(pdev, IORESOURCE_IRQ, ..)
to check if IRQ resource exists and later calls platform_get_irq(pdev, ..)
to get the actual IRQ.

This patch drops an unnecessary call to platform_get_resource() and
checks the return value of platform_get_irq(pdev, ..) to check if the
IRQ line is valid.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 .../media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c    | 11 ++++-------
 .../media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c    | 10 +++-------
 2 files changed, 7 insertions(+), 14 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 40c39e1e596b..1509c2a4de84 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
@@ -200,7 +200,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 {
 	struct mtk_vcodec_dev *dev;
 	struct video_device *vfd_dec;
-	struct resource *res;
 	phandle rproc_phandle;
 	enum mtk_vcodec_fw_type fw_type;
 	int i, ret;
@@ -244,14 +243,12 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev->reg_base[i]);
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(&pdev->dev, "failed to get irq resource");
-		ret = -ENOENT;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto err_res;
-	}
 
-	dev->dec_irq = platform_get_irq(pdev, 0);
+	dev->dec_irq = ret;
+
 	irq_set_status_flags(dev->dec_irq, IRQ_NOAUTOEN);
 	ret = devm_request_irq(&pdev->dev, dev->dec_irq,
 			mtk_vcodec_dec_irq_handler, 0, pdev->name, dev);
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c
index aeaecb8d416e..86e70d826754 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c
@@ -236,7 +236,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 {
 	struct mtk_vcodec_dev *dev;
 	struct video_device *vfd_enc;
-	struct resource *res;
 	phandle rproc_phandle;
 	enum mtk_vcodec_fw_type fw_type;
 	int ret;
@@ -280,14 +279,11 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 		goto err_res;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(&pdev->dev, "failed to get irq resource");
-		ret = -ENOENT;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto err_res;
-	}
 
-	dev->enc_irq = platform_get_irq(pdev, 0);
+	dev->enc_irq = ret;
 	irq_set_status_flags(dev->enc_irq, IRQ_NOAUTOEN);
 	ret = devm_request_irq(&pdev->dev, dev->enc_irq,
 			       mtk_vcodec_enc_irq_handler,
-- 
2.17.1


_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

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

* [PATCH 09/13] media: mtk-vcodec: Drop unnecessary call to platform_get_resource()
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Tiffany Lin, Andrew-CT Chen, Mauro Carvalho Chehab,
	Matthias Brugger
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-mediatek

mtk_vcodec_probe() calls platform_get_resource(pdev, IORESOURCE_IRQ, ..)
to check if IRQ resource exists and later calls platform_get_irq(pdev, ..)
to get the actual IRQ.

This patch drops an unnecessary call to platform_get_resource() and
checks the return value of platform_get_irq(pdev, ..) to check if the
IRQ line is valid.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 .../media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c    | 11 ++++-------
 .../media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c    | 10 +++-------
 2 files changed, 7 insertions(+), 14 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 40c39e1e596b..1509c2a4de84 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c
@@ -200,7 +200,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 {
 	struct mtk_vcodec_dev *dev;
 	struct video_device *vfd_dec;
-	struct resource *res;
 	phandle rproc_phandle;
 	enum mtk_vcodec_fw_type fw_type;
 	int i, ret;
@@ -244,14 +243,12 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 		mtk_v4l2_debug(2, "reg[%d] base=%p", i, dev->reg_base[i]);
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(&pdev->dev, "failed to get irq resource");
-		ret = -ENOENT;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto err_res;
-	}
 
-	dev->dec_irq = platform_get_irq(pdev, 0);
+	dev->dec_irq = ret;
+
 	irq_set_status_flags(dev->dec_irq, IRQ_NOAUTOEN);
 	ret = devm_request_irq(&pdev->dev, dev->dec_irq,
 			mtk_vcodec_dec_irq_handler, 0, pdev->name, dev);
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c
index aeaecb8d416e..86e70d826754 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c
@@ -236,7 +236,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 {
 	struct mtk_vcodec_dev *dev;
 	struct video_device *vfd_enc;
-	struct resource *res;
 	phandle rproc_phandle;
 	enum mtk_vcodec_fw_type fw_type;
 	int ret;
@@ -280,14 +279,11 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
 		goto err_res;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(&pdev->dev, "failed to get irq resource");
-		ret = -ENOENT;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto err_res;
-	}
 
-	dev->enc_irq = platform_get_irq(pdev, 0);
+	dev->enc_irq = ret;
 	irq_set_status_flags(dev->enc_irq, IRQ_NOAUTOEN);
 	ret = devm_request_irq(&pdev->dev, dev->enc_irq,
 			       mtk_vcodec_enc_irq_handler,
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 10/13] media: exynos4-is: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
@ 2021-12-23 17:30   ` Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
                     ` (11 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Sylwester Nawrocki, Mauro Carvalho Chehab,
	Krzysztof Kozlowski
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-samsung-soc

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/exynos4-is/fimc-core.c | 11 +++++------
 drivers/media/platform/exynos4-is/fimc-lite.c | 11 +++++------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/media/platform/exynos4-is/fimc-core.c b/drivers/media/platform/exynos4-is/fimc-core.c
index bfdee771cef9..91cc8d58a663 100644
--- a/drivers/media/platform/exynos4-is/fimc-core.c
+++ b/drivers/media/platform/exynos4-is/fimc-core.c
@@ -926,6 +926,7 @@ static int fimc_probe(struct platform_device *pdev)
 	struct fimc_dev *fimc;
 	struct resource *res;
 	int ret = 0;
+	int irq;
 
 	fimc = devm_kzalloc(dev, sizeof(*fimc), GFP_KERNEL);
 	if (!fimc)
@@ -965,11 +966,9 @@ static int fimc_probe(struct platform_device *pdev)
 	if (IS_ERR(fimc->regs))
 		return PTR_ERR(fimc->regs);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(dev, "Failed to get IRQ resource\n");
-		return -ENXIO;
-	}
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0)
+		return irq;
 
 	ret = fimc_clk_get(fimc);
 	if (ret)
@@ -986,7 +985,7 @@ static int fimc_probe(struct platform_device *pdev)
 	if (ret < 0)
 		return ret;
 
-	ret = devm_request_irq(dev, res->start, fimc_irq_handler,
+	ret = devm_request_irq(dev, irq, fimc_irq_handler,
 			       0, dev_name(dev), fimc);
 	if (ret < 0) {
 		dev_err(dev, "failed to install irq (%d)\n", ret);
diff --git a/drivers/media/platform/exynos4-is/fimc-lite.c b/drivers/media/platform/exynos4-is/fimc-lite.c
index aaa3af0493ce..9b7cc9564cf1 100644
--- a/drivers/media/platform/exynos4-is/fimc-lite.c
+++ b/drivers/media/platform/exynos4-is/fimc-lite.c
@@ -1454,6 +1454,7 @@ static int fimc_lite_probe(struct platform_device *pdev)
 	struct fimc_lite *fimc;
 	struct resource *res;
 	int ret;
+	int irq;
 
 	if (!dev->of_node)
 		return -ENODEV;
@@ -1485,17 +1486,15 @@ static int fimc_lite_probe(struct platform_device *pdev)
 	if (IS_ERR(fimc->regs))
 		return PTR_ERR(fimc->regs);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(dev, "Failed to get IRQ resource\n");
-		return -ENXIO;
-	}
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0)
+		return irq;
 
 	ret = fimc_lite_clk_get(fimc);
 	if (ret)
 		return ret;
 
-	ret = devm_request_irq(dev, res->start, flite_irq_handler,
+	ret = devm_request_irq(dev, irq, flite_irq_handler,
 			       0, dev_name(dev), fimc);
 	if (ret) {
 		dev_err(dev, "Failed to install irq (%d)\n", ret);
-- 
2.17.1


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

* [PATCH 10/13] media: exynos4-is: Use platform_get_irq() to get the interrupt
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Sylwester Nawrocki, Mauro Carvalho Chehab,
	Krzysztof Kozlowski
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-samsung-soc

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/exynos4-is/fimc-core.c | 11 +++++------
 drivers/media/platform/exynos4-is/fimc-lite.c | 11 +++++------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/media/platform/exynos4-is/fimc-core.c b/drivers/media/platform/exynos4-is/fimc-core.c
index bfdee771cef9..91cc8d58a663 100644
--- a/drivers/media/platform/exynos4-is/fimc-core.c
+++ b/drivers/media/platform/exynos4-is/fimc-core.c
@@ -926,6 +926,7 @@ static int fimc_probe(struct platform_device *pdev)
 	struct fimc_dev *fimc;
 	struct resource *res;
 	int ret = 0;
+	int irq;
 
 	fimc = devm_kzalloc(dev, sizeof(*fimc), GFP_KERNEL);
 	if (!fimc)
@@ -965,11 +966,9 @@ static int fimc_probe(struct platform_device *pdev)
 	if (IS_ERR(fimc->regs))
 		return PTR_ERR(fimc->regs);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(dev, "Failed to get IRQ resource\n");
-		return -ENXIO;
-	}
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0)
+		return irq;
 
 	ret = fimc_clk_get(fimc);
 	if (ret)
@@ -986,7 +985,7 @@ static int fimc_probe(struct platform_device *pdev)
 	if (ret < 0)
 		return ret;
 
-	ret = devm_request_irq(dev, res->start, fimc_irq_handler,
+	ret = devm_request_irq(dev, irq, fimc_irq_handler,
 			       0, dev_name(dev), fimc);
 	if (ret < 0) {
 		dev_err(dev, "failed to install irq (%d)\n", ret);
diff --git a/drivers/media/platform/exynos4-is/fimc-lite.c b/drivers/media/platform/exynos4-is/fimc-lite.c
index aaa3af0493ce..9b7cc9564cf1 100644
--- a/drivers/media/platform/exynos4-is/fimc-lite.c
+++ b/drivers/media/platform/exynos4-is/fimc-lite.c
@@ -1454,6 +1454,7 @@ static int fimc_lite_probe(struct platform_device *pdev)
 	struct fimc_lite *fimc;
 	struct resource *res;
 	int ret;
+	int irq;
 
 	if (!dev->of_node)
 		return -ENODEV;
@@ -1485,17 +1486,15 @@ static int fimc_lite_probe(struct platform_device *pdev)
 	if (IS_ERR(fimc->regs))
 		return PTR_ERR(fimc->regs);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (res == NULL) {
-		dev_err(dev, "Failed to get IRQ resource\n");
-		return -ENXIO;
-	}
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0)
+		return irq;
 
 	ret = fimc_lite_clk_get(fimc);
 	if (ret)
 		return ret;
 
-	ret = devm_request_irq(dev, res->start, flite_irq_handler,
+	ret = devm_request_irq(dev, irq, flite_irq_handler,
 			       0, dev_name(dev), fimc);
 	if (ret) {
 		dev_err(dev, "Failed to install irq (%d)\n", ret);
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 11/13] media: s5p-g2d: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
@ 2021-12-23 17:30   ` Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
                     ` (11 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Łukasz Stelmach, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/s5p-g2d/g2d.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/s5p-g2d/g2d.c b/drivers/media/platform/s5p-g2d/g2d.c
index fa0bb31bd2b9..dd8864779a7c 100644
--- a/drivers/media/platform/s5p-g2d/g2d.c
+++ b/drivers/media/platform/s5p-g2d/g2d.c
@@ -623,7 +623,6 @@ static int g2d_probe(struct platform_device *pdev)
 {
 	struct g2d_dev *dev;
 	struct video_device *vfd;
-	struct resource *res;
 	const struct of_device_id *of_id;
 	int ret = 0;
 
@@ -664,14 +663,11 @@ static int g2d_probe(struct platform_device *pdev)
 		goto put_clk_gate;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "failed to find IRQ\n");
-		ret = -ENXIO;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto unprep_clk_gate;
-	}
 
-	dev->irq = res->start;
+	dev->irq = ret;
 
 	ret = devm_request_irq(&pdev->dev, dev->irq, g2d_isr,
 						0, pdev->name, dev);
-- 
2.17.1


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

* [PATCH 11/13] media: s5p-g2d: Use platform_get_irq() to get the interrupt
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Łukasz Stelmach, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/s5p-g2d/g2d.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/s5p-g2d/g2d.c b/drivers/media/platform/s5p-g2d/g2d.c
index fa0bb31bd2b9..dd8864779a7c 100644
--- a/drivers/media/platform/s5p-g2d/g2d.c
+++ b/drivers/media/platform/s5p-g2d/g2d.c
@@ -623,7 +623,6 @@ static int g2d_probe(struct platform_device *pdev)
 {
 	struct g2d_dev *dev;
 	struct video_device *vfd;
-	struct resource *res;
 	const struct of_device_id *of_id;
 	int ret = 0;
 
@@ -664,14 +663,11 @@ static int g2d_probe(struct platform_device *pdev)
 		goto put_clk_gate;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "failed to find IRQ\n");
-		ret = -ENXIO;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto unprep_clk_gate;
-	}
 
-	dev->irq = res->start;
+	dev->irq = ret;
 
 	ret = devm_request_irq(&pdev->dev, dev->irq, g2d_isr,
 						0, pdev->name, dev);
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 12/13] media: mtk-vpu: Drop unnecessary call to platform_get_resource()
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt Lad Prabhakar
@ 2021-12-23 17:30   ` Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 03/13] media: bdisp: Use platform_get_irq() " Lad Prabhakar
                     ` (10 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Tiffany Lin, Andrew-CT Chen, Minghsiu Tsai,
	Houlong Wei, Mauro Carvalho Chehab, Matthias Brugger
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-mediatek

mtk_vpu_probe() calls platform_get_resource(pdev, IORESOURCE_IRQ, ..)
to check if IRQ resource exists and later calls
platform_get_irq(pdev, ..) to get the actual IRQ.

This patch drops an unnecessary call to platform_get_resource() and
checks the return value of platform_get_irq(pdev, ..) to make sure the
IRQ line is valid.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/mtk-vpu/mtk_vpu.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/mtk-vpu/mtk_vpu.c b/drivers/media/platform/mtk-vpu/mtk_vpu.c
index 7bd715fc844d..47b684b92f81 100644
--- a/drivers/media/platform/mtk-vpu/mtk_vpu.c
+++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c
@@ -810,7 +810,6 @@ static int mtk_vpu_probe(struct platform_device *pdev)
 {
 	struct mtk_vpu *vpu;
 	struct device *dev;
-	struct resource *res;
 	int ret = 0;
 
 	dev_dbg(&pdev->dev, "initialization\n");
@@ -908,13 +907,10 @@ static int mtk_vpu_probe(struct platform_device *pdev)
 	init_waitqueue_head(&vpu->run.wq);
 	init_waitqueue_head(&vpu->ack_wq);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(dev, "get IRQ resource failed.\n");
-		ret = -ENXIO;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto free_p_mem;
-	}
-	vpu->reg.irq = platform_get_irq(pdev, 0);
+	vpu->reg.irq = ret;
 	ret = devm_request_irq(dev, vpu->reg.irq, vpu_irq_handler, 0,
 			       pdev->name, vpu);
 	if (ret) {
-- 
2.17.1


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

* [PATCH 12/13] media: mtk-vpu: Drop unnecessary call to platform_get_resource()
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Tiffany Lin, Andrew-CT Chen, Minghsiu Tsai,
	Houlong Wei, Mauro Carvalho Chehab, Matthias Brugger
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-mediatek

mtk_vpu_probe() calls platform_get_resource(pdev, IORESOURCE_IRQ, ..)
to check if IRQ resource exists and later calls
platform_get_irq(pdev, ..) to get the actual IRQ.

This patch drops an unnecessary call to platform_get_resource() and
checks the return value of platform_get_irq(pdev, ..) to make sure the
IRQ line is valid.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/mtk-vpu/mtk_vpu.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/mtk-vpu/mtk_vpu.c b/drivers/media/platform/mtk-vpu/mtk_vpu.c
index 7bd715fc844d..47b684b92f81 100644
--- a/drivers/media/platform/mtk-vpu/mtk_vpu.c
+++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c
@@ -810,7 +810,6 @@ static int mtk_vpu_probe(struct platform_device *pdev)
 {
 	struct mtk_vpu *vpu;
 	struct device *dev;
-	struct resource *res;
 	int ret = 0;
 
 	dev_dbg(&pdev->dev, "initialization\n");
@@ -908,13 +907,10 @@ static int mtk_vpu_probe(struct platform_device *pdev)
 	init_waitqueue_head(&vpu->run.wq);
 	init_waitqueue_head(&vpu->ack_wq);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(dev, "get IRQ resource failed.\n");
-		ret = -ENXIO;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto free_p_mem;
-	}
-	vpu->reg.irq = platform_get_irq(pdev, 0);
+	vpu->reg.irq = ret;
 	ret = devm_request_irq(dev, vpu->reg.irq, vpu_irq_handler, 0,
 			       pdev->name, vpu);
 	if (ret) {
-- 
2.17.1


_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

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

* [PATCH 12/13] media: mtk-vpu: Drop unnecessary call to platform_get_resource()
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Tiffany Lin, Andrew-CT Chen, Minghsiu Tsai,
	Houlong Wei, Mauro Carvalho Chehab, Matthias Brugger
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel,
	linux-mediatek

mtk_vpu_probe() calls platform_get_resource(pdev, IORESOURCE_IRQ, ..)
to check if IRQ resource exists and later calls
platform_get_irq(pdev, ..) to get the actual IRQ.

This patch drops an unnecessary call to platform_get_resource() and
checks the return value of platform_get_irq(pdev, ..) to make sure the
IRQ line is valid.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/mtk-vpu/mtk_vpu.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/mtk-vpu/mtk_vpu.c b/drivers/media/platform/mtk-vpu/mtk_vpu.c
index 7bd715fc844d..47b684b92f81 100644
--- a/drivers/media/platform/mtk-vpu/mtk_vpu.c
+++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c
@@ -810,7 +810,6 @@ static int mtk_vpu_probe(struct platform_device *pdev)
 {
 	struct mtk_vpu *vpu;
 	struct device *dev;
-	struct resource *res;
 	int ret = 0;
 
 	dev_dbg(&pdev->dev, "initialization\n");
@@ -908,13 +907,10 @@ static int mtk_vpu_probe(struct platform_device *pdev)
 	init_waitqueue_head(&vpu->run.wq);
 	init_waitqueue_head(&vpu->ack_wq);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res) {
-		dev_err(dev, "get IRQ resource failed.\n");
-		ret = -ENXIO;
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
 		goto free_p_mem;
-	}
-	vpu->reg.irq = platform_get_irq(pdev, 0);
+	vpu->reg.irq = ret;
 	ret = devm_request_irq(dev, vpu->reg.irq, vpu_irq_handler, 0,
 			       pdev->name, vpu);
 	if (ret) {
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 13/13] media: coda: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
@ 2021-12-23 17:30   ` Lad Prabhakar
  2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
                     ` (11 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	NXP Linux Team
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/coda/imx-vdoa.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/media/platform/coda/imx-vdoa.c b/drivers/media/platform/coda/imx-vdoa.c
index 00643f37b3e6..c70871bae193 100644
--- a/drivers/media/platform/coda/imx-vdoa.c
+++ b/drivers/media/platform/coda/imx-vdoa.c
@@ -284,7 +284,6 @@ EXPORT_SYMBOL(vdoa_context_configure);
 static int vdoa_probe(struct platform_device *pdev)
 {
 	struct vdoa_data *vdoa;
-	struct resource *res;
 	int ret;
 
 	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
@@ -309,10 +308,10 @@ static int vdoa_probe(struct platform_device *pdev)
 	if (IS_ERR(vdoa->regs))
 		return PTR_ERR(vdoa->regs);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res)
-		return -EINVAL;
-	ret = devm_request_threaded_irq(&pdev->dev, res->start, NULL,
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
+		return ret;
+	ret = devm_request_threaded_irq(&pdev->dev, ret, NULL,
 					vdoa_irq_handler, IRQF_ONESHOT,
 					"vdoa", vdoa);
 	if (ret < 0) {
-- 
2.17.1


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

* [PATCH 13/13] media: coda: Use platform_get_irq() to get the interrupt
@ 2021-12-23 17:30   ` Lad Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad Prabhakar @ 2021-12-23 17:30 UTC (permalink / raw)
  To: linux-media, Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	NXP Linux Team
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, Lad Prabhakar, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/platform/coda/imx-vdoa.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/media/platform/coda/imx-vdoa.c b/drivers/media/platform/coda/imx-vdoa.c
index 00643f37b3e6..c70871bae193 100644
--- a/drivers/media/platform/coda/imx-vdoa.c
+++ b/drivers/media/platform/coda/imx-vdoa.c
@@ -284,7 +284,6 @@ EXPORT_SYMBOL(vdoa_context_configure);
 static int vdoa_probe(struct platform_device *pdev)
 {
 	struct vdoa_data *vdoa;
-	struct resource *res;
 	int ret;
 
 	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
@@ -309,10 +308,10 @@ static int vdoa_probe(struct platform_device *pdev)
 	if (IS_ERR(vdoa->regs))
 		return PTR_ERR(vdoa->regs);
 
-	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-	if (!res)
-		return -EINVAL;
-	ret = devm_request_threaded_irq(&pdev->dev, res->start, NULL,
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
+		return ret;
+	ret = devm_request_threaded_irq(&pdev->dev, ret, NULL,
 					vdoa_irq_handler, IRQF_ONESHOT,
 					"vdoa", vdoa);
 	if (ret < 0) {
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 02/13] media: camss: Use platform_get_irq_byname() to get the interrupt
  2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
@ 2021-12-23 18:06   ` Bjorn Andersson
  0 siblings, 0 replies; 40+ messages in thread
From: Bjorn Andersson @ 2021-12-23 18:06 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: linux-media, Robert Foss, Todor Tomov, Andy Gross,
	Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, linux-kernel,
	Prabhakar, linux-renesas-soc, linux-arm-msm

On Thu 23 Dec 09:30 PST 2021, Lad Prabhakar wrote:

> platform_get_resource_byname(pdev, IORESOURCE_IRQ, ..) relies on static
> allocation of IRQ resources in DT core code, this causes an issue
> when using hierarchical interrupt domains using "interrupts" property
> in the node as this bypasses the hierarchical setup and messes up the
> irq chaining.
> 
> In preparation for removal of static setup of IRQ resource from DT core
> code use platform_get_irq_byname().
> 

Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>

Regards,
Bjorn

> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
>  drivers/media/platform/qcom/camss/camss-csid.c   | 12 ++++--------
>  drivers/media/platform/qcom/camss/camss-csiphy.c | 12 ++++--------
>  drivers/media/platform/qcom/camss/camss-ispif.c  | 12 ++++--------
>  drivers/media/platform/qcom/camss/camss-vfe.c    | 12 ++++--------
>  4 files changed, 16 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/media/platform/qcom/camss/camss-csid.c b/drivers/media/platform/qcom/camss/camss-csid.c
> index a1637b78568b..ac3504e98668 100644
> --- a/drivers/media/platform/qcom/camss/camss-csid.c
> +++ b/drivers/media/platform/qcom/camss/camss-csid.c
> @@ -544,7 +544,6 @@ int msm_csid_subdev_init(struct camss *camss, struct csid_device *csid,
>  {
>  	struct device *dev = camss->dev;
>  	struct platform_device *pdev = to_platform_device(dev);
> -	struct resource *r;
>  	int i, j;
>  	int ret;
>  
> @@ -571,14 +570,11 @@ int msm_csid_subdev_init(struct camss *camss, struct csid_device *csid,
>  
>  	/* Interrupt */
>  
> -	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
> -					 res->interrupt[0]);
> -	if (!r) {
> -		dev_err(dev, "missing IRQ\n");
> -		return -EINVAL;
> -	}
> +	ret = platform_get_irq_byname(pdev, res->interrupt[0]);
> +	if (ret < 0)
> +		return ret;
>  
> -	csid->irq = r->start;
> +	csid->irq = ret;
>  	snprintf(csid->irq_name, sizeof(csid->irq_name), "%s_%s%d",
>  		 dev_name(dev), MSM_CSID_NAME, csid->id);
>  	ret = devm_request_irq(dev, csid->irq, csid->ops->isr,
> diff --git a/drivers/media/platform/qcom/camss/camss-csiphy.c b/drivers/media/platform/qcom/camss/camss-csiphy.c
> index 24eec16197e7..6b225d06f35a 100644
> --- a/drivers/media/platform/qcom/camss/camss-csiphy.c
> +++ b/drivers/media/platform/qcom/camss/camss-csiphy.c
> @@ -568,7 +568,6 @@ int msm_csiphy_subdev_init(struct camss *camss,
>  {
>  	struct device *dev = camss->dev;
>  	struct platform_device *pdev = to_platform_device(dev);
> -	struct resource *r;
>  	int i, j;
>  	int ret;
>  
> @@ -611,14 +610,11 @@ int msm_csiphy_subdev_init(struct camss *camss,
>  
>  	/* Interrupt */
>  
> -	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
> -					 res->interrupt[0]);
> -	if (!r) {
> -		dev_err(dev, "missing IRQ\n");
> -		return -EINVAL;
> -	}
> +	ret = platform_get_irq_byname(pdev, res->interrupt[0]);
> +	if (ret < 0)
> +		return ret;
>  
> -	csiphy->irq = r->start;
> +	csiphy->irq = ret;
>  	snprintf(csiphy->irq_name, sizeof(csiphy->irq_name), "%s_%s%d",
>  		 dev_name(dev), MSM_CSIPHY_NAME, csiphy->id);
>  
> diff --git a/drivers/media/platform/qcom/camss/camss-ispif.c b/drivers/media/platform/qcom/camss/camss-ispif.c
> index ba5d65f6ef34..4ee11bb979cd 100644
> --- a/drivers/media/platform/qcom/camss/camss-ispif.c
> +++ b/drivers/media/platform/qcom/camss/camss-ispif.c
> @@ -1100,7 +1100,6 @@ int msm_ispif_subdev_init(struct camss *camss,
>  	struct device *dev = camss->dev;
>  	struct ispif_device *ispif = camss->ispif;
>  	struct platform_device *pdev = to_platform_device(dev);
> -	struct resource *r;
>  	int i;
>  	int ret;
>  
> @@ -1153,14 +1152,11 @@ int msm_ispif_subdev_init(struct camss *camss,
>  
>  	/* Interrupt */
>  
> -	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ, res->interrupt);
> -
> -	if (!r) {
> -		dev_err(dev, "missing IRQ\n");
> -		return -EINVAL;
> -	}
> +	ret = platform_get_irq_byname(pdev, res->interrupt);
> +	if (ret < 0)
> +		return ret;
>  
> -	ispif->irq = r->start;
> +	ispif->irq = ret;
>  	snprintf(ispif->irq_name, sizeof(ispif->irq_name), "%s_%s",
>  		 dev_name(dev), MSM_ISPIF_NAME);
>  	if (camss->version == CAMSS_8x16)
> diff --git a/drivers/media/platform/qcom/camss/camss-vfe.c b/drivers/media/platform/qcom/camss/camss-vfe.c
> index 71f78b40e7f5..7c2311d70546 100644
> --- a/drivers/media/platform/qcom/camss/camss-vfe.c
> +++ b/drivers/media/platform/qcom/camss/camss-vfe.c
> @@ -1279,7 +1279,6 @@ int msm_vfe_subdev_init(struct camss *camss, struct vfe_device *vfe,
>  {
>  	struct device *dev = camss->dev;
>  	struct platform_device *pdev = to_platform_device(dev);
> -	struct resource *r;
>  	int i, j;
>  	int ret;
>  
> @@ -1312,14 +1311,11 @@ int msm_vfe_subdev_init(struct camss *camss, struct vfe_device *vfe,
>  
>  	/* Interrupt */
>  
> -	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
> -					 res->interrupt[0]);
> -	if (!r) {
> -		dev_err(dev, "missing IRQ\n");
> -		return -EINVAL;
> -	}
> +	ret = platform_get_irq_byname(pdev, res->interrupt[0]);
> +	if (ret < 0)
> +		return ret;
>  
> -	vfe->irq = r->start;
> +	vfe->irq = ret;
>  	snprintf(vfe->irq_name, sizeof(vfe->irq_name), "%s_%s%d",
>  		 dev_name(dev), MSM_VFE_NAME, vfe->id);
>  	ret = devm_request_irq(dev, vfe->irq, vfe->ops->isr,
> -- 
> 2.17.1
> 

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2021-12-23 17:30 ` [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() " Lad Prabhakar
@ 2021-12-25 17:32   ` Andy Shevchenko
  2022-01-04 17:22     ` Lad, Prabhakar
  0 siblings, 1 reply; 40+ messages in thread
From: Andy Shevchenko @ 2021-12-25 17:32 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: Linux Media Mailing List, Lad, Prabhakar, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

On Sat, Dec 25, 2021 at 3:04 AM Lad Prabhakar
<prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:
>
> platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> allocation of IRQ resources in DT core code, this causes an issue
> when using hierarchical interrupt domains using "interrupts" property
> in the node as this bypasses the hierarchical setup and messes up the
> irq chaining.
>
> In preparation for removal of static setup of IRQ resource from DT core
> code use platform_get_irq_optional().
>
> Also this patch propagates error code in case devm_request_irq()
> fails instead of returing -EINVAL.

returning

...

> +       res_irq->flags = IORESOURCE_IRQ | irq_get_trigger_type(irq);
> +       res_irq->start = irq;
> +       res_irq->end = irq;
> +       res_irq->name = dev_of_node(&pdev->dev) ? of_node_full_name(pdev->dev.of_node) : NULL;

If you convert DEFINE_RES_NAMED() to return a compound literal, then
you may use it here like

res_irq = DEFINE_RES_NAMED(...);

or even do like this

if (dev_of_node(...))
  res_irq = DEFINE_RES_IRQ_NAMED(...)
else
  res_irq = DEFINE_RES_IRQ(...);
res_irq->flags |= irq_get_trigger_type(irq);

I'm not sure why you can't simply use the NAMED variant in both cases
(yes, I see that of_node_full_name() will return something, not NULL).

...

> +       while ((err = platform_get_irq_optional(pdev, res_idx)) != -ENXIO) {
> +               if (err < 0)
> +                       goto vpif_unregister;

Needs a better error checking, i.e. consider 0 as no-IRQ (equivalent
to -ENXIO (note, OF code never returns 0 as valid vIRQ).

>                 res_idx++;
>         }

...

> +       while ((err = platform_get_irq_optional(pdev, res_idx)) != -ENXIO) {
> +               if (err < 0)
> +                       goto vpif_unregister;

Ditto.

-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH 04/13] media: s5p-mfc: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30   ` Lad Prabhakar
@ 2021-12-28  8:42     ` Andrzej Hajda
  -1 siblings, 0 replies; 40+ messages in thread
From: Andrzej Hajda @ 2021-12-28  8:42 UTC (permalink / raw)
  To: Lad Prabhakar, linux-media, Marek Szyprowski, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, linux-arm-kernel


On 23.12.2021 18:30, Lad Prabhakar wrote:
> platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> allocation of IRQ resources in DT core code, this causes an issue
> when using hierarchical interrupt domains using "interrupts" property
> in the node as this bypasses the hierarchical setup and messes up the
> irq chaining.
>
> In preparation for removal of static setup of IRQ resource from DT core
> code use platform_get_irq().
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>

Regards

Andrzej

> ---
>   drivers/media/platform/s5p-mfc/s5p_mfc.c | 11 ++++-------
>   1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
> index f6732f031e96..761341934925 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
> @@ -1268,7 +1268,6 @@ static int s5p_mfc_probe(struct platform_device *pdev)
>   {
>   	struct s5p_mfc_dev *dev;
>   	struct video_device *vfd;
> -	struct resource *res;
>   	int ret;
>   
>   	pr_debug("%s++\n", __func__);
> @@ -1294,12 +1293,10 @@ static int s5p_mfc_probe(struct platform_device *pdev)
>   	if (IS_ERR(dev->regs_base))
>   		return PTR_ERR(dev->regs_base);
>   
> -	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "failed to get irq resource\n");
> -		return -ENOENT;
> -	}
> -	dev->irq = res->start;
> +	ret = platform_get_irq(pdev, 0);
> +	if (ret < 0)
> +		return ret;
> +	dev->irq = ret;
>   	ret = devm_request_irq(&pdev->dev, dev->irq, s5p_mfc_irq,
>   					0, pdev->name, dev);
>   	if (ret) {

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

* Re: [PATCH 04/13] media: s5p-mfc: Use platform_get_irq() to get the interrupt
@ 2021-12-28  8:42     ` Andrzej Hajda
  0 siblings, 0 replies; 40+ messages in thread
From: Andrzej Hajda @ 2021-12-28  8:42 UTC (permalink / raw)
  To: Lad Prabhakar, linux-media, Marek Szyprowski, Mauro Carvalho Chehab
  Cc: Hans Verkuil, Rob Herring, linux-kernel, Prabhakar,
	linux-renesas-soc, linux-arm-kernel


On 23.12.2021 18:30, Lad Prabhakar wrote:
> platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> allocation of IRQ resources in DT core code, this causes an issue
> when using hierarchical interrupt domains using "interrupts" property
> in the node as this bypasses the hierarchical setup and messes up the
> irq chaining.
>
> In preparation for removal of static setup of IRQ resource from DT core
> code use platform_get_irq().
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>

Regards

Andrzej

> ---
>   drivers/media/platform/s5p-mfc/s5p_mfc.c | 11 ++++-------
>   1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
> index f6732f031e96..761341934925 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
> @@ -1268,7 +1268,6 @@ static int s5p_mfc_probe(struct platform_device *pdev)
>   {
>   	struct s5p_mfc_dev *dev;
>   	struct video_device *vfd;
> -	struct resource *res;
>   	int ret;
>   
>   	pr_debug("%s++\n", __func__);
> @@ -1294,12 +1293,10 @@ static int s5p_mfc_probe(struct platform_device *pdev)
>   	if (IS_ERR(dev->regs_base))
>   		return PTR_ERR(dev->regs_base);
>   
> -	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "failed to get irq resource\n");
> -		return -ENOENT;
> -	}
> -	dev->irq = res->start;
> +	ret = platform_get_irq(pdev, 0);
> +	if (ret < 0)
> +		return ret;
> +	dev->irq = ret;
>   	ret = devm_request_irq(&pdev->dev, dev->irq, s5p_mfc_irq,
>   					0, pdev->name, dev);
>   	if (ret) {

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt
  2021-12-23 17:30 ` [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt Lad Prabhakar
@ 2021-12-30  0:06   ` Laurent Pinchart
  2021-12-30 12:32     ` Lad, Prabhakar
  0 siblings, 1 reply; 40+ messages in thread
From: Laurent Pinchart @ 2021-12-30  0:06 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: linux-media, Kieran Bingham, Mauro Carvalho Chehab, Hans Verkuil,
	Rob Herring, linux-kernel, Prabhakar, linux-renesas-soc

Hi Prabhakar,

Thank you for the patch.

On Thu, Dec 23, 2021 at 05:30:02PM +0000, Lad Prabhakar wrote:
> platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> allocation of IRQ resources in DT core code, this causes an issue
> when using hierarchical interrupt domains using "interrupts" property
> in the node as this bypasses the hierarchical setup and messes up the
> irq chaining.
> 
> In preparation for removal of static setup of IRQ resource from DT core
> code use platform_get_irq().
> 
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Will you get this merged with the whole series, or should I take it in
my tree ?

> ---
>  drivers/media/platform/vsp1/vsp1_drv.c | 13 +++++--------
>  1 file changed, 5 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/media/platform/vsp1/vsp1_drv.c b/drivers/media/platform/vsp1/vsp1_drv.c
> index c9044785b903..bbba91a65a0f 100644
> --- a/drivers/media/platform/vsp1/vsp1_drv.c
> +++ b/drivers/media/platform/vsp1/vsp1_drv.c
> @@ -794,7 +794,6 @@ static int vsp1_probe(struct platform_device *pdev)
>  {
>  	struct vsp1_device *vsp1;
>  	struct device_node *fcp_node;
> -	struct resource *irq;
>  	unsigned int i;
>  	int ret;
>  
> @@ -813,14 +812,12 @@ static int vsp1_probe(struct platform_device *pdev)
>  	if (IS_ERR(vsp1->mmio))
>  		return PTR_ERR(vsp1->mmio);
>  
> -	irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> -	if (!irq) {
> -		dev_err(&pdev->dev, "missing IRQ\n");
> -		return -EINVAL;
> -	}
> +	ret = platform_get_irq(pdev, 0);
> +	if (ret < 0)
> +		return ret;

I'd use an int irq local variable, but it doesn't matter much. Up to
you.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

>  
> -	ret = devm_request_irq(&pdev->dev, irq->start, vsp1_irq_handler,
> -			      IRQF_SHARED, dev_name(&pdev->dev), vsp1);
> +	ret = devm_request_irq(&pdev->dev, ret, vsp1_irq_handler,
> +			       IRQF_SHARED, dev_name(&pdev->dev), vsp1);
>  	if (ret < 0) {
>  		dev_err(&pdev->dev, "failed to request IRQ\n");
>  		return ret;

-- 
Regards,

Laurent Pinchart

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

* Re: [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt
  2021-12-30  0:06   ` Laurent Pinchart
@ 2021-12-30 12:32     ` Lad, Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad, Prabhakar @ 2021-12-30 12:32 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: Lad Prabhakar, linux-media, Kieran Bingham,
	Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, LKML,
	Linux-Renesas

Hi Laurent,

Thank you for the review.

On Thu, Dec 30, 2021 at 12:06 AM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi Prabhakar,
>
> Thank you for the patch.
>
> On Thu, Dec 23, 2021 at 05:30:02PM +0000, Lad Prabhakar wrote:
> > platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> > allocation of IRQ resources in DT core code, this causes an issue
> > when using hierarchical interrupt domains using "interrupts" property
> > in the node as this bypasses the hierarchical setup and messes up the
> > irq chaining.
> >
> > In preparation for removal of static setup of IRQ resource from DT core
> > code use platform_get_irq().
> >
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>
> Will you get this merged with the whole series, or should I take it in
> my tree ?
>
I intend to get this merged with the whole series, just to make sure
all of them are part of the same release. If there is an issue that's
OK too.

> > ---
> >  drivers/media/platform/vsp1/vsp1_drv.c | 13 +++++--------
> >  1 file changed, 5 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/media/platform/vsp1/vsp1_drv.c b/drivers/media/platform/vsp1/vsp1_drv.c
> > index c9044785b903..bbba91a65a0f 100644
> > --- a/drivers/media/platform/vsp1/vsp1_drv.c
> > +++ b/drivers/media/platform/vsp1/vsp1_drv.c
> > @@ -794,7 +794,6 @@ static int vsp1_probe(struct platform_device *pdev)
> >  {
> >       struct vsp1_device *vsp1;
> >       struct device_node *fcp_node;
> > -     struct resource *irq;
> >       unsigned int i;
> >       int ret;
> >
> > @@ -813,14 +812,12 @@ static int vsp1_probe(struct platform_device *pdev)
> >       if (IS_ERR(vsp1->mmio))
> >               return PTR_ERR(vsp1->mmio);
> >
> > -     irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> > -     if (!irq) {
> > -             dev_err(&pdev->dev, "missing IRQ\n");
> > -             return -EINVAL;
> > -     }
> > +     ret = platform_get_irq(pdev, 0);
> > +     if (ret < 0)
> > +             return ret;
>
> I'd use an int irq local variable, but it doesn't matter much. Up to
> you.
>
Anyway I plan to post a v2 for this series fixing a couple of comments
from Andy. Will use a local variable irq then and include your RB tag.

> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
> >
> > -     ret = devm_request_irq(&pdev->dev, irq->start, vsp1_irq_handler,
> > -                           IRQF_SHARED, dev_name(&pdev->dev), vsp1);
> > +     ret = devm_request_irq(&pdev->dev, ret, vsp1_irq_handler,
> > +                            IRQF_SHARED, dev_name(&pdev->dev), vsp1);
> >       if (ret < 0) {
> >               dev_err(&pdev->dev, "failed to request IRQ\n");
> >               return ret;
>
Cheers,
Prabhakar

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2021-12-25 17:32   ` Andy Shevchenko
@ 2022-01-04 17:22     ` Lad, Prabhakar
  2022-01-05  9:42       ` Andy Shevchenko
  0 siblings, 1 reply; 40+ messages in thread
From: Lad, Prabhakar @ 2022-01-04 17:22 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

Hi Andy,

Thank you for the review.

On Sat, Dec 25, 2021 at 5:32 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Sat, Dec 25, 2021 at 3:04 AM Lad Prabhakar
> <prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:
> >
> > platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> > allocation of IRQ resources in DT core code, this causes an issue
> > when using hierarchical interrupt domains using "interrupts" property
> > in the node as this bypasses the hierarchical setup and messes up the
> > irq chaining.
> >
> > In preparation for removal of static setup of IRQ resource from DT core
> > code use platform_get_irq_optional().
> >
> > Also this patch propagates error code in case devm_request_irq()
> > fails instead of returing -EINVAL.
>
> returning
>
> ...
>
> > +       res_irq->flags = IORESOURCE_IRQ | irq_get_trigger_type(irq);
> > +       res_irq->start = irq;
> > +       res_irq->end = irq;
> > +       res_irq->name = dev_of_node(&pdev->dev) ? of_node_full_name(pdev->dev.of_node) : NULL;
>
> If you convert DEFINE_RES_NAMED() to return a compound literal, then
> you may use it here like
>
> res_irq = DEFINE_RES_NAMED(...);
>
> or even do like this
>
> if (dev_of_node(...))
>   res_irq = DEFINE_RES_IRQ_NAMED(...)
> else
>   res_irq = DEFINE_RES_IRQ(...);
> res_irq->flags |= irq_get_trigger_type(irq);
>
There are quite a few users of DEFINE_RES_IRQ_NAMED()/DEFINE_RES_IRQ()
changing this macos just for this single user tree wide doesn't make
sense. Let me know if you think otherwise.

> I'm not sure why you can't simply use the NAMED variant in both cases
> (yes, I see that of_node_full_name() will return something, not NULL).
>
> ...
>
> > +       while ((err = platform_get_irq_optional(pdev, res_idx)) != -ENXIO) {
> > +               if (err < 0)
> > +                       goto vpif_unregister;
>
> Needs a better error checking, i.e. consider 0 as no-IRQ (equivalent
> to -ENXIO (note, OF code never returns 0 as valid vIRQ).
>
Will fix that.

> >                 res_idx++;
> >         }
>
> ...
>
> > +       while ((err = platform_get_irq_optional(pdev, res_idx)) != -ENXIO) {
> > +               if (err < 0)
> > +                       goto vpif_unregister;
>
> Ditto.
>
Will fix that.

Cheers,
Prabhakar

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2022-01-04 17:22     ` Lad, Prabhakar
@ 2022-01-05  9:42       ` Andy Shevchenko
  2022-01-05 17:41         ` Lad, Prabhakar
  0 siblings, 1 reply; 40+ messages in thread
From: Andy Shevchenko @ 2022-01-05  9:42 UTC (permalink / raw)
  To: Lad, Prabhakar
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

On Tue, Jan 4, 2022 at 7:23 PM Lad, Prabhakar
<prabhakar.csengg@gmail.com> wrote:
> On Sat, Dec 25, 2021 at 5:32 PM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Sat, Dec 25, 2021 at 3:04 AM Lad Prabhakar
> > <prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:

...

> > > +       res_irq->flags = IORESOURCE_IRQ | irq_get_trigger_type(irq);
> > > +       res_irq->start = irq;
> > > +       res_irq->end = irq;
> > > +       res_irq->name = dev_of_node(&pdev->dev) ? of_node_full_name(pdev->dev.of_node) : NULL;
> >
> > If you convert DEFINE_RES_NAMED() to return a compound literal, then
> > you may use it here like
> >
> > res_irq = DEFINE_RES_NAMED(...);
> >
> > or even do like this
> >
> > if (dev_of_node(...))
> >   res_irq = DEFINE_RES_IRQ_NAMED(...)
> > else
> >   res_irq = DEFINE_RES_IRQ(...);
> > res_irq->flags |= irq_get_trigger_type(irq);
> >
> There are quite a few users of DEFINE_RES_IRQ_NAMED()/DEFINE_RES_IRQ()
> changing this macos just for this single user tree wide doesn't make
> sense. Let me know if you think otherwise.

Converting them to produce compound literal is straightforward and
does not require changes in the users. But on the other hand it allows
you to use it and convert existing users to use that form directly.
You may conduct research on how macros in the property.h were morphing
towards that.

> > I'm not sure why you can't simply use the NAMED variant in both cases
> > (yes, I see that of_node_full_name() will return something, not NULL).

-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2022-01-05  9:42       ` Andy Shevchenko
@ 2022-01-05 17:41         ` Lad, Prabhakar
  2022-01-06 13:43           ` Andy Shevchenko
  0 siblings, 1 reply; 40+ messages in thread
From: Lad, Prabhakar @ 2022-01-05 17:41 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

Hi Andy,

On Wed, Jan 5, 2022 at 9:43 AM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Tue, Jan 4, 2022 at 7:23 PM Lad, Prabhakar
> <prabhakar.csengg@gmail.com> wrote:
> > On Sat, Dec 25, 2021 at 5:32 PM Andy Shevchenko
> > <andy.shevchenko@gmail.com> wrote:
> > > On Sat, Dec 25, 2021 at 3:04 AM Lad Prabhakar
> > > <prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:
>
> ...
>
> > > > +       res_irq->flags = IORESOURCE_IRQ | irq_get_trigger_type(irq);
> > > > +       res_irq->start = irq;
> > > > +       res_irq->end = irq;
> > > > +       res_irq->name = dev_of_node(&pdev->dev) ? of_node_full_name(pdev->dev.of_node) : NULL;
> > >
> > > If you convert DEFINE_RES_NAMED() to return a compound literal, then
> > > you may use it here like
> > >
> > > res_irq = DEFINE_RES_NAMED(...);
> > >
> > > or even do like this
> > >
> > > if (dev_of_node(...))
> > >   res_irq = DEFINE_RES_IRQ_NAMED(...)
> > > else
> > >   res_irq = DEFINE_RES_IRQ(...);
> > > res_irq->flags |= irq_get_trigger_type(irq);
> > >
> > There are quite a few users of DEFINE_RES_IRQ_NAMED()/DEFINE_RES_IRQ()
> > changing this macos just for this single user tree wide doesn't make
> > sense. Let me know if you think otherwise.
>
> Converting them to produce compound literal is straightforward and
> does not require changes in the users. But on the other hand it allows
> you to use it and convert existing users to use that form directly.
> You may conduct research on how macros in the property.h were morphing
> towards that.
>
Thank you for the pointer. I did the below change for this.

diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index 8359c50f9988..da1208e8f164 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -153,7 +153,7 @@ enum {

 /* helpers to define resources */
 #define DEFINE_RES_NAMED(_start, _size, _name, _flags)                 \
-       {                                                               \
+       (struct resource) {                                     \
                .start = (_start),                                      \
                .end = (_start) + (_size) - 1,                          \
                .name = (_name),                                        \

But there are some instances which need to be touched, for example
vexpress-sysreg.c [1]. Are you OK with files to be changed?

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/mfd/vexpress-sysreg.c?h=v5.16-rc8#n65

Cheers,
Prabhakar

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2022-01-05 17:41         ` Lad, Prabhakar
@ 2022-01-06 13:43           ` Andy Shevchenko
  2022-01-06 14:14             ` Andy Shevchenko
  0 siblings, 1 reply; 40+ messages in thread
From: Andy Shevchenko @ 2022-01-06 13:43 UTC (permalink / raw)
  To: Lad, Prabhakar
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

On Wed, Jan 5, 2022 at 7:41 PM Lad, Prabhakar
<prabhakar.csengg@gmail.com> wrote:
> On Wed, Jan 5, 2022 at 9:43 AM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Tue, Jan 4, 2022 at 7:23 PM Lad, Prabhakar
> > <prabhakar.csengg@gmail.com> wrote:
> > > On Sat, Dec 25, 2021 at 5:32 PM Andy Shevchenko
> > > <andy.shevchenko@gmail.com> wrote:
> > > > On Sat, Dec 25, 2021 at 3:04 AM Lad Prabhakar
> > > > <prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:
> >
> > ...
> >
> > > > > +       res_irq->flags = IORESOURCE_IRQ | irq_get_trigger_type(irq);
> > > > > +       res_irq->start = irq;
> > > > > +       res_irq->end = irq;
> > > > > +       res_irq->name = dev_of_node(&pdev->dev) ? of_node_full_name(pdev->dev.of_node) : NULL;
> > > >
> > > > If you convert DEFINE_RES_NAMED() to return a compound literal, then
> > > > you may use it here like
> > > >
> > > > res_irq = DEFINE_RES_NAMED(...);
> > > >
> > > > or even do like this
> > > >
> > > > if (dev_of_node(...))
> > > >   res_irq = DEFINE_RES_IRQ_NAMED(...)
> > > > else
> > > >   res_irq = DEFINE_RES_IRQ(...);
> > > > res_irq->flags |= irq_get_trigger_type(irq);
> > > >
> > > There are quite a few users of DEFINE_RES_IRQ_NAMED()/DEFINE_RES_IRQ()
> > > changing this macos just for this single user tree wide doesn't make
> > > sense. Let me know if you think otherwise.
> >
> > Converting them to produce compound literal is straightforward and
> > does not require changes in the users. But on the other hand it allows
> > you to use it and convert existing users to use that form directly.
> > You may conduct research on how macros in the property.h were morphing
> > towards that.
> >
> Thank you for the pointer. I did the below change for this.
>
> diff --git a/include/linux/ioport.h b/include/linux/ioport.h
> index 8359c50f9988..da1208e8f164 100644
> --- a/include/linux/ioport.h
> +++ b/include/linux/ioport.h
> @@ -153,7 +153,7 @@ enum {
>
>  /* helpers to define resources */
>  #define DEFINE_RES_NAMED(_start, _size, _name, _flags)                 \
> -       {                                                               \
> +       (struct resource) {                                     \

Yep, that's it.

>                 .start = (_start),                                      \
>                 .end = (_start) + (_size) - 1,                          \
>                 .name = (_name),                                        \
>
> But there are some instances which need to be touched, for example
> vexpress-sysreg.c [1]. Are you OK with files to be changed?

Nice! That's exactly my point and you can sell it to the community
because there are already users of it like this.

Yes, I'm fine, but it seems it needs to be done treewide in one patch.
Btw, how many of those already in use?


> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/mfd/vexpress-sysreg.c?h=v5.16-rc8#n65



-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2022-01-06 13:43           ` Andy Shevchenko
@ 2022-01-06 14:14             ` Andy Shevchenko
  2022-01-06 15:27               ` Lad, Prabhakar
  0 siblings, 1 reply; 40+ messages in thread
From: Andy Shevchenko @ 2022-01-06 14:14 UTC (permalink / raw)
  To: Lad, Prabhakar
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

On Thu, Jan 6, 2022 at 3:43 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
> On Wed, Jan 5, 2022 at 7:41 PM Lad, Prabhakar
> <prabhakar.csengg@gmail.com> wrote:
> > On Wed, Jan 5, 2022 at 9:43 AM Andy Shevchenko
> > <andy.shevchenko@gmail.com> wrote:
> > > On Tue, Jan 4, 2022 at 7:23 PM Lad, Prabhakar
> > > <prabhakar.csengg@gmail.com> wrote:
> > > > On Sat, Dec 25, 2021 at 5:32 PM Andy Shevchenko
> > > > <andy.shevchenko@gmail.com> wrote:
> > > > > On Sat, Dec 25, 2021 at 3:04 AM Lad Prabhakar
> > > > > <prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:

...

> > > > > > +       res_irq->flags = IORESOURCE_IRQ | irq_get_trigger_type(irq);
> > > > > > +       res_irq->start = irq;
> > > > > > +       res_irq->end = irq;
> > > > > > +       res_irq->name = dev_of_node(&pdev->dev) ? of_node_full_name(pdev->dev.of_node) : NULL;
> > > > >
> > > > > If you convert DEFINE_RES_NAMED() to return a compound literal, then
> > > > > you may use it here like
> > > > >
> > > > > res_irq = DEFINE_RES_NAMED(...);
> > > > >
> > > > > or even do like this
> > > > >
> > > > > if (dev_of_node(...))
> > > > >   res_irq = DEFINE_RES_IRQ_NAMED(...)
> > > > > else
> > > > >   res_irq = DEFINE_RES_IRQ(...);
> > > > > res_irq->flags |= irq_get_trigger_type(irq);
> > > > >
> > > > There are quite a few users of DEFINE_RES_IRQ_NAMED()/DEFINE_RES_IRQ()
> > > > changing this macos just for this single user tree wide doesn't make
> > > > sense. Let me know if you think otherwise.
> > >
> > > Converting them to produce compound literal is straightforward and
> > > does not require changes in the users. But on the other hand it allows
> > > you to use it and convert existing users to use that form directly.
> > > You may conduct research on how macros in the property.h were morphing
> > > towards that.
> > >
> > Thank you for the pointer. I did the below change for this.
> >
> > diff --git a/include/linux/ioport.h b/include/linux/ioport.h
> > index 8359c50f9988..da1208e8f164 100644
> > --- a/include/linux/ioport.h
> > +++ b/include/linux/ioport.h
> > @@ -153,7 +153,7 @@ enum {
> >
> >  /* helpers to define resources */
> >  #define DEFINE_RES_NAMED(_start, _size, _name, _flags)                 \
> > -       {                                                               \
> > +       (struct resource) {                                     \
>
> Yep, that's it.
>
> >                 .start = (_start),                                      \
> >                 .end = (_start) + (_size) - 1,                          \
> >                 .name = (_name),                                        \
> >
> > But there are some instances which need to be touched, for example
> > vexpress-sysreg.c [1]. Are you OK with files to be changed?
>
> Nice! That's exactly my point and you can sell it to the community
> because there are already users of it like this.
>
> Yes, I'm fine, but it seems it needs to be done treewide in one patch.
> Btw, how many of those already in use?

Actually you don't need to change that. It's an array of resources and
everything should be kept as is there.

> > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/mfd/vexpress-sysreg.c?h=v5.16-rc8#n65


-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2022-01-06 14:14             ` Andy Shevchenko
@ 2022-01-06 15:27               ` Lad, Prabhakar
  2022-01-06 16:01                 ` Andy Shevchenko
  0 siblings, 1 reply; 40+ messages in thread
From: Lad, Prabhakar @ 2022-01-06 15:27 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

Hi Andy,

On Thu, Jan 6, 2022 at 2:15 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Thu, Jan 6, 2022 at 3:43 PM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Wed, Jan 5, 2022 at 7:41 PM Lad, Prabhakar
> > <prabhakar.csengg@gmail.com> wrote:
> > > On Wed, Jan 5, 2022 at 9:43 AM Andy Shevchenko
> > > <andy.shevchenko@gmail.com> wrote:
> > > > On Tue, Jan 4, 2022 at 7:23 PM Lad, Prabhakar
> > > > <prabhakar.csengg@gmail.com> wrote:
> > > > > On Sat, Dec 25, 2021 at 5:32 PM Andy Shevchenko
> > > > > <andy.shevchenko@gmail.com> wrote:
> > > > > > On Sat, Dec 25, 2021 at 3:04 AM Lad Prabhakar
> > > > > > <prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:
>
> ...
>
> > > > > > > +       res_irq->flags = IORESOURCE_IRQ | irq_get_trigger_type(irq);
> > > > > > > +       res_irq->start = irq;
> > > > > > > +       res_irq->end = irq;
> > > > > > > +       res_irq->name = dev_of_node(&pdev->dev) ? of_node_full_name(pdev->dev.of_node) : NULL;
> > > > > >
> > > > > > If you convert DEFINE_RES_NAMED() to return a compound literal, then
> > > > > > you may use it here like
> > > > > >
> > > > > > res_irq = DEFINE_RES_NAMED(...);
> > > > > >
> > > > > > or even do like this
> > > > > >
> > > > > > if (dev_of_node(...))
> > > > > >   res_irq = DEFINE_RES_IRQ_NAMED(...)
> > > > > > else
> > > > > >   res_irq = DEFINE_RES_IRQ(...);
> > > > > > res_irq->flags |= irq_get_trigger_type(irq);
> > > > > >
> > > > > There are quite a few users of DEFINE_RES_IRQ_NAMED()/DEFINE_RES_IRQ()
> > > > > changing this macos just for this single user tree wide doesn't make
> > > > > sense. Let me know if you think otherwise.
> > > >
> > > > Converting them to produce compound literal is straightforward and
> > > > does not require changes in the users. But on the other hand it allows
> > > > you to use it and convert existing users to use that form directly.
> > > > You may conduct research on how macros in the property.h were morphing
> > > > towards that.
> > > >
> > > Thank you for the pointer. I did the below change for this.
> > >
> > > diff --git a/include/linux/ioport.h b/include/linux/ioport.h
> > > index 8359c50f9988..da1208e8f164 100644
> > > --- a/include/linux/ioport.h
> > > +++ b/include/linux/ioport.h
> > > @@ -153,7 +153,7 @@ enum {
> > >
> > >  /* helpers to define resources */
> > >  #define DEFINE_RES_NAMED(_start, _size, _name, _flags)                 \
> > > -       {                                                               \
> > > +       (struct resource) {                                     \
> >
> > Yep, that's it.
> >
> > >                 .start = (_start),                                      \
> > >                 .end = (_start) + (_size) - 1,                          \
> > >                 .name = (_name),                                        \
> > >
> > > But there are some instances which need to be touched, for example
> > > vexpress-sysreg.c [1]. Are you OK with files to be changed?
> >
> > Nice! That's exactly my point and you can sell it to the community
> > because there are already users of it like this.
> >
> > Yes, I'm fine, but it seems it needs to be done treewide in one patch.
> > Btw, how many of those already in use?
>
> Actually you don't need to change that. It's an array of resources and
> everything should be kept as is there.
>
I do get below build failures, with the above literal change for
vexpress-sysreg.c.

drivers/mfd/vexpress-sysreg.c: At top level:
drivers/mfd/vexpress-sysreg.c:64:37: error: initialiser element is not constant
   64 |   .resources = (struct resource []) {
      |                                     ^
drivers/mfd/vexpress-sysreg.c:64:37: note: (near initialisation for
‘vexpress_sysreg_cells[0]’)
drivers/mfd/vexpress-sysreg.c:73:37: error: initialiser element is not constant
   73 |   .resources = (struct resource []) {
      |                                     ^
drivers/mfd/vexpress-sysreg.c:73:37: note: (near initialisation for
‘vexpress_sysreg_cells[1]’)
drivers/mfd/vexpress-sysreg.c:82:37: error: initialiser element is not constant
   82 |   .resources = (struct resource []) {
      |                                     ^
drivers/mfd/vexpress-sysreg.c:82:37: note: (near initialisation for
‘vexpress_sysreg_cells[2]’)
drivers/mfd/vexpress-sysreg.c:90:37: error: initialiser element is not constant
   90 |   .resources = (struct resource []) {
      |                                     ^
drivers/mfd/vexpress-sysreg.c:90:37: note: (near initialisation for
‘vexpress_sysreg_cells[3]’)
drivers/mfd/vexpress-sysreg.c:93:2: warning: missing initialiser for
field ‘ignore_resource_conflicts’ of ‘struct mfd_cell’
[-Wmissing-field-initializers]
   93 |  }

Cheers,
Prabhakar

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2022-01-06 15:27               ` Lad, Prabhakar
@ 2022-01-06 16:01                 ` Andy Shevchenko
  2022-01-06 16:10                   ` Lad, Prabhakar
  0 siblings, 1 reply; 40+ messages in thread
From: Andy Shevchenko @ 2022-01-06 16:01 UTC (permalink / raw)
  To: Lad, Prabhakar
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

On Thu, Jan 6, 2022 at 5:27 PM Lad, Prabhakar
<prabhakar.csengg@gmail.com> wrote:
> On Thu, Jan 6, 2022 at 2:15 PM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Thu, Jan 6, 2022 at 3:43 PM Andy Shevchenko
> > <andy.shevchenko@gmail.com> wrote:
> > > On Wed, Jan 5, 2022 at 7:41 PM Lad, Prabhakar
> > > <prabhakar.csengg@gmail.com> wrote:
> > > > On Wed, Jan 5, 2022 at 9:43 AM Andy Shevchenko

...

> > > >  #define DEFINE_RES_NAMED(_start, _size, _name, _flags)                 \
> > > > -       {                                                               \
> > > > +       (struct resource) {                                     \
> > >
> > > Yep, that's it.
> > >
> > > >                 .start = (_start),                                      \
> > > >                 .end = (_start) + (_size) - 1,                          \
> > > >                 .name = (_name),                                        \
> > > >
> > > > But there are some instances which need to be touched, for example
> > > > vexpress-sysreg.c [1]. Are you OK with files to be changed?
> > >
> > > Nice! That's exactly my point and you can sell it to the community
> > > because there are already users of it like this.
> > >
> > > Yes, I'm fine, but it seems it needs to be done treewide in one patch.
> > > Btw, how many of those already in use?
> >
> > Actually you don't need to change that. It's an array of resources and
> > everything should be kept as is there.
> >
> I do get below build failures, with the above literal change for
> vexpress-sysreg.c.
>
> drivers/mfd/vexpress-sysreg.c: At top level:
> drivers/mfd/vexpress-sysreg.c:64:37: error: initialiser element is not constant
>    64 |   .resources = (struct resource []) {
>       |                                     ^
> drivers/mfd/vexpress-sysreg.c:64:37: note: (near initialisation for
> ‘vexpress_sysreg_cells[0]’)
> drivers/mfd/vexpress-sysreg.c:73:37: error: initialiser element is not constant
>    73 |   .resources = (struct resource []) {
>       |                                     ^
> drivers/mfd/vexpress-sysreg.c:73:37: note: (near initialisation for
> ‘vexpress_sysreg_cells[1]’)
> drivers/mfd/vexpress-sysreg.c:82:37: error: initialiser element is not constant
>    82 |   .resources = (struct resource []) {
>       |                                     ^
> drivers/mfd/vexpress-sysreg.c:82:37: note: (near initialisation for
> ‘vexpress_sysreg_cells[2]’)
> drivers/mfd/vexpress-sysreg.c:90:37: error: initialiser element is not constant
>    90 |   .resources = (struct resource []) {
>       |                                     ^
> drivers/mfd/vexpress-sysreg.c:90:37: note: (near initialisation for
> ‘vexpress_sysreg_cells[3]’)
> drivers/mfd/vexpress-sysreg.c:93:2: warning: missing initialiser for
> field ‘ignore_resource_conflicts’ of ‘struct mfd_cell’
> [-Wmissing-field-initializers]
>    93 |  }

Hmm... Interesting, so I suppose the fix is to drop (struct resource
[]) parts from the driver?


-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2022-01-06 16:01                 ` Andy Shevchenko
@ 2022-01-06 16:10                   ` Lad, Prabhakar
  2022-01-06 16:28                     ` Andy Shevchenko
  0 siblings, 1 reply; 40+ messages in thread
From: Lad, Prabhakar @ 2022-01-06 16:10 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

Hi Andy,

On Thu, Jan 6, 2022 at 4:02 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Thu, Jan 6, 2022 at 5:27 PM Lad, Prabhakar
> <prabhakar.csengg@gmail.com> wrote:
> > On Thu, Jan 6, 2022 at 2:15 PM Andy Shevchenko
> > <andy.shevchenko@gmail.com> wrote:
> > > On Thu, Jan 6, 2022 at 3:43 PM Andy Shevchenko
> > > <andy.shevchenko@gmail.com> wrote:
> > > > On Wed, Jan 5, 2022 at 7:41 PM Lad, Prabhakar
> > > > <prabhakar.csengg@gmail.com> wrote:
> > > > > On Wed, Jan 5, 2022 at 9:43 AM Andy Shevchenko
>
> ...
>
> > > > >  #define DEFINE_RES_NAMED(_start, _size, _name, _flags)                 \
> > > > > -       {                                                               \
> > > > > +       (struct resource) {                                     \
> > > >
> > > > Yep, that's it.
> > > >
> > > > >                 .start = (_start),                                      \
> > > > >                 .end = (_start) + (_size) - 1,                          \
> > > > >                 .name = (_name),                                        \
> > > > >
> > > > > But there are some instances which need to be touched, for example
> > > > > vexpress-sysreg.c [1]. Are you OK with files to be changed?
> > > >
> > > > Nice! That's exactly my point and you can sell it to the community
> > > > because there are already users of it like this.
> > > >
> > > > Yes, I'm fine, but it seems it needs to be done treewide in one patch.
> > > > Btw, how many of those already in use?
> > >
> > > Actually you don't need to change that. It's an array of resources and
> > > everything should be kept as is there.
> > >
> > I do get below build failures, with the above literal change for
> > vexpress-sysreg.c.
> >
> > drivers/mfd/vexpress-sysreg.c: At top level:
> > drivers/mfd/vexpress-sysreg.c:64:37: error: initialiser element is not constant
> >    64 |   .resources = (struct resource []) {
> >       |                                     ^
> > drivers/mfd/vexpress-sysreg.c:64:37: note: (near initialisation for
> > ‘vexpress_sysreg_cells[0]’)
> > drivers/mfd/vexpress-sysreg.c:73:37: error: initialiser element is not constant
> >    73 |   .resources = (struct resource []) {
> >       |                                     ^
> > drivers/mfd/vexpress-sysreg.c:73:37: note: (near initialisation for
> > ‘vexpress_sysreg_cells[1]’)
> > drivers/mfd/vexpress-sysreg.c:82:37: error: initialiser element is not constant
> >    82 |   .resources = (struct resource []) {
> >       |                                     ^
> > drivers/mfd/vexpress-sysreg.c:82:37: note: (near initialisation for
> > ‘vexpress_sysreg_cells[2]’)
> > drivers/mfd/vexpress-sysreg.c:90:37: error: initialiser element is not constant
> >    90 |   .resources = (struct resource []) {
> >       |                                     ^
> > drivers/mfd/vexpress-sysreg.c:90:37: note: (near initialisation for
> > ‘vexpress_sysreg_cells[3]’)
> > drivers/mfd/vexpress-sysreg.c:93:2: warning: missing initialiser for
> > field ‘ignore_resource_conflicts’ of ‘struct mfd_cell’
> > [-Wmissing-field-initializers]
> >    93 |  }
>
> Hmm... Interesting, so I suppose the fix is to drop (struct resource
> []) parts from the driver?
>
A bit more than that like something below:

diff --git a/drivers/mfd/vexpress-sysreg.c b/drivers/mfd/vexpress-sysreg.c
index aaf24af287dd..eab82619ec31 100644
--- a/drivers/mfd/vexpress-sysreg.c
+++ b/drivers/mfd/vexpress-sysreg.c
@@ -61,35 +61,27 @@ static struct mfd_cell vexpress_sysreg_cells[] = {
  .name = "basic-mmio-gpio",
  .of_compatible = "arm,vexpress-sysreg,sys_led",
  .num_resources = 1,
- .resources = (struct resource []) {
- DEFINE_RES_MEM_NAMED(SYS_LED, 0x4, "dat"),
- },
+ .resources = &DEFINE_RES_MEM_NAMED(SYS_LED, 0x4, "dat"),
  .platform_data = &vexpress_sysreg_sys_led_pdata,
  .pdata_size = sizeof(vexpress_sysreg_sys_led_pdata),
  }, {
  .name = "basic-mmio-gpio",
  .of_compatible = "arm,vexpress-sysreg,sys_mci",
  .num_resources = 1,
- .resources = (struct resource []) {
- DEFINE_RES_MEM_NAMED(SYS_MCI, 0x4, "dat"),
- },
+ .resources = &DEFINE_RES_MEM_NAMED(SYS_MCI, 0x4, "dat"),
  .platform_data = &vexpress_sysreg_sys_mci_pdata,
  .pdata_size = sizeof(vexpress_sysreg_sys_mci_pdata),
  }, {
  .name = "basic-mmio-gpio",
  .of_compatible = "arm,vexpress-sysreg,sys_flash",
  .num_resources = 1,
- .resources = (struct resource []) {
- DEFINE_RES_MEM_NAMED(SYS_FLASH, 0x4, "dat"),
- },
+ .resources = &DEFINE_RES_MEM_NAMED(SYS_FLASH, 0x4, "dat"),
  .platform_data = &vexpress_sysreg_sys_flash_pdata,
  .pdata_size = sizeof(vexpress_sysreg_sys_flash_pdata),
  }, {
  .name = "vexpress-syscfg",
  .num_resources = 1,
- .resources = (struct resource []) {
- DEFINE_RES_MEM(SYS_MISC, 0x4c),
- },
+ .resources = &DEFINE_RES_MEM(SYS_MISC, 0x4c),
  }
 };

Cheers,
Prabhakar

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2022-01-06 16:10                   ` Lad, Prabhakar
@ 2022-01-06 16:28                     ` Andy Shevchenko
  2022-01-06 16:46                       ` Lad, Prabhakar
  0 siblings, 1 reply; 40+ messages in thread
From: Andy Shevchenko @ 2022-01-06 16:28 UTC (permalink / raw)
  To: Lad, Prabhakar
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

On Thu, Jan 6, 2022 at 6:11 PM Lad, Prabhakar
<prabhakar.csengg@gmail.com> wrote:
> On Thu, Jan 6, 2022 at 4:02 PM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Thu, Jan 6, 2022 at 5:27 PM Lad, Prabhakar
> > <prabhakar.csengg@gmail.com> wrote:
> > > On Thu, Jan 6, 2022 at 2:15 PM Andy Shevchenko
> > > <andy.shevchenko@gmail.com> wrote:
> > > > On Thu, Jan 6, 2022 at 3:43 PM Andy Shevchenko
> > > > <andy.shevchenko@gmail.com> wrote:
> > > > > On Wed, Jan 5, 2022 at 7:41 PM Lad, Prabhakar
> > > > > <prabhakar.csengg@gmail.com> wrote:
> > > > > > On Wed, Jan 5, 2022 at 9:43 AM Andy Shevchenko
> >
> > ...
> >
> > > > > >  #define DEFINE_RES_NAMED(_start, _size, _name, _flags)                 \
> > > > > > -       {                                                               \
> > > > > > +       (struct resource) {                                     \
> > > > >
> > > > > Yep, that's it.
> > > > >
> > > > > >                 .start = (_start),                                      \
> > > > > >                 .end = (_start) + (_size) - 1,                          \
> > > > > >                 .name = (_name),                                        \
> > > > > >
> > > > > > But there are some instances which need to be touched, for example
> > > > > > vexpress-sysreg.c [1]. Are you OK with files to be changed?
> > > > >
> > > > > Nice! That's exactly my point and you can sell it to the community
> > > > > because there are already users of it like this.
> > > > >
> > > > > Yes, I'm fine, but it seems it needs to be done treewide in one patch.
> > > > > Btw, how many of those already in use?
> > > >
> > > > Actually you don't need to change that. It's an array of resources and
> > > > everything should be kept as is there.
> > > >
> > > I do get below build failures, with the above literal change for
> > > vexpress-sysreg.c.
> > >
> > > drivers/mfd/vexpress-sysreg.c: At top level:
> > > drivers/mfd/vexpress-sysreg.c:64:37: error: initialiser element is not constant
> > >    64 |   .resources = (struct resource []) {
> > >       |                                     ^
> > > drivers/mfd/vexpress-sysreg.c:64:37: note: (near initialisation for
> > > ‘vexpress_sysreg_cells[0]’)

> > Hmm... Interesting, so I suppose the fix is to drop (struct resource
> > []) parts from the driver?
> >
> A bit more than that like something below:

> - .resources = (struct resource []) {
> - DEFINE_RES_MEM_NAMED(SYS_LED, 0x4, "dat"),
> - },
> + .resources = &DEFINE_RES_MEM_NAMED(SYS_LED, 0x4, "dat"),

This is not an equivalent change.
The warning is about const qualifier. Can it rather be  const struct
resource [] ?

-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() to get the interrupt
  2022-01-06 16:28                     ` Andy Shevchenko
@ 2022-01-06 16:46                       ` Lad, Prabhakar
  0 siblings, 0 replies; 40+ messages in thread
From: Lad, Prabhakar @ 2022-01-06 16:46 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Lad Prabhakar, Linux Media Mailing List, Mauro Carvalho Chehab,
	Hans Verkuil, Rob Herring, Linux Kernel Mailing List,
	Linux-Renesas

Hi Andy,

On Thu, Jan 6, 2022 at 4:28 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Thu, Jan 6, 2022 at 6:11 PM Lad, Prabhakar
> <prabhakar.csengg@gmail.com> wrote:
> > On Thu, Jan 6, 2022 at 4:02 PM Andy Shevchenko
> > <andy.shevchenko@gmail.com> wrote:
> > > On Thu, Jan 6, 2022 at 5:27 PM Lad, Prabhakar
> > > <prabhakar.csengg@gmail.com> wrote:
> > > > On Thu, Jan 6, 2022 at 2:15 PM Andy Shevchenko
> > > > <andy.shevchenko@gmail.com> wrote:
> > > > > On Thu, Jan 6, 2022 at 3:43 PM Andy Shevchenko
> > > > > <andy.shevchenko@gmail.com> wrote:
> > > > > > On Wed, Jan 5, 2022 at 7:41 PM Lad, Prabhakar
> > > > > > <prabhakar.csengg@gmail.com> wrote:
> > > > > > > On Wed, Jan 5, 2022 at 9:43 AM Andy Shevchenko
> > >
> > > ...
> > >
> > > > > > >  #define DEFINE_RES_NAMED(_start, _size, _name, _flags)                 \
> > > > > > > -       {                                                               \
> > > > > > > +       (struct resource) {                                     \
> > > > > >
> > > > > > Yep, that's it.
> > > > > >
> > > > > > >                 .start = (_start),                                      \
> > > > > > >                 .end = (_start) + (_size) - 1,                          \
> > > > > > >                 .name = (_name),                                        \
> > > > > > >
> > > > > > > But there are some instances which need to be touched, for example
> > > > > > > vexpress-sysreg.c [1]. Are you OK with files to be changed?
> > > > > >
> > > > > > Nice! That's exactly my point and you can sell it to the community
> > > > > > because there are already users of it like this.
> > > > > >
> > > > > > Yes, I'm fine, but it seems it needs to be done treewide in one patch.
> > > > > > Btw, how many of those already in use?
> > > > >
> > > > > Actually you don't need to change that. It's an array of resources and
> > > > > everything should be kept as is there.
> > > > >
> > > > I do get below build failures, with the above literal change for
> > > > vexpress-sysreg.c.
> > > >
> > > > drivers/mfd/vexpress-sysreg.c: At top level:
> > > > drivers/mfd/vexpress-sysreg.c:64:37: error: initialiser element is not constant
> > > >    64 |   .resources = (struct resource []) {
> > > >       |                                     ^
> > > > drivers/mfd/vexpress-sysreg.c:64:37: note: (near initialisation for
> > > > ‘vexpress_sysreg_cells[0]’)
>
> > > Hmm... Interesting, so I suppose the fix is to drop (struct resource
> > > []) parts from the driver?
> > >
> > A bit more than that like something below:
>
> > - .resources = (struct resource []) {
> > - DEFINE_RES_MEM_NAMED(SYS_LED, 0x4, "dat"),
> > - },
> > + .resources = &DEFINE_RES_MEM_NAMED(SYS_LED, 0x4, "dat"),
>
> This is not an equivalent change.
> The warning is about const qualifier. Can it rather be  const struct
> resource [] ?
>
No, since it's just a single resource, just the below should be OK.

.resources = &DEFINE_RES_MEM_NAMED(SYS_LED, 0x4, "dat"),

[1] https://elixir.bootlin.com/linux/v5.16-rc8/source/include/linux/mfd/core.h#L108

On the other note I could use the below without changing the macro:

if (dev_of_node(...))
  res_irq = (struct resource) DEFINE_RES_IRQ_NAMED(...)
else
  res_irq =  (struct resource) DEFINE_RES_IRQ(...);
res_irq->flags |= irq_get_trigger_type(irq);

Cheers,
Prabhakar

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

end of thread, other threads:[~2022-01-06 16:46 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-23 17:30 [PATCH 00/13] media: Use platform_get_irq*() variants to fetch IRQ's Lad Prabhakar
2021-12-23 17:30 ` [PATCH 01/13] media: vsp1: Use platform_get_irq() to get the interrupt Lad Prabhakar
2021-12-30  0:06   ` Laurent Pinchart
2021-12-30 12:32     ` Lad, Prabhakar
2021-12-23 17:30 ` [PATCH 02/13] media: camss: Use platform_get_irq_byname() " Lad Prabhakar
2021-12-23 18:06   ` Bjorn Andersson
2021-12-23 17:30 ` [PATCH 03/13] media: bdisp: Use platform_get_irq() " Lad Prabhakar
2021-12-23 17:30 ` [PATCH 04/13] media: s5p-mfc: " Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar
2021-12-28  8:42   ` Andrzej Hajda
2021-12-28  8:42     ` Andrzej Hajda
2021-12-23 17:30 ` [PATCH 05/13] media: stm32-dma2d: " Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar
2021-12-23 17:30 ` [PATCH 06/13] media: davinci: vpif: Use platform_get_irq_optional() " Lad Prabhakar
2021-12-25 17:32   ` Andy Shevchenko
2022-01-04 17:22     ` Lad, Prabhakar
2022-01-05  9:42       ` Andy Shevchenko
2022-01-05 17:41         ` Lad, Prabhakar
2022-01-06 13:43           ` Andy Shevchenko
2022-01-06 14:14             ` Andy Shevchenko
2022-01-06 15:27               ` Lad, Prabhakar
2022-01-06 16:01                 ` Andy Shevchenko
2022-01-06 16:10                   ` Lad, Prabhakar
2022-01-06 16:28                     ` Andy Shevchenko
2022-01-06 16:46                       ` Lad, Prabhakar
2021-12-23 17:30 ` [PATCH 07/13] media: exynos-gsc: Use platform_get_irq() " Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar
2021-12-23 17:30 ` [PATCH 08/13] media: marvell-ccic: " Lad Prabhakar
2021-12-23 17:30 ` [PATCH 09/13] media: mtk-vcodec: Drop unnecessary call to platform_get_resource() Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar
2021-12-23 17:30 ` [PATCH 10/13] media: exynos4-is: Use platform_get_irq() to get the interrupt Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar
2021-12-23 17:30 ` [PATCH 11/13] media: s5p-g2d: " Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar
2021-12-23 17:30 ` [PATCH 12/13] media: mtk-vpu: Drop unnecessary call to platform_get_resource() Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar
2021-12-23 17:30 ` [PATCH 13/13] media: coda: Use platform_get_irq() to get the interrupt Lad Prabhakar
2021-12-23 17:30   ` Lad Prabhakar

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.