From: Jyri Sarha <jsarha@ti.com> To: Rob Herring <robh@kernel.org>, David Airlie <airlied@linux.ie>, Daniel Vetter <daniel.vetter@intel.com>, Sean Paul <seanpaul@chromium.org> Cc: <dri-devel@lists.freedesktop.org>, <devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>, Frank Rowand <frowand.list@gmail.com>, Boris Brezillon <boris.brezillon@free-electrons.com>, Archit Taneja <architt@codeaurora.org>, Jingoo Han <jingoohan1@gmail.com>, Inki Dae <inki.dae@samsung.com>, Joonyoung Shim <jy0922.shim@samsung.com>, Seung-Woo Kim <sw0312.kim@samsung.com>, Kyungmin Park <kyungmin.park@samsung.com>, Kukjin Kim <kgene@kernel.org>, Krzysztof Kozlowski <krzk@kernel.org>, Javier Martinez Canillas <javier@osg.samsung.com>, Stefan Agner <stefan@agner.ch>, Alison Wang <alison.wang@freescale.com>, Xinliang Liu <z.liuxinliang@hisilicon.com>, Rongrong Zou <zourongrong@gmail.com>, Xinwei Kong <kong.kongxinwei@hisilicon.com>, Chen Feng <puck.chen@hisilicon.com>, Philipp Zabel <p.zabel@pengutronix.de>, CK Hu <ck.hu@mediatek.com>, Matthias Brugger <matthias.bgg@gmail.com>, Marek Vasut <marex@denx.de>, Mark Yao <mark.yao@rock-chips.com>, Heiko Stuebner <heiko@sntech.de>, Maxime Ripard <maxime.ripard@free-electrons.com>, Chen-Yu Tsai <wens@csie.org>, Liviu Dudau <liviu.dudau@arm.com>, Mali DP Maintainers <malidp@foss.arm.com>, Neil Armstrong <narmstrong@baylibre.com>, Carlo Caione <carlo@caione.org>, Kevin Hilman <khilman@baylibre.com>, Rob Clark <robdclark@gmail.com>, Tomi Valkeinen <tomi.valkeinen@ti.com>, Eric Anholt <eric@anholt.net>, Russell King <rmk+kernel@armlinux.org.uk> Subject: Re: [PATCH 3/5] drm: convert drivers to use of_graph_get_remote_node Date: Mon, 6 Feb 2017 10:31:15 +0200 [thread overview] Message-ID: <270924f7-8e92-a99a-a185-c814cdf1fe01@ti.com> (raw) In-Reply-To: <20170204033635.10250-4-robh@kernel.org> Thanks Rob, for nice cleanup, but ... On 02/04/17 05:36, Rob Herring wrote: > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c > index 6dfdb145f3bb..e74cc236a79b 100644 > --- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c > +++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c > @@ -1013,16 +1013,7 @@ int tilcdc_crtc_create(struct drm_device *dev) > drm_crtc_helper_add(crtc, &tilcdc_crtc_helper_funcs); > > if (priv->is_componentized) { > - struct device_node *ports = > - of_get_child_by_name(dev->dev->of_node, "ports"); > - > - if (ports) { > - crtc->port = of_get_child_by_name(ports, "port"); > - of_node_put(ports); > - } else { > - crtc->port = > - of_get_child_by_name(dev->dev->of_node, "port"); > - } > + crtc->port = of_graph_get_port_by_id(dev->dev->of_node, 0, 0); > if (!crtc->port) { /* This should never happen */ > dev_err(dev->dev, "Port node not found in %s\n", > dev->dev->of_node->full_name); > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c > index c67d7cd7d57e..b7523dce4e8a 100644 > --- a/drivers/gpu/drm/tilcdc/tilcdc_external.c > +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c > @@ -187,39 +187,6 @@ int tilcdc_attach_bridge(struct drm_device *ddev, struct drm_bridge *bridge) > return ret; > } > > -static int tilcdc_node_has_port(struct device_node *dev_node) > -{ > - struct device_node *node; > - > - node = of_get_child_by_name(dev_node, "ports"); > - if (!node) > - node = of_get_child_by_name(dev_node, "port"); > - if (!node) > - return 0; > - of_node_put(node); > - > - return 1; > -} > - > -static > -struct device_node *tilcdc_get_remote_node(struct device_node *node) > -{ > - struct device_node *ep; > - struct device_node *parent; > - > - if (!tilcdc_node_has_port(node)) > - return NULL; > - > - ep = of_graph_get_next_endpoint(node, NULL); > - if (!ep) > - return NULL; > - > - parent = of_graph_get_remote_port_parent(ep); > - of_node_put(ep); > - > - return parent; > -} > - > int tilcdc_attach_external_device(struct drm_device *ddev) > { > struct tilcdc_drm_private *priv = ddev->dev_private; > @@ -227,7 +194,7 @@ int tilcdc_attach_external_device(struct drm_device *ddev) > struct drm_bridge *bridge; > int ret; > > - remote_node = tilcdc_get_remote_node(ddev->dev->of_node); > + remote_node = of_graph_get_remote_node(ddev->dev->of_node, 0, 0); > if (!remote_node) > return 0; > > @@ -266,35 +233,18 @@ int tilcdc_get_external_components(struct device *dev, > struct component_match **match) > { > struct device_node *node; > - struct device_node *ep = NULL; > - int count = 0; > - int ret = 0; > > - if (!tilcdc_node_has_port(dev->of_node)) > + if (!match) > return 0; This will break tilcdc on setups that use the old tilcdc internal panel- or tfp410- support. The driver uses tilcdc_get_external_components() with match == NULL to check if the setup uses graph binding or legacy internal panel/tfp410 support. My intention is to get rid off the legacy internal encoder and connector support (I even did that once already, but DRM had lot of infrastructure changes in that area and my changes became obsolete), but we still need it. > > - while ((ep = of_graph_get_next_endpoint(dev->of_node, ep))) { > - node = of_graph_get_remote_port_parent(ep); > - if (!node || !of_device_is_available(node)) { > - of_node_put(node); > - continue; > - } > - > - dev_dbg(dev, "Subdevice node '%s' found\n", node->name); > - > - if (of_device_is_compatible(node, "nxp,tda998x")) { > - if (match) > - drm_of_component_match_add(dev, match, > - dev_match_of, node); > - ret = 1; > - } > + node = of_graph_get_remote_node(dev->of_node, 0, 0); > > + if (!of_device_is_compatible(node, "nxp,tda998x")) { > of_node_put(node); > - if (count++ > 1) { > - dev_err(dev, "Only one port is supported\n"); > - return -EINVAL; > - } > + return 0; > } > > - return ret; Simply remove the above mentioned if statement add and this here: if (match) > + drm_of_component_match_add(dev, match, dev_match_of, node); > + of_node_put(node); > + return 1; > } Best regards, Jyri
WARNING: multiple messages have this Message-ID (diff)
From: Jyri Sarha <jsarha-l0cyMroinI0@public.gmane.org> To: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, David Airlie <airlied-cv59FeDIM0c@public.gmane.org>, Daniel Vetter <daniel.vetter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>, Sean Paul <seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Cc: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Boris Brezillon <boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>, Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>, Jingoo Han <jingoohan1-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Inki Dae <inki.dae-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>, Joonyoung Shim <jy0922.shim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>, Seung-Woo Kim <sw0312.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>, Kyungmin Park <kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>, Kukjin Kim <kgene-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Krzysztof Kozlowski <krzk-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Javier Martinez Canillas <javier-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org>, Stefan Agner <stefan-XLVq0VzYD2Y@public.gmane.org>, Alison Wang <alison.wang-KZfg59tc24xl57MIdRCFDg@public.gmane.org>, Xinliang Liu <z.liuxinliang-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org>, Rongrong Zou <zourongrong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Xinwei Kong <kong.kongxinwei-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org>, Chen Subject: Re: [PATCH 3/5] drm: convert drivers to use of_graph_get_remote_node Date: Mon, 6 Feb 2017 10:31:15 +0200 [thread overview] Message-ID: <270924f7-8e92-a99a-a185-c814cdf1fe01@ti.com> (raw) In-Reply-To: <20170204033635.10250-4-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Thanks Rob, for nice cleanup, but ... On 02/04/17 05:36, Rob Herring wrote: > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c > index 6dfdb145f3bb..e74cc236a79b 100644 > --- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c > +++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c > @@ -1013,16 +1013,7 @@ int tilcdc_crtc_create(struct drm_device *dev) > drm_crtc_helper_add(crtc, &tilcdc_crtc_helper_funcs); > > if (priv->is_componentized) { > - struct device_node *ports = > - of_get_child_by_name(dev->dev->of_node, "ports"); > - > - if (ports) { > - crtc->port = of_get_child_by_name(ports, "port"); > - of_node_put(ports); > - } else { > - crtc->port = > - of_get_child_by_name(dev->dev->of_node, "port"); > - } > + crtc->port = of_graph_get_port_by_id(dev->dev->of_node, 0, 0); > if (!crtc->port) { /* This should never happen */ > dev_err(dev->dev, "Port node not found in %s\n", > dev->dev->of_node->full_name); > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c > index c67d7cd7d57e..b7523dce4e8a 100644 > --- a/drivers/gpu/drm/tilcdc/tilcdc_external.c > +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c > @@ -187,39 +187,6 @@ int tilcdc_attach_bridge(struct drm_device *ddev, struct drm_bridge *bridge) > return ret; > } > > -static int tilcdc_node_has_port(struct device_node *dev_node) > -{ > - struct device_node *node; > - > - node = of_get_child_by_name(dev_node, "ports"); > - if (!node) > - node = of_get_child_by_name(dev_node, "port"); > - if (!node) > - return 0; > - of_node_put(node); > - > - return 1; > -} > - > -static > -struct device_node *tilcdc_get_remote_node(struct device_node *node) > -{ > - struct device_node *ep; > - struct device_node *parent; > - > - if (!tilcdc_node_has_port(node)) > - return NULL; > - > - ep = of_graph_get_next_endpoint(node, NULL); > - if (!ep) > - return NULL; > - > - parent = of_graph_get_remote_port_parent(ep); > - of_node_put(ep); > - > - return parent; > -} > - > int tilcdc_attach_external_device(struct drm_device *ddev) > { > struct tilcdc_drm_private *priv = ddev->dev_private; > @@ -227,7 +194,7 @@ int tilcdc_attach_external_device(struct drm_device *ddev) > struct drm_bridge *bridge; > int ret; > > - remote_node = tilcdc_get_remote_node(ddev->dev->of_node); > + remote_node = of_graph_get_remote_node(ddev->dev->of_node, 0, 0); > if (!remote_node) > return 0; > > @@ -266,35 +233,18 @@ int tilcdc_get_external_components(struct device *dev, > struct component_match **match) > { > struct device_node *node; > - struct device_node *ep = NULL; > - int count = 0; > - int ret = 0; > > - if (!tilcdc_node_has_port(dev->of_node)) > + if (!match) > return 0; This will break tilcdc on setups that use the old tilcdc internal panel- or tfp410- support. The driver uses tilcdc_get_external_components() with match == NULL to check if the setup uses graph binding or legacy internal panel/tfp410 support. My intention is to get rid off the legacy internal encoder and connector support (I even did that once already, but DRM had lot of infrastructure changes in that area and my changes became obsolete), but we still need it. > > - while ((ep = of_graph_get_next_endpoint(dev->of_node, ep))) { > - node = of_graph_get_remote_port_parent(ep); > - if (!node || !of_device_is_available(node)) { > - of_node_put(node); > - continue; > - } > - > - dev_dbg(dev, "Subdevice node '%s' found\n", node->name); > - > - if (of_device_is_compatible(node, "nxp,tda998x")) { > - if (match) > - drm_of_component_match_add(dev, match, > - dev_match_of, node); > - ret = 1; > - } > + node = of_graph_get_remote_node(dev->of_node, 0, 0); > > + if (!of_device_is_compatible(node, "nxp,tda998x")) { > of_node_put(node); > - if (count++ > 1) { > - dev_err(dev, "Only one port is supported\n"); > - return -EINVAL; > - } > + return 0; > } > > - return ret; Simply remove the above mentioned if statement add and this here: if (match) > + drm_of_component_match_add(dev, match, dev_match_of, node); > + of_node_put(node); > + return 1; > } Best regards, Jyri -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-02-06 8:33 UTC|newest] Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-02-04 3:36 [PATCH 0/5] DRM OF graph clean-up Rob Herring 2017-02-04 3:36 ` Rob Herring 2017-02-04 3:36 ` [PATCH 1/5] of: introduce of_graph_get_remote_node Rob Herring 2017-02-04 3:36 ` Rob Herring 2017-02-04 16:10 ` Vladimir Zapolskiy 2017-02-04 16:10 ` Vladimir Zapolskiy 2017-02-06 8:50 ` Daniel Vetter 2017-02-06 8:50 ` Daniel Vetter 2017-02-06 13:41 ` Rob Herring 2017-02-06 13:41 ` Rob Herring 2017-02-06 10:32 ` Philipp Zabel 2017-02-06 10:32 ` Philipp Zabel 2017-02-06 13:54 ` Rob Herring 2017-02-06 13:54 ` Rob Herring 2017-02-06 14:03 ` Philipp Zabel 2017-02-06 14:03 ` Philipp Zabel 2017-02-04 3:36 ` [PATCH 2/5] drm: of: introduce drm_of_find_panel_or_bridge Rob Herring 2017-02-04 3:36 ` Rob Herring 2017-02-06 10:18 ` Liviu Dudau 2017-02-06 10:18 ` Liviu Dudau 2017-02-06 16:20 ` Rob Herring 2017-02-06 16:20 ` Rob Herring 2017-02-06 10:42 ` Philipp Zabel 2017-02-06 10:42 ` Philipp Zabel 2017-02-06 16:53 ` Rob Herring 2017-02-06 16:53 ` Rob Herring 2017-02-06 17:45 ` Philipp Zabel 2017-02-06 17:45 ` Philipp Zabel 2017-02-10 19:42 ` Frank Rowand 2017-02-10 19:42 ` Frank Rowand 2017-02-04 3:36 ` [PATCH 3/5] drm: convert drivers to use of_graph_get_remote_node Rob Herring 2017-02-04 3:36 ` Rob Herring 2017-02-06 8:31 ` Jyri Sarha [this message] 2017-02-06 8:31 ` Jyri Sarha 2017-02-06 10:17 ` Neil Armstrong 2017-02-06 10:17 ` Neil Armstrong 2017-02-06 10:29 ` Liviu Dudau 2017-02-06 10:29 ` Liviu Dudau 2017-02-06 17:09 ` Rob Herring 2017-02-06 17:09 ` Rob Herring 2017-02-06 17:23 ` Liviu Dudau 2017-02-06 17:23 ` Liviu Dudau 2017-02-06 17:34 ` Russell King - ARM Linux 2017-02-06 17:34 ` Russell King - ARM Linux 2017-02-06 17:55 ` Liviu Dudau 2017-02-06 17:55 ` Liviu Dudau 2017-02-06 18:09 ` Russell King - ARM Linux 2017-02-06 18:09 ` Russell King - ARM Linux 2017-02-06 17:42 ` Rob Herring 2017-02-06 17:42 ` Rob Herring 2017-02-06 10:52 ` Philipp Zabel 2017-02-06 10:52 ` Philipp Zabel 2017-02-06 13:40 ` Rob Herring 2017-02-06 13:40 ` Rob Herring 2017-02-08 11:57 ` Liviu Dudau 2017-02-08 11:57 ` Liviu Dudau 2017-02-08 20:44 ` Eric Anholt 2017-02-08 20:44 ` Eric Anholt 2017-02-04 3:36 ` [PATCH 4/5] drm: convert drivers to use drm_of_find_panel_or_bridge Rob Herring 2017-02-04 3:36 ` Rob Herring 2017-02-04 20:26 ` Fabio Estevam 2017-02-04 20:26 ` Fabio Estevam 2017-02-05 22:25 ` Rob Herring 2017-02-05 22:25 ` Rob Herring 2017-02-06 0:01 ` Fabio Estevam 2017-02-06 0:01 ` Fabio Estevam 2017-02-06 1:22 ` Fabio Estevam 2017-02-06 1:22 ` Fabio Estevam 2017-02-06 10:03 ` Maxime Ripard 2017-02-06 10:03 ` Maxime Ripard 2017-02-06 17:32 ` Rob Herring 2017-02-06 17:32 ` Rob Herring 2017-02-08 7:46 ` Maxime Ripard 2017-02-08 7:46 ` Maxime Ripard 2017-02-06 11:07 ` Philipp Zabel 2017-02-06 11:07 ` Philipp Zabel 2017-02-04 3:36 ` [PATCH 5/5] drm: omap: use common OF graph helpers Rob Herring 2017-02-04 3:36 ` Rob Herring 2017-02-04 10:47 ` [PATCH 0/5] DRM OF graph clean-up Russell King - ARM Linux 2017-02-04 10:47 ` Russell King - ARM Linux
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=270924f7-8e92-a99a-a185-c814cdf1fe01@ti.com \ --to=jsarha@ti.com \ --cc=airlied@linux.ie \ --cc=alison.wang@freescale.com \ --cc=architt@codeaurora.org \ --cc=boris.brezillon@free-electrons.com \ --cc=carlo@caione.org \ --cc=ck.hu@mediatek.com \ --cc=daniel.vetter@intel.com \ --cc=devicetree@vger.kernel.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=eric@anholt.net \ --cc=frowand.list@gmail.com \ --cc=heiko@sntech.de \ --cc=inki.dae@samsung.com \ --cc=javier@osg.samsung.com \ --cc=jingoohan1@gmail.com \ --cc=jy0922.shim@samsung.com \ --cc=kgene@kernel.org \ --cc=khilman@baylibre.com \ --cc=kong.kongxinwei@hisilicon.com \ --cc=krzk@kernel.org \ --cc=kyungmin.park@samsung.com \ --cc=linux-kernel@vger.kernel.org \ --cc=liviu.dudau@arm.com \ --cc=malidp@foss.arm.com \ --cc=marex@denx.de \ --cc=mark.yao@rock-chips.com \ --cc=matthias.bgg@gmail.com \ --cc=maxime.ripard@free-electrons.com \ --cc=narmstrong@baylibre.com \ --cc=p.zabel@pengutronix.de \ --cc=puck.chen@hisilicon.com \ --cc=rmk+kernel@armlinux.org.uk \ --cc=robdclark@gmail.com \ --cc=robh@kernel.org \ --cc=seanpaul@chromium.org \ --cc=stefan@agner.ch \ --cc=sw0312.kim@samsung.com \ --cc=tomi.valkeinen@ti.com \ --cc=wens@csie.org \ --cc=z.liuxinliang@hisilicon.com \ --cc=zourongrong@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.