[PATCH v13 0/7] spacemit: introduce P1 PMIC support

Alex Elder
2025-08-25T17:21:03Z

The SpacemiT P1 is an I2C-controlled PMIC that implements 6 buck
converters and 12 LDOs. It contains a load switch, ADC channels,
GPIOs, a real-time clock, and a watchdog timer.

This series introduces a multifunction driver for the P1 PMIC as
well as drivers for its regulators and RTC.

In this version I updated Troy Mitchell's e-mail address, and
modified the definition of the MFD_SPACEMIT_P1 config option so
it enables I2C_K1, to allow it to be usable. The series is now
based on net-next rather than linux-v6.17-rc1.

-Alex

This series is available here:
https://github.com/riscstar/linux/tree/outgoing/pmic-v13

Between version 12 and version 13:
- Rebased onto August 25 linux-next
- Updated Troy Mitchell's e-mail address in patch 1
- Add Troy Mitchell's Acked-by in patch 1
- In patch 2, have MFD_SPACEMIT_P1 select I2C_K1 and depend on
ARCH_SPACEMIT as suggested (privately) by Yixun Lan

Here is version 12 of this series:
https://lore.kernel.org/lkml/20250813024509.2325988-1-elder@riscstar.com/

Between version 11 and version 12:
- Simple rebase

Here is version 11 of this series:
https://lore.kernel.org/lkml/20250803025812.373029-1-elder@riscstar.com/

Between version 10 and version 11:
- Abandon trying to implement a simple_mfd_data->max_register field
- Fix a missing dependency pointed out by the kernel test robot

Here is version 10 of this series:
https://lore.kernel.org/lkml/20250726131003.3137282-1-elder@riscstar.com/

Between version 9 and version 10:
- The #address-cells and #size-cells for the i2c8 DTS node
were moved into its primary definition in "k1.dtsi".
- The interrupts property for the i2c8 DTS node was moved
below its clock-related properties.
- The status property in the pmic@41 DTS node was dropped.
- The function that provides the regmap_config structure
to use was reworked a bit.
- A new function was added to free the regmap_config
structure after it's no longer needed.

Here is version 9 of this series:
https://lore.kernel.org/lkml/20250724202511.499288-1-elder@riscstar.com/

Between version 8 and version 9:
- The max_config value is always used if it is provided with the
simple_mfd_data structure.
- The regmap_config structure used is allocated dynamically if
necessary; otherwise regmap_config_8r_8v is used.
- A small duplicated comment is removed

Here is version 8 of this series:
https://lore.kernel.org/lkml/20250710175107.1280221-1-elder@riscstar.com/

More complete history is available at that link.

Alex Elder (7):
dt-bindings: mfd: add support the SpacemiT P1 PMIC
mfd: simple-mfd-i2c: add SpacemiT P1 support
regulator: spacemit: support SpacemiT P1 regulators
rtc: spacemit: support the SpacemiT P1 RTC
riscv: dts: spacemit: enable the i2c8 adapter
riscv: dts: spacemit: define fixed regulators
riscv: dts: spacemit: define regulator constraints

.../devicetree/bindings/mfd/spacemit,p1.yaml | 86 +++++++++
.../boot/dts/spacemit/k1-bananapi-f3.dts | 135 ++++++++++++++
arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 7 +
arch/riscv/boot/dts/spacemit/k1.dtsi | 13 ++
drivers/mfd/Kconfig | 13 ++
drivers/mfd/simple-mfd-i2c.c | 17 ++
drivers/regulator/Kconfig | 13 ++
drivers/regulator/Makefile | 1 +
drivers/regulator/spacemit-p1.c | 157 ++++++++++++++++
drivers/rtc/Kconfig | 10 ++
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-spacemit-p1.c | 167 ++++++++++++++++++
12 files changed, 620 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/spacemit,p1.yaml
create mode 100644 drivers/regulator/spacemit-p1.c
create mode 100644 drivers/rtc/rtc-spacemit-p1.c

base-commit: 6c68f4c0a147c025ae0b25fab688c7c47964a02f
--
2.48.1