The driver only registered as a component master when connected to a tda998x device, but that driver is now not only a component but also a drm_bridge. Since drm_bridges are also handled, it serves no purpose to register as a component master for the special case of tda998x (which is no longer special). Signed-off-by: Peter Rosin <peda@xxxxxxxxxx> --- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 11 ------ drivers/gpu/drm/tilcdc/tilcdc_drv.c | 67 +++----------------------------- drivers/gpu/drm/tilcdc/tilcdc_drv.h | 1 - drivers/gpu/drm/tilcdc/tilcdc_external.c | 51 ------------------------ drivers/gpu/drm/tilcdc/tilcdc_external.h | 4 +- 5 files changed, 6 insertions(+), 128 deletions(-) diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c index 8bf6bb93dc79..b410939a3458 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c @@ -1030,17 +1030,6 @@ int tilcdc_crtc_create(struct drm_device *dev) goto fail; drm_crtc_helper_add(crtc, &tilcdc_crtc_helper_funcs); - - if (priv->is_componentized) { - crtc->port = of_graph_get_port_by_id(dev->dev->of_node, 0); - if (!crtc->port) { /* This should never happen */ - dev_err(dev->dev, "Port node not found in %pOF\n", - dev->dev->of_node); - ret = -EINVAL; - goto fail; - } - } - priv->crtc = crtc; return 0; diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index 1afde61f1247..d9d2e86c9430 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -17,7 +17,6 @@ /* LCDC DRM driver, based on da8xx-fb */ -#include <linux/component.h> #include <linux/pinctrl/consumer.h> #include <linux/suspend.h> #include <drm/drm_atomic.h> @@ -246,9 +245,6 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev) platform_set_drvdata(pdev, ddev); drm_mode_config_init(ddev); - priv->is_componentized = - tilcdc_get_external_components(dev, NULL) > 0; - priv->wq = alloc_ordered_workqueue("tilcdc", 0); if (!priv->wq) { ret = -ENOMEM; @@ -363,19 +359,9 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev) } modeset_init(ddev); - if (priv->is_componentized) { - ret = component_bind_all(dev, ddev); - if (ret < 0) - goto init_failed; - - ret = tilcdc_add_component_encoder(ddev); - if (ret < 0) - goto init_failed; - } else { - ret = tilcdc_attach_external_device(ddev); - if (ret) - goto init_failed; - } + ret = tilcdc_attach_external_device(ddev); + if (ret) + goto init_failed; if (!priv->external_connector && ((priv->num_encoders == 0) || (priv->num_connectors == 0))) { @@ -586,63 +572,20 @@ static const struct dev_pm_ops tilcdc_pm_ops = { SET_SYSTEM_SLEEP_PM_OPS(tilcdc_pm_suspend, tilcdc_pm_resume) }; -/* - * Platform driver: - */ -static int tilcdc_bind(struct device *dev) -{ - return tilcdc_init(&tilcdc_driver, dev); -} - -static void tilcdc_unbind(struct device *dev) -{ - struct drm_device *ddev = dev_get_drvdata(dev); - - /* Check if a subcomponent has already triggered the unloading. */ - if (!ddev->dev_private) - return; - - tilcdc_fini(dev_get_drvdata(dev)); -} - -static const struct component_master_ops tilcdc_comp_ops = { - .bind = tilcdc_bind, - .unbind = tilcdc_unbind, -}; - static int tilcdc_pdev_probe(struct platform_device *pdev) { - struct component_match *match = NULL; - int ret; - /* bail out early if no DT data: */ if (!pdev->dev.of_node) { dev_err(&pdev->dev, "device-tree data is missing\n"); return -ENXIO; } - ret = tilcdc_get_external_components(&pdev->dev, &match); - if (ret < 0) - return ret; - else if (ret == 0) - return tilcdc_init(&tilcdc_driver, &pdev->dev); - else - return component_master_add_with_match(&pdev->dev, - &tilcdc_comp_ops, - match); + return tilcdc_init(&tilcdc_driver, &pdev->dev); } static int tilcdc_pdev_remove(struct platform_device *pdev) { - int ret; - - ret = tilcdc_get_external_components(&pdev->dev, NULL); - if (ret < 0) - return ret; - else if (ret == 0) - tilcdc_fini(platform_get_drvdata(pdev)); - else - component_master_del(&pdev->dev, &tilcdc_comp_ops); + tilcdc_fini(platform_get_drvdata(pdev)); return 0; } diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/tilcdc/tilcdc_drv.h index ead512216669..c47a2b6e2a3a 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h @@ -92,7 +92,6 @@ struct tilcdc_drm_private { const struct drm_connector_helper_funcs *connector_funcs; bool is_registered; - bool is_componentized; }; /* Sub-module for display. Since we don't know at compile time what panels diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c index 711c7b3289d3..1471f5f8cb5c 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_external.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c @@ -8,7 +8,6 @@ * */ -#include <linux/component.h> #include <linux/of_graph.h> #include <drm/drm_of.h> @@ -116,33 +115,6 @@ struct drm_connector *tilcdc_encoder_find_connector(struct drm_device *ddev, return NULL; } -int tilcdc_add_component_encoder(struct drm_device *ddev) -{ - struct tilcdc_drm_private *priv = ddev->dev_private; - struct drm_connector *connector; - struct drm_encoder *encoder; - - list_for_each_entry(encoder, &ddev->mode_config.encoder_list, head) - if (encoder->possible_crtcs & (1 << priv->crtc->index)) - break; - - if (!encoder) { - dev_err(ddev->dev, "%s: No suitable encoder found\n", __func__); - return -ENODEV; - } - - connector = tilcdc_encoder_find_connector(ddev, encoder); - - if (!connector) - return -ENODEV; - - /* Only tda998x is supported at the moment. */ - tilcdc_crtc_set_simulate_vesa_sync(priv->crtc, true); - tilcdc_crtc_set_panel_info(priv->crtc, &panel_info_tda998x); - - return tilcdc_add_external_connector(ddev, connector); -} - void tilcdc_remove_external_device(struct drm_device *dev) { struct tilcdc_drm_private *priv = dev->dev_private; @@ -221,26 +193,3 @@ 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) -{ - struct device_node *node; - - node = of_graph_get_remote_node(dev->of_node, 0, 0); - - if (!of_device_is_compatible(node, "nxp,tda998x")) { - of_node_put(node); - return 0; - } - - if (match) - drm_of_component_match_add(dev, match, dev_match_of, node); - of_node_put(node); - return 1; -} diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.h b/drivers/gpu/drm/tilcdc/tilcdc_external.h index 763d18f006c7..1df237e227c9 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_external.h +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.h @@ -18,9 +18,7 @@ #ifndef __TILCDC_EXTERNAL_H__ #define __TILCDC_EXTERNAL_H__ -int tilcdc_add_component_encoder(struct drm_device *dev); void tilcdc_remove_external_device(struct drm_device *dev); -int tilcdc_get_external_components(struct device *dev, - struct component_match **match); int tilcdc_attach_external_device(struct drm_device *ddev); + #endif /* __TILCDC_SLAVE_H__ */ -- 2.11.0 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel