linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] component: Add helper for device nodes
       [not found] <20221103182222.2247724-1-sean.anderson@seco.com>
@ 2022-11-03 18:22 ` Sean Anderson
  2022-11-03 18:32   ` Mark Brown
  2022-11-03 18:22 ` [PATCH 2/2] drm: Convert users of drm_of_component_match_add to component_match_add_of Sean Anderson
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 5+ messages in thread
From: Sean Anderson @ 2022-11-03 18:22 UTC (permalink / raw)
  To: David Airlie, Daniel Vetter, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, dri-devel
  Cc: linux-kernel, Sean Anderson, Jaroslav Kysela, Joerg Roedel,
	Liam Girdwood, Mark Brown, Matthias Brugger, Robin Murphy,
	Takashi Iwai, Will Deacon, Yong Wu, alsa-devel, iommu,
	linux-arm-kernel, linux-mediatek

There is a common case where component_patch_add_release is called with
component_release_of/component_compare_of and a device node. Add a
helper and convert existing users.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
---

 drivers/iommu/mtk_iommu.c    | 3 +--
 drivers/iommu/mtk_iommu_v1.c | 3 +--
 include/linux/component.h    | 9 +++++++++
 sound/soc/codecs/wcd938x.c   | 6 ++----
 4 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index 2ab2ecfe01f8..483b7a9e4410 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -1079,8 +1079,7 @@ static int mtk_iommu_mm_dts_parse(struct device *dev, struct component_match **m
 		}
 		data->larb_imu[id].dev = &plarbdev->dev;
 
-		component_match_add_release(dev, match, component_release_of,
-					    component_compare_of, larbnode);
+		component_match_add_of(dev, match, larbnode);
 	}
 
 	/* Get smi-(sub)-common dev from the last larb. */
diff --git a/drivers/iommu/mtk_iommu_v1.c b/drivers/iommu/mtk_iommu_v1.c
index 6e0e65831eb7..fb09ed6bf550 100644
--- a/drivers/iommu/mtk_iommu_v1.c
+++ b/drivers/iommu/mtk_iommu_v1.c
@@ -672,8 +672,7 @@ static int mtk_iommu_v1_probe(struct platform_device *pdev)
 		}
 		data->larb_imu[i].dev = &plarbdev->dev;
 
-		component_match_add_release(dev, &match, component_release_of,
-					    component_compare_of, larbnode);
+		component_match_add_of(dev, &match, larbnode);
 	}
 
 	platform_set_drvdata(pdev, data);
diff --git a/include/linux/component.h b/include/linux/component.h
index df4aa75c9e7c..fb5d2dbc34d8 100644
--- a/include/linux/component.h
+++ b/include/linux/component.h
@@ -6,6 +6,7 @@
 
 
 struct device;
+struct device_node;
 
 /**
  * struct component_ops - callbacks for component drivers
@@ -128,4 +129,12 @@ static inline void component_match_add(struct device *parent,
 				    compare_data);
 }
 
+static inline void component_match_add_of(struct device *parent,
+					  struct component_match **matchptr,
+					  struct device_node *node)
+{
+	component_match_add_release(parent, matchptr, component_release_of,
+				    component_compare_of, node);
+}
+
 #endif
diff --git a/sound/soc/codecs/wcd938x.c b/sound/soc/codecs/wcd938x.c
index aca06a4026f3..2f8444e54083 100644
--- a/sound/soc/codecs/wcd938x.c
+++ b/sound/soc/codecs/wcd938x.c
@@ -4474,8 +4474,7 @@ static int wcd938x_add_slave_components(struct wcd938x_priv *wcd938x,
 	}
 
 	of_node_get(wcd938x->rxnode);
-	component_match_add_release(dev, matchptr, component_release_of,
-				    component_compare_of, wcd938x->rxnode);
+	component_match_add_of(dev, matchptr, wcd938x->rxnode);
 
 	wcd938x->txnode = of_parse_phandle(np, "qcom,tx-device", 0);
 	if (!wcd938x->txnode) {
@@ -4483,8 +4482,7 @@ static int wcd938x_add_slave_components(struct wcd938x_priv *wcd938x,
 		return -ENODEV;
 	}
 	of_node_get(wcd938x->txnode);
-	component_match_add_release(dev, matchptr, component_release_of,
-				    component_compare_of, wcd938x->txnode);
+	component_match_add_of(dev, matchptr, wcd938x->txnode);
 	return 0;
 }
 
-- 
2.35.1.1320.gc452695387.dirty


_______________________________________________
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] 5+ messages in thread

* [PATCH 2/2] drm: Convert users of drm_of_component_match_add to component_match_add_of
       [not found] <20221103182222.2247724-1-sean.anderson@seco.com>
  2022-11-03 18:22 ` [PATCH 1/2] component: Add helper for device nodes Sean Anderson
@ 2022-11-03 18:22 ` Sean Anderson
  2022-11-07 20:27 ` sarha
       [not found] ` <68562aca-5256-9e4b-bcd5-983e43408a7d@seco.com>
  3 siblings, 0 replies; 5+ messages in thread
From: Sean Anderson @ 2022-11-03 18:22 UTC (permalink / raw)
  To: David Airlie, Daniel Vetter, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, dri-devel
  Cc: linux-kernel, Sean Anderson, Abhinav Kumar, Alain Volmat,
	Brian Starkey, Chen Feng, Chen-Yu Tsai, Christian Gmeiner,
	Chun-Kuang Hu, Dmitry Baryshkov, Jernej Skrabec, John Stultz,
	Jyri Sarha, Liviu Dudau, Lucas Stach, Mali DP Maintainers,
	Matthias Brugger, Mihail Atanassov, Paul Cercueil, Philipp Zabel,
	Rob Clark, Russell King, Samuel Holland, Sean Paul, Tian Tao,
	Tomi Valkeinen, Xinliang Liu, Xinwei Kong, etnaviv, freedreno,
	linux-arm-kernel, linux-arm-msm, linux-mediatek, linux-mips,
	linux-sunxi

Every user of this function either uses component_compare_of or
something equivalent. Most of them immediately put the device node as
well. Convert these users to component_match_add_of and remove
drm_of_component_match_add.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
---

 .../gpu/drm/arm/display/komeda/komeda_drv.c   |  6 ++--
 drivers/gpu/drm/arm/hdlcd_drv.c               |  9 +-----
 drivers/gpu/drm/arm/malidp_drv.c              | 11 +------
 drivers/gpu/drm/armada/armada_drv.c           | 10 ++++---
 drivers/gpu/drm/drm_of.c                      | 29 +++----------------
 drivers/gpu/drm/etnaviv/etnaviv_drv.c         |  4 +--
 .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c   |  3 +-
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c     |  3 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c        |  4 +--
 drivers/gpu/drm/msm/msm_drv.c                 | 14 ++++-----
 drivers/gpu/drm/sti/sti_drv.c                 |  3 +-
 drivers/gpu/drm/sun4i/sun4i_drv.c             |  3 +-
 drivers/gpu/drm/tilcdc/tilcdc_external.c      | 10 ++-----
 include/drm/drm_of.h                          | 12 --------
 14 files changed, 33 insertions(+), 88 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c b/drivers/gpu/drm/arm/display/komeda/komeda_drv.c
index 9fce4239d4ad..e5bf439b799f 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_drv.c
@@ -103,10 +103,8 @@ static void komeda_add_slave(struct device *master,
 	struct device_node *remote;
 
 	remote = of_graph_get_remote_node(np, port, endpoint);
-	if (remote) {
-		drm_of_component_match_add(master, match, component_compare_of, remote);
-		of_node_put(remote);
-	}
+	if (remote)
+		component_match_add_of(master, match, remote);
 }
 
 static int komeda_platform_probe(struct platform_device *pdev)
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index a032003c340c..18e58863a2f1 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -352,11 +352,6 @@ static const struct component_master_ops hdlcd_master_ops = {
 	.unbind		= hdlcd_drm_unbind,
 };
 
-static int compare_dev(struct device *dev, void *data)
-{
-	return dev->of_node == data;
-}
-
 static int hdlcd_probe(struct platform_device *pdev)
 {
 	struct device_node *port;
@@ -367,9 +362,7 @@ static int hdlcd_probe(struct platform_device *pdev)
 	if (!port)
 		return -ENODEV;
 
-	drm_of_component_match_add(&pdev->dev, &match, compare_dev, port);
-	of_node_put(port);
-
+	component_match_add_of(&pdev->dev, &match, port);
 	return component_master_add_with_match(&pdev->dev, &hdlcd_master_ops,
 					       match);
 }
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 1d0b0c54ccc7..aace8b87c6d3 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -926,13 +926,6 @@ static const struct component_master_ops malidp_master_ops = {
 	.unbind = malidp_unbind,
 };
 
-static int malidp_compare_dev(struct device *dev, void *data)
-{
-	struct device_node *np = data;
-
-	return dev->of_node == np;
-}
-
 static int malidp_platform_probe(struct platform_device *pdev)
 {
 	struct device_node *port;
@@ -946,9 +939,7 @@ static int malidp_platform_probe(struct platform_device *pdev)
 	if (!port)
 		return -ENODEV;
 
-	drm_of_component_match_add(&pdev->dev, &match, malidp_compare_dev,
-				   port);
-	of_node_put(port);
+	component_match_add_of(&pdev->dev, &match, port);
 	return component_master_add_with_match(&pdev->dev, &malidp_master_ops,
 					       match);
 }
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 0643887800b4..c0211ad7a45d 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -184,10 +184,12 @@ static void armada_add_endpoints(struct device *dev,
 
 	for_each_endpoint_of_node(dev_node, ep) {
 		remote = of_graph_get_remote_port_parent(ep);
-		if (remote && of_device_is_available(remote))
-			drm_of_component_match_add(dev, match, component_compare_of,
-						   remote);
-		of_node_put(remote);
+		if (remote) {
+			if (of_device_is_available(remote))
+				component_match_add_of(dev, match, remote);
+			else
+				of_node_put(remote);
+		}
 	}
 }
 
diff --git a/drivers/gpu/drm/drm_of.c b/drivers/gpu/drm/drm_of.c
index 7bbcb999bb75..0a474729ddf6 100644
--- a/drivers/gpu/drm/drm_of.c
+++ b/drivers/gpu/drm/drm_of.c
@@ -78,24 +78,6 @@ uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
 }
 EXPORT_SYMBOL(drm_of_find_possible_crtcs);
 
-/**
- * drm_of_component_match_add - Add a component helper OF node match rule
- * @master: master device
- * @matchptr: component match pointer
- * @compare: compare function used for matching component
- * @node: of_node
- */
-void drm_of_component_match_add(struct device *master,
-				struct component_match **matchptr,
-				int (*compare)(struct device *, void *),
-				struct device_node *node)
-{
-	of_node_get(node);
-	component_match_add_release(master, matchptr, component_release_of,
-				    compare, node);
-}
-EXPORT_SYMBOL_GPL(drm_of_component_match_add);
-
 /**
  * drm_of_component_probe - Generic probe function for a component based master
  * @dev: master device containing the OF node
@@ -130,10 +112,9 @@ int drm_of_component_probe(struct device *dev,
 			break;
 
 		if (of_device_is_available(port->parent))
-			drm_of_component_match_add(dev, &match, compare_of,
-						   port);
-
-		of_node_put(port);
+			component_match_add_of(dev, &match, port);
+		else
+			of_node_put(port);
 	}
 
 	if (i == 0) {
@@ -171,9 +152,7 @@ int drm_of_component_probe(struct device *dev,
 				continue;
 			}
 
-			drm_of_component_match_add(dev, &match, compare_of,
-						   remote);
-			of_node_put(remote);
+			component_match_add_of(dev, &match, remote);
 		}
 		of_node_put(port);
 	}
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index 1d2b4fb4bcf8..4a0dba34a6e7 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -590,8 +590,8 @@ static int etnaviv_pdev_probe(struct platform_device *pdev)
 			if (!first_node)
 				first_node = core_node;
 
-			drm_of_component_match_add(&pdev->dev, &match,
-						   component_compare_of, core_node);
+			of_node_get(core_node);
+			component_match_add_of(&pdev->dev, &match, core_node);
 		}
 	} else {
 		char **names = dev->platform_data;
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
index 73ee7f25f734..fc736759274f 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
@@ -273,8 +273,7 @@ static int kirin_drm_platform_probe(struct platform_device *pdev)
 	if (!remote)
 		return -ENODEV;
 
-	drm_of_component_match_add(dev, &match, component_compare_of, remote);
-	of_node_put(remote);
+	component_match_add_of(dev, &match, remote);
 
 	return component_master_add_with_match(dev, &kirin_drm_ops, match);
 }
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index ab0515d2c420..75a19e6b85c0 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -1445,8 +1445,7 @@ static int ingenic_drm_probe(struct platform_device *pdev)
 	if (!np)
 		return ingenic_drm_bind(dev, false);
 
-	drm_of_component_match_add(dev, &match, component_compare_of, np);
-	of_node_put(np);
+	component_match_add_of(dev, &match, np);
 
 	return component_master_add_with_match(dev, &ingenic_master_ops, match);
 }
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 91f58db5915f..9ca265129659 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -779,8 +779,8 @@ static int mtk_drm_probe(struct platform_device *pdev)
 		    comp_type == MTK_DSI) {
 			dev_info(dev, "Adding component match for %pOF\n",
 				 node);
-			drm_of_component_match_add(dev, &match, component_compare_of,
-						   node);
+			of_node_get(node);
+			component_match_add_of(dev, &match, node);
 		}
 
 		ret = mtk_ddp_comp_init(node, &private->ddp_comp[comp_id], comp_id);
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 28034c21f6bc..1152da3d58dc 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -5,6 +5,7 @@
  * Author: Rob Clark <robdclark@gmail.com>
  */
 
+#include <linux/component.h>
 #include <linux/dma-mapping.h>
 #include <linux/fault-inject.h>
 #include <linux/kthread.h>
@@ -1148,10 +1149,9 @@ static int add_components_mdp(struct device *master_dev,
 			continue;
 
 		if (of_device_is_available(intf))
-			drm_of_component_match_add(master_dev, matchptr,
-						   component_compare_of, intf);
-
-		of_node_put(intf);
+			component_match_add_of(master_dev, matchptr, intf);
+		else
+			of_node_put(intf);
 	}
 
 	return 0;
@@ -1180,9 +1180,9 @@ static int add_gpu_components(struct device *dev,
 		return 0;
 
 	if (of_device_is_available(np))
-		drm_of_component_match_add(dev, matchptr, component_compare_of, np);
-
-	of_node_put(np);
+		component_match_add_of(dev, matchptr, np);
+	else
+		of_node_put(np);
 
 	return 0;
 }
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 7abf010a3293..3ae4b73dfa92 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -238,8 +238,7 @@ static int sti_platform_probe(struct platform_device *pdev)
 	child_np = of_get_next_available_child(node, NULL);
 
 	while (child_np) {
-		drm_of_component_match_add(dev, &match, component_compare_of,
-					   child_np);
+		component_match_add_of(dev, &match, child_np);
 		child_np = of_get_next_available_child(node, child_np);
 	}
 
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index d06ffd99d86e..a67c2010c7a2 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -323,7 +323,8 @@ static int sun4i_drv_add_endpoints(struct device *dev,
 	     of_device_is_available(node))) {
 		/* Add current component */
 		DRM_DEBUG_DRIVER("Adding component %pOF\n", node);
-		drm_of_component_match_add(dev, match, component_compare_of, node);
+		of_node_get(node);
+		component_match_add_of(dev, match, node);
 		count++;
 	}
 
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c
index 3b86d002ef62..0138ce02a64f 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_external.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c
@@ -155,11 +155,6 @@ int tilcdc_attach_external_device(struct drm_device *ddev)
 	return ret;
 }
 
-static int dev_match_of(struct device *dev, void *data)
-{
-	return dev->of_node == data;
-}
-
 int tilcdc_get_external_components(struct device *dev,
 				   struct component_match **match)
 {
@@ -173,7 +168,8 @@ int tilcdc_get_external_components(struct device *dev,
 	}
 
 	if (match)
-		drm_of_component_match_add(dev, match, dev_match_of, node);
-	of_node_put(node);
+		component_match_add_of(dev, match, node);
+	else
+		of_node_put(node);
 	return 1;
 }
diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h
index 10ab58c40746..685c44dc1dae 100644
--- a/include/drm/drm_of.h
+++ b/include/drm/drm_of.h
@@ -33,10 +33,6 @@ uint32_t drm_of_crtc_port_mask(struct drm_device *dev,
 			    struct device_node *port);
 uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
 				    struct device_node *port);
-void drm_of_component_match_add(struct device *master,
-				struct component_match **matchptr,
-				int (*compare)(struct device *, void *),
-				struct device_node *node);
 int drm_of_component_probe(struct device *dev,
 			   int (*compare_of)(struct device *, void *),
 			   const struct component_master_ops *m_ops);
@@ -69,14 +65,6 @@ static inline uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
 	return 0;
 }
 
-static inline void
-drm_of_component_match_add(struct device *master,
-			   struct component_match **matchptr,
-			   int (*compare)(struct device *, void *),
-			   struct device_node *node)
-{
-}
-
 static inline int
 drm_of_component_probe(struct device *dev,
 		       int (*compare_of)(struct device *, void *),
-- 
2.35.1.1320.gc452695387.dirty


_______________________________________________
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] 5+ messages in thread

* Re: [PATCH 1/2] component: Add helper for device nodes
  2022-11-03 18:22 ` [PATCH 1/2] component: Add helper for device nodes Sean Anderson
@ 2022-11-03 18:32   ` Mark Brown
  0 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2022-11-03 18:32 UTC (permalink / raw)
  To: Sean Anderson
  Cc: David Airlie, Daniel Vetter, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, dri-devel, linux-kernel, Jaroslav Kysela,
	Joerg Roedel, Liam Girdwood, Matthias Brugger, Robin Murphy,
	Takashi Iwai, Will Deacon, Yong Wu, alsa-devel, iommu,
	linux-arm-kernel, linux-mediatek


[-- Attachment #1.1: Type: text/plain, Size: 414 bytes --]

On Thu, Nov 03, 2022 at 02:22:21PM -0400, Sean Anderson wrote:

> There is a common case where component_patch_add_release is called with
> component_release_of/component_compare_of and a device node. Add a
> helper and convert existing users.

The usual pattern here would be to split adding the helper from updating
to use the helper - it makes things easier to merge.

Acked-by: Mark Brown <broonie@kernel.org>

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
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] 5+ messages in thread

* Re: [PATCH 2/2] drm: Convert users of drm_of_component_match_add to component_match_add_of
       [not found] <20221103182222.2247724-1-sean.anderson@seco.com>
  2022-11-03 18:22 ` [PATCH 1/2] component: Add helper for device nodes Sean Anderson
  2022-11-03 18:22 ` [PATCH 2/2] drm: Convert users of drm_of_component_match_add to component_match_add_of Sean Anderson
@ 2022-11-07 20:27 ` sarha
       [not found] ` <68562aca-5256-9e4b-bcd5-983e43408a7d@seco.com>
  3 siblings, 0 replies; 5+ messages in thread
From: sarha @ 2022-11-07 20:27 UTC (permalink / raw)
  To: Sean Anderson, David Airlie, Daniel Vetter, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, dri-devel
  Cc: linux-kernel, Abhinav Kumar, Alain Volmat, Brian Starkey,
	Chen Feng, Chen-Yu Tsai, Christian Gmeiner, Chun-Kuang Hu,
	Dmitry Baryshkov, Jernej Skrabec, John Stultz, Jyri Sarha,
	Liviu Dudau, Lucas Stach, Mali DP Maintainers, Matthias Brugger,
	Mihail Atanassov, Paul Cercueil, Philipp Zabel, Rob Clark,
	Russell King, Samuel Holland, Sean Paul, Tian Tao, Tomi Valkeinen,
	Xinliang Liu, Xinwei Kong, etnaviv, freedreno, linux-arm-kernel,
	linux-arm-msm, linux-mediatek, linux-mips, linux-sunxi

November 3, 2022 at 8:22 PM, "Sean Anderson" <sean.anderson@seco.com mailto:sean.anderson@seco.com?to=%22Sean%20Anderson%22%20%3Csean.anderson%40seco.com%3E > wrote:

> 
> Every user of this function either uses component_compare_of or
> something equivalent. Most of them immediately put the device node as
> well. Convert these users to component_match_add_of and remove
> drm_of_component_match_add.
> 
> Signed-off-by: Sean Anderson <sean.anderson@seco.com>

Acked-by: Jyri Sarha <jyri.sarhaı@iki.fi>

Also tested that Beaglebone-Black HDMI audio, that relies on componet system, still works. So for tilcdc:

Tested-by: Jyri Sarha <jyri.sarha@iki.fi>

> ---
> 
> .../gpu/drm/arm/display/komeda/komeda_drv.c | 6 ++--
> drivers/gpu/drm/arm/hdlcd_drv.c | 9 +-----
> drivers/gpu/drm/arm/malidp_drv.c | 11 +------
> drivers/gpu/drm/armada/armada_drv.c | 10 ++++---
> drivers/gpu/drm/drm_of.c | 29 +++----------------
> drivers/gpu/drm/etnaviv/etnaviv_drv.c | 4 +--
> .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 3 +-
> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 3 +-
> drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 +--
> drivers/gpu/drm/msm/msm_drv.c | 14 ++++-----
> drivers/gpu/drm/sti/sti_drv.c | 3 +-
> drivers/gpu/drm/sun4i/sun4i_drv.c | 3 +-
> drivers/gpu/drm/tilcdc/tilcdc_external.c | 10 ++-----
> include/drm/drm_of.h | 12 --------
> 14 files changed, 33 insertions(+), 88 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c b/drivers/gpu/drm/arm/display/komeda/komeda_drv.c
> index 9fce4239d4ad..e5bf439b799f 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_drv.c
> @@ -103,10 +103,8 @@ static void komeda_add_slave(struct device *master,
>  struct device_node *remote;
> 
>  remote = of_graph_get_remote_node(np, port, endpoint);
> - if (remote) {
> - drm_of_component_match_add(master, match, component_compare_of, remote);
> - of_node_put(remote);
> - }
> + if (remote)
> + component_match_add_of(master, match, remote);
> }
> 
> static int komeda_platform_probe(struct platform_device *pdev)
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index a032003c340c..18e58863a2f1 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -352,11 +352,6 @@ static const struct component_master_ops hdlcd_master_ops = {
>  .unbind = hdlcd_drm_unbind,
> };
> 
> -static int compare_dev(struct device *dev, void *data)
> -{
> - return dev->of_node == data;
> -}
> -
> static int hdlcd_probe(struct platform_device *pdev)
> {
>  struct device_node *port;
> @@ -367,9 +362,7 @@ static int hdlcd_probe(struct platform_device *pdev)
>  if (!port)
>  return -ENODEV;
> 
> - drm_of_component_match_add(&pdev->dev, &match, compare_dev, port);
> - of_node_put(port);
> -
> + component_match_add_of(&pdev->dev, &match, port);
>  return component_master_add_with_match(&pdev->dev, &hdlcd_master_ops,
>  match);
> }
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 1d0b0c54ccc7..aace8b87c6d3 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -926,13 +926,6 @@ static const struct component_master_ops malidp_master_ops = {
>  .unbind = malidp_unbind,
> };
> 
> -static int malidp_compare_dev(struct device *dev, void *data)
> -{
> - struct device_node *np = data;
> -
> - return dev->of_node == np;
> -}
> -
> static int malidp_platform_probe(struct platform_device *pdev)
> {
>  struct device_node *port;
> @@ -946,9 +939,7 @@ static int malidp_platform_probe(struct platform_device *pdev)
>  if (!port)
>  return -ENODEV;
> 
> - drm_of_component_match_add(&pdev->dev, &match, malidp_compare_dev,
> - port);
> - of_node_put(port);
> + component_match_add_of(&pdev->dev, &match, port);
>  return component_master_add_with_match(&pdev->dev, &malidp_master_ops,
>  match);
> }
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 0643887800b4..c0211ad7a45d 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -184,10 +184,12 @@ static void armada_add_endpoints(struct device *dev,
> 
>  for_each_endpoint_of_node(dev_node, ep) {
>  remote = of_graph_get_remote_port_parent(ep);
> - if (remote of_device_is_available(remote))
> - drm_of_component_match_add(dev, match, component_compare_of,
> - remote);
> - of_node_put(remote);
> + if (remote) {
> + if (of_device_is_available(remote))
> + component_match_add_of(dev, match, remote);
> + else
> + of_node_put(remote);
> + }
>  }
> }
> 
> diff --git a/drivers/gpu/drm/drm_of.c b/drivers/gpu/drm/drm_of.c
> index 7bbcb999bb75..0a474729ddf6 100644
> --- a/drivers/gpu/drm/drm_of.c
> +++ b/drivers/gpu/drm/drm_of.c
> @@ -78,24 +78,6 @@ uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
> }
> EXPORT_SYMBOL(drm_of_find_possible_crtcs);
> 
> -/**
> - * drm_of_component_match_add - Add a component helper OF node match rule
> - * @master: master device
> - * @matchptr: component match pointer
> - * @compare: compare function used for matching component
> - * @node: of_node
> - */
> -void drm_of_component_match_add(struct device *master,
> - struct component_match **matchptr,
> - int (*compare)(struct device *, void *),
> - struct device_node *node)
> -{
> - of_node_get(node);
> - component_match_add_release(master, matchptr, component_release_of,
> - compare, node);
> -}
> -EXPORT_SYMBOL_GPL(drm_of_component_match_add);
> -
> /**
> * drm_of_component_probe - Generic probe function for a component based master
> * @dev: master device containing the OF node
> @@ -130,10 +112,9 @@ int drm_of_component_probe(struct device *dev,
>  break;
> 
>  if (of_device_is_available(port->parent))
> - drm_of_component_match_add(dev, &match, compare_of,
> - port);
> -
> - of_node_put(port);
> + component_match_add_of(dev, &match, port);
> + else
> + of_node_put(port);
>  }
> 
>  if (i == 0) {
> @@ -171,9 +152,7 @@ int drm_of_component_probe(struct device *dev,
>  continue;
>  }
> 
> - drm_of_component_match_add(dev, &match, compare_of,
> - remote);
> - of_node_put(remote);
> + component_match_add_of(dev, &match, remote);
>  }
>  of_node_put(port);
>  }
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index 1d2b4fb4bcf8..4a0dba34a6e7 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -590,8 +590,8 @@ static int etnaviv_pdev_probe(struct platform_device *pdev)
>  if (!first_node)
>  first_node = core_node;
> 
> - drm_of_component_match_add(&pdev->dev, &match,
> - component_compare_of, core_node);
> + of_node_get(core_node);
> + component_match_add_of(&pdev->dev, &match, core_node);
>  }
>  } else {
>  char **names = dev->platform_data;
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> index 73ee7f25f734..fc736759274f 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> @@ -273,8 +273,7 @@ static int kirin_drm_platform_probe(struct platform_device *pdev)
>  if (!remote)
>  return -ENODEV;
> 
> - drm_of_component_match_add(dev, &match, component_compare_of, remote);
> - of_node_put(remote);
> + component_match_add_of(dev, &match, remote);
> 
>  return component_master_add_with_match(dev, &kirin_drm_ops, match);
> }
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index ab0515d2c420..75a19e6b85c0 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -1445,8 +1445,7 @@ static int ingenic_drm_probe(struct platform_device *pdev)
>  if (!np)
>  return ingenic_drm_bind(dev, false);
> 
> - drm_of_component_match_add(dev, &match, component_compare_of, np);
> - of_node_put(np);
> + component_match_add_of(dev, &match, np);
> 
>  return component_master_add_with_match(dev, &ingenic_master_ops, match);
> }
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 91f58db5915f..9ca265129659 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -779,8 +779,8 @@ static int mtk_drm_probe(struct platform_device *pdev)
>  comp_type == MTK_DSI) {
>  dev_info(dev, "Adding component match for %pOF\n",
>  node);
> - drm_of_component_match_add(dev, &match, component_compare_of,
> - node);
> + of_node_get(node);
> + component_match_add_of(dev, &match, node);
>  }
> 
>  ret = mtk_ddp_comp_init(node, &private->ddp_comp[comp_id], comp_id);
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index 28034c21f6bc..1152da3d58dc 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -5,6 +5,7 @@
> * Author: Rob Clark <robdclark@gmail.com>
> */
> 
> +#include <linux/component.h>
> #include <linux/dma-mapping.h>
> #include <linux/fault-inject.h>
> #include <linux/kthread.h>
> @@ -1148,10 +1149,9 @@ static int add_components_mdp(struct device *master_dev,
>  continue;
> 
>  if (of_device_is_available(intf))
> - drm_of_component_match_add(master_dev, matchptr,
> - component_compare_of, intf);
> -
> - of_node_put(intf);
> + component_match_add_of(master_dev, matchptr, intf);
> + else
> + of_node_put(intf);
>  }
> 
>  return 0;
> @@ -1180,9 +1180,9 @@ static int add_gpu_components(struct device *dev,
>  return 0;
> 
>  if (of_device_is_available(np))
> - drm_of_component_match_add(dev, matchptr, component_compare_of, np);
> -
> - of_node_put(np);
> + component_match_add_of(dev, matchptr, np);
> + else
> + of_node_put(np);
> 
>  return 0;
> }
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 7abf010a3293..3ae4b73dfa92 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -238,8 +238,7 @@ static int sti_platform_probe(struct platform_device *pdev)
>  child_np = of_get_next_available_child(node, NULL);
> 
>  while (child_np) {
> - drm_of_component_match_add(dev, &match, component_compare_of,
> - child_np);
> + component_match_add_of(dev, &match, child_np);
>  child_np = of_get_next_available_child(node, child_np);
>  }
> 
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index d06ffd99d86e..a67c2010c7a2 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -323,7 +323,8 @@ static int sun4i_drv_add_endpoints(struct device *dev,
>  of_device_is_available(node))) {
>  /* Add current component */
>  DRM_DEBUG_DRIVER("Adding component %pOF\n", node);
> - drm_of_component_match_add(dev, match, component_compare_of, node);
> + of_node_get(node);
> + component_match_add_of(dev, match, node);
>  count++;
>  }
> 
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c
> index 3b86d002ef62..0138ce02a64f 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_external.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c
> @@ -155,11 +155,6 @@ int tilcdc_attach_external_device(struct drm_device *ddev)
>  return ret;
> }
> 
> -static int dev_match_of(struct device *dev, void *data)
> -{
> - return dev->of_node == data;
> -}
> -
> int tilcdc_get_external_components(struct device *dev,
>  struct component_match **match)
> {
> @@ -173,7 +168,8 @@ int tilcdc_get_external_components(struct device *dev,
>  }
> 
>  if (match)
> - drm_of_component_match_add(dev, match, dev_match_of, node);
> - of_node_put(node);
> + component_match_add_of(dev, match, node);
> + else
> + of_node_put(node);
>  return 1;
> }
> diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h
> index 10ab58c40746..685c44dc1dae 100644
> --- a/include/drm/drm_of.h
> +++ b/include/drm/drm_of.h
> @@ -33,10 +33,6 @@ uint32_t drm_of_crtc_port_mask(struct drm_device *dev,
>  struct device_node *port);
> uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
>  struct device_node *port);
> -void drm_of_component_match_add(struct device *master,
> - struct component_match **matchptr,
> - int (*compare)(struct device *, void *),
> - struct device_node *node);
> int drm_of_component_probe(struct device *dev,
>  int (*compare_of)(struct device *, void *),
>  const struct component_master_ops *m_ops);
> @@ -69,14 +65,6 @@ static inline uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
>  return 0;
> }
> 
> -static inline void
> -drm_of_component_match_add(struct device *master,
> - struct component_match **matchptr,
> - int (*compare)(struct device *, void *),
> - struct device_node *node)
> -{
> -}
> -
> static inline int
> drm_of_component_probe(struct device *dev,
>  int (*compare_of)(struct device *, void *),
> -- 
> 2.35.1.1320.gc452695387.dirty
>

_______________________________________________
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] 5+ messages in thread

* Re: [PATCH 0/2] drm: Add component_match_add_of and convert users of drm_of_component_match_add
       [not found]   ` <2db73405-464f-6980-a7c1-7fe232611331@arm.com>
@ 2022-12-22 21:24     ` Sean Anderson
  0 siblings, 0 replies; 5+ messages in thread
From: Sean Anderson @ 2022-12-22 21:24 UTC (permalink / raw)
  To: Robin Murphy, David Airlie, Daniel Vetter, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, dri-devel
  Cc: linux-kernel, Yong Wu, alsa-devel, etnaviv, freedreno, iommu,
	linux-arm-kernel, linux-arm-msm, linux-mediatek, linux-mips,
	linux-sunxi

Hi Robin,

On 12/16/22 12:41, Robin Murphy wrote:
> On 2022-12-16 17:08, Sean Anderson wrote:
>> On 11/3/22 14:22, Sean Anderson wrote:
>>> This series adds a new function component_match_add_of to simplify the
>>> common case of calling component_match_add_release with
>>> component_release_of and component_compare_of. There is already
>>> drm_of_component_match_add, which allows for a custom compare function.
>>> However, all existing users just use component_compare_of (or an
>>> equivalent).
>>>
>>> I can split the second commit up if that is easier to review.
>>>
>>>
>>> Sean Anderson (2):
>>>    component: Add helper for device nodes
>>>    drm: Convert users of drm_of_component_match_add to
>>>      component_match_add_of
>>>
>>>   .../gpu/drm/arm/display/komeda/komeda_drv.c   |  6 ++--
>>>   drivers/gpu/drm/arm/hdlcd_drv.c               |  9 +-----
>>>   drivers/gpu/drm/arm/malidp_drv.c              | 11 +------
>>>   drivers/gpu/drm/armada/armada_drv.c           | 10 ++++---
>>>   drivers/gpu/drm/drm_of.c                      | 29 +++----------------
>>>   drivers/gpu/drm/etnaviv/etnaviv_drv.c         |  4 +--
>>>   .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c   |  3 +-
>>>   drivers/gpu/drm/ingenic/ingenic-drm-drv.c     |  3 +-
>>>   drivers/gpu/drm/mediatek/mtk_drm_drv.c        |  4 +--
>>>   drivers/gpu/drm/msm/msm_drv.c                 | 14 ++++-----
>>>   drivers/gpu/drm/sti/sti_drv.c                 |  3 +-
>>>   drivers/gpu/drm/sun4i/sun4i_drv.c             |  3 +-
>>>   drivers/gpu/drm/tilcdc/tilcdc_external.c      | 10 ++-----
>>>   drivers/iommu/mtk_iommu.c                     |  3 +-
>>>   drivers/iommu/mtk_iommu_v1.c                  |  3 +-
>>>   include/drm/drm_of.h                          | 12 --------
>>>   include/linux/component.h                     |  9 ++++++
>>>   sound/soc/codecs/wcd938x.c                    |  6 ++--
>>>   18 files changed, 46 insertions(+), 96 deletions(-)
>>>
>>
>> ping?
>>
>> Should I send a v2 broken up like Mark suggested?
> 
> FWIW you'll need to rebase the IOMMU changes on 6.2-rc1 anyway - mtk_iommu stops using component_match_add_release() at all.
> 
> Thanks,
> Robin.

I am preparing v2 of this series, but I don't see these changes on
drm-next, which seems to have been updated to at least 6.2-rc1. I tried
searching for these changes on lore [1], but I don't see them there
either. Do you have a commit hash/lore link for these changes?

--Sean

[1] https://lore.kernel.org/all/?q=dfn%3Adrivers%2Fiommu%2Fmtk_iommu.c+b%3Acomponent

_______________________________________________
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] 5+ messages in thread

end of thread, other threads:[~2022-12-22 21:26 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20221103182222.2247724-1-sean.anderson@seco.com>
2022-11-03 18:22 ` [PATCH 1/2] component: Add helper for device nodes Sean Anderson
2022-11-03 18:32   ` Mark Brown
2022-11-03 18:22 ` [PATCH 2/2] drm: Convert users of drm_of_component_match_add to component_match_add_of Sean Anderson
2022-11-07 20:27 ` sarha
     [not found] ` <68562aca-5256-9e4b-bcd5-983e43408a7d@seco.com>
     [not found]   ` <2db73405-464f-6980-a7c1-7fe232611331@arm.com>
2022-12-22 21:24     ` [PATCH 0/2] drm: Add component_match_add_of and convert users of drm_of_component_match_add Sean Anderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).