From patchwork Mon Dec 4 19:13:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Tull X-Patchwork-Id: 10091377 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9061A60327 for ; Mon, 4 Dec 2017 19:14:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 817E029246 for ; Mon, 4 Dec 2017 19:14:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 764F929249; Mon, 4 Dec 2017 19:14:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1F86829246 for ; Mon, 4 Dec 2017 19:14:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752816AbdLDTOI (ORCPT ); Mon, 4 Dec 2017 14:14:08 -0500 Received: from mail.kernel.org ([198.145.29.99]:42854 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752806AbdLDTOD (ORCPT ); Mon, 4 Dec 2017 14:14:03 -0500 Received: from localhost.localdomain (unknown [192.55.54.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5654021933; Mon, 4 Dec 2017 19:14:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5654021933 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=atull@kernel.org From: Alan Tull To: Moritz Fischer , Rob Herring , Frank Rowand , Pantelis Antoniou Cc: Alan Tull , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fpga@vger.kernel.org Subject: [PATCH 2/2] of: dynamic: add overlay-allowed DT property Date: Mon, 4 Dec 2017 13:13:57 -0600 Message-Id: <20171204191357.3211-3-atull@kernel.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171204191357.3211-1-atull@kernel.org> References: <20171204191357.3211-1-atull@kernel.org> Sender: linux-fpga-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fpga@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Allow DT nodes to be marked as valid targets for DT overlays by the added "overlay-allowed" property. Signed-off-by: Alan Tull --- drivers/of/base.c | 4 ++-- drivers/of/dynamic.c | 3 +++ drivers/of/fdt.c | 3 +++ drivers/of/of_private.h | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 26618ba..ac6b326 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -116,8 +116,8 @@ void __init of_core_init(void) proc_symlink("device-tree", NULL, "/sys/firmware/devicetree/base"); } -static struct property *__of_find_property(const struct device_node *np, - const char *name, int *lenp) +struct property *__of_find_property(const struct device_node *np, + const char *name, int *lenp) { struct property *pp; diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c index ab988d8..fae9b85 100644 --- a/drivers/of/dynamic.c +++ b/drivers/of/dynamic.c @@ -207,6 +207,9 @@ static void __of_attach_node(struct device_node *np) np->name = __of_get_property(np, "name", NULL) ? : ""; np->type = __of_get_property(np, "device_type", NULL) ? : ""; + if (__of_find_property(np, "overlay-allowed", NULL)) + of_node_set_flag(np, OF_OVERLAY_ENABLED); + phandle = __of_get_property(np, "phandle", &sz); if (!phandle) phandle = __of_get_property(np, "linux,phandle", &sz); diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 4675e5a..9237f30 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -323,6 +323,9 @@ static bool populate_node(const void *blob, np->name = ""; if (!np->type) np->type = ""; + + if (of_find_property(np, "overlay-allowed", NULL)) + of_node_set_flag(np, OF_OVERLAY_ENABLED); } *pnp = np; diff --git a/drivers/of/of_private.h b/drivers/of/of_private.h index 92a9a36..75fcba3 100644 --- a/drivers/of/of_private.h +++ b/drivers/of/of_private.h @@ -115,6 +115,8 @@ struct device_node *__of_find_node_by_path(struct device_node *parent, struct device_node *__of_find_node_by_full_path(struct device_node *node, const char *path); +extern struct property *__of_find_property(const struct device_node *np, + const char *name, int *lenp); extern const void *__of_get_property(const struct device_node *np, const char *name, int *lenp); extern int __of_add_property(struct device_node *np, struct property *prop);