From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E5E88C433DF for ; Wed, 1 Jul 2020 07:55:59 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BA952207C4 for ; Wed, 1 Jul 2020 07:55:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="l7jruMLb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BA952207C4 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EBBFD893AB; Wed, 1 Jul 2020 07:55:58 +0000 (UTC) Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 422ED893AB for ; Wed, 1 Jul 2020 07:55:58 +0000 (UTC) Received: from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 48544556; Wed, 1 Jul 2020 09:55:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1593590156; bh=SBS3cYIeUtLrgvHJfEpKTIWd7IrgonFBNo28g+dS7hg=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=l7jruMLb0PL0NIdRMEPeknmr8nmPonICdPvRXE1BVOJ8LkdpsZ10TInTtRLkUPcD4 cHt0Z6PkyOb4+3MIT4odXNkITMHPXguWRi1aWX3YWodACAeFflwNIOyFNnxwVqRDL3 +GSb8tQVMUG5XsCnVqFznh48pbno9RA2oYfeIutg= Date: Wed, 1 Jul 2020 10:55:52 +0300 From: Laurent Pinchart To: Dmitry Osipenko Subject: Re: [PATCH v10 1/2] of_graph: add of_graph_is_present() Message-ID: <20200701075552.GJ5963@pendragon.ideasonboard.com> References: <20200701074232.13632-1-digetx@gmail.com> <20200701074232.13632-2-digetx@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200701074232.13632-2-digetx@gmail.com> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Sam Ravnborg , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rob Herring , Thierry Reding , linux-tegra@vger.kernel.org, Frank Rowand Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi Dmitry, Thank you for the patch. On Wed, Jul 01, 2020 at 10:42:31AM +0300, Dmitry Osipenko wrote: > In some cases it's very useful to silently check whether port node exists > at all in a device-tree before proceeding with parsing the graph. The DRM > bridges code is one example of such case where absence of a graph in a > device-tree is a legit condition. > > This patch adds of_graph_is_present() which returns true if given > device-tree node contains OF graph port. > > Reviewed-by: Rob Herring > Signed-off-by: Dmitry Osipenko Reviewed-by: Laurent Pinchart > --- > drivers/of/property.c | 23 +++++++++++++++++++++++ > include/linux/of_graph.h | 6 ++++++ > 2 files changed, 29 insertions(+) > > diff --git a/drivers/of/property.c b/drivers/of/property.c > index 6a5760f0d6cd..fed7229d9d9f 100644 > --- a/drivers/of/property.c > +++ b/drivers/of/property.c > @@ -29,6 +29,29 @@ > > #include "of_private.h" > > +/** > + * of_graph_is_present() - check graph's presence > + * @node: pointer to device_node containing graph port > + * > + * Return: True if @node has a port or ports (with a port) sub-node, > + * false otherwise. > + */ > +bool of_graph_is_present(const struct device_node *node) > +{ > + struct device_node *ports, *port; > + > + ports = of_get_child_by_name(node, "ports"); > + if (ports) > + node = ports; > + > + port = of_get_child_by_name(node, "port"); > + of_node_put(ports); > + of_node_put(port); > + > + return !!port; > +} > +EXPORT_SYMBOL(of_graph_is_present); > + > /** > * of_property_count_elems_of_size - Count the number of elements in a property > * > diff --git a/include/linux/of_graph.h b/include/linux/of_graph.h > index 01038a6aade0..4d7756087b6b 100644 > --- a/include/linux/of_graph.h > +++ b/include/linux/of_graph.h > @@ -38,6 +38,7 @@ struct of_endpoint { > child = of_graph_get_next_endpoint(parent, child)) > > #ifdef CONFIG_OF > +bool of_graph_is_present(const struct device_node *node); > int of_graph_parse_endpoint(const struct device_node *node, > struct of_endpoint *endpoint); > int of_graph_get_endpoint_count(const struct device_node *np); > @@ -56,6 +57,11 @@ struct device_node *of_graph_get_remote_node(const struct device_node *node, > u32 port, u32 endpoint); > #else > > +static inline bool of_graph_is_present(const struct device_node *node) > +{ > + return false; > +} > + > static inline int of_graph_parse_endpoint(const struct device_node *node, > struct of_endpoint *endpoint) > { -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel