From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751994AbdBFRnG (ORCPT ); Mon, 6 Feb 2017 12:43:06 -0500 Received: from mail.kernel.org ([198.145.29.136]:39114 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751762AbdBFRnE (ORCPT ); Mon, 6 Feb 2017 12:43:04 -0500 MIME-Version: 1.0 In-Reply-To: <20170206172306.GY3140@e110455-lin.cambridge.arm.com> References: <20170204033635.10250-1-robh@kernel.org> <20170204033635.10250-4-robh@kernel.org> <20170206102933.GV3140@e110455-lin.cambridge.arm.com> <20170206170949.tmm4m2lm2rybm5dh@rob-hp-laptop> <20170206172306.GY3140@e110455-lin.cambridge.arm.com> From: Rob Herring Date: Mon, 6 Feb 2017 11:42:36 -0600 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 3/5] drm: convert drivers to use of_graph_get_remote_node To: Liviu Dudau Cc: David Airlie , Daniel Vetter , Sean Paul , dri-devel , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Frank Rowand , Boris Brezillon , Archit Taneja , Jingoo Han , Inki Dae , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Kukjin Kim , Krzysztof Kozlowski , Javier Martinez Canillas , Stefan Agner , Alison Wang , Xinliang Liu , Rongrong Zou , Xinwei Kong , Chen Feng , Philipp Zabel , CK Hu , Matthias Brugger , Marek Vasut , Mark Yao , Heiko Stuebner , Maxime Ripard , Chen-Yu Tsai , Mali DP Maintainers , Neil Armstrong , Carlo Caione , Kevin Hilman , Rob Clark , Jyri Sarha , Tomi Valkeinen , Eric Anholt , Russell King Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Feb 6, 2017 at 11:23 AM, Liviu Dudau wrote: > On Mon, Feb 06, 2017 at 11:09:49AM -0600, Rob Herring wrote: >> On Mon, Feb 06, 2017 at 10:29:33AM +0000, Liviu Dudau wrote: >> > On Fri, Feb 03, 2017 at 09:36:33PM -0600, Rob Herring wrote: >> > > Convert drivers to use the new of_graph_get_remote_node() helper >> > > instead of parsing the endpoint node and then getting the remote device >> > > node. Now drivers can just specify the device node and which >> > > port/endpoint and get back the connected remote device node. The details >> > > of the graph binding are nicely abstracted into the core OF graph code. >> > > >> > > This changes some error messages to debug messages (in the graph core). >> > > Graph connections are often "no connects" depending on the particular >> > > board, so we want to avoid spurious messages. Plus the kernel is not a >> > > DT validator. [...] >> > > - /* add the remote encoder port as component */ >> > > - port = of_graph_get_remote_port_parent(ep); >> > > - of_node_put(ep); >> > > - if (!port || !of_device_is_available(port)) { >> > > - of_node_put(port); >> > > - return -EAGAIN; >> > >> > The HDLCD change looks reasonable except for this -EAGAIN business. I'll have to >> > test your changes on my setup to see how this affects having the encoder as a module. >> >> What are you expecting to happen with -EAGAIN? This one was a bit of an >> oddball. > > When both the HDLCD and the TDA998x drivers are compiled as modules, the order in which > they are inserted can be somewhat random (due to testing). It is at that time when you > want the probe of HDLCD to be retried on the insmod-ing of the tda998x.ko rather than > fail entirely. > >> >> This condition would only change if you had an overlay. That's a use >> case that needs to be handled in a common way ('cause I don't want to >> clean-up every driver doing overlays in their own way latter). Just >> having "status" changing at runtime would have all sorts of implications >> in the kernel. > > Hmm, not sure what you mean here with overlays. Are you thinking that the > remote port is initially disabled and then re-enabled by an overlay? That is > not the only way of_device_is_available() can fail, see above regarding modules. Russell pretty much answered most of this, but specifically for of_device_is_available, the only way of_device_is_available() can change is a DT change with "status" changing. The only way of_graph_get_remote_port_parent changes is also from a DT change. Rob From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH 3/5] drm: convert drivers to use of_graph_get_remote_node Date: Mon, 6 Feb 2017 11:42:36 -0600 Message-ID: References: <20170204033635.10250-1-robh@kernel.org> <20170204033635.10250-4-robh@kernel.org> <20170206102933.GV3140@e110455-lin.cambridge.arm.com> <20170206170949.tmm4m2lm2rybm5dh@rob-hp-laptop> <20170206172306.GY3140@e110455-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: In-Reply-To: <20170206172306.GY3140-A/Nd4k6kWRHZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Liviu Dudau Cc: David Airlie , Daniel Vetter , Sean Paul , dri-devel , "devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Frank Rowand , Boris Brezillon , Archit Taneja , Jingoo Han , Inki Dae , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Kukjin Kim , Krzysztof Kozlowski , Javier Martinez Canillas , Stefan Agner List-Id: devicetree@vger.kernel.org On Mon, Feb 6, 2017 at 11:23 AM, Liviu Dudau wrote: > On Mon, Feb 06, 2017 at 11:09:49AM -0600, Rob Herring wrote: >> On Mon, Feb 06, 2017 at 10:29:33AM +0000, Liviu Dudau wrote: >> > On Fri, Feb 03, 2017 at 09:36:33PM -0600, Rob Herring wrote: >> > > Convert drivers to use the new of_graph_get_remote_node() helper >> > > instead of parsing the endpoint node and then getting the remote device >> > > node. Now drivers can just specify the device node and which >> > > port/endpoint and get back the connected remote device node. The details >> > > of the graph binding are nicely abstracted into the core OF graph code. >> > > >> > > This changes some error messages to debug messages (in the graph core). >> > > Graph connections are often "no connects" depending on the particular >> > > board, so we want to avoid spurious messages. Plus the kernel is not a >> > > DT validator. [...] >> > > - /* add the remote encoder port as component */ >> > > - port = of_graph_get_remote_port_parent(ep); >> > > - of_node_put(ep); >> > > - if (!port || !of_device_is_available(port)) { >> > > - of_node_put(port); >> > > - return -EAGAIN; >> > >> > The HDLCD change looks reasonable except for this -EAGAIN business. I'll have to >> > test your changes on my setup to see how this affects having the encoder as a module. >> >> What are you expecting to happen with -EAGAIN? This one was a bit of an >> oddball. > > When both the HDLCD and the TDA998x drivers are compiled as modules, the order in which > they are inserted can be somewhat random (due to testing). It is at that time when you > want the probe of HDLCD to be retried on the insmod-ing of the tda998x.ko rather than > fail entirely. > >> >> This condition would only change if you had an overlay. That's a use >> case that needs to be handled in a common way ('cause I don't want to >> clean-up every driver doing overlays in their own way latter). Just >> having "status" changing at runtime would have all sorts of implications >> in the kernel. > > Hmm, not sure what you mean here with overlays. Are you thinking that the > remote port is initially disabled and then re-enabled by an overlay? That is > not the only way of_device_is_available() can fail, see above regarding modules. Russell pretty much answered most of this, but specifically for of_device_is_available, the only way of_device_is_available() can change is a DT change with "status" changing. The only way of_graph_get_remote_port_parent changes is also from a DT change. Rob -- 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