Hi, On Wed, Dec 05, 2018 at 05:00:21PM +0200, Laurent Pinchart wrote: > Now that the direction of OF graph walk has been reversed, there's no > need to lookup devices by port as we have no sink device connected > through multiple sink ports. Simplify OF lookup of the DSS devices to > look them up by node only. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- Reviewed-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx> -- Sebastian > drivers/gpu/drm/omapdrm/dss/base.c | 5 +-- > drivers/gpu/drm/omapdrm/dss/dss-of.c | 60 ++++----------------------- > drivers/gpu/drm/omapdrm/dss/omapdss.h | 3 +- > 3 files changed, 10 insertions(+), 58 deletions(-) > > diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c > index 36f2d41c9935..4d7f999c8e29 100644 > --- a/drivers/gpu/drm/omapdrm/dss/base.c > +++ b/drivers/gpu/drm/omapdrm/dss/base.c > @@ -112,13 +112,12 @@ void omapdss_device_put(struct omap_dss_device *dssdev) > } > EXPORT_SYMBOL(omapdss_device_put); > > -struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src, > - unsigned int port) > +struct omap_dss_device *omapdss_find_device_by_node(struct device_node *node) > { > struct omap_dss_device *dssdev; > > list_for_each_entry(dssdev, &omapdss_devices_list, list) { > - if (dssdev->dev->of_node == src && dssdev->of_ports & BIT(port)) > + if (dssdev->dev->of_node == node) > return omapdss_device_get(dssdev); > } > > diff --git a/drivers/gpu/drm/omapdrm/dss/dss-of.c b/drivers/gpu/drm/omapdrm/dss/dss-of.c > index 0422597ac6b0..b2094055c5fc 100644 > --- a/drivers/gpu/drm/omapdrm/dss/dss-of.c > +++ b/drivers/gpu/drm/omapdrm/dss/dss-of.c > @@ -12,71 +12,25 @@ > * more details. > */ > > -#include <linux/device.h> > #include <linux/err.h> > -#include <linux/module.h> > #include <linux/of.h> > #include <linux/of_graph.h> > -#include <linux/seq_file.h> > > #include "omapdss.h" > > -static struct device_node * > -dss_of_port_get_parent_device(struct device_node *port) > -{ > - struct device_node *np; > - int i; > - > - if (!port) > - return NULL; > - > - np = of_get_parent(port); > - > - for (i = 0; i < 2 && np; ++i) { > - struct property *prop; > - > - prop = of_find_property(np, "compatible", NULL); > - > - if (prop) > - return np; > - > - np = of_get_next_parent(np); > - } > - > - return NULL; > -} > - > struct omap_dss_device * > omapdss_of_find_connected_device(struct device_node *node, unsigned int port) > { > - struct device_node *src_node; > - struct device_node *src_port; > - struct device_node *ep; > - struct omap_dss_device *src; > - u32 port_number = 0; > + struct device_node *remote_node; > + struct omap_dss_device *dssdev; > > - /* Get the endpoint... */ > - ep = of_graph_get_endpoint_by_regs(node, port, 0); > - if (!ep) > + remote_node = of_graph_get_remote_node(node, port, 0); > + if (!remote_node) > return NULL; > > - /* ... and its remote port... */ > - src_port = of_graph_get_remote_port(ep); > - of_node_put(ep); > - if (!src_port) > - return NULL; > - > - /* ... and the remote port's number and parent... */ > - of_property_read_u32(src_port, "reg", &port_number); > - src_node = dss_of_port_get_parent_device(src_port); > - of_node_put(src_port); > - if (!src_node) > - return ERR_PTR(-EINVAL); > - > - /* ... and finally the connected device. */ > - src = omapdss_find_device_by_port(src_node, port_number); > - of_node_put(src_node); > + dssdev = omapdss_find_device_by_node(remote_node); > + of_node_put(remote_node); > > - return src ? src : ERR_PTR(-EPROBE_DEFER); > + return dssdev ? dssdev : ERR_PTR(-EPROBE_DEFER); > } > EXPORT_SYMBOL_GPL(omapdss_of_find_connected_device); > diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h > index d990009ddbbd..d51cb181e2cc 100644 > --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h > +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h > @@ -481,8 +481,7 @@ void omapdss_device_register(struct omap_dss_device *dssdev); > void omapdss_device_unregister(struct omap_dss_device *dssdev); > struct omap_dss_device *omapdss_device_get(struct omap_dss_device *dssdev); > void omapdss_device_put(struct omap_dss_device *dssdev); > -struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src, > - unsigned int port); > +struct omap_dss_device *omapdss_find_device_by_node(struct device_node *node); > struct omap_dss_device *omapdss_device_get_next(struct omap_dss_device *from, > enum omap_dss_device_type type); > int omapdss_device_connect(struct dss_device *dss, > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel