Hi Charles, [auto build test ERROR on clk/clk-next] [also build test ERROR on v4.4-rc8 next-20160105] [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] url: https://github.com/0day-ci/linux/commits/Charles-Keepax/extcon-arizona-Remove-enable-disable-of-32k-clock/20160105-234658 base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next config: i386-randconfig-s1-201601 (attached as .config) reproduce: # save the attached .config to linux build tree make ARCH=i386 All error/warnings (new ones prefixed by >>): >> drivers/clk/clk-arizona.c:31:16: error: field 'clk32k_hw' has incomplete type struct clk_hw clk32k_hw; ^ In file included from include/asm-generic/bug.h:13:0, from arch/x86/include/asm/bug.h:35, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from include/asm-generic/clkdev.h:16, from arch/x86/include/generated/asm/clkdev.h:1, from include/linux/clkdev.h:15, from drivers/clk/clk-arizona.c:14: drivers/clk/clk-arizona.c: In function 'clk32k_to_arizona_clk': include/linux/kernel.h:813:48: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ >> drivers/clk/clk-arizona.c:37:9: note: in expansion of macro 'container_of' return container_of(hw, struct arizona_clk, clk32k_hw); ^ drivers/clk/clk-arizona.c: At top level: >> drivers/clk/clk-arizona.c:77:21: error: variable 'arizona_32k_ops' has initializer but incomplete type static const struct clk_ops arizona_32k_ops = { ^ >> drivers/clk/clk-arizona.c:78:2: error: unknown field 'prepare' specified in initializer .prepare = arizona_32k_enable, ^ >> drivers/clk/clk-arizona.c:78:13: warning: excess elements in struct initializer .prepare = arizona_32k_enable, ^ drivers/clk/clk-arizona.c:78:13: note: (near initialization for 'arizona_32k_ops') >> drivers/clk/clk-arizona.c:79:2: error: unknown field 'unprepare' specified in initializer .unprepare = arizona_32k_disable, ^ drivers/clk/clk-arizona.c:79:15: warning: excess elements in struct initializer .unprepare = arizona_32k_disable, ^ drivers/clk/clk-arizona.c:79:15: note: (near initialization for 'arizona_32k_ops') drivers/clk/clk-arizona.c: In function 'arizona_clk_of_get_pdata': >> drivers/clk/clk-arizona.c:98:35: error: implicit declaration of function '__clk_get_name' [-Werror=implicit-function-declaration] arizona->pdata.clk32k_parent = __clk_get_name(mclk); ^ >> drivers/clk/clk-arizona.c:98:33: warning: assignment makes pointer from integer without a cast [-Wint-conversion] arizona->pdata.clk32k_parent = __clk_get_name(mclk); ^ drivers/clk/clk-arizona.c: In function 'arizona_clk_probe': >> drivers/clk/clk-arizona.c:113:9: error: variable 'clk32k_init' has initializer but incomplete type struct clk_init_data clk32k_init = { ^ >> drivers/clk/clk-arizona.c:114:3: error: unknown field 'name' specified in initializer .name = "arizona-32k", ^ drivers/clk/clk-arizona.c:114:11: warning: excess elements in struct initializer .name = "arizona-32k", ^ drivers/clk/clk-arizona.c:114:11: note: (near initialization for 'clk32k_init') >> drivers/clk/clk-arizona.c:115:3: error: unknown field 'ops' specified in initializer .ops = &arizona_32k_ops, ^ drivers/clk/clk-arizona.c:115:10: warning: excess elements in struct initializer .ops = &arizona_32k_ops, ^ drivers/clk/clk-arizona.c:115:10: note: (near initialization for 'clk32k_init') >> drivers/clk/clk-arizona.c:113:23: error: storage size of 'clk32k_init' isn't known struct clk_init_data clk32k_init = { ^ >> drivers/clk/clk-arizona.c:154:24: error: 'CLK_IS_ROOT' undeclared (first use in this function) clk32k_init.flags |= CLK_IS_ROOT; ^ drivers/clk/clk-arizona.c:154:24: note: each undeclared identifier is reported only once for each function it appears in >> drivers/clk/clk-arizona.c:158:20: error: implicit declaration of function 'devm_clk_register' [-Werror=implicit-function-declaration] clkdata->clk32k = devm_clk_register(&pdev->dev, &clkdata->clk32k_hw); ^ >> drivers/clk/clk-arizona.c:113:23: warning: unused variable 'clk32k_init' [-Wunused-variable] struct clk_init_data clk32k_init = { ^ cc1: some warnings being treated as errors vim +/clk32k_hw +31 drivers/clk/clk-arizona.c bbd51c97 Charles Keepax 2016-01-05 8 * This program is free software; you can redistribute it and/or modify it bbd51c97 Charles Keepax 2016-01-05 9 * under the terms of the GNU General Public License as published by the bbd51c97 Charles Keepax 2016-01-05 10 * Free Software Foundation; either version 2 of the License, or (at your bbd51c97 Charles Keepax 2016-01-05 11 * option) any later version. bbd51c97 Charles Keepax 2016-01-05 12 */ bbd51c97 Charles Keepax 2016-01-05 13 bbd51c97 Charles Keepax 2016-01-05 @14 #include bbd51c97 Charles Keepax 2016-01-05 15 #include bbd51c97 Charles Keepax 2016-01-05 16 #include bbd51c97 Charles Keepax 2016-01-05 17 #include bbd51c97 Charles Keepax 2016-01-05 18 #include bbd51c97 Charles Keepax 2016-01-05 19 #include bbd51c97 Charles Keepax 2016-01-05 20 #include bbd51c97 Charles Keepax 2016-01-05 21 bbd51c97 Charles Keepax 2016-01-05 22 #include bbd51c97 Charles Keepax 2016-01-05 23 #include bbd51c97 Charles Keepax 2016-01-05 24 #include bbd51c97 Charles Keepax 2016-01-05 25 bbd51c97 Charles Keepax 2016-01-05 26 #define CLK32K_RATE 32768 bbd51c97 Charles Keepax 2016-01-05 27 bbd51c97 Charles Keepax 2016-01-05 28 struct arizona_clk { bbd51c97 Charles Keepax 2016-01-05 29 struct arizona *arizona; bbd51c97 Charles Keepax 2016-01-05 30 bbd51c97 Charles Keepax 2016-01-05 @31 struct clk_hw clk32k_hw; bbd51c97 Charles Keepax 2016-01-05 32 struct clk *clk32k; bbd51c97 Charles Keepax 2016-01-05 33 }; bbd51c97 Charles Keepax 2016-01-05 34 bbd51c97 Charles Keepax 2016-01-05 35 static inline struct arizona_clk *clk32k_to_arizona_clk(struct clk_hw *hw) bbd51c97 Charles Keepax 2016-01-05 36 { bbd51c97 Charles Keepax 2016-01-05 @37 return container_of(hw, struct arizona_clk, clk32k_hw); bbd51c97 Charles Keepax 2016-01-05 38 } bbd51c97 Charles Keepax 2016-01-05 39 bbd51c97 Charles Keepax 2016-01-05 40 static int arizona_32k_enable(struct clk_hw *hw) bbd51c97 Charles Keepax 2016-01-05 41 { bbd51c97 Charles Keepax 2016-01-05 42 struct arizona_clk *clkdata = clk32k_to_arizona_clk(hw); bbd51c97 Charles Keepax 2016-01-05 43 struct arizona *arizona = clkdata->arizona; bbd51c97 Charles Keepax 2016-01-05 44 int ret; bbd51c97 Charles Keepax 2016-01-05 45 bbd51c97 Charles Keepax 2016-01-05 46 switch (arizona->pdata.clk32k_src) { bbd51c97 Charles Keepax 2016-01-05 47 case ARIZONA_32KZ_MCLK1: bbd51c97 Charles Keepax 2016-01-05 48 ret = pm_runtime_get_sync(arizona->dev); bbd51c97 Charles Keepax 2016-01-05 49 if (ret != 0) bbd51c97 Charles Keepax 2016-01-05 50 goto out; bbd51c97 Charles Keepax 2016-01-05 51 break; bbd51c97 Charles Keepax 2016-01-05 52 } bbd51c97 Charles Keepax 2016-01-05 53 bbd51c97 Charles Keepax 2016-01-05 54 ret = regmap_update_bits_async(arizona->regmap, ARIZONA_CLOCK_32K_1, bbd51c97 Charles Keepax 2016-01-05 55 ARIZONA_CLK_32K_ENA, bbd51c97 Charles Keepax 2016-01-05 56 ARIZONA_CLK_32K_ENA); bbd51c97 Charles Keepax 2016-01-05 57 bbd51c97 Charles Keepax 2016-01-05 58 out: bbd51c97 Charles Keepax 2016-01-05 59 return ret; bbd51c97 Charles Keepax 2016-01-05 60 } bbd51c97 Charles Keepax 2016-01-05 61 bbd51c97 Charles Keepax 2016-01-05 62 static void arizona_32k_disable(struct clk_hw *hw) bbd51c97 Charles Keepax 2016-01-05 63 { bbd51c97 Charles Keepax 2016-01-05 64 struct arizona_clk *clkdata = clk32k_to_arizona_clk(hw); bbd51c97 Charles Keepax 2016-01-05 65 struct arizona *arizona = clkdata->arizona; bbd51c97 Charles Keepax 2016-01-05 66 bbd51c97 Charles Keepax 2016-01-05 67 regmap_update_bits_async(arizona->regmap, ARIZONA_CLOCK_32K_1, bbd51c97 Charles Keepax 2016-01-05 68 ARIZONA_CLK_32K_ENA, 0); bbd51c97 Charles Keepax 2016-01-05 69 bbd51c97 Charles Keepax 2016-01-05 70 switch (arizona->pdata.clk32k_src) { bbd51c97 Charles Keepax 2016-01-05 71 case ARIZONA_32KZ_MCLK1: bbd51c97 Charles Keepax 2016-01-05 72 pm_runtime_put_sync(arizona->dev); bbd51c97 Charles Keepax 2016-01-05 73 break; bbd51c97 Charles Keepax 2016-01-05 74 } bbd51c97 Charles Keepax 2016-01-05 75 } bbd51c97 Charles Keepax 2016-01-05 76 bbd51c97 Charles Keepax 2016-01-05 @77 static const struct clk_ops arizona_32k_ops = { bbd51c97 Charles Keepax 2016-01-05 @78 .prepare = arizona_32k_enable, bbd51c97 Charles Keepax 2016-01-05 @79 .unprepare = arizona_32k_disable, bbd51c97 Charles Keepax 2016-01-05 80 }; bbd51c97 Charles Keepax 2016-01-05 81 bbd51c97 Charles Keepax 2016-01-05 82 static int arizona_clk_of_get_pdata(struct arizona *arizona) bbd51c97 Charles Keepax 2016-01-05 83 { bbd51c97 Charles Keepax 2016-01-05 84 const char * const pins[] = { "mclk1", "mclk2" }; bbd51c97 Charles Keepax 2016-01-05 85 struct clk *mclk; bbd51c97 Charles Keepax 2016-01-05 86 int i; bbd51c97 Charles Keepax 2016-01-05 87 bbd51c97 Charles Keepax 2016-01-05 88 if (!of_property_read_bool(arizona->dev->of_node, "clocks")) bbd51c97 Charles Keepax 2016-01-05 89 return 0; bbd51c97 Charles Keepax 2016-01-05 90 bbd51c97 Charles Keepax 2016-01-05 91 for (i = 0; i < ARRAY_SIZE(pins); ++i) { bbd51c97 Charles Keepax 2016-01-05 92 mclk = of_clk_get_by_name(arizona->dev->of_node, pins[i]); bbd51c97 Charles Keepax 2016-01-05 93 if (IS_ERR(mclk)) bbd51c97 Charles Keepax 2016-01-05 94 return PTR_ERR(mclk); bbd51c97 Charles Keepax 2016-01-05 95 bbd51c97 Charles Keepax 2016-01-05 96 if (clk_get_rate(mclk) == CLK32K_RATE) { bbd51c97 Charles Keepax 2016-01-05 97 arizona->pdata.clk32k_src = ARIZONA_32KZ_MCLK1 + i; bbd51c97 Charles Keepax 2016-01-05 @98 arizona->pdata.clk32k_parent = __clk_get_name(mclk); bbd51c97 Charles Keepax 2016-01-05 99 } bbd51c97 Charles Keepax 2016-01-05 100 bbd51c97 Charles Keepax 2016-01-05 101 clk_put(mclk); bbd51c97 Charles Keepax 2016-01-05 102 } bbd51c97 Charles Keepax 2016-01-05 103 bbd51c97 Charles Keepax 2016-01-05 104 return 0; bbd51c97 Charles Keepax 2016-01-05 105 } bbd51c97 Charles Keepax 2016-01-05 106 bbd51c97 Charles Keepax 2016-01-05 107 static int arizona_clk_probe(struct platform_device *pdev) bbd51c97 Charles Keepax 2016-01-05 108 { bbd51c97 Charles Keepax 2016-01-05 109 struct arizona *arizona = dev_get_drvdata(pdev->dev.parent); bbd51c97 Charles Keepax 2016-01-05 110 struct arizona_clk *clkdata; bbd51c97 Charles Keepax 2016-01-05 111 int ret; bbd51c97 Charles Keepax 2016-01-05 112 bbd51c97 Charles Keepax 2016-01-05 @113 struct clk_init_data clk32k_init = { bbd51c97 Charles Keepax 2016-01-05 @114 .name = "arizona-32k", bbd51c97 Charles Keepax 2016-01-05 @115 .ops = &arizona_32k_ops, bbd51c97 Charles Keepax 2016-01-05 116 }; bbd51c97 Charles Keepax 2016-01-05 117 bbd51c97 Charles Keepax 2016-01-05 118 if (IS_ENABLED(CONFIG_OF) && !dev_get_platdata(arizona->dev)) { bbd51c97 Charles Keepax 2016-01-05 119 ret = arizona_clk_of_get_pdata(arizona); bbd51c97 Charles Keepax 2016-01-05 120 if (ret) { bbd51c97 Charles Keepax 2016-01-05 121 dev_err(arizona->dev, "Failed parsing clock DT: %d\n", bbd51c97 Charles Keepax 2016-01-05 122 ret); bbd51c97 Charles Keepax 2016-01-05 123 return ret; bbd51c97 Charles Keepax 2016-01-05 124 } bbd51c97 Charles Keepax 2016-01-05 125 } bbd51c97 Charles Keepax 2016-01-05 126 bbd51c97 Charles Keepax 2016-01-05 127 clkdata = devm_kzalloc(&pdev->dev, sizeof(*clkdata), GFP_KERNEL); bbd51c97 Charles Keepax 2016-01-05 128 if (!clkdata) bbd51c97 Charles Keepax 2016-01-05 129 return -ENOMEM; bbd51c97 Charles Keepax 2016-01-05 130 bbd51c97 Charles Keepax 2016-01-05 131 clkdata->arizona = arizona; bbd51c97 Charles Keepax 2016-01-05 132 bbd51c97 Charles Keepax 2016-01-05 133 switch (arizona->pdata.clk32k_src) { bbd51c97 Charles Keepax 2016-01-05 134 case 0: bbd51c97 Charles Keepax 2016-01-05 135 arizona->pdata.clk32k_src = ARIZONA_32KZ_MCLK2; bbd51c97 Charles Keepax 2016-01-05 136 /* Fall through */ bbd51c97 Charles Keepax 2016-01-05 137 case ARIZONA_32KZ_MCLK1: bbd51c97 Charles Keepax 2016-01-05 138 case ARIZONA_32KZ_MCLK2: bbd51c97 Charles Keepax 2016-01-05 139 case ARIZONA_32KZ_NONE: bbd51c97 Charles Keepax 2016-01-05 140 regmap_update_bits(arizona->regmap, ARIZONA_CLOCK_32K_1, bbd51c97 Charles Keepax 2016-01-05 141 ARIZONA_CLK_32K_SRC_MASK, bbd51c97 Charles Keepax 2016-01-05 142 arizona->pdata.clk32k_src - 1); bbd51c97 Charles Keepax 2016-01-05 143 break; bbd51c97 Charles Keepax 2016-01-05 144 default: bbd51c97 Charles Keepax 2016-01-05 145 dev_err(arizona->dev, "Invalid 32kHz clock source: %d\n", bbd51c97 Charles Keepax 2016-01-05 146 arizona->pdata.clk32k_src); bbd51c97 Charles Keepax 2016-01-05 147 return -EINVAL; bbd51c97 Charles Keepax 2016-01-05 148 } bbd51c97 Charles Keepax 2016-01-05 149 bbd51c97 Charles Keepax 2016-01-05 150 if (arizona->pdata.clk32k_parent) { bbd51c97 Charles Keepax 2016-01-05 151 clk32k_init.num_parents = 1; bbd51c97 Charles Keepax 2016-01-05 152 clk32k_init.parent_names = &arizona->pdata.clk32k_parent; bbd51c97 Charles Keepax 2016-01-05 153 } else { bbd51c97 Charles Keepax 2016-01-05 @154 clk32k_init.flags |= CLK_IS_ROOT; bbd51c97 Charles Keepax 2016-01-05 155 } bbd51c97 Charles Keepax 2016-01-05 156 bbd51c97 Charles Keepax 2016-01-05 157 clkdata->clk32k_hw.init = &clk32k_init; bbd51c97 Charles Keepax 2016-01-05 @158 clkdata->clk32k = devm_clk_register(&pdev->dev, &clkdata->clk32k_hw); bbd51c97 Charles Keepax 2016-01-05 159 if (IS_ERR(clkdata->clk32k)) { bbd51c97 Charles Keepax 2016-01-05 160 ret = PTR_ERR(clkdata->clk32k); bbd51c97 Charles Keepax 2016-01-05 161 dev_err(arizona->dev, "Failed to register 32k clock: %d\n", :::::: The code at line 31 was first introduced by commit :::::: bbd51c97104a0151ab632cf717b7119124291e1a clk: arizona: Add clock driver for the Arizona devices :::::: TO: Charles Keepax :::::: CC: 0day robot --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation