From patchwork Fri Jun 3 13:29:09 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Edgar E. Iglesias" X-Patchwork-Id: 9153061 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 424B76072B for ; Fri, 3 Jun 2016 13:31:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 17A45282E8 for ; Fri, 3 Jun 2016 13:31:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0C3DC28304; Fri, 3 Jun 2016 13:31:42 +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=-4.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0D542282E8 for ; Fri, 3 Jun 2016 13:31:41 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b8pAa-0005pB-5V; Fri, 03 Jun 2016 13:29:48 +0000 Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b8pAZ-0005oi-O1 for xen-devel@lists.xen.org; Fri, 03 Jun 2016 13:29:47 +0000 Received: from [193.109.254.147] by server-12.bemta-14.messagelabs.com id 23/A3-19610-B4681575; Fri, 03 Jun 2016 13:29:47 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDIsWRWlGSWpSXmKPExsXiVRvkouvVFhh uMOmzlsWSj4tZHBg9ju7+zRTAGMWamZeUX5HAmrF1w32WgmNCFUdv7GNrYFzF18XIxSEkMJFR 4ta7dqYuRk4OFoGXLBIN07NAbAmBflaJm7sCIewYiSO9n1m7GDmA7CqJ7l4lkLCQgLrE6Xc72 CDmzGSSeLlyMzNIgk3ARGLvnwdgM0UEpCWufb7MCGIzC/hK3Nx5HCwuDGQ/eTKHGWKvqsTW1/ PBbF4Bd4k9h7oYIXbJSSy4kA4S5hTwkHh+6iUbSFgIqOTZPbUJjAILGBlWMWoUpxaVpRbpGhr oJRVlpmeU5CZm5ugaGpro5aYWFyemp+YkJhXrJefnbmIEhhQDEOxgPLfM+RCjJAeTkijv+bMB 4UJ8SfkplRmJxRnxRaU5qcWHGGU4OJQkeI+0BIYLCRalpqdWpGXmAIMbJi3BwaMkwpsLkuYtL kjMLc5Mh0idYtTl2DL13lomIZa8/LxUKXHerSBFAiBFGaV5cCNgkXaJUVZKmJcR6CghnoLUot zMElT5V4ziHIxKwrzbQKbwZOaVwG16BXQEE9ARBY/8QY4oSURISTUwLii8KpPNxfbzf+zSS8e fHOsyXVr8Wip4+v2crzdSVWu37bJQmPeSvyb//8xe9rwP5/MVZDsWpxyyYKo468qyt9puyR+V 5gXt3wztNlxbn3pS7WCezczZRjcENzTdsTN9c3r6pqn32DubvdqXVvddnql1xcJkvfUxfQe9I 57TN13r2BNmsLfNV4mlOCPRUIu5qDgRAAnGvpivAgAA X-Env-Sender: edgar.iglesias@gmail.com X-Msg-Ref: server-16.tower-27.messagelabs.com!1464960586!45592789!1 X-Originating-IP: [74.125.82.68] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 8.46; banners=-,-,- X-VirusChecked: Checked Received: (qmail 54101 invoked from network); 3 Jun 2016 13:29:46 -0000 Received: from mail-wm0-f68.google.com (HELO mail-wm0-f68.google.com) (74.125.82.68) by server-16.tower-27.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 3 Jun 2016 13:29:46 -0000 Received: by mail-wm0-f68.google.com with SMTP id a20so12077950wma.3 for ; Fri, 03 Jun 2016 06:29:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9visOAogyWQ3Im0kiEOeqBr73z00Xl1IoqoJ5yc4IsE=; b=QEWoritfHE++fAJ0iePweVFj+nDmRgVRNln+Tcgo93mDSNg1NjFgOT9zr/uvYl5DNO RdZDd5cDjeuMUOU9arFF4sMjbSNJIi+WXuFS6Bze5uqXMXLrnSscCoXbUzpVXEifsf3M D0918ovnqJRiOesYLdOQ+0UnjRUBKnJgXBbz7U8gaNVyTepFESfyhsz2vBx02TcZ/sCY kMK3Q4GKyboWDSt5HJ2wpJA+TUownlRzoFnB0jX+DDUlzzS6W5WHmeTtjhaV5NECQkC8 VEqzC2cGnytPHWE9dq6FvUjm+hZ6UFNZ1/RQ+2HYAThVSZFpdcaPiSu42hrPaZnVC5Ad HRBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9visOAogyWQ3Im0kiEOeqBr73z00Xl1IoqoJ5yc4IsE=; b=QtK2KOn+IDD0BRYk23QBSK3FN2eMjTpCBXdCkeUZ+nYgd4qJWZqxr6tlbqqNwYw7WJ hqfOLSd7f5RVcWc4NZXyoh71ubWCKMVkoCfydSmKmBq4Dnm7+s2b3CGC0c/5D+b1Ao9N qvtAw28sSNx/30XeufOv5QtLMoxnlLAk9nJaxVvJzhYCvIg8vA0aoD8zU/hWXkD6W5Xm 1e+MmilsuiWOj862P5lesTfiuZUmO2BDuSjVhJsSsr+fVkNpobO4xDLqhkpcHj5iDMk/ OqakOkHGvUTEv25X88g97b/Woo09/ToF9B1qsQa0xVdQNoU696iakNlw6w2NX7XLJzUG 9ToQ== X-Gm-Message-State: ALyK8tJtTOJH51lrfjf71JmWe8Bfz753/x0wFnsGpLXBYOHT9BHL2Jqwp2l5Y+UsTupcrA== X-Received: by 10.28.52.193 with SMTP id b184mr22482296wma.38.1464960586160; Fri, 03 Jun 2016 06:29:46 -0700 (PDT) Received: from localhost (81-231-233-234-no56.tbcn.telia.com. [81.231.233.234]) by smtp.gmail.com with ESMTPSA id r129sm6464704wmr.20.2016.06.03.06.29.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Jun 2016 06:29:45 -0700 (PDT) From: "Edgar E. Iglesias" To: xen-devel@lists.xen.org Date: Fri, 3 Jun 2016 15:29:09 +0200 Message-Id: <1464960552-6645-5-git-send-email-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1464960552-6645-1-git-send-email-edgar.iglesias@gmail.com> References: <1464960552-6645-1-git-send-email-edgar.iglesias@gmail.com> Cc: edgar.iglesias@xilinx.com, julien.grall@arm.com, sstabellini@kernel.org Subject: [Xen-devel] [RFC for-4.8 v2 4/7] xen/device-tree: Make dt_match_node match props X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: "Edgar E. Iglesias" Make dt_match_node match for existing properties. We only search for the existance of the properties, not for specific values. Signed-off-by: Edgar E. Iglesias --- xen/common/device_tree.c | 9 ++++++++- xen/include/xen/device_tree.h | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c index 06a2837..fbee354 100644 --- a/xen/common/device_tree.c +++ b/xen/common/device_tree.c @@ -323,8 +323,9 @@ dt_match_node(const struct dt_device_match *matches, return NULL; while ( matches->path || matches->type || - matches->compatible || matches->not_available ) + matches->compatible || matches->not_available || matches->props) { + const char **props = matches->props; bool_t match = 1; if ( matches->path ) @@ -339,6 +340,12 @@ dt_match_node(const struct dt_device_match *matches, if ( matches->not_available ) match &= !dt_device_is_available(node); + while ( match && props && *props ) + { + match &= dt_find_property(node, *props, NULL) != NULL; + props++; + } + if ( match ) return matches; matches++; diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h index b348913..f13d186 100644 --- a/xen/include/xen/device_tree.h +++ b/xen/include/xen/device_tree.h @@ -30,6 +30,7 @@ struct dt_device_match { const char *type; const char *compatible; const bool_t not_available; + const char **props; const void *data; }; @@ -37,11 +38,13 @@ struct dt_device_match { #define __DT_MATCH_TYPE(typ) .type = typ #define __DT_MATCH_COMPATIBLE(compat) .compatible = compat #define __DT_MATCH_NOT_AVAILABLE() .not_available = 1 +#define __DT_MATCH_PROPS(p...) .props = (const char *[]) { p, NULL } #define DT_MATCH_PATH(p) { __DT_MATCH_PATH(p) } #define DT_MATCH_TYPE(typ) { __DT_MATCH_TYPE(typ) } #define DT_MATCH_COMPATIBLE(compat) { __DT_MATCH_COMPATIBLE(compat) } #define DT_MATCH_NOT_AVAILABLE() { __DT_MATCH_NOT_AVAILABLE() } +#define DT_MATCH_PROPS(p...) { __DT_MATCH_PROPS(p) } typedef u32 dt_phandle;