mbox series

[v12,00/11] Support ROHM BD99954 charger IC

Message ID cover.1588944082.git.matti.vaittinen@fi.rohmeurope.com (mailing list archive)
Headers show
Series Support ROHM BD99954 charger IC | expand

Message

Vaittinen, Matti May 8, 2020, 3:38 p.m. UTC
Please note that this series should be applied to two trees. Patches
1-4 (or 1-5 as suggested by Sebastian) should go to regulator tree.
Perhaps Mark can provide an immutable branch to Sebastian? Rest of the
patches can then go to power-supply tree.

Support ROHM BD99954 Battery Management IC

ROHM BD99954 is a Battery Management IC for 1-4 cell Lithium-Ion
secondary battery. BD99954 is intended to be used in space-constraint
equipment such as Low profile Notebook PC, Tablets and other
applications.

Series extracts a "linear ranges" helper out of the regulator
framework. Linear ranges helper is intended to help converting
real-world values to register values when conversion is linear. I
suspect this is useful also for power subsystem and possibly for clk.

Current implementation does not support inversely proportional ranges
but adding support for that could be helpful.

This version of series introduces new battry DT binding entries and
adds the parsing in power_supply_get_battery_info().

Changelog v12:
 - Added missing KConfig dependency from linear_ranges_test to
   linear_ranges lib. Thanks to Mark for pointing it out.

Changelog v11:
 - Rebased on top of v5.7-rc4

Changelog v10:
 - Add patch 11 which removes the "default n" from power/supply KConfig
   (Please just drop from series if you disagree)
 - Fix the regulator_linear_ranges added to qcom_smd-regulator.c at
   v5.7-rc1
 - Minor styling to BD70528 power/supply driver as suggested by Andy

Changelog v9:
 General:
   - rebased on top of v5.7-rc1
   - re-ordered patches as suggested by Sebastian Reichel
   - added few acks
 BD99954 driver:
   - Moved bd99954-charger.h to drivers/power/supply
   - fixed a typo from print
   - used devm_add_action_or_reset and removed remove callback

Changelog v8:
 Linear ranges
   - small improvements suggested by Andy Shevchenko, no functional changes

Changelog v7:
 General:
   - rebased on top of v5.6
 bd99954 driver:
   - fixed bunch of styling issues spotted by Andy Shevchenko
   - dropped ACPI table as ACPI properties are not supported at this
     version of driver.
   - added few acks

Changelog v6:
 generic:
   - rebased on top of 5.6-rc7.
 linear ranges:
   - moved to lib as requested by Greg KH
   - EXPORT_SYMBOL => EXPORT_SYMBOL_GPL
   - licence GPL-2.0, not later
   - added KUnit test for linear ranges

Changelog v5:
 generic:
   - rebased on top of 5.6-rc6.
 DT-bindings:
   - Dropped -charger extension from compatible and removed wildcard x.
 regulators:
   - squashed the regulator changes in one patch.
 power-supply KConfig:
   - fixed indentiation
   - dropped unnecessary 'default N' from BD99954.

Changelog v4:
 generic:
   - rebase and drop RFC.
 DT-bindings:
   - add I2C node address-cells and size-cells to fix yaml check errors
   - uncomment multipleOf:
 bd70528:
   - add patch which renames driver internal linear_range struct to
     avoid collision when regulator/driver.h (which gets included from
     rohm generic header) introduces the linear_range struct.
 regulators:
   - rebase to v5.6-rc2 and convert also the two newly introduced
     drivers to use linear_range struct instead of
     regulator_linear_range.
 linear_ranges:
   - Fix kerneldoc.

Changelog RFC-v3:
 DT-bindings:
   - fix the BD99954 binding (the *-microvolt Vs. *-microvolts issue is
     still there. Not sure which one is correct)
   - renabe tricklecharge-* binding to trickle-charge-* as suggested by
     Rob.
 - drop the linear-ranges helper which was written for BD70528 and
   extract the linear-range code from regulator framework instead.
 - refactor regulator framework to utilize extracted linear-ranges
   code.
 - change the struct regulator_linear_range to linear_range from
   regulator drivers.
 - refactor BD70528 to use regulator framework originated
   linear-ranges code.
 - change BD99954 to use linear-ranges code from regulator framework

Changelog RFC-v2:
 DT-bindings:
   - Used the battery parameters described in battery.txt
   - Added few new parameters to battery.txt
   - Added ASCII art charging profile chart for BD99954 to explain
     states and limits.
 Linear ranges:
   - Fixed division by zero error from linear-ranges code if step 0 is
     used.
 Power-supply core:
   - Added parsing of new battery parameters.
 BD99954 driver:
   - converted to use battery parameters from battery node
   - Added step 0 ranges for reg values which do not change voltage
   - added dt-node to psy-config

Patch 1:
	Linear ranges helpers
Patch 2:
	Test for linear ranges helpers
Patch 3:
	Rename driver internal struct linear_range from bd70528-power
Patch 4:
	Use linear-ranges helpers in regulator framework and
	convert regulator drivers to use new linear_range struct.
Patch 5:
	Use linear-ranges helpers in bd70528 driver
Patch 6:
	DT binding docs for the new battery parameters
Patch 7:
	Parsing of new battery parameters
Patch 8:
	BD99954 charger DT binding docs
Patch 9:
	ROHM BD99954 charger IC driver
Patch 10:
	Fix Kconfig help text indentiation for other entries as well.
Patch 11:
	Fix Kconfig by removing the "default n".

---

Matti Vaittinen (11):
  lib: add linear ranges helpers
  lib/test_linear_ranges: add a test for the 'linear_ranges'
  power: supply: bd70528: rename linear_range to avoid collision
  regulator: use linear_ranges helper
  power: supply: bd70528: use linear ranges
  dt-bindings: battery: add new battery parameters
  power: supply: add battery parameters
  dt_bindings: ROHM BD99954 Charger
  power: supply: Support ROHM bd99954 charger
  power: supply: Fix Kconfig help text indentiation
  power: supply: KConfig cleanup default n

 .../bindings/power/supply/battery.txt         |    6 +
 .../bindings/power/supply/rohm,bd99954.yaml   |  155 +++
 drivers/power/supply/Kconfig                  |   36 +-
 drivers/power/supply/Makefile                 |    1 +
 drivers/power/supply/bd70528-charger.c        |  140 +-
 drivers/power/supply/bd99954-charger.c        | 1142 +++++++++++++++++
 drivers/power/supply/bd99954-charger.h        | 1075 ++++++++++++++++
 drivers/power/supply/power_supply_core.c      |    8 +
 drivers/regulator/88pg86x.c                   |    4 +-
 drivers/regulator/88pm800-regulator.c         |    4 +-
 drivers/regulator/Kconfig                     |    1 +
 drivers/regulator/act8865-regulator.c         |    4 +-
 drivers/regulator/act8945a-regulator.c        |    2 +-
 drivers/regulator/arizona-ldo1.c              |    2 +-
 drivers/regulator/arizona-micsupp.c           |    4 +-
 drivers/regulator/as3711-regulator.c          |    6 +-
 drivers/regulator/as3722-regulator.c          |    4 +-
 drivers/regulator/axp20x-regulator.c          |   16 +-
 drivers/regulator/bcm590xx-regulator.c        |    8 +-
 drivers/regulator/bd70528-regulator.c         |    8 +-
 drivers/regulator/bd71828-regulator.c         |   10 +-
 drivers/regulator/bd718x7-regulator.c         |   26 +-
 drivers/regulator/da903x.c                    |    2 +-
 drivers/regulator/helpers.c                   |  130 +-
 drivers/regulator/hi6421-regulator.c          |    4 +-
 drivers/regulator/lochnagar-regulator.c       |    4 +-
 drivers/regulator/lp873x-regulator.c          |    4 +-
 drivers/regulator/lp87565-regulator.c         |    2 +-
 drivers/regulator/lp8788-buck.c               |    2 +-
 drivers/regulator/max77650-regulator.c        |    2 +-
 drivers/regulator/mcp16502.c                  |    4 +-
 drivers/regulator/mp8859.c                    |    2 +-
 drivers/regulator/mt6323-regulator.c          |    6 +-
 drivers/regulator/mt6358-regulator.c          |    8 +-
 drivers/regulator/mt6380-regulator.c          |    6 +-
 drivers/regulator/mt6397-regulator.c          |    6 +-
 drivers/regulator/palmas-regulator.c          |    4 +-
 drivers/regulator/qcom-rpmh-regulator.c       |    2 +-
 drivers/regulator/qcom_rpm-regulator.c        |   14 +-
 drivers/regulator/qcom_smd-regulator.c        |   78 +-
 drivers/regulator/rk808-regulator.c           |   10 +-
 drivers/regulator/s2mps11.c                   |   14 +-
 drivers/regulator/sky81452-regulator.c        |    2 +-
 drivers/regulator/stpmic1_regulator.c         |   18 +-
 drivers/regulator/tps65086-regulator.c        |   10 +-
 drivers/regulator/tps65217-regulator.c        |    4 +-
 drivers/regulator/tps65218-regulator.c        |    6 +-
 drivers/regulator/tps65912-regulator.c        |    4 +-
 drivers/regulator/twl-regulator.c             |    4 +-
 drivers/regulator/twl6030-regulator.c         |    2 +-
 drivers/regulator/wm831x-dcdc.c               |    2 +-
 drivers/regulator/wm831x-ldo.c                |    4 +-
 drivers/regulator/wm8350-regulator.c          |    2 +-
 drivers/regulator/wm8400-regulator.c          |    2 +-
 include/linux/linear_range.h                  |   48 +
 include/linux/power_supply.h                  |    4 +
 include/linux/regulator/driver.h              |   27 +-
 lib/Kconfig                                   |    3 +
 lib/Kconfig.debug                             |   12 +
 lib/Makefile                                  |    2 +
 lib/linear_ranges.c                           |  241 ++++
 lib/test_linear_ranges.c                      |  228 ++++
 62 files changed, 3229 insertions(+), 362 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/power/supply/rohm,bd99954.yaml
 create mode 100644 drivers/power/supply/bd99954-charger.c
 create mode 100644 drivers/power/supply/bd99954-charger.h
 create mode 100644 include/linux/linear_range.h
 create mode 100644 lib/linear_ranges.c
 create mode 100644 lib/test_linear_ranges.c


base-commit: 0e698dfa282211e414076f9dc7e83c1c288314fd

Comments

Mark Brown May 8, 2020, 5:13 p.m. UTC | #1
On Fri, 8 May 2020 18:38:17 +0300, Matti Vaittinen wrote:
> Please note that this series should be applied to two trees. Patches
> 1-4 (or 1-5 as suggested by Sebastian) should go to regulator tree.
> Perhaps Mark can provide an immutable branch to Sebastian? Rest of the
> patches can then go to power-supply tree.
> 
> Support ROHM BD99954 Battery Management IC
> 
> [...]

Applied to

   local tree regulator/for-5.7

Thanks!

[1/4] lib: add linear ranges helpers
      (no commit info)
[2/4] lib/test_linear_ranges: add a test for the 'linear_ranges'
      (no commit info)
[3/4] power: supply: bd70528: rename linear_range to avoid collision
      (no commit info)
[4/4] regulator: use linear_ranges helper
      (no commit info)

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark
Mark Brown May 8, 2020, 5:20 p.m. UTC | #2
On Fri, May 08, 2020 at 06:38:17PM +0300, Matti Vaittinen wrote:
> Please note that this series should be applied to two trees. Patches
> 1-4 (or 1-5 as suggested by Sebastian) should go to regulator tree.
> Perhaps Mark can provide an immutable branch to Sebastian? Rest of the
> patches can then go to power-supply tree.

The following changes since commit 0e698dfa282211e414076f9dc7e83c1c288314fd:

  Linux 5.7-rc4 (2020-05-03 14:56:04 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git tags/linear-ranges-lib

for you to fetch changes up to 60ab7f4153b6af461c90d572c31104086b44639f:

  regulator: use linear_ranges helper (2020-05-08 18:18:13 +0100)

----------------------------------------------------------------
lib: Add linear ranges helper library and start using it

Series extracts a "linear ranges" helper out of the regulator
framework. Linear ranges helper is intended to help converting
real-world values to register values when conversion is linear. I
suspect this is useful also for power subsystem and possibly for clk.

----------------------------------------------------------------
Matti Vaittinen (4):
      lib: add linear ranges helpers
      lib/test_linear_ranges: add a test for the 'linear_ranges'
      power: supply: bd70528: rename linear_range to avoid collision
      regulator: use linear_ranges helper

 drivers/power/supply/bd70528-charger.c  |  10 +-
 drivers/regulator/88pg86x.c             |   4 +-
 drivers/regulator/88pm800-regulator.c   |   4 +-
 drivers/regulator/Kconfig               |   1 +
 drivers/regulator/act8865-regulator.c   |   4 +-
 drivers/regulator/act8945a-regulator.c  |   2 +-
 drivers/regulator/arizona-ldo1.c        |   2 +-
 drivers/regulator/arizona-micsupp.c     |   4 +-
 drivers/regulator/as3711-regulator.c    |   6 +-
 drivers/regulator/as3722-regulator.c    |   4 +-
 drivers/regulator/axp20x-regulator.c    |  16 +--
 drivers/regulator/bcm590xx-regulator.c  |   8 +-
 drivers/regulator/bd70528-regulator.c   |   8 +-
 drivers/regulator/bd71828-regulator.c   |  10 +-
 drivers/regulator/bd718x7-regulator.c   |  26 ++--
 drivers/regulator/da903x.c              |   2 +-
 drivers/regulator/helpers.c             | 130 ++++++++---------
 drivers/regulator/hi6421-regulator.c    |   4 +-
 drivers/regulator/lochnagar-regulator.c |   4 +-
 drivers/regulator/lp873x-regulator.c    |   4 +-
 drivers/regulator/lp87565-regulator.c   |   2 +-
 drivers/regulator/lp8788-buck.c         |   2 +-
 drivers/regulator/max77650-regulator.c  |   2 +-
 drivers/regulator/mcp16502.c            |   4 +-
 drivers/regulator/mp8859.c              |   2 +-
 drivers/regulator/mt6323-regulator.c    |   6 +-
 drivers/regulator/mt6358-regulator.c    |   8 +-
 drivers/regulator/mt6380-regulator.c    |   6 +-
 drivers/regulator/mt6397-regulator.c    |   6 +-
 drivers/regulator/palmas-regulator.c    |   4 +-
 drivers/regulator/qcom-rpmh-regulator.c |   2 +-
 drivers/regulator/qcom_rpm-regulator.c  |  14 +-
 drivers/regulator/qcom_smd-regulator.c  |  78 +++++------
 drivers/regulator/rk808-regulator.c     |  10 +-
 drivers/regulator/s2mps11.c             |  14 +-
 drivers/regulator/sky81452-regulator.c  |   2 +-
 drivers/regulator/stpmic1_regulator.c   |  18 +--
 drivers/regulator/tps65086-regulator.c  |  10 +-
 drivers/regulator/tps65217-regulator.c  |   4 +-
 drivers/regulator/tps65218-regulator.c  |   6 +-
 drivers/regulator/tps65912-regulator.c  |   4 +-
 drivers/regulator/twl-regulator.c       |   4 +-
 drivers/regulator/twl6030-regulator.c   |   2 +-
 drivers/regulator/wm831x-dcdc.c         |   2 +-
 drivers/regulator/wm831x-ldo.c          |   4 +-
 drivers/regulator/wm8350-regulator.c    |   2 +-
 drivers/regulator/wm8400-regulator.c    |   2 +-
 include/linux/linear_range.h            |  48 +++++++
 include/linux/regulator/driver.h        |  27 +---
 lib/Kconfig                             |   3 +
 lib/Kconfig.debug                       |  12 ++
 lib/Makefile                            |   2 +
 lib/linear_ranges.c                     | 241 ++++++++++++++++++++++++++++++++
 lib/test_linear_ranges.c                | 228 ++++++++++++++++++++++++++++++
 54 files changed, 768 insertions(+), 266 deletions(-)
 create mode 100644 include/linux/linear_range.h
 create mode 100644 lib/linear_ranges.c
 create mode 100644 lib/test_linear_ranges.c
Sebastian Reichel May 10, 2020, 12:32 a.m. UTC | #3
Hi,

On Fri, May 08, 2020 at 06:20:24PM +0100, Mark Brown wrote:
> On Fri, May 08, 2020 at 06:38:17PM +0300, Matti Vaittinen wrote:
> > Please note that this series should be applied to two trees. Patches
> > 1-4 (or 1-5 as suggested by Sebastian) should go to regulator tree.
> > Perhaps Mark can provide an immutable branch to Sebastian? Rest of the
> > patches can then go to power-supply tree.
> 
> The following changes since commit 0e698dfa282211e414076f9dc7e83c1c288314fd:
> 
>   Linux 5.7-rc4 (2020-05-03 14:56:04 -0700)
> 
> are available in the Git repository at:
> 
>   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git tags/linear-ranges-lib
> 
> for you to fetch changes up to 60ab7f4153b6af461c90d572c31104086b44639f:
> 
>   regulator: use linear_ranges helper (2020-05-08 18:18:13 +0100)
> 
> ----------------------------------------------------------------
> lib: Add linear ranges helper library and start using it
> 
> Series extracts a "linear ranges" helper out of the regulator
> framework. Linear ranges helper is intended to help converting
> real-world values to register values when conversion is linear. I
> suspect this is useful also for power subsystem and possibly for clk.
> 
> ----------------------------------------------------------------

Thanks, merged to power-supply's for-next branch.

-- Sebastian

> Matti Vaittinen (4):
>       lib: add linear ranges helpers
>       lib/test_linear_ranges: add a test for the 'linear_ranges'
>       power: supply: bd70528: rename linear_range to avoid collision
>       regulator: use linear_ranges helper
> 
>  drivers/power/supply/bd70528-charger.c  |  10 +-
>  drivers/regulator/88pg86x.c             |   4 +-
>  drivers/regulator/88pm800-regulator.c   |   4 +-
>  drivers/regulator/Kconfig               |   1 +
>  drivers/regulator/act8865-regulator.c   |   4 +-
>  drivers/regulator/act8945a-regulator.c  |   2 +-
>  drivers/regulator/arizona-ldo1.c        |   2 +-
>  drivers/regulator/arizona-micsupp.c     |   4 +-
>  drivers/regulator/as3711-regulator.c    |   6 +-
>  drivers/regulator/as3722-regulator.c    |   4 +-
>  drivers/regulator/axp20x-regulator.c    |  16 +--
>  drivers/regulator/bcm590xx-regulator.c  |   8 +-
>  drivers/regulator/bd70528-regulator.c   |   8 +-
>  drivers/regulator/bd71828-regulator.c   |  10 +-
>  drivers/regulator/bd718x7-regulator.c   |  26 ++--
>  drivers/regulator/da903x.c              |   2 +-
>  drivers/regulator/helpers.c             | 130 ++++++++---------
>  drivers/regulator/hi6421-regulator.c    |   4 +-
>  drivers/regulator/lochnagar-regulator.c |   4 +-
>  drivers/regulator/lp873x-regulator.c    |   4 +-
>  drivers/regulator/lp87565-regulator.c   |   2 +-
>  drivers/regulator/lp8788-buck.c         |   2 +-
>  drivers/regulator/max77650-regulator.c  |   2 +-
>  drivers/regulator/mcp16502.c            |   4 +-
>  drivers/regulator/mp8859.c              |   2 +-
>  drivers/regulator/mt6323-regulator.c    |   6 +-
>  drivers/regulator/mt6358-regulator.c    |   8 +-
>  drivers/regulator/mt6380-regulator.c    |   6 +-
>  drivers/regulator/mt6397-regulator.c    |   6 +-
>  drivers/regulator/palmas-regulator.c    |   4 +-
>  drivers/regulator/qcom-rpmh-regulator.c |   2 +-
>  drivers/regulator/qcom_rpm-regulator.c  |  14 +-
>  drivers/regulator/qcom_smd-regulator.c  |  78 +++++------
>  drivers/regulator/rk808-regulator.c     |  10 +-
>  drivers/regulator/s2mps11.c             |  14 +-
>  drivers/regulator/sky81452-regulator.c  |   2 +-
>  drivers/regulator/stpmic1_regulator.c   |  18 +--
>  drivers/regulator/tps65086-regulator.c  |  10 +-
>  drivers/regulator/tps65217-regulator.c  |   4 +-
>  drivers/regulator/tps65218-regulator.c  |   6 +-
>  drivers/regulator/tps65912-regulator.c  |   4 +-
>  drivers/regulator/twl-regulator.c       |   4 +-
>  drivers/regulator/twl6030-regulator.c   |   2 +-
>  drivers/regulator/wm831x-dcdc.c         |   2 +-
>  drivers/regulator/wm831x-ldo.c          |   4 +-
>  drivers/regulator/wm8350-regulator.c    |   2 +-
>  drivers/regulator/wm8400-regulator.c    |   2 +-
>  include/linux/linear_range.h            |  48 +++++++
>  include/linux/regulator/driver.h        |  27 +---
>  lib/Kconfig                             |   3 +
>  lib/Kconfig.debug                       |  12 ++
>  lib/Makefile                            |   2 +
>  lib/linear_ranges.c                     | 241 ++++++++++++++++++++++++++++++++
>  lib/test_linear_ranges.c                | 228 ++++++++++++++++++++++++++++++
>  54 files changed, 768 insertions(+), 266 deletions(-)
>  create mode 100644 include/linux/linear_range.h
>  create mode 100644 lib/linear_ranges.c
>  create mode 100644 lib/test_linear_ranges.c
Sebastian Reichel May 10, 2020, 4:04 p.m. UTC | #4
Hi,

On Fri, May 08, 2020 at 06:38:17PM +0300, Matti Vaittinen wrote:
> Please note that this series should be applied to two trees. Patches
> 1-4 (or 1-5 as suggested by Sebastian) should go to regulator tree.
> Perhaps Mark can provide an immutable branch to Sebastian? Rest of the
> patches can then go to power-supply tree.

Thanks, I merged the pull-request from Mark and queued patches 5-11.

-- Sebastian
Vaittinen, Matti May 10, 2020, 6:51 p.m. UTC | #5
Thanks a lot Sebastian and Mark!

On Sun, 2020-05-10 at 18:04 +0200, Sebastian Reichel wrote:
> Hi,
> 
> On Fri, May 08, 2020 at 06:38:17PM +0300, Matti Vaittinen wrote:
> > Please note that this series should be applied to two trees.
> > Patches
> > 1-4 (or 1-5 as suggested by Sebastian) should go to regulator tree.
> > Perhaps Mark can provide an immutable branch to Sebastian? Rest of
> > the
> > patches can then go to power-supply tree.
> 
> Thanks, I merged the pull-request from Mark and queued patches 5-11.
> 

I think it's fair to point out also for Sebastian that Mark spotted a
compile time warning from linear_ranges when it is compiled as a
module. This is only occurring when linear_ranges is compiled as a
module. And that requires CONFIG_REGULATOR to be n and linear_ranges
test to be m. I guess this is unlikely as I think enabling
linear_ranges test code is not common for setups that are not using
linear ranges - but for sure some test setup hits this somewhere.

Problem is that linear_ranges can be compiled as module (it's tristated
in Kconfig) but does not declare MODULE_LICENCE macro.

I sent this incremental patch which should fix the issue:
https://lore.kernel.org/lkml/20200509151519.GA7100@localhost.localdomain/

 - but does applying it to either power-supply or regulator cause a
conflict?

I just wanted to point this out - sorry for the trouble! And please let
me know if you wish me to send some other fix. I will gladly do so and
correct my bugs :)

--Matti