Re: [EXTERNAL] Re: [PATCH v6 2/2] power: supply: bq256xx: Introduce the BQ256XX charger driver
Sebastian, On 10/19/20 4:53 PM, Sebastian Reichel wrote: Hi Ricardo, On Mon, Oct 05, 2020 at 04:47:09PM -0500, Ricardo Rivera-Matos wrote: The BQ256XX family of devices are highly integrated buck chargers for single cell batteries. Signed-off-by: Ricardo Rivera-Matos v5 - adds power_supply_put_battery_info() and devm_add_action_or_rest() calls v6 - implements bq256xx_remove function v6 unfortunately makes things worse. You might want to read some background information about managed resources: https://lwn.net/Articles/222860/ https://www.kernel.org/doc/html/latest/driver-api/driver-model/devres.html ACK --- drivers/power/supply/Kconfig | 11 + drivers/power/supply/Makefile |1 + drivers/power/supply/bq256xx_charger.c | 1803 3 files changed, 1815 insertions(+) create mode 100644 drivers/power/supply/bq256xx_charger.c diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig index 44d3c8512fb8..87d852914bc2 100644 --- a/drivers/power/supply/Kconfig +++ b/drivers/power/supply/Kconfig @@ -618,6 +618,17 @@ config CHARGER_BQ25890 help Say Y to enable support for the TI BQ25890 battery charger. +config CHARGER_BQ256XX + tristate "TI BQ256XX battery charger driver" + depends on I2C + depends on GPIOLIB || COMPILE_TEST + select REGMAP_I2C + help + Say Y to enable support for the TI BQ256XX battery chargers. The + BQ256XX family of devices are highly-integrated, switch-mode battery + charge management and system power path management devices for single + cell Li-ion and Li-polymer batteries. + config CHARGER_SMB347 tristate "Summit Microelectronics SMB347 Battery Charger" depends on I2C diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile index b9644663e435..e762442c7cc6 100644 --- a/drivers/power/supply/Makefile +++ b/drivers/power/supply/Makefile @@ -83,6 +83,7 @@ obj-$(CONFIG_CHARGER_BQ24190) += bq24190_charger.o obj-$(CONFIG_CHARGER_BQ24257) += bq24257_charger.o obj-$(CONFIG_CHARGER_BQ24735) += bq24735-charger.o obj-$(CONFIG_CHARGER_BQ25890) += bq25890_charger.o +obj-$(CONFIG_CHARGER_BQ256XX) += bq256xx_charger.o obj-$(CONFIG_CHARGER_SMB347) += smb347-charger.o obj-$(CONFIG_CHARGER_TPS65090)+= tps65090-charger.o obj-$(CONFIG_CHARGER_TPS65217)+= tps65217_charger.o diff --git a/drivers/power/supply/bq256xx_charger.c b/drivers/power/supply/bq256xx_charger.c new file mode 100644 index ..b9caec10c456 --- /dev/null +++ b/drivers/power/supply/bq256xx_charger.c @@ -0,0 +1,1803 @@ +// SPDX-License-Identifier: GPL-2.0 +// BQ256XX Battery Charger Driver +// Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BQ256XX_MANUFACTURER "Texas Instruments" + +#define BQ256XX_INPUT_CURRENT_LIMIT0x00 +#define BQ256XX_CHARGER_CONTROL_0 0x01 +#define BQ256XX_CHARGE_CURRENT_LIMIT 0x02 +#define BQ256XX_PRECHG_AND_TERM_CURR_LIM 0x03 +#define BQ256XX_BATTERY_VOLTAGE_LIMIT 0x04 +#define BQ256XX_CHARGER_CONTROL_1 0x05 +#define BQ256XX_CHARGER_CONTROL_2 0x06 +#define BQ256XX_CHARGER_CONTROL_3 0x07 +#define BQ256XX_CHARGER_STATUS_0 0x08 +#define BQ256XX_CHARGER_STATUS_1 0x09 +#define BQ256XX_CHARGER_STATUS_2 0x0a +#define BQ256XX_PART_INFORMATION 0x0b +#define BQ256XX_CHARGER_CONTROL_4 0x0c + +#define BQ256XX_IINDPM_MASKGENMASK(4, 0) +#define BQ256XX_IINDPM_STEP_uA 10 +#define BQ256XX_IINDPM_OFFSET_uA 10 +#define BQ256XX_IINDPM_MIN_uA 10 +#define BQ256XX_IINDPM_MAX_uA 320 +#define BQ256XX_IINDPM_DEF_uA 240 + +#define BQ256XX_VINDPM_MASKGENMASK(3, 0) +#define BQ256XX_VINDPM_STEP_uV 10 +#define BQ256XX_VINDPM_OFFSET_uV 390 +#define BQ256XX_VINDPM_MIN_uV 390 +#define BQ256XX_VINDPM_MAX_uV 540 +#define BQ256XX_VINDPM_DEF_uV 450 + +#define BQ256XX_VBATREG_MASK GENMASK(7, 3) +#define BQ2560X_VBATREG_STEP_uV32000 +#define BQ2560X_VBATREG_OFFSET_uV 3856000 +#define BQ2560X_VBATREG_MIN_uV 3856000 +#define BQ2560X_VBATREG_MAX_uV 4624000 +#define BQ2560X_VBATREG_DEF_uV 4208000 +#define BQ25601D_VBATREG_OFFSET_uV 3847000 +#define BQ25601D_VBATREG_MIN_uV3847000 +#define BQ25601D_VBATREG_MAX_uV4615000 +#define BQ25601D_VBATREG_DEF_uV4199000 +#define BQ2561X_VBATREG_STEP_uV1 +#define BQ25611D_VBATREG_MIN_uV3494000 +#define BQ25611D_VBATREG_MAX_uV451
Re: [PATCH v6 2/2] power: supply: bq256xx: Introduce the BQ256XX charger driver
Hi Ricardo, On Mon, Oct 05, 2020 at 04:47:09PM -0500, Ricardo Rivera-Matos wrote: > The BQ256XX family of devices are highly integrated buck chargers > for single cell batteries. > > Signed-off-by: Ricardo Rivera-Matos > > v5 - adds power_supply_put_battery_info() and devm_add_action_or_rest() calls > > v6 - implements bq256xx_remove function v6 unfortunately makes things worse. You might want to read some background information about managed resources: https://lwn.net/Articles/222860/ https://www.kernel.org/doc/html/latest/driver-api/driver-model/devres.html > --- > drivers/power/supply/Kconfig | 11 + > drivers/power/supply/Makefile |1 + > drivers/power/supply/bq256xx_charger.c | 1803 > 3 files changed, 1815 insertions(+) > create mode 100644 drivers/power/supply/bq256xx_charger.c > > diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig > index 44d3c8512fb8..87d852914bc2 100644 > --- a/drivers/power/supply/Kconfig > +++ b/drivers/power/supply/Kconfig > @@ -618,6 +618,17 @@ config CHARGER_BQ25890 > help > Say Y to enable support for the TI BQ25890 battery charger. > > +config CHARGER_BQ256XX > + tristate "TI BQ256XX battery charger driver" > + depends on I2C > + depends on GPIOLIB || COMPILE_TEST > + select REGMAP_I2C > + help > + Say Y to enable support for the TI BQ256XX battery chargers. The > + BQ256XX family of devices are highly-integrated, switch-mode battery > + charge management and system power path management devices for single > + cell Li-ion and Li-polymer batteries. > + > config CHARGER_SMB347 > tristate "Summit Microelectronics SMB347 Battery Charger" > depends on I2C > diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile > index b9644663e435..e762442c7cc6 100644 > --- a/drivers/power/supply/Makefile > +++ b/drivers/power/supply/Makefile > @@ -83,6 +83,7 @@ obj-$(CONFIG_CHARGER_BQ24190) += bq24190_charger.o > obj-$(CONFIG_CHARGER_BQ24257)+= bq24257_charger.o > obj-$(CONFIG_CHARGER_BQ24735)+= bq24735-charger.o > obj-$(CONFIG_CHARGER_BQ25890)+= bq25890_charger.o > +obj-$(CONFIG_CHARGER_BQ256XX)+= bq256xx_charger.o > obj-$(CONFIG_CHARGER_SMB347) += smb347-charger.o > obj-$(CONFIG_CHARGER_TPS65090) += tps65090-charger.o > obj-$(CONFIG_CHARGER_TPS65217) += tps65217_charger.o > diff --git a/drivers/power/supply/bq256xx_charger.c > b/drivers/power/supply/bq256xx_charger.c > new file mode 100644 > index ..b9caec10c456 > --- /dev/null > +++ b/drivers/power/supply/bq256xx_charger.c > @@ -0,0 +1,1803 @@ > +// SPDX-License-Identifier: GPL-2.0 > +// BQ256XX Battery Charger Driver > +// Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#define BQ256XX_MANUFACTURER "Texas Instruments" > + > +#define BQ256XX_INPUT_CURRENT_LIMIT 0x00 > +#define BQ256XX_CHARGER_CONTROL_00x01 > +#define BQ256XX_CHARGE_CURRENT_LIMIT 0x02 > +#define BQ256XX_PRECHG_AND_TERM_CURR_LIM 0x03 > +#define BQ256XX_BATTERY_VOLTAGE_LIMIT0x04 > +#define BQ256XX_CHARGER_CONTROL_10x05 > +#define BQ256XX_CHARGER_CONTROL_20x06 > +#define BQ256XX_CHARGER_CONTROL_30x07 > +#define BQ256XX_CHARGER_STATUS_0 0x08 > +#define BQ256XX_CHARGER_STATUS_1 0x09 > +#define BQ256XX_CHARGER_STATUS_2 0x0a > +#define BQ256XX_PART_INFORMATION 0x0b > +#define BQ256XX_CHARGER_CONTROL_40x0c > + > +#define BQ256XX_IINDPM_MASK GENMASK(4, 0) > +#define BQ256XX_IINDPM_STEP_uA 10 > +#define BQ256XX_IINDPM_OFFSET_uA 10 > +#define BQ256XX_IINDPM_MIN_uA10 > +#define BQ256XX_IINDPM_MAX_uA320 > +#define BQ256XX_IINDPM_DEF_uA240 > + > +#define BQ256XX_VINDPM_MASK GENMASK(3, 0) > +#define BQ256XX_VINDPM_STEP_uV 10 > +#define BQ256XX_VINDPM_OFFSET_uV 390 > +#define BQ256XX_VINDPM_MIN_uV390 > +#define BQ256XX_VINDPM_MAX_uV540 > +#define BQ256XX_VINDPM_DEF_uV450 > + > +#define BQ256XX_VBATREG_MASK GENMASK(7, 3) > +#define BQ2560X_VBATREG_STEP_uV 32000 > +#define BQ2560X_VBATREG_OFFSET_uV3856000 > +#define BQ2560X_VBATREG_MIN_uV 3856000 > +#define BQ2560X_VBATREG_MAX_uV 4624000 > +#define BQ2560X_VBATREG_DEF_uV 4208000 > +#define BQ25601D_VBATREG_OFFSET_uV 3847000 > +#define BQ25601D_VBATREG_MIN_uV 3847000 > +#define BQ25601D_VBATREG_MAX_uV 4615000 > +#define BQ25601D_VBATREG_DEF_uV
[PATCH v6 2/2] power: supply: bq256xx: Introduce the BQ256XX charger driver
The BQ256XX family of devices are highly integrated buck chargers for single cell batteries. Signed-off-by: Ricardo Rivera-Matos v5 - adds power_supply_put_battery_info() and devm_add_action_or_rest() calls v6 - implements bq256xx_remove function --- drivers/power/supply/Kconfig | 11 + drivers/power/supply/Makefile |1 + drivers/power/supply/bq256xx_charger.c | 1803 3 files changed, 1815 insertions(+) create mode 100644 drivers/power/supply/bq256xx_charger.c diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig index 44d3c8512fb8..87d852914bc2 100644 --- a/drivers/power/supply/Kconfig +++ b/drivers/power/supply/Kconfig @@ -618,6 +618,17 @@ config CHARGER_BQ25890 help Say Y to enable support for the TI BQ25890 battery charger. +config CHARGER_BQ256XX + tristate "TI BQ256XX battery charger driver" + depends on I2C + depends on GPIOLIB || COMPILE_TEST + select REGMAP_I2C + help + Say Y to enable support for the TI BQ256XX battery chargers. The + BQ256XX family of devices are highly-integrated, switch-mode battery + charge management and system power path management devices for single + cell Li-ion and Li-polymer batteries. + config CHARGER_SMB347 tristate "Summit Microelectronics SMB347 Battery Charger" depends on I2C diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile index b9644663e435..e762442c7cc6 100644 --- a/drivers/power/supply/Makefile +++ b/drivers/power/supply/Makefile @@ -83,6 +83,7 @@ obj-$(CONFIG_CHARGER_BQ24190) += bq24190_charger.o obj-$(CONFIG_CHARGER_BQ24257) += bq24257_charger.o obj-$(CONFIG_CHARGER_BQ24735) += bq24735-charger.o obj-$(CONFIG_CHARGER_BQ25890) += bq25890_charger.o +obj-$(CONFIG_CHARGER_BQ256XX) += bq256xx_charger.o obj-$(CONFIG_CHARGER_SMB347) += smb347-charger.o obj-$(CONFIG_CHARGER_TPS65090) += tps65090-charger.o obj-$(CONFIG_CHARGER_TPS65217) += tps65217_charger.o diff --git a/drivers/power/supply/bq256xx_charger.c b/drivers/power/supply/bq256xx_charger.c new file mode 100644 index ..b9caec10c456 --- /dev/null +++ b/drivers/power/supply/bq256xx_charger.c @@ -0,0 +1,1803 @@ +// SPDX-License-Identifier: GPL-2.0 +// BQ256XX Battery Charger Driver +// Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BQ256XX_MANUFACTURER "Texas Instruments" + +#define BQ256XX_INPUT_CURRENT_LIMIT0x00 +#define BQ256XX_CHARGER_CONTROL_0 0x01 +#define BQ256XX_CHARGE_CURRENT_LIMIT 0x02 +#define BQ256XX_PRECHG_AND_TERM_CURR_LIM 0x03 +#define BQ256XX_BATTERY_VOLTAGE_LIMIT 0x04 +#define BQ256XX_CHARGER_CONTROL_1 0x05 +#define BQ256XX_CHARGER_CONTROL_2 0x06 +#define BQ256XX_CHARGER_CONTROL_3 0x07 +#define BQ256XX_CHARGER_STATUS_0 0x08 +#define BQ256XX_CHARGER_STATUS_1 0x09 +#define BQ256XX_CHARGER_STATUS_2 0x0a +#define BQ256XX_PART_INFORMATION 0x0b +#define BQ256XX_CHARGER_CONTROL_4 0x0c + +#define BQ256XX_IINDPM_MASKGENMASK(4, 0) +#define BQ256XX_IINDPM_STEP_uA 10 +#define BQ256XX_IINDPM_OFFSET_uA 10 +#define BQ256XX_IINDPM_MIN_uA 10 +#define BQ256XX_IINDPM_MAX_uA 320 +#define BQ256XX_IINDPM_DEF_uA 240 + +#define BQ256XX_VINDPM_MASKGENMASK(3, 0) +#define BQ256XX_VINDPM_STEP_uV 10 +#define BQ256XX_VINDPM_OFFSET_uV 390 +#define BQ256XX_VINDPM_MIN_uV 390 +#define BQ256XX_VINDPM_MAX_uV 540 +#define BQ256XX_VINDPM_DEF_uV 450 + +#define BQ256XX_VBATREG_MASK GENMASK(7, 3) +#define BQ2560X_VBATREG_STEP_uV32000 +#define BQ2560X_VBATREG_OFFSET_uV 3856000 +#define BQ2560X_VBATREG_MIN_uV 3856000 +#define BQ2560X_VBATREG_MAX_uV 4624000 +#define BQ2560X_VBATREG_DEF_uV 4208000 +#define BQ25601D_VBATREG_OFFSET_uV 3847000 +#define BQ25601D_VBATREG_MIN_uV3847000 +#define BQ25601D_VBATREG_MAX_uV4615000 +#define BQ25601D_VBATREG_DEF_uV4199000 +#define BQ2561X_VBATREG_STEP_uV1 +#define BQ25611D_VBATREG_MIN_uV3494000 +#define BQ25611D_VBATREG_MAX_uV451 +#define BQ25611D_VBATREG_DEF_uV419 +#define BQ25618_VBATREG_MIN_uV 3504000 +#define BQ25618_VBATREG_MAX_uV 450 +#define BQ25618_VBATREG_DEF_uV 420 +#define BQ256XX_VBATREG_BIT_SHIFT 3 +#define BQ2561X_VBATREG_THRESH 0x8 +#define BQ25611D_VBATREG_THRESH_uV 429 +#define BQ25618_VBATREG_THRESH_uV 430 + +#define