Subject: Re: randconfig build error with next-20141001, in drivers/i2c/algos/i2c-algo-bit.c

From: Randy Dunlap <[email-masked]>
Date: Mon, 06 Oct 2014 09:52:22 -0700

On 10/06/14 01:06, Oliver Hartkopp wrote:
> Hello all,
> 
> just to get it right:
> 
> So far it looks like this in linux/drivers/net/can/sja1000/Kconfig
> 
> config CAN_PEAK_PCIEC
>         bool "PEAK PCAN-ExpressCard Cards"
>         depends on CAN_PEAK_PCI
>         select I2C
>         select I2C_ALGOBIT
> 
> If one would change the
> 
>         select I2C
> 
> into
> 
>         depends on I2C
> 
> IMHO the CAN_PEAK_PCIEC hardware would *only* be visible and selectable when
> I2C was selected before (from anyone else?).

That is correct.

> So what it wrong on the current Kconfig entry?
> Is 'select' deprecated?

No, it's not deprecated.  It's just dangerous.  and driver configs should not
enable entire subsystems via 'select'.

> Or did randconfig generate a configuration that would not be possible by
> properly generating the config file with 'make menuconfig' ??

randconfig generated a config for another driver which causes a build error,
not for a CAN driver.  The CAN driver does not have a build error AFAIK.
Its Kconfig is just doing something with a very big & ugly stick.

> Please explain.
> 
> Thanks,
> Oliver
> 
> On 10/02/2014 01:26 AM, Randy Dunlap wrote:
>> On 10/01/14 14:37, Jim Davis wrote:
>>> Building with the attached random configuration file,
>>
>> Also:
>> warning: (CAN_PEAK_PCIEC && SFC && IGB && VIDEO_TW68 && DRM && FB_DDC && FB_VIA) selects I2C_ALGOBIT which has unmet direct dependencies (I2C)
>>
>>> drivers/i2c/algos/i2c-algo-bit.c: In function ‘i2c_bit_add_bus’:
>>> drivers/i2c/algos/i2c-algo-bit.c:658:33: error: ‘i2c_add_adapter’
>>> undeclared (first use in this function)
>>>   return __i2c_bit_add_bus(adap, i2c_add_adapter);
>>>                                  ^
>>> drivers/i2c/algos/i2c-algo-bit.c:658:33: note: each undeclared
>>> identifier is reported only once for each function it appears in
>>> drivers/i2c/algos/i2c-algo-bit.c: In function ‘i2c_bit_add_numbered_bus’:
>>> drivers/i2c/algos/i2c-algo-bit.c:664:33: error:
>>> ‘i2c_add_numbered_adapter’ undeclared (first use in this function)
>>>   return __i2c_bit_add_bus(adap, i2c_add_numbered_adapter);
>>>                                  ^
>>>   CC      net/openvswitch/actions.o
>>> drivers/i2c/algos/i2c-algo-bit.c: In function ‘i2c_bit_add_bus’:
>>> drivers/i2c/algos/i2c-algo-bit.c:659:1: warning: control reaches end of non-void
>>>  function [-Wreturn-type]
>>>  }
>>>  ^
>>> drivers/i2c/algos/i2c-algo-bit.c: In function ‘i2c_bit_add_numbered_bus’:
>>> drivers/i2c/algos/i2c-algo-bit.c:665:1: warning: control reaches end of non-void
>>>  function [-Wreturn-type]
>>>  }
>>>  ^
>>> make[3]: *** [drivers/i2c/algos/i2c-algo-bit.o] Error 1
>>
>> In drivers/media/pci/tw68/Kconfig, VIDEO_TW68 should depend on I2C in order
>> to make it safe to select I2C_ALGOBIT.
>>
>> In drivers/net/can/sja1000/Kconfig, CAN_PEAK_PCIEC should depend on I2C
>> instead of selecting I2C (and change the help text).

-- 
~Randy