From patchwork Tue Mar 22 17:58:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joerg Roedel X-Patchwork-Id: 8644521 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 5FED6C0553 for ; Tue, 22 Mar 2016 18:00:57 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 86ACE20386 for ; Tue, 22 Mar 2016 18:00:56 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A8A4F202FE for ; Tue, 22 Mar 2016 18:00:55 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aiQaE-0005tB-HM; Tue, 22 Mar 2016 17:59:10 +0000 Received: from 8bytes.org ([2a01:238:4383:600:38bc:a715:4b6d:a889] helo=theia.8bytes.org) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aiQa9-0005i3-5H for linux-arm-kernel@lists.infradead.org; Tue, 22 Mar 2016 17:59:06 +0000 Received: by theia.8bytes.org (Postfix, from userid 1000) id 9B63F2B89; Tue, 22 Mar 2016 18:58:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=8bytes.org; s=mail-1; t=1458669515; bh=lhXR0FnjsHkOdIglBa748Kvw2Aadeb0ymhHXuRVTfoE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZweQeGnvEhZ3jBZdPrGZkPtKWQ9SJr+m42oRhGZhlzhhrP63YkU7z/ifFAEQrsn/u 6z1v7aRqPqzOqw6IUwLvm5CMJegSAfttNAF0LCbLWlPzvRa1tvXFXKqNoxmN3dcMab U9LOo6F2ZAYUn2Fut9YAdp2kI1AkFBziP/zXat4Ba3stIFco4orTsk1EJzLnn64jUG /ziRVqsKd52n/ZjzXY3bGCVRG7b1pcl4a7X4NlJLVyn4JDpdRswIu/HAPzixEPyHN9 iw6zhyyKvFIH4tXnq2JSc60ZOjz+S3A7SY51IGIj4nEZlDpMJ/xjpBdYrd0klQq7xJ Y2LZ8X1xKyPHg== From: Joerg Roedel To: Rob Herring , grant.likely@linaro.org Subject: [PATCH 4/6] of: Introduce of_for_each_phandle() helper macro Date: Tue, 22 Mar 2016 18:58:27 +0100 Message-Id: <1458669509-7178-5-git-send-email-joro@8bytes.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1458669509-7178-1-git-send-email-joro@8bytes.org> References: <1458669509-7178-1-git-send-email-joro@8bytes.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160322_105905_410941_10F633FB X-CRM114-Status: GOOD ( 12.53 ) X-Spam-Score: -2.0 (--) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, jroedel@suse.de, Will Deacon , linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Joerg Roedel With this macro any user can easily iterate over a list of phandles. The patch also converts __of_parse_phandle_with_args() to make use of the macro. The of_count_phandle_with_args() function is not converted, because the macro hides the return value of of_phandle_iterator_init(), which is needed in there. Signed-off-by: Joerg Roedel --- drivers/of/base.c | 7 +------ include/linux/of.h | 6 ++++++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 15593cd..471d3d9 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -1542,13 +1542,8 @@ static int __of_parse_phandle_with_args(const struct device_node *np, struct of_phandle_iterator it; int rc, cur_index = 0; - rc = of_phandle_iterator_init(&it, np, list_name, - cells_name, cell_count); - if (rc) - return rc; - /* Loop over the phandles until all the requested entry is found */ - while ((rc = of_phandle_iterator_next(&it)) == 0) { + of_for_each_phandle(&it, rc, np, list_name, cells_name, cell_count) { /* * All of the error cases bail out of the loop, so at * this point, the parsing is successful. If the requested diff --git a/include/linux/of.h b/include/linux/of.h index d94388b0..05e38ed 100644 --- a/include/linux/of.h +++ b/include/linux/of.h @@ -908,6 +908,12 @@ static inline int of_property_read_s32(const struct device_node *np, return of_property_read_u32(np, propname, (u32*) out_value); } +#define of_for_each_phandle(it, err, np, ln, cn, cc) \ + for (of_phandle_iterator_init((it), (np), (ln), (cn), (cc)), \ + err = of_phandle_iterator_next(it); \ + err == 0; \ + err = of_phandle_iterator_next(it)) + #define of_property_for_each_u32(np, propname, prop, p, u) \ for (prop = of_find_property(np, propname, NULL), \ p = of_prop_next_u32(prop, NULL, &u); \