[alsa-devel] [asoc:for-5.2 76/82] sound/soc//codecs/tlv320aic32x4-clk.c:372:21: error: variable 'aic32x4_bdiv_ops' has initializer but incomplete type
kbuild test robot
lkp at intel.com
Mon Mar 25 19:17:21 CET 2019
tree: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.2
head: 6d56ee1550b8a81bc63c80051ff78d8d704b09ba
commit: 9b484124ebd906c4d6bc826cc0d417e80cc1105c [76/82] ASoC: tlv320aic32x4: Model BDIV divider in CCF
config: sparc64-allyesconfig (attached as .config)
compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 9b484124ebd906c4d6bc826cc0d417e80cc1105c
# save the attached .config to linux build tree
GCC_VERSION=7.2.0 make.cross ARCH=sparc64
All errors (new ones prefixed by >>):
.unprepare = clk_aic32x4_pll_unprepare,
^~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:259:15: note: (near initialization for 'aic32x4_pll_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:260:3: error: 'const struct clk_ops' has no member named 'is_prepared'
.is_prepared = clk_aic32x4_pll_is_prepared,
^~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:260:17: warning: excess elements in struct initializer
.is_prepared = clk_aic32x4_pll_is_prepared,
^~~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:260:17: note: (near initialization for 'aic32x4_pll_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:261:3: error: 'const struct clk_ops' has no member named 'recalc_rate'
.recalc_rate = clk_aic32x4_pll_recalc_rate,
^~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:261:17: warning: excess elements in struct initializer
.recalc_rate = clk_aic32x4_pll_recalc_rate,
^~~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:261:17: note: (near initialization for 'aic32x4_pll_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:262:3: error: 'const struct clk_ops' has no member named 'round_rate'
.round_rate = clk_aic32x4_pll_round_rate,
^~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:262:16: warning: excess elements in struct initializer
.round_rate = clk_aic32x4_pll_round_rate,
^~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:262:16: note: (near initialization for 'aic32x4_pll_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:263:3: error: 'const struct clk_ops' has no member named 'set_rate'
.set_rate = clk_aic32x4_pll_set_rate,
^~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:263:14: warning: excess elements in struct initializer
.set_rate = clk_aic32x4_pll_set_rate,
^~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:263:14: note: (near initialization for 'aic32x4_pll_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:264:3: error: 'const struct clk_ops' has no member named 'set_parent'
.set_parent = clk_aic32x4_pll_set_parent,
^~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:264:16: warning: excess elements in struct initializer
.set_parent = clk_aic32x4_pll_set_parent,
^~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:264:16: note: (near initialization for 'aic32x4_pll_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:265:3: error: 'const struct clk_ops' has no member named 'get_parent'
.get_parent = clk_aic32x4_pll_get_parent,
^~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:265:16: warning: excess elements in struct initializer
.get_parent = clk_aic32x4_pll_get_parent,
^~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:265:16: note: (near initialization for 'aic32x4_pll_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:287:21: error: variable 'aic32x4_codec_clkin_ops' has initializer but incomplete type
static const struct clk_ops aic32x4_codec_clkin_ops = {
^~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:288:3: error: 'const struct clk_ops' has no member named 'set_parent'
.set_parent = clk_aic32x4_codec_clkin_set_parent,
^~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:288:16: warning: excess elements in struct initializer
.set_parent = clk_aic32x4_codec_clkin_set_parent,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:288:16: note: (near initialization for 'aic32x4_codec_clkin_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:289:3: error: 'const struct clk_ops' has no member named 'get_parent'
.get_parent = clk_aic32x4_codec_clkin_get_parent,
^~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:289:16: warning: excess elements in struct initializer
.get_parent = clk_aic32x4_codec_clkin_get_parent,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:289:16: note: (near initialization for 'aic32x4_codec_clkin_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:346:21: error: variable 'aic32x4_div_ops' has initializer but incomplete type
static const struct clk_ops aic32x4_div_ops = {
^~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:347:3: error: 'const struct clk_ops' has no member named 'prepare'
.prepare = clk_aic32x4_div_prepare,
^~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:347:13: warning: excess elements in struct initializer
.prepare = clk_aic32x4_div_prepare,
^~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:347:13: note: (near initialization for 'aic32x4_div_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:348:3: error: 'const struct clk_ops' has no member named 'unprepare'
.unprepare = clk_aic32x4_div_unprepare,
^~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:348:15: warning: excess elements in struct initializer
.unprepare = clk_aic32x4_div_unprepare,
^~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:348:15: note: (near initialization for 'aic32x4_div_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:349:3: error: 'const struct clk_ops' has no member named 'set_rate'
.set_rate = clk_aic32x4_div_set_rate,
^~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:349:14: warning: excess elements in struct initializer
.set_rate = clk_aic32x4_div_set_rate,
^~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:349:14: note: (near initialization for 'aic32x4_div_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:350:3: error: 'const struct clk_ops' has no member named 'round_rate'
.round_rate = clk_aic32x4_div_round_rate,
^~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:350:16: warning: excess elements in struct initializer
.round_rate = clk_aic32x4_div_round_rate,
^~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:350:16: note: (near initialization for 'aic32x4_div_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:351:3: error: 'const struct clk_ops' has no member named 'recalc_rate'
.recalc_rate = clk_aic32x4_div_recalc_rate,
^~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:351:17: warning: excess elements in struct initializer
.recalc_rate = clk_aic32x4_div_recalc_rate,
^~~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:351:17: note: (near initialization for 'aic32x4_div_ops')
>> sound/soc//codecs/tlv320aic32x4-clk.c:372:21: error: variable 'aic32x4_bdiv_ops' has initializer but incomplete type
static const struct clk_ops aic32x4_bdiv_ops = {
^~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:373:3: error: 'const struct clk_ops' has no member named 'prepare'
.prepare = clk_aic32x4_div_prepare,
^~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:373:13: warning: excess elements in struct initializer
.prepare = clk_aic32x4_div_prepare,
^~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:373:13: note: (near initialization for 'aic32x4_bdiv_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:374:3: error: 'const struct clk_ops' has no member named 'unprepare'
.unprepare = clk_aic32x4_div_unprepare,
^~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:374:15: warning: excess elements in struct initializer
.unprepare = clk_aic32x4_div_unprepare,
^~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:374:15: note: (near initialization for 'aic32x4_bdiv_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:375:3: error: 'const struct clk_ops' has no member named 'set_parent'
.set_parent = clk_aic32x4_bdiv_set_parent,
^~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:375:16: warning: excess elements in struct initializer
.set_parent = clk_aic32x4_bdiv_set_parent,
^~~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:375:16: note: (near initialization for 'aic32x4_bdiv_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:376:3: error: 'const struct clk_ops' has no member named 'get_parent'
.get_parent = clk_aic32x4_bdiv_get_parent,
^~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:376:16: warning: excess elements in struct initializer
.get_parent = clk_aic32x4_bdiv_get_parent,
^~~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:376:16: note: (near initialization for 'aic32x4_bdiv_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:377:3: error: 'const struct clk_ops' has no member named 'set_rate'
.set_rate = clk_aic32x4_div_set_rate,
^~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:377:14: warning: excess elements in struct initializer
.set_rate = clk_aic32x4_div_set_rate,
^~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:377:14: note: (near initialization for 'aic32x4_bdiv_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:378:3: error: 'const struct clk_ops' has no member named 'round_rate'
.round_rate = clk_aic32x4_div_round_rate,
^~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:378:16: warning: excess elements in struct initializer
.round_rate = clk_aic32x4_div_round_rate,
^~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:378:16: note: (near initialization for 'aic32x4_bdiv_ops')
sound/soc//codecs/tlv320aic32x4-clk.c:379:3: error: 'const struct clk_ops' has no member named 'recalc_rate'
.recalc_rate = clk_aic32x4_div_recalc_rate,
^~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:379:17: warning: excess elements in struct initializer
.recalc_rate = clk_aic32x4_div_recalc_rate,
^~~~~~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:379:17: note: (near initialization for 'aic32x4_bdiv_ops')
sound/soc//codecs/tlv320aic32x4-clk.c: In function 'aic32x4_register_clk':
sound/soc//codecs/tlv320aic32x4-clk.c:440:23: error: storage size of 'init' isn't known
struct clk_init_data init;
^~~~
sound/soc//codecs/tlv320aic32x4-clk.c:460:9: error: implicit declaration of function 'devm_clk_register'; did you mean 'device_register'? [-Werror=implicit-function-declaration]
return devm_clk_register(dev, &priv->hw);
^~~~~~~~~~~~~~~~~
device_register
sound/soc//codecs/tlv320aic32x4-clk.c:440:23: warning: unused variable 'init' [-Wunused-variable]
struct clk_init_data init;
^~~~
sound/soc//codecs/tlv320aic32x4-clk.c: At top level:
sound/soc//codecs/tlv320aic32x4-clk.c:257:29: error: storage size of 'aic32x4_pll_ops' isn't known
static const struct clk_ops aic32x4_pll_ops = {
^~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:287:29: error: storage size of 'aic32x4_codec_clkin_ops' isn't known
static const struct clk_ops aic32x4_codec_clkin_ops = {
^~~~~~~~~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c:346:29: error: storage size of 'aic32x4_div_ops' isn't known
static const struct clk_ops aic32x4_div_ops = {
^~~~~~~~~~~~~~~
>> sound/soc//codecs/tlv320aic32x4-clk.c:372:29: error: storage size of 'aic32x4_bdiv_ops' isn't known
static const struct clk_ops aic32x4_bdiv_ops = {
^~~~~~~~~~~~~~~~
sound/soc//codecs/tlv320aic32x4-clk.c: In function 'aic32x4_register_clk':
sound/soc//codecs/tlv320aic32x4-clk.c:461:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
cc1: some warnings being treated as errors
vim +/aic32x4_bdiv_ops +372 sound/soc//codecs/tlv320aic32x4-clk.c
255
256
> 257 static const struct clk_ops aic32x4_pll_ops = {
258 .prepare = clk_aic32x4_pll_prepare,
259 .unprepare = clk_aic32x4_pll_unprepare,
260 .is_prepared = clk_aic32x4_pll_is_prepared,
261 .recalc_rate = clk_aic32x4_pll_recalc_rate,
262 .round_rate = clk_aic32x4_pll_round_rate,
263 .set_rate = clk_aic32x4_pll_set_rate,
264 .set_parent = clk_aic32x4_pll_set_parent,
265 .get_parent = clk_aic32x4_pll_get_parent,
266 };
267
268 static int clk_aic32x4_codec_clkin_set_parent(struct clk_hw *hw, u8 index)
269 {
270 struct clk_aic32x4 *mux = to_clk_aic32x4(hw);
271
272 return regmap_update_bits(mux->regmap,
273 AIC32X4_CLKMUX,
274 AIC32X4_CODEC_CLKIN_MASK, index << AIC32X4_CODEC_CLKIN_SHIFT);
275 }
276
277 static u8 clk_aic32x4_codec_clkin_get_parent(struct clk_hw *hw)
278 {
279 struct clk_aic32x4 *mux = to_clk_aic32x4(hw);
280 unsigned int val;
281
282 regmap_read(mux->regmap, AIC32X4_CLKMUX, &val);
283
284 return (val & AIC32X4_CODEC_CLKIN_MASK) >> AIC32X4_CODEC_CLKIN_SHIFT;
285 }
286
287 static const struct clk_ops aic32x4_codec_clkin_ops = {
288 .set_parent = clk_aic32x4_codec_clkin_set_parent,
289 .get_parent = clk_aic32x4_codec_clkin_get_parent,
290 };
291
292 static int clk_aic32x4_div_prepare(struct clk_hw *hw)
293 {
294 struct clk_aic32x4 *div = to_clk_aic32x4(hw);
295
296 return regmap_update_bits(div->regmap, div->reg,
297 AIC32X4_DIVEN, AIC32X4_DIVEN);
298 }
299
300 static void clk_aic32x4_div_unprepare(struct clk_hw *hw)
301 {
302 struct clk_aic32x4 *div = to_clk_aic32x4(hw);
303
304 regmap_update_bits(div->regmap, div->reg,
305 AIC32X4_DIVEN, 0);
306 }
307
308 static int clk_aic32x4_div_set_rate(struct clk_hw *hw, unsigned long rate,
309 unsigned long parent_rate)
310 {
311 struct clk_aic32x4 *div = to_clk_aic32x4(hw);
312 u8 divisor;
313
314 divisor = DIV_ROUND_UP(parent_rate, rate);
315 if (divisor > 128)
316 return -EINVAL;
317
318 return regmap_update_bits(div->regmap, div->reg,
319 AIC32X4_DIV_MASK, divisor);
320 }
321
322 static long clk_aic32x4_div_round_rate(struct clk_hw *hw, unsigned long rate,
323 unsigned long *parent_rate)
324 {
325 unsigned long divisor;
326
327 divisor = DIV_ROUND_UP(*parent_rate, rate);
328 if (divisor > 128)
329 return -EINVAL;
330
331 return DIV_ROUND_UP(*parent_rate, divisor);
332 }
333
334 static unsigned long clk_aic32x4_div_recalc_rate(struct clk_hw *hw,
335 unsigned long parent_rate)
336 {
337 struct clk_aic32x4 *div = to_clk_aic32x4(hw);
338
339 unsigned int val;
340
341 regmap_read(div->regmap, div->reg, &val);
342
343 return DIV_ROUND_UP(parent_rate, val & AIC32X4_DIV_MASK);
344 }
345
346 static const struct clk_ops aic32x4_div_ops = {
347 .prepare = clk_aic32x4_div_prepare,
348 .unprepare = clk_aic32x4_div_unprepare,
349 .set_rate = clk_aic32x4_div_set_rate,
> 350 .round_rate = clk_aic32x4_div_round_rate,
351 .recalc_rate = clk_aic32x4_div_recalc_rate,
352 };
353
354 static int clk_aic32x4_bdiv_set_parent(struct clk_hw *hw, u8 index)
355 {
356 struct clk_aic32x4 *mux = to_clk_aic32x4(hw);
357
358 return regmap_update_bits(mux->regmap, AIC32X4_IFACE3,
359 AIC32X4_BDIVCLK_MASK, index);
360 }
361
362 static u8 clk_aic32x4_bdiv_get_parent(struct clk_hw *hw)
363 {
364 struct clk_aic32x4 *mux = to_clk_aic32x4(hw);
365 unsigned int val;
366
367 regmap_read(mux->regmap, AIC32X4_IFACE3, &val);
368
369 return val & AIC32X4_BDIVCLK_MASK;
370 }
371
> 372 static const struct clk_ops aic32x4_bdiv_ops = {
373 .prepare = clk_aic32x4_div_prepare,
374 .unprepare = clk_aic32x4_div_unprepare,
375 .set_parent = clk_aic32x4_bdiv_set_parent,
376 .get_parent = clk_aic32x4_bdiv_get_parent,
377 .set_rate = clk_aic32x4_div_set_rate,
378 .round_rate = clk_aic32x4_div_round_rate,
379 .recalc_rate = clk_aic32x4_div_recalc_rate,
380 };
381
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 56857 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20190326/b5225f1e/attachment-0001.gz>
More information about the Alsa-devel
mailing list