mbox series

[v4,00/15] Add support for AXP192 PMIC

Message ID 20220629143046.213584-1-aidanmacdonald.0x0@gmail.com (mailing list archive)
Headers show
Series Add support for AXP192 PMIC | expand

Message

Aidan MacDonald June 29, 2022, 2:30 p.m. UTC
Changes in v4:

* Drop regmap-irq patches and rebase on top of the regmap-irq
  refactoring series[1], which implements the same functionality.
* Reorder mfd_cells, putting one-line entries at the bottom.
* Fix incorrect example in axp192-gpio device tree bindings.
* Perform adc_en2 flag -> adc_en2_mask conversion in axp20x_adc
  as a separate patch.
* Simplify axp192_usb_power_set_current_max().
* Drop unneeded OF dependency in pin control driver, and document
  tables used for describing register layouts.
* Various style fixups suggested by Andy Shevchenko.

[1]: https://lore.kernel.org/lkml/20220623211420.918875-1-aidanmacdonald.0x0@gmail.com/

Changes in v3:

* Update pinctrl driver to address Andy Shevchenko's review comments
  from v1, and fix a few other issues.
* Add gpio-ranges property and example snippet to gpio DT bindings.
* Update commit message of patch 01/16 to point out that all register
  addresses are obtained using sub_irq_reg().
* Document ccc_table in axp20x_battery. Also update commit message to
  note a small fix that is part of that patch.
* Drop axp20x_adc consolidation patch in favor of using separate adc_raw
  functions. It's a minor code size optimization that may not be worth
  the effort due to implementation complexity.
* Use the FIELD_GET macro in axp20x_adc to further clarify intent.
* Fix a typo in the regulator driver where an AXP20X regulator ID was
  mistakenly used instead of an AXP192 regulator ID. Also carry over
  an Acked-by: tag from v1. Hope that's okay.
* Accumulate Acked-by: tags from v1 on DT patches.
* Accumulate Acked-by: tags from v2.

Note that regmap maintainer Mark Brown has said the first two patches to
regmap-irq aren't suitable for inclusion into the kernel in their current
state. I'm including them for v3 so the series remains testable.

Changes in v2:

* Do a little cleanup of axp20x_adc suggested by Jonathan Cameron
* Consolidate ADC read functions in axp20x_adc
* Drop the axp192's read_label callback in axp20x_adc
* Clean up the axp192-gpio dt bindings
* Rewrite a problematic bit of code in axp20x_usb_power reported
  by kernel test robot
* Support AXP192 in axp20x_battery
* Split up regmap-irq changes to two separate patches

Cover letter from v1:

Hi all,

This patch series adds support for the X-Powers AXP192 PMIC to the
AXP20x driver framework.

The first patch is a small change to regmap-irq to support the AXP192's
unusual IRQ register layout. It isn't possible to include all of the
IRQ registers in one regmap-irq chip without this.

The rest of the changes are pretty straightforward, I think the only
notable parts are the axp20x_adc driver where there seems to be some
opportunities for code reuse (the axp192 is nearly a duplicate of the
axp20x) and the addition of a new pinctrl driver for the axp192, since
the axp20x pinctrl driver was not very easy to adapt.

Aidan MacDonald (15):
  dt-bindings: mfd: add bindings for AXP192 MFD device
  dt-bindings: iio: adc: axp209: Add AXP192 compatible
  dt-bindings: power: supply: axp20x: Add AXP192 compatible
  dt-bindings: gpio: Add AXP192 GPIO bindings
  dt-bindings: power: axp20x-battery: Add AXP192 compatible
  mfd: axp20x: Add support for AXP192
  regulator: axp20x: Add support for AXP192
  iio: adc: axp20x_adc: Minor code cleanups
  iio: adc: axp20x_adc: Replace adc_en2 flag with adc_en2_mask field
  iio: adc: axp20x_adc: Add support for AXP192
  power: supply: axp20x_usb_power: Add support for AXP192
  pinctrl: Add AXP192 pin control driver
  power: axp20x_battery: Add constant charge current table
  power: axp20x_battery: Support battery status without fuel gauge
  power: axp20x_battery: Add support for AXP192

 .../bindings/gpio/x-powers,axp192-gpio.yaml   |  68 ++
 .../bindings/iio/adc/x-powers,axp209-adc.yaml |  18 +
 .../bindings/mfd/x-powers,axp152.yaml         |   1 +
 .../x-powers,axp20x-battery-power-supply.yaml |   1 +
 .../x-powers,axp20x-usb-power-supply.yaml     |   1 +
 drivers/iio/adc/axp20x_adc.c                  | 356 +++++++++--
 drivers/mfd/axp20x-i2c.c                      |   2 +
 drivers/mfd/axp20x.c                          | 152 +++++
 drivers/pinctrl/Kconfig                       |  13 +
 drivers/pinctrl/Makefile                      |   1 +
 drivers/pinctrl/pinctrl-axp192.c              | 598 ++++++++++++++++++
 drivers/power/supply/axp20x_battery.c         | 142 ++++-
 drivers/power/supply/axp20x_usb_power.c       |  84 ++-
 drivers/regulator/axp20x-regulator.c          | 100 ++-
 include/linux/mfd/axp20x.h                    |  84 +++
 15 files changed, 1547 insertions(+), 74 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/gpio/x-powers,axp192-gpio.yaml
 create mode 100644 drivers/pinctrl/pinctrl-axp192.c

Comments

Andy Shevchenko June 29, 2022, 9:14 p.m. UTC | #1
On Wed, Jun 29, 2022 at 4:29 PM Aidan MacDonald
<aidanmacdonald.0x0@gmail.com> wrote:
>
> Changes in v4:
>
> * Drop regmap-irq patches and rebase on top of the regmap-irq
>   refactoring series[1], which implements the same functionality.
> * Reorder mfd_cells, putting one-line entries at the bottom.
> * Fix incorrect example in axp192-gpio device tree bindings.
> * Perform adc_en2 flag -> adc_en2_mask conversion in axp20x_adc
>   as a separate patch.
> * Simplify axp192_usb_power_set_current_max().
> * Drop unneeded OF dependency in pin control driver, and document
>   tables used for describing register layouts.
> * Various style fixups suggested by Andy Shevchenko.


For patches 6-11
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

> [1]: https://lore.kernel.org/lkml/20220623211420.918875-1-aidanmacdonald.0x0@gmail.com/
>
> Changes in v3:
>
> * Update pinctrl driver to address Andy Shevchenko's review comments
>   from v1, and fix a few other issues.
> * Add gpio-ranges property and example snippet to gpio DT bindings.
> * Update commit message of patch 01/16 to point out that all register
>   addresses are obtained using sub_irq_reg().
> * Document ccc_table in axp20x_battery. Also update commit message to
>   note a small fix that is part of that patch.
> * Drop axp20x_adc consolidation patch in favor of using separate adc_raw
>   functions. It's a minor code size optimization that may not be worth
>   the effort due to implementation complexity.
> * Use the FIELD_GET macro in axp20x_adc to further clarify intent.
> * Fix a typo in the regulator driver where an AXP20X regulator ID was
>   mistakenly used instead of an AXP192 regulator ID. Also carry over
>   an Acked-by: tag from v1. Hope that's okay.
> * Accumulate Acked-by: tags from v1 on DT patches.
> * Accumulate Acked-by: tags from v2.
>
> Note that regmap maintainer Mark Brown has said the first two patches to
> regmap-irq aren't suitable for inclusion into the kernel in their current
> state. I'm including them for v3 so the series remains testable.
>
> Changes in v2:
>
> * Do a little cleanup of axp20x_adc suggested by Jonathan Cameron
> * Consolidate ADC read functions in axp20x_adc
> * Drop the axp192's read_label callback in axp20x_adc
> * Clean up the axp192-gpio dt bindings
> * Rewrite a problematic bit of code in axp20x_usb_power reported
>   by kernel test robot
> * Support AXP192 in axp20x_battery
> * Split up regmap-irq changes to two separate patches
>
> Cover letter from v1:
>
> Hi all,
>
> This patch series adds support for the X-Powers AXP192 PMIC to the
> AXP20x driver framework.
>
> The first patch is a small change to regmap-irq to support the AXP192's
> unusual IRQ register layout. It isn't possible to include all of the
> IRQ registers in one regmap-irq chip without this.
>
> The rest of the changes are pretty straightforward, I think the only
> notable parts are the axp20x_adc driver where there seems to be some
> opportunities for code reuse (the axp192 is nearly a duplicate of the
> axp20x) and the addition of a new pinctrl driver for the axp192, since
> the axp20x pinctrl driver was not very easy to adapt.
>
> Aidan MacDonald (15):
>   dt-bindings: mfd: add bindings for AXP192 MFD device
>   dt-bindings: iio: adc: axp209: Add AXP192 compatible
>   dt-bindings: power: supply: axp20x: Add AXP192 compatible
>   dt-bindings: gpio: Add AXP192 GPIO bindings
>   dt-bindings: power: axp20x-battery: Add AXP192 compatible
>   mfd: axp20x: Add support for AXP192
>   regulator: axp20x: Add support for AXP192
>   iio: adc: axp20x_adc: Minor code cleanups
>   iio: adc: axp20x_adc: Replace adc_en2 flag with adc_en2_mask field
>   iio: adc: axp20x_adc: Add support for AXP192
>   power: supply: axp20x_usb_power: Add support for AXP192
>   pinctrl: Add AXP192 pin control driver
>   power: axp20x_battery: Add constant charge current table
>   power: axp20x_battery: Support battery status without fuel gauge
>   power: axp20x_battery: Add support for AXP192
>
>  .../bindings/gpio/x-powers,axp192-gpio.yaml   |  68 ++
>  .../bindings/iio/adc/x-powers,axp209-adc.yaml |  18 +
>  .../bindings/mfd/x-powers,axp152.yaml         |   1 +
>  .../x-powers,axp20x-battery-power-supply.yaml |   1 +
>  .../x-powers,axp20x-usb-power-supply.yaml     |   1 +
>  drivers/iio/adc/axp20x_adc.c                  | 356 +++++++++--
>  drivers/mfd/axp20x-i2c.c                      |   2 +
>  drivers/mfd/axp20x.c                          | 152 +++++
>  drivers/pinctrl/Kconfig                       |  13 +
>  drivers/pinctrl/Makefile                      |   1 +
>  drivers/pinctrl/pinctrl-axp192.c              | 598 ++++++++++++++++++
>  drivers/power/supply/axp20x_battery.c         | 142 ++++-
>  drivers/power/supply/axp20x_usb_power.c       |  84 ++-
>  drivers/regulator/axp20x-regulator.c          | 100 ++-
>  include/linux/mfd/axp20x.h                    |  84 +++
>  15 files changed, 1547 insertions(+), 74 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/gpio/x-powers,axp192-gpio.yaml
>  create mode 100644 drivers/pinctrl/pinctrl-axp192.c
>
> --
> 2.35.1
>
Andy Shevchenko June 29, 2022, 9:16 p.m. UTC | #2
On Wed, Jun 29, 2022 at 11:14 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
> On Wed, Jun 29, 2022 at 4:29 PM Aidan MacDonald
> <aidanmacdonald.0x0@gmail.com> wrote:
> >
> > Changes in v4:
> >
> > * Drop regmap-irq patches and rebase on top of the regmap-irq
> >   refactoring series[1], which implements the same functionality.
> > * Reorder mfd_cells, putting one-line entries at the bottom.
> > * Fix incorrect example in axp192-gpio device tree bindings.
> > * Perform adc_en2 flag -> adc_en2_mask conversion in axp20x_adc
> >   as a separate patch.
> > * Simplify axp192_usb_power_set_current_max().
> > * Drop unneeded OF dependency in pin control driver, and document
> >   tables used for describing register layouts.
> > * Various style fixups suggested by Andy Shevchenko.
>
>
> For patches 6-11
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

Ditto for patches 13-15.

Very good made series, thanks!

> > This patch series adds support for the X-Powers AXP192 PMIC to the
> > AXP20x driver framework.
> >
> > The first patch is a small change to regmap-irq to support the AXP192's
> > unusual IRQ register layout. It isn't possible to include all of the
> > IRQ registers in one regmap-irq chip without this.
> >
> > The rest of the changes are pretty straightforward, I think the only
> > notable parts are the axp20x_adc driver where there seems to be some
> > opportunities for code reuse (the axp192 is nearly a duplicate of the
> > axp20x) and the addition of a new pinctrl driver for the axp192, since
> > the axp20x pinctrl driver was not very easy to adapt.
Lee Jones June 30, 2022, 7:55 a.m. UTC | #3
On Wed, 29 Jun 2022, Andy Shevchenko wrote:

> On Wed, Jun 29, 2022 at 11:14 PM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Wed, Jun 29, 2022 at 4:29 PM Aidan MacDonald
> > <aidanmacdonald.0x0@gmail.com> wrote:
> > >
> > > Changes in v4:
> > >
> > > * Drop regmap-irq patches and rebase on top of the regmap-irq
> > >   refactoring series[1], which implements the same functionality.
> > > * Reorder mfd_cells, putting one-line entries at the bottom.
> > > * Fix incorrect example in axp192-gpio device tree bindings.
> > > * Perform adc_en2 flag -> adc_en2_mask conversion in axp20x_adc
> > >   as a separate patch.
> > > * Simplify axp192_usb_power_set_current_max().
> > > * Drop unneeded OF dependency in pin control driver, and document
> > >   tables used for describing register layouts.
> > > * Various style fixups suggested by Andy Shevchenko.
> >
> >
> > For patches 6-11
> > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> 
> Ditto for patches 13-15.

Not sure `b4` will pick these up!
Andy Shevchenko June 30, 2022, 8:02 a.m. UTC | #4
On Thu, Jun 30, 2022 at 9:55 AM Lee Jones <lee.jones@linaro.org> wrote:
> On Wed, 29 Jun 2022, Andy Shevchenko wrote:
> > On Wed, Jun 29, 2022 at 11:14 PM Andy Shevchenko
> > <andy.shevchenko@gmail.com> wrote:
> > > On Wed, Jun 29, 2022 at 4:29 PM Aidan MacDonald
> > > <aidanmacdonald.0x0@gmail.com> wrote:
> > > >
> > > > Changes in v4:
> > > >
> > > > * Drop regmap-irq patches and rebase on top of the regmap-irq
> > > >   refactoring series[1], which implements the same functionality.
> > > > * Reorder mfd_cells, putting one-line entries at the bottom.
> > > > * Fix incorrect example in axp192-gpio device tree bindings.
> > > > * Perform adc_en2 flag -> adc_en2_mask conversion in axp20x_adc
> > > >   as a separate patch.
> > > > * Simplify axp192_usb_power_set_current_max().
> > > > * Drop unneeded OF dependency in pin control driver, and document
> > > >   tables used for describing register layouts.
> > > > * Various style fixups suggested by Andy Shevchenko.
> > >
> > > For patches 6-11
> > > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> >
> > Ditto for patches 13-15.
>
> Not sure `b4` will pick these up!

No it won't. But it's not an issue, one may use `git msg-filter` for
that, esp. taking into account that series most likely will be resent
due to patch 12 (`but not fully sure it will be the case).

For your convenience I have added on per patch basis.
Lee Jones June 30, 2022, 8:46 a.m. UTC | #5
On Thu, 30 Jun 2022, Andy Shevchenko wrote:

> On Thu, Jun 30, 2022 at 9:55 AM Lee Jones <lee.jones@linaro.org> wrote:
> > On Wed, 29 Jun 2022, Andy Shevchenko wrote:
> > > On Wed, Jun 29, 2022 at 11:14 PM Andy Shevchenko
> > > <andy.shevchenko@gmail.com> wrote:
> > > > On Wed, Jun 29, 2022 at 4:29 PM Aidan MacDonald
> > > > <aidanmacdonald.0x0@gmail.com> wrote:
> > > > >
> > > > > Changes in v4:
> > > > >
> > > > > * Drop regmap-irq patches and rebase on top of the regmap-irq
> > > > >   refactoring series[1], which implements the same functionality.
> > > > > * Reorder mfd_cells, putting one-line entries at the bottom.
> > > > > * Fix incorrect example in axp192-gpio device tree bindings.
> > > > > * Perform adc_en2 flag -> adc_en2_mask conversion in axp20x_adc
> > > > >   as a separate patch.
> > > > > * Simplify axp192_usb_power_set_current_max().
> > > > > * Drop unneeded OF dependency in pin control driver, and document
> > > > >   tables used for describing register layouts.
> > > > > * Various style fixups suggested by Andy Shevchenko.
> > > >
> > > > For patches 6-11
> > > > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> > >
> > > Ditto for patches 13-15.
> >
> > Not sure `b4` will pick these up!
> 
> No it won't. But it's not an issue, one may use `git msg-filter` for
> that, esp. taking into account that series most likely will be resent
> due to patch 12 (`but not fully sure it will be the case).
> 
> For your convenience I have added on per patch basis.

That helps, thanks Andy.