From: Rob Herring <robh@kernel.org> To: Philipp Zabel <p.zabel@pengutronix.de>, Liviu Dudau <liviu.dudau@arm.com> Cc: David Airlie <airlied@linux.ie>, Daniel Vetter <daniel.vetter@intel.com>, Sean Paul <seanpaul@chromium.org>, 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>, 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>, 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>, Jyri Sarha <jsarha@ti.com>, Tomi Valkeinen <tomi.valkeinen@ti.com>, Eric Anholt <eric@anholt.net>, Russell King <rmk+kernel@armlinux.org.uk> Subject: Re: [PATCH 2/5] drm: of: introduce drm_of_find_panel_or_bridge Date: Mon, 6 Feb 2017 10:53:23 -0600 [thread overview] Message-ID: <20170206165323.255ltzlzmpfx4vl7@rob-hp-laptop> (raw) In-Reply-To: <1486377768.3005.34.camel@pengutronix.de> On Mon, Feb 06, 2017 at 11:42:48AM +0100, Philipp Zabel wrote: > On Fri, 2017-02-03 at 21:36 -0600, Rob Herring wrote: > > Many drivers have a common pattern of searching the OF graph for either an > > attached panel or bridge and then finding the DRM struct for the panel > > or bridge. Also, most drivers need to handle deferred probing when the > > DRM device is not yet instantiated. Create a common function, > > drm_of_find_panel_or_bridge, to find the connected node and the > > associated DRM panel or bridge device. [...] > > +int drm_of_find_panel_or_bridge(const struct device_node *np, > > + int port, int endpoint, > > + struct drm_panel **panel, > > + struct drm_bridge **bridge) > > +{ > > + int ret = -ENODEV; > > This is only returned if !panel && !bridge. I'd consider this invalid > usage of this function, so maybe use -EINVAL? Yes. > > + struct device_node *remote; > > + > > + remote = of_graph_get_remote_node(np, port, endpoint); > > + if (!remote) > > + return -ENODEV; > > + > > + if (bridge) > > + *bridge = NULL; > > I would move this ^ ... > > > + if (panel) { > > + *panel = of_drm_find_panel(remote); > > + if (*panel) { > > ... here. Okay. > > + ret = 0; > > + goto out_put; > > + } > > + ret = -EPROBE_DEFER; > > + } > > + > > + if (bridge) { > > + *bridge = of_drm_find_bridge(remote); > > + if (*bridge) > > + ret = 0; > > + else > > + ret = -EPROBE_DEFER; > > + } > > +out_put: > > + of_node_put(remote); > > + return ret; > > +} I've ended up re-writing things a bit getting rid of the goto and the result looks like this: int drm_of_find_panel_or_bridge(const struct device_node *np, int port, int endpoint, struct drm_panel **panel, struct drm_bridge **bridge) { int ret = -EPROBE_DEFER; struct device_node *remote; if (!panel && !bridge) return -EINVAL; remote = of_graph_get_remote_node(np, port, endpoint); if (!remote) return -ENODEV; if (panel) { *panel = of_drm_find_panel(remote); if (*panel) { if (bridge) *bridge = NULL; ret = 0; } } /* No panel found yet, check for a bridge next. */ if (ret && bridge) { *bridge = of_drm_find_bridge(remote); if (*bridge) ret = 0; } of_node_put(remote); return ret; }
WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> To: Philipp Zabel <p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>, Liviu Dudau <liviu.dudau-5wv7dgnIgG8@public.gmane.org> Cc: David Airlie <airlied-cv59FeDIM0c@public.gmane.org>, Daniel Vetter <daniel.vetter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>, Sean Paul <seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>, 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@hisi> Subject: Re: [PATCH 2/5] drm: of: introduce drm_of_find_panel_or_bridge Date: Mon, 6 Feb 2017 10:53:23 -0600 [thread overview] Message-ID: <20170206165323.255ltzlzmpfx4vl7@rob-hp-laptop> (raw) In-Reply-To: <1486377768.3005.34.camel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> On Mon, Feb 06, 2017 at 11:42:48AM +0100, Philipp Zabel wrote: > On Fri, 2017-02-03 at 21:36 -0600, Rob Herring wrote: > > Many drivers have a common pattern of searching the OF graph for either an > > attached panel or bridge and then finding the DRM struct for the panel > > or bridge. Also, most drivers need to handle deferred probing when the > > DRM device is not yet instantiated. Create a common function, > > drm_of_find_panel_or_bridge, to find the connected node and the > > associated DRM panel or bridge device. [...] > > +int drm_of_find_panel_or_bridge(const struct device_node *np, > > + int port, int endpoint, > > + struct drm_panel **panel, > > + struct drm_bridge **bridge) > > +{ > > + int ret = -ENODEV; > > This is only returned if !panel && !bridge. I'd consider this invalid > usage of this function, so maybe use -EINVAL? Yes. > > + struct device_node *remote; > > + > > + remote = of_graph_get_remote_node(np, port, endpoint); > > + if (!remote) > > + return -ENODEV; > > + > > + if (bridge) > > + *bridge = NULL; > > I would move this ^ ... > > > + if (panel) { > > + *panel = of_drm_find_panel(remote); > > + if (*panel) { > > ... here. Okay. > > + ret = 0; > > + goto out_put; > > + } > > + ret = -EPROBE_DEFER; > > + } > > + > > + if (bridge) { > > + *bridge = of_drm_find_bridge(remote); > > + if (*bridge) > > + ret = 0; > > + else > > + ret = -EPROBE_DEFER; > > + } > > +out_put: > > + of_node_put(remote); > > + return ret; > > +} I've ended up re-writing things a bit getting rid of the goto and the result looks like this: int drm_of_find_panel_or_bridge(const struct device_node *np, int port, int endpoint, struct drm_panel **panel, struct drm_bridge **bridge) { int ret = -EPROBE_DEFER; struct device_node *remote; if (!panel && !bridge) return -EINVAL; remote = of_graph_get_remote_node(np, port, endpoint); if (!remote) return -ENODEV; if (panel) { *panel = of_drm_find_panel(remote); if (*panel) { if (bridge) *bridge = NULL; ret = 0; } } /* No panel found yet, check for a bridge next. */ if (ret && bridge) { *bridge = of_drm_find_bridge(remote); if (*bridge) ret = 0; } of_node_put(remote); return ret; } -- 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 16:53 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 [this message] 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 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=20170206165323.255ltzlzmpfx4vl7@rob-hp-laptop \ --to=robh@kernel.org \ --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=jsarha@ti.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=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.