diff mbox

power: bq27xxx_battery: Revert "Remove unneeded dependency in Kconfig"

Message ID 5640D02D.6040601@ti.com
State Not Applicable
Headers show

Commit Message

Andrew Davis Nov. 9, 2015, 4:56 p.m. UTC
On 11/09/2015 07:50 AM, Arnd Bergmann wrote:
> The dependency was clearly needed, without it it is possible to
> build the core i2c driver as a loadable module and the bq27xxx
> driver built-in, which results in link errors:
>
> drivers/built-in.o: In function `bq27xxx_battery_i2c_read':
> binder.c:(.text+0x360bf0): undefined reference to `i2c_transfer'
> binder.c:(.text+0x360c10): undefined reference to `i2c_transfer'
> drivers/built-in.o: In function `bq27xxx_battery_init':
> binder.c:(.init.text+0xe668): undefined reference to `i2c_register_driver'
> drivers/built-in.o: In function `bq27xxx_battery_exit':
> binder.c:(.exit.text+0x1a0c): undefined reference to `i2c_del_driver'
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Fixes: 6bd03ce3c12a ("power: bq27xxx_battery: Remove unneeded dependency in Kconfig")
> ---
> The bug was originally found and fixed by Xiong Zhou, but Andrew Davis
> broke it again by reverting the fix.
>
> I found it today on my ARM randconfig builds.
>
> diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
> index 237d7aa73e8c..9f53fb74ae6f 100644
> --- a/drivers/power/Kconfig
> +++ b/drivers/power/Kconfig
> @@ -159,6 +159,7 @@ config BATTERY_SBS
>
>   config BATTERY_BQ27XXX
>   	tristate "BQ27xxx battery driver"
> +	depends on I2C || I2C=n
>   	help
>   	  Say Y here to enable support for batteries with BQ27xxx (I2C/HDQ) chips.
>
>

Nothing enabled by BATTERY_BQ27XXX depends on I2C, this workaround is not
correct as it prevents BATTERY_BQ27XXX from being built-in when I2C is a
module, there is no reason for this limitation.

The undefined references are caused by BATTERY_BQ27XXX being built-in AND
its I2C functionality being enabled (BATTERY_BQ27XXX_I2C) while I2C is a
module. Reorganizing this driver is being discussed anyway, but in the
meantime a more correct fix would be along the lines of:

--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Arnd Bergmann Nov. 9, 2015, 8:51 p.m. UTC | #1
On Monday 09 November 2015 10:56:13 Andrew F. Davis wrote:
> On 11/09/2015 07:50 AM, Arnd Bergmann wrote:
> Nothing enabled by BATTERY_BQ27XXX depends on I2C, this workaround is not
> correct as it prevents BATTERY_BQ27XXX from being built-in when I2C is a
> module, there is no reason for this limitation.
> 
> The undefined references are caused by BATTERY_BQ27XXX being built-in AND
> its I2C functionality being enabled (BATTERY_BQ27XXX_I2C) while I2C is a
> module. Reorganizing this driver is being discussed anyway, but in the
> meantime a more correct fix would be along the lines of:
> 
> diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
> index 6de6ec2..d1d32f9 100644
> --- a/drivers/power/Kconfig
> +++ b/drivers/power/Kconfig
> @@ -167,6 +167,7 @@ config BATTERY_BQ27XXX_I2C
>          bool "BQ27xxx I2C support"
>          depends on BATTERY_BQ27XXX
>          depends on I2C
> +       depends on !(I2C=m && BATTERY_BQ27XXX=y)
>          default y
>          help
>            Say Y here to enable support for batteries with BQ27xxx (I2C) chips.

That works too, there is just very little difference in the end here,
and it's easier to revert an patch that only introduces a regression
than to do a different hack, especially if it's going to be reworked
soon anyway.

Do you want to submit the above as a fixup to your other patch or
should we just do the revert? It would be good to get one of the two
into -rc1.

	Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrew Davis Nov. 9, 2015, 9:23 p.m. UTC | #2
On 11/09/2015 02:51 PM, Arnd Bergmann wrote:
> On Monday 09 November 2015 10:56:13 Andrew F. Davis wrote:
>> On 11/09/2015 07:50 AM, Arnd Bergmann wrote:
>> Nothing enabled by BATTERY_BQ27XXX depends on I2C, this workaround is not
>> correct as it prevents BATTERY_BQ27XXX from being built-in when I2C is a
>> module, there is no reason for this limitation.
>>
>> The undefined references are caused by BATTERY_BQ27XXX being built-in AND
>> its I2C functionality being enabled (BATTERY_BQ27XXX_I2C) while I2C is a
>> module. Reorganizing this driver is being discussed anyway, but in the
>> meantime a more correct fix would be along the lines of:
>>
>> diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
>> index 6de6ec2..d1d32f9 100644
>> --- a/drivers/power/Kconfig
>> +++ b/drivers/power/Kconfig
>> @@ -167,6 +167,7 @@ config BATTERY_BQ27XXX_I2C
>>           bool "BQ27xxx I2C support"
>>           depends on BATTERY_BQ27XXX
>>           depends on I2C
>> +       depends on !(I2C=m && BATTERY_BQ27XXX=y)
>>           default y
>>           help
>>             Say Y here to enable support for batteries with BQ27xxx (I2C) chips.
>
> That works too, there is just very little difference in the end here,
> and it's easier to revert an patch that only introduces a regression
> than to do a different hack, especially if it's going to be reworked
> soon anyway.
>
> Do you want to submit the above as a fixup to your other patch or
> should we just do the revert? It would be good to get one of the two
> into -rc1.
>

I can just submit this fix, it would probably be better for the short term
until the rework is done.

Andrew
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 6de6ec2..d1d32f9 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -167,6 +167,7 @@  config BATTERY_BQ27XXX_I2C
         bool "BQ27xxx I2C support"
         depends on BATTERY_BQ27XXX
         depends on I2C
+       depends on !(I2C=m && BATTERY_BQ27XXX=y)
         default y
         help
           Say Y here to enable support for batteries with BQ27xxx (I2C) chips.