[v8,0/5] regulator: Add X-Powers AXP318W PMIC support

Message ID 20260910-axp318-regulator-v8-0-e906a61a7f3d@baylibre.com (mailing list archive)
Headers
Series regulator: Add X-Powers AXP318W PMIC support |

Message

Jerome Brunet Sept. 10, 2026, 10:44 a.m. UTC
This patch series adds support for the X-Powers AXP318W PMIC, which is
used recently on new boards with Allwinner SoCs (the A733).

The PMIC features 9 DCDC buck converters and 28 LDOs, plus the usual ADC,
interrupts, and power key components.
A datasheet can be found linked in this Wiki table:
https://linux-sunxi.org/AXP_PMICs

There was an unclosed topic regarding the handling of LDOs output
voltage being limited to input voltage being provided by the supply.
Chen-Yu noted the min_dropout_uV would be a good fit for that but
the actual minimal dropout value was unknown. I've arbitrarily picked
1uV because it is the minimum the framework supports. Realistically a low
dropout regulator is bound to have some dropout. This choice does the
trick for now and is certain be less restrictive than what it is in
reality.

If anyone has problems because the dropout is actually higher
* it is arguably an HW design error
* it is a good time to let us know what the actual dropout is

Changes in v8:
- Fix interrupt optional in the binding (mis-understanding on my end)
  Resent quickly to avoid wasting time on v7 over this
- Link to v7: https://patch.msgid.link/20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com

Changes in v7:
- Rebased on v7.3-rc1.
- Applied Chen-Yu change requests.
  - More complete register definition all in the MFD change.
  - Add writeable region holes.
  - Fix invertion between short and long press IRQ.
  - Drop confusing comment about DVM.
  - Use MFD_CELL_NAME() for the regulator device.
- Link to v6: https://patch.msgid.link/20260812-axp318-regulator-v6-0-d6b84b55c000@baylibre.com

Changes in v6:
- Apply wording suggestions from Chen-Yu
- Link to v5: https://patch.msgid.link/20260720-axp318-regulator-v5-0-a1afa7ee24f9@baylibre.com

Changes in v5:
- Fix shutdown register offset
- Re-order patches to put fixes first
- Tighten DT regexp around swout
- Other points raised by Sashiko on v4 are unrelated to the addition
  of the AXP318 support and pre-exist the series. They are not
  addressed ATM.
- Link to v4: https://patch.msgid.link/20260717-axp318-regulator-v4-0-50aff97084dd@baylibre.com

Changes in v4:
- Capitalize patch 3 title
- regulator: add support for workmode and poly-phase.
- i2c: fix probe through i2c sysfs
- Link to v3: https://patch.msgid.link/20260717-axp318-regulator-v3-0-779dc1b97dd4@baylibre.com

Changes in v3:
- Correct mess up v2 errors regarding ops and ids.
- Correctly propagate errors when checking axp318 threshold.
- Fix DT binding regex regarding dcdc max ids
- Add missing RTCLDO.
- Remove axp318 PEK MFD cell:
  As pointed out by sashiko, the driver name did not match anything in the
  pek driver. While the device does support some handling of the power
  button, it does not seem to match the existing driver. Register 0x36
  relates to DLDO3, not the power key, as expected by the misc driver.
  Leave this out for now.
- Constify axp313 and axp717 mfd_cells array for consistency.
- Link to v2: https://patch.msgid.link/20260710-axp318-regulator-v2-0-ee5f1c56b49f@baylibre.com

Changes in v2:
- Dropped _NUM_VOLTAGES macros
- Use min_dropout_uV to limit LDO voltage to supplies
- Add bypass mode for EDLO4/5
- Prevent crossing 1.54V threshold for DCDC6/7/8/9
- Link to v1: https://lore.kernel.org/r/20251021112013.2710903-1-andre.przywara@arm.com

---
Andre Przywara (3):
      dt-bindings: mfd: x-powers,axp152: Document AXP318W
      mfd: axp20x: Add support for AXP318W PMIC
      regulator: axp20x: add support for the AXP318W

Jerome Brunet (2):
      mfd: axp20x: Constify axp313 and axp717 cells
      mfd: axp20x-i2c: Fix i2c instantiation

 .../devicetree/bindings/mfd/x-powers,axp152.yaml   |  29 +-
 drivers/mfd/axp20x-i2c.c                           |  26 +-
 drivers/mfd/axp20x-rsb.c                           |   1 +
 drivers/mfd/axp20x.c                               |  93 +++++-
 drivers/regulator/axp20x-regulator.c               | 319 ++++++++++++++++++++-
 include/linux/mfd/axp20x.h                         | 148 +++++++++-
 6 files changed, 590 insertions(+), 26 deletions(-)
---
base-commit: cee9395acd8043be0644b25c34bfa86623f2b935
change-id: 20260710-axp318-regulator-43545ce3261f

Best regards,
--  
Jerome
  

Comments

sashiko-bot@kernel.org Sept. 10, 2026, 10:51 a.m. UTC | #1
> From: Andre Przywara <andre.przywara@arm.com>
> 
> The X-Powers AXP318W is a typical PMIC from X-Powers, featuring nine
> DC/DC converters and 28 LDOs, on the regulator side.
> 
> Describe the chip's voltage settings and switch registers, how the
> voltages are encoded, and connect this to the MFD device via its
> regulator ID.
> We use just "318" for the internal identifiers, for easier typing and
> less churn. If something else other than the "AXP318W" shows up, that's
> an easy change, externally visible strings carry the additional letter
> already.
> 
> Reviewed-by: Chen-Yu Tsai <wens@kernel.org>
> Reviewed-by: Mark Brown <broonie@kernel.org>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> Co-developed-by: Jerome Brunet <jbrunet@baylibre.com>
> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>

Sashiko has reviewed this patch and found no issues. It looks great!
  
Chen-Yu Tsai Sept. 20, 2026, 10:04 a.m. UTC | #2
Hi Lee,

On Thu, Sep 10, 2026 at 6:44 PM Jerome Brunet <jbrunet@baylibre.com> wrote:
>
> This patch series adds support for the X-Powers AXP318W PMIC, which is
> used recently on new boards with Allwinner SoCs (the A733).
>
> The PMIC features 9 DCDC buck converters and 28 LDOs, plus the usual ADC,
> interrupts, and power key components.
> A datasheet can be found linked in this Wiki table:
> https://linux-sunxi.org/AXP_PMICs
>
> There was an unclosed topic regarding the handling of LDOs output
> voltage being limited to input voltage being provided by the supply.
> Chen-Yu noted the min_dropout_uV would be a good fit for that but
> the actual minimal dropout value was unknown. I've arbitrarily picked
> 1uV because it is the minimum the framework supports. Realistically a low
> dropout regulator is bound to have some dropout. This choice does the
> trick for now and is certain be less restrictive than what it is in
> reality.
>
> If anyone has problems because the dropout is actually higher
> * it is arguably an HW design error
> * it is a good time to let us know what the actual dropout is
>
> Changes in v8:
> - Fix interrupt optional in the binding (mis-understanding on my end)
>   Resent quickly to avoid wasting time on v7 over this
> - Link to v7: https://patch.msgid.link/20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com
>
> Changes in v7:
> - Rebased on v7.3-rc1.
> - Applied Chen-Yu change requests.
>   - More complete register definition all in the MFD change.
>   - Add writeable region holes.
>   - Fix invertion between short and long press IRQ.
>   - Drop confusing comment about DVM.
>   - Use MFD_CELL_NAME() for the regulator device.
> - Link to v6: https://patch.msgid.link/20260812-axp318-regulator-v6-0-d6b84b55c000@baylibre.com
>
> Changes in v6:
> - Apply wording suggestions from Chen-Yu
> - Link to v5: https://patch.msgid.link/20260720-axp318-regulator-v5-0-a1afa7ee24f9@baylibre.com
>
> Changes in v5:
> - Fix shutdown register offset
> - Re-order patches to put fixes first
> - Tighten DT regexp around swout
> - Other points raised by Sashiko on v4 are unrelated to the addition
>   of the AXP318 support and pre-exist the series. They are not
>   addressed ATM.
> - Link to v4: https://patch.msgid.link/20260717-axp318-regulator-v4-0-50aff97084dd@baylibre.com
>
> Changes in v4:
> - Capitalize patch 3 title
> - regulator: add support for workmode and poly-phase.
> - i2c: fix probe through i2c sysfs
> - Link to v3: https://patch.msgid.link/20260717-axp318-regulator-v3-0-779dc1b97dd4@baylibre.com
>
> Changes in v3:
> - Correct mess up v2 errors regarding ops and ids.
> - Correctly propagate errors when checking axp318 threshold.
> - Fix DT binding regex regarding dcdc max ids
> - Add missing RTCLDO.
> - Remove axp318 PEK MFD cell:
>   As pointed out by sashiko, the driver name did not match anything in the
>   pek driver. While the device does support some handling of the power
>   button, it does not seem to match the existing driver. Register 0x36
>   relates to DLDO3, not the power key, as expected by the misc driver.
>   Leave this out for now.
> - Constify axp313 and axp717 mfd_cells array for consistency.
> - Link to v2: https://patch.msgid.link/20260710-axp318-regulator-v2-0-ee5f1c56b49f@baylibre.com
>
> Changes in v2:
> - Dropped _NUM_VOLTAGES macros
> - Use min_dropout_uV to limit LDO voltage to supplies
> - Add bypass mode for EDLO4/5
> - Prevent crossing 1.54V threshold for DCDC6/7/8/9
> - Link to v1: https://lore.kernel.org/r/20251021112013.2710903-1-andre.przywara@arm.com
>
> ---
> Andre Przywara (3):
>       dt-bindings: mfd: x-powers,axp152: Document AXP318W
>       mfd: axp20x: Add support for AXP318W PMIC
>       regulator: axp20x: add support for the AXP318W
>
> Jerome Brunet (2):
>       mfd: axp20x: Constify axp313 and axp717 cells
>       mfd: axp20x-i2c: Fix i2c instantiation

I think this series is ready to be merged. Mark gave his reviewed-by for
the regulator patch, which IIRC he said acks the patch to go through
another tree.

So please merge the whole series through the mfd tree.


Thanks
ChenYu