Message ID | 1505893753-16143-1-git-send-email-aisheng.dong@nxp.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Hi Dong, [auto build test ERROR on clk/clk-next] [also build test ERROR on v4.14-rc1 next-20170922] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Dong-Aisheng/clk-bulk-add-of_clk_bulk_get/20170921-203645 base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next config: sh-apsh4a3a_defconfig (attached as .config) compiler: sh4-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=sh All errors (new ones prefixed by >>): In file included from arch/sh/kernel/setup.c:28:0: >> include/linux/clk.h:689:12: error: 'of_clk_bulk_get' defined but not used [-Werror=unused-function] static int of_clk_bulk_get(struct device_node *np, int num_clks, ^~~~~~~~~~~~~~~ cc1: all warnings being treated as errors vim +/of_clk_bulk_get +689 include/linux/clk.h 681 682 #if defined(CONFIG_OF) && defined(CONFIG_COMMON_CLK) 683 int __must_check of_clk_bulk_get(struct device_node *np, int num_clks, 684 struct clk_bulk_data *clks); 685 struct clk *of_clk_get(struct device_node *np, int index); 686 struct clk *of_clk_get_by_name(struct device_node *np, const char *name); 687 struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec); 688 #else > 689 static int of_clk_bulk_get(struct device_node *np, int num_clks, 690 struct clk_bulk_data *clks) 691 { 692 return -ENOENT; 693 } 694 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
On Sun, Sep 24, 2017 at 4:06 AM, kbuild test robot <lkp@intel.com> wrote: > [auto build test ERROR on clk/clk-next] > [also build test ERROR on v4.14-rc1 next-20170922] > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] > > url: https://github.com/0day-ci/linux/commits/Dong-Aisheng/clk-bulk-add-of_clk_bulk_get/20170921-203645 > base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next > config: sh-apsh4a3a_defconfig (attached as .config) > compiler: sh4-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 > reproduce: > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > make.cross ARCH=sh > > All errors (new ones prefixed by >>): > > In file included from arch/sh/kernel/setup.c:28:0: >>> include/linux/clk.h:689:12: error: 'of_clk_bulk_get' defined but not used [-Werror=unused-function] > static int of_clk_bulk_get(struct device_node *np, int num_clks, > ^~~~~~~~~~~~~~~ > cc1: all warnings being treated as errors > > vim +/of_clk_bulk_get +689 include/linux/clk.h > > 681 > 682 #if defined(CONFIG_OF) && defined(CONFIG_COMMON_CLK) > 683 int __must_check of_clk_bulk_get(struct device_node *np, int num_clks, > 684 struct clk_bulk_data *clks); > 685 struct clk *of_clk_get(struct device_node *np, int index); > 686 struct clk *of_clk_get_by_name(struct device_node *np, const char *name); > 687 struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec); > 688 #else > > 689 static int of_clk_bulk_get(struct device_node *np, int num_clks, static inline > 690 struct clk_bulk_data *clks) > 691 { > 692 return -ENOENT; > 693 } > 694 Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-clk" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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 <linux/clk.h> #include <linux/device.h> #include <linux/export.h> +#include <linux/of.h> + +#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; +} +#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..a1f1f05 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 int of_clk_bulk_get(struct device_node *np, int num_clks, + struct clk_bulk_data *clks) +{ + return -ENOENT; +} + static inline struct clk *of_clk_get(struct device_node *np, int index) { return ERR_PTR(-ENOENT);
'clock-names' property is optinal in DT, so of_clk_bulk_get() is introduced here to handle this for DT users without 'clock-names' specified. Cc: Stephen Boyd <sboyd@codeaurora.org> Cc: Michael Turquette <mturquette@baylibre.com> Cc: Russell King <linux@arm.linux.org.uk> Reported-by: Shawn Guo <shawnguo@kernel.org> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- 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(+)