Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752588AbdI2WsZ (ORCPT ); Fri, 29 Sep 2017 18:48:25 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:34144 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752478AbdI2WsY (ORCPT ); Fri, 29 Sep 2017 18:48:24 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 2460E60246 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=sboyd@codeaurora.org Date: Fri, 29 Sep 2017 15:48:21 -0700 From: Stephen Boyd To: Dong Aisheng Cc: linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, mturquette@baylibre.com, shawnguo@kernel.org, s.nawrocki@samsung.com, geert@linux-m68k.org, Russell King Subject: Re: [PATCH V4 1/1] clk: bulk: add of_clk_bulk_get() Message-ID: <20170929224821.GM457@codeaurora.org> References: <1506415441-4435-1-git-send-email-aisheng.dong@nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1506415441-4435-1-git-send-email-aisheng.dong@nxp.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2788 Lines: 96 On 09/26, Dong Aisheng wrote: > 'clock-names' property is optinal in DT, so of_clk_bulk_get() is introduced s/optinal/optional/ > here to handle this for DT users without 'clock-names' specified. > > Cc: Stephen Boyd > Cc: Michael Turquette > Cc: Russell King > Reported-by: Shawn Guo > Signed-off-by: Dong Aisheng > > --- > Changes since v3: > * fix build warning on the SH platform > > Changes since v2: > * of_clk_bulk_get should return -ENOENT; > > Changes since v1: > * using %pOF instead of full_name > --- > drivers/clk/clk-bulk.c | 31 +++++++++++++++++++++++++++++++ > include/linux/clk.h | 8 ++++++++ > 2 files changed, 39 insertions(+) > > diff --git a/drivers/clk/clk-bulk.c b/drivers/clk/clk-bulk.c > index c834f5a..896aa3b 100644 > --- a/drivers/clk/clk-bulk.c > +++ b/drivers/clk/clk-bulk.c > @@ -19,6 +19,37 @@ > #include > #include > #include > +#include > + > +#if defined(CONFIG_OF) && defined(CONFIG_COMMON_CLK) > +int __must_check of_clk_bulk_get(struct device_node *np, int num_clks, > + struct clk_bulk_data *clks) > +{ > + int ret; > + int i; > + > + for (i = 0; i < num_clks; i++) > + clks[i].clk = NULL; > + > + for (i = 0; i < num_clks; i++) { > + clks[i].clk = of_clk_get(np, i); > + if (IS_ERR(clks[i].clk)) { > + ret = PTR_ERR(clks[i].clk); > + pr_err("%pOF: Failed to get clk index: %d ret: %d\n", > + np, i, ret); > + clks[i].clk = NULL; > + goto err; > + } > + } > + > + return 0; > + > +err: > + clk_bulk_put(i, clks); > + > + return ret; > +} Export the symbol? > +#endif > > void clk_bulk_put(int num_clks, struct clk_bulk_data *clks) > { > diff --git a/include/linux/clk.h b/include/linux/clk.h > index 12c96d9..073cb3b 100644 > --- a/include/linux/clk.h > +++ b/include/linux/clk.h > @@ -680,10 +680,18 @@ static inline void clk_bulk_disable_unprepare(int num_clks, > } > > #if defined(CONFIG_OF) && defined(CONFIG_COMMON_CLK) > +int __must_check of_clk_bulk_get(struct device_node *np, int num_clks, > + struct clk_bulk_data *clks); > struct clk *of_clk_get(struct device_node *np, int index); > struct clk *of_clk_get_by_name(struct device_node *np, const char *name); > struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec); > #else > +static inline int of_clk_bulk_get(struct device_node *np, int num_clks, Do we need __must_check here too? We should do the same for the other bulk get APIs. Seems we missed that part last time. I'll fix all these things up when applying. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project