[alsa-devel] [asoc:for-5.2 73/82] sound/soc//codecs/tlv320aic32x4-clk.c:257:21: error: variable 'aic32x4_pll_ops' has initializer but incomplete type

kbuild test robot lkp at intel.com
Mon Mar 25 18:05:33 CET 2019


tree:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.2
head:   6d56ee1550b8a81bc63c80051ff78d8d704b09ba
commit: 514b044cba667e4b7c383ec79b42b997e624b91d [73/82] ASoC: tlv320aic32x4: Model PLL 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 514b044cba667e4b7c383ec79b42b997e624b91d
        # save the attached .config to linux build tree
        GCC_VERSION=7.2.0 make.cross ARCH=sparc64 

All error/warnings (new ones prefixed by >>):

>> sound/soc//codecs/tlv320aic32x4-clk.c:19:16: error: field 'hw' has incomplete type
     struct clk_hw hw;
                   ^~
   In file included from include/linux/init.h:5:0,
                    from include/linux/io.h:22,
                    from include/linux/clk-provider.h:9,
                    from sound/soc//codecs/tlv320aic32x4-clk.c:10:
   sound/soc//codecs/tlv320aic32x4-clk.c: In function 'clk_aic32x4_pll_prepare':
   include/linux/kernel.h:979:32: error: dereferencing pointer to incomplete type 'struct clk_hw'
     BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
                                   ^~~~~~
   include/linux/compiler.h:324:9: note: in definition of macro '__compiletime_assert'
      if (!(condition))     \
            ^~~~~~~~~
   include/linux/compiler.h:344:2: note: in expansion of macro '_compiletime_assert'
     _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
     ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
    #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                        ^~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:979:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
     BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
     ^~~~~~~~~~~~~~~~
   include/linux/kernel.h:979:20: note: in expansion of macro '__same_type'
     BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
                       ^~~~~~~~~~~
>> sound/soc//codecs/tlv320aic32x4-clk.c:17:29: note: in expansion of macro 'container_of'
    #define to_clk_aic32x4(_hw) container_of(_hw, struct clk_aic32x4, hw)
                                ^~~~~~~~~~~~
>> sound/soc//codecs/tlv320aic32x4-clk.c:49:28: note: in expansion of macro 'to_clk_aic32x4'
     struct clk_aic32x4 *pll = to_clk_aic32x4(hw);
                               ^~~~~~~~~~~~~~
   sound/soc//codecs/tlv320aic32x4-clk.c: At top level:
>> sound/soc//codecs/tlv320aic32x4-clk.c:257:21: error: variable 'aic32x4_pll_ops' has initializer but incomplete type
    static const struct clk_ops aic32x4_pll_ops = {
                        ^~~~~~~
>> sound/soc//codecs/tlv320aic32x4-clk.c:258:3: error: 'const struct clk_ops' has no member named 'prepare'
     .prepare = clk_aic32x4_pll_prepare,
      ^~~~~~~
>> sound/soc//codecs/tlv320aic32x4-clk.c:258:13: warning: excess elements in struct initializer
     .prepare = clk_aic32x4_pll_prepare,
                ^~~~~~~~~~~~~~~~~~~~~~~
   sound/soc//codecs/tlv320aic32x4-clk.c:258:13: note: (near initialization for 'aic32x4_pll_ops')
>> sound/soc//codecs/tlv320aic32x4-clk.c:259:3: error: 'const struct clk_ops' has no member named 'unprepare'
     .unprepare = clk_aic32x4_pll_unprepare,
      ^~~~~~~~~
   sound/soc//codecs/tlv320aic32x4-clk.c:259:15: warning: excess elements in struct initializer
     .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: In function 'aic32x4_register_clk':
>> sound/soc//codecs/tlv320aic32x4-clk.c:282:23: error: storage size of 'init' isn't known
     struct clk_init_data init;
                          ^~~~
>> sound/soc//codecs/tlv320aic32x4-clk.c:302: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:282: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: In function 'aic32x4_register_clk':
>> sound/soc//codecs/tlv320aic32x4-clk.c:303:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
   cc1: some warnings being treated as errors

vim +/aic32x4_pll_ops +257 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 struct aic32x4_clkdesc aic32x4_clkdesc_array[] = {
   269		{
   270			.name = "pll",
   271			.parent_names =
   272				(const char* []) { "mclk", "bclk", "gpio", "din" },
   273			.num_parents = 4,
   274			.ops = &aic32x4_pll_ops,
   275			.reg = 0,
   276		},
   277	};
   278	
   279	static struct clk *aic32x4_register_clk(struct device *dev,
   280				struct aic32x4_clkdesc *desc)
   281	{
 > 282		struct clk_init_data init;
   283		struct clk_aic32x4 *priv;
   284		const char *devname = dev_name(dev);
   285	
   286		init.ops = desc->ops;
   287		init.name = desc->name;
   288		init.parent_names = desc->parent_names;
   289		init.num_parents = desc->num_parents;
   290		init.flags = 0;
   291	
   292		priv = devm_kzalloc(dev, sizeof(struct clk_aic32x4), GFP_KERNEL);
   293		if (priv == NULL)
   294			return (struct clk *) -ENOMEM;
   295	
   296		priv->dev = dev;
   297		priv->hw.init = &init;
   298		priv->regmap = dev_get_regmap(dev, NULL);
   299		priv->reg = desc->reg;
   300	
   301		clk_hw_register_clkdev(&priv->hw, desc->name, devname);
 > 302		return devm_clk_register(dev, &priv->hw);
 > 303	}
   304	

---
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/47f51d49/attachment-0001.gz>


More information about the Alsa-devel mailing list