Re: sound/soc/codecs/rl6347a.c:66:8: error: implicit declaration of function 'i2c_master_send'

From: Vinod Koul
Date: Tue Nov 17 2015 - 11:44:04 EST


On Tue, Nov 17, 2015 at 07:07:28PM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 8005c49d9aea74d382f474ce11afbbc7d7130bec
> commit: 624729fd51871bfbddb647764f180126789a29ee ASoC: Intel: Skylake - Add Skylake RT286 I2S machine driver
> date: 4 weeks ago
> config: x86_64-randconfig-s5-11171804 (attached as .config)
> reproduce:
> git checkout 624729fd51871bfbddb647764f180126789a29ee
> # save the attached .config to linux build tree
> make ARCH=x86_64
>
> All error/warnings (new ones prefixed by >>):
>
> sound/soc/codecs/rl6347a.c: In function 'rl6347a_hw_write':
> >> sound/soc/codecs/rl6347a.c:66:8: error: implicit declaration of function 'i2c_master_send' [-Werror=implicit-function-declaration]
> ret = i2c_master_send(client, data, 4);
> ^
> sound/soc/codecs/rl6347a.c: In function 'rl6347a_hw_read':
> >> sound/soc/codecs/rl6347a.c:114:8: error: implicit declaration of function 'i2c_transfer' [-Werror=implicit-function-declaration]
> ret = i2c_transfer(client->adapter, xfer, 2);
> ^
> cc1: some warnings being treated as errors
> --
> >> sound/soc/codecs/rt286.c:1269:1: warning: data definition has no type or storage class
> module_i2c_driver(rt286_i2c_driver);
> ^
> >> sound/soc/codecs/rt286.c:1269:1: error: type defaults to 'int' in declaration of 'module_i2c_driver' [-Werror=implicit-int]
> >> sound/soc/codecs/rt286.c:1269:1: warning: parameter names (without types) in function declaration
> >> sound/soc/codecs/rt286.c:1259:26: warning: 'rt286_i2c_driver' defined but not used [-Wunused-variable]
> static struct i2c_driver rt286_i2c_driver = {
> ^
> cc1: some warnings being treated as errors

Thanks for reporting this, I was able to verify and looks like the config
does not have I2C selected, so the driver does not find this symbol.

Also I noticed, i2c core defines i2c_master_send() APIs as extern, so not
having I2C causes failure.

I did try adding depends on I2C on rl6347a but that does not help as rt286
starts not compiling which incidently depends on I2C but was selected by SKL
machine

So finalled added depends on SKL machine, will send that out

Thanks
--
~Vinod
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/