@@ -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)
@@ -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);
}
@@ -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);
}
@@ -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);
+ }
}
}
@@ -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);
}
@@ -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;
@@ -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);
}
@@ -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);
}
@@ -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);
@@ -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;
}
@@ -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);
}
@@ -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++;
}
@@ -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;
}
@@ -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 *),
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(-)