* [PATCH v13 0/7] spacemit: introduce P1 PMIC support
@ 2025-08-25 17:20 Alex Elder
2025-08-25 17:20 ` [PATCH v13 1/7] dt-bindings: mfd: add support the SpacemiT P1 PMIC Alex Elder
` (9 more replies)
0 siblings, 10 replies; 20+ messages in thread
From: Alex Elder @ 2025-08-25 17:20 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
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
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v13 1/7] dt-bindings: mfd: add support the SpacemiT P1 PMIC
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
@ 2025-08-25 17:20 ` Alex Elder
2025-08-25 17:20 ` [PATCH v13 2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support Alex Elder
` (8 subsequent siblings)
9 siblings, 0 replies; 20+ messages in thread
From: Alex Elder @ 2025-08-25 17:20 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
Enable the SpacemiT P1, which is an I2C-controlled PMIC. Initially
only the RTC and regulators will be supported.
Signed-off-by: Alex Elder <elder@riscstar.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Acked-by: Troy Mitchell <troymitchell988@gmail.com>
---
v13: - Update Troy Mitchell's e-mail address in "spacemit,p1.yaml"
- Add Troy Mitchell's Acked-by
.../devicetree/bindings/mfd/spacemit,p1.yaml | 86 +++++++++++++++++++
1 file changed, 86 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/spacemit,p1.yaml
diff --git a/Documentation/devicetree/bindings/mfd/spacemit,p1.yaml b/Documentation/devicetree/bindings/mfd/spacemit,p1.yaml
new file mode 100644
index 0000000000000..c6593ac6ef6ad
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/spacemit,p1.yaml
@@ -0,0 +1,86 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/spacemit,p1.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SpacemiT P1 Power Management Integrated Circuit
+
+maintainers:
+ - Troy Mitchell <troy.mitchell@linux.spacemit.com>
+
+description:
+ P1 is an I2C-controlled PMIC produced by SpacemiT. It implements six
+ constant-on-time buck converters and twelve low-dropout regulators.
+ It also contains a load switch, watchdog timer, real-time clock, eight
+ 12-bit ADC channels, and six GPIOs. Additional details are available
+ in the "Power Stone/P1" section at the following link.
+ https://developer.spacemit.com/documentation
+
+properties:
+ compatible:
+ const: spacemit,p1
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ vin-supply:
+ description: Input supply phandle.
+
+ regulators:
+ type: object
+
+ patternProperties:
+ "^(buck[1-6]|aldo[1-4]|dldo[1-7])$":
+ type: object
+ $ref: /schemas/regulator/regulator.yaml#
+ unevaluatedProperties: false
+
+ unevaluatedProperties: false
+
+required:
+ - compatible
+ - reg
+ - interrupts
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pmic@41 {
+ compatible = "spacemit,p1";
+ reg = <0x41>;
+ interrupts = <64>;
+
+ regulators {
+ buck1 {
+ regulator-name = "buck1";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3450000>;
+ regulator-ramp-delay = <5000>;
+ regulator-always-on;
+ };
+
+ aldo1 {
+ regulator-name = "aldo1";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ regulator-boot-on;
+ };
+
+ dldo1 {
+ regulator-name = "dldo1";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ regulator-boot-on;
+ };
+ };
+ };
+ };
--
2.48.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v13 2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
2025-08-25 17:20 ` [PATCH v13 1/7] dt-bindings: mfd: add support the SpacemiT P1 PMIC Alex Elder
@ 2025-08-25 17:20 ` Alex Elder
2025-08-29 11:03 ` kernel test robot
2025-08-25 17:20 ` [PATCH v13 3/7] regulator: spacemit: support SpacemiT P1 regulators Alex Elder
` (7 subsequent siblings)
9 siblings, 1 reply; 20+ messages in thread
From: Alex Elder @ 2025-08-25 17:20 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
Enable support for the RTC and regulators found in the SpacemiT P1
PMIC. Support is implemented by the simple I2C MFD driver.
The P1 PMIC is normally implemented with the SpacemiT K1 SoC. This
PMIC provides 6 buck converters and 12 LDO regulators. It also
implements a switch, watchdog timer, real-time clock, and more.
Initially its RTC and regulators are supported.
Signed-off-by: Alex Elder <elder@riscstar.com>
---
v13: - Have MFD_SPACEMIT_P1 depend on ARCH_SPACEMIT and select I2C_K1
drivers/mfd/Kconfig | 13 +++++++++++++
drivers/mfd/simple-mfd-i2c.c | 17 +++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index a403a3daedd52..e5cdefbea71a1 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1238,6 +1238,19 @@ config MFD_QCOM_RPM
Say M here if you want to include support for the Qualcomm RPM as a
module. This will build a module called "qcom_rpm".
+config MFD_SPACEMIT_P1
+ tristate "SpacemiT P1 PMIC"
+ depends on ARCH_SPACEMIT || COMPILE_TEST
+ depends on I2C
+ select I2C_K1
+ select MFD_SIMPLE_MFD_I2C
+ help
+ This option supports the I2C-based SpacemiT P1 PMIC, which
+ contains regulators, a power switch, GPIOs, an RTC, and more.
+ This option is selected when any of the supported sub-devices
+ is configured. The basic functionality is implemented by the
+ simple MFD I2C driver.
+
config MFD_SPMI_PMIC
tristate "Qualcomm SPMI PMICs"
depends on ARCH_QCOM || COMPILE_TEST
diff --git a/drivers/mfd/simple-mfd-i2c.c b/drivers/mfd/simple-mfd-i2c.c
index f7798bd922224..63ac263888606 100644
--- a/drivers/mfd/simple-mfd-i2c.c
+++ b/drivers/mfd/simple-mfd-i2c.c
@@ -93,6 +93,22 @@ static const struct simple_mfd_data maxim_mon_max77705 = {
.mfd_cell_size = ARRAY_SIZE(max77705_sensor_cells),
};
+static const struct regmap_config spacemit_p1_regmap_config = {
+ .reg_bits = 8,
+ .val_bits = 8,
+};
+
+static const struct mfd_cell spacemit_p1_cells[] = {
+ { .name = "spacemit-p1-regulator", },
+ { .name = "spacemit-p1-rtc", },
+};
+
+static const struct simple_mfd_data spacemit_p1 = {
+ .regmap_config = &spacemit_p1_regmap_config,
+ .mfd_cell = spacemit_p1_cells,
+ .mfd_cell_size = ARRAY_SIZE(spacemit_p1_cells),
+};
+
static const struct of_device_id simple_mfd_i2c_of_match[] = {
{ .compatible = "kontron,sl28cpld" },
{ .compatible = "silergy,sy7636a", .data = &silergy_sy7636a},
@@ -101,6 +117,7 @@ static const struct of_device_id simple_mfd_i2c_of_match[] = {
{ .compatible = "maxim,max77705-battery", .data = &maxim_mon_max77705},
{ .compatible = "fsl,lx2160aqds-fpga" },
{ .compatible = "fsl,ls1028aqds-fpga" },
+ { .compatible = "spacemit,p1", .data = &spacemit_p1, },
{}
};
MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match);
--
2.48.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v13 3/7] regulator: spacemit: support SpacemiT P1 regulators
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
2025-08-25 17:20 ` [PATCH v13 1/7] dt-bindings: mfd: add support the SpacemiT P1 PMIC Alex Elder
2025-08-25 17:20 ` [PATCH v13 2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support Alex Elder
@ 2025-08-25 17:20 ` Alex Elder
2025-08-25 17:20 ` [PATCH v13 4/7] rtc: spacemit: support the SpacemiT P1 RTC Alex Elder
` (6 subsequent siblings)
9 siblings, 0 replies; 20+ messages in thread
From: Alex Elder @ 2025-08-25 17:20 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
Add support for the regulators found in the SpacemiT P1 PMIC. This
PMIC provides 6 buck converters and 12 LDO regulators.
The PMIC is implemented as a multi-function device. These regulators
are probed based on this driver being named in a MFD cell in the simple
MFD I2C driver.
Signed-off-by: Alex Elder <elder@riscstar.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
---
drivers/regulator/Kconfig | 13 +++
drivers/regulator/Makefile | 1 +
drivers/regulator/spacemit-p1.c | 157 ++++++++++++++++++++++++++++++++
3 files changed, 171 insertions(+)
create mode 100644 drivers/regulator/spacemit-p1.c
diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
index 223a500370d09..92a0720823f04 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -1423,6 +1423,19 @@ config REGULATOR_SLG51000
The SLG51000 is seven compact and customizable low dropout
regulators.
+config REGULATOR_SPACEMIT_P1
+ tristate "SpacemiT P1 regulators"
+ depends on ARCH_SPACEMIT || COMPILE_TEST
+ depends on I2C
+ select MFD_SPACEMIT_P1
+ default ARCH_SPACEMIT
+ help
+ Enable support for regulators implemented by the SpacemiT P1
+ power controller. The P1 implements 6 high-efficiency buck
+ converters and 12 programmable LDO regulators. To compile this
+ driver as a module, choose M here. The module will be called
+ "spacemit-pmic".
+
config REGULATOR_STM32_BOOSTER
tristate "STMicroelectronics STM32 BOOSTER"
depends on ARCH_STM32 || COMPILE_TEST
diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
index 54e67e1c0c676..44c750f200421 100644
--- a/drivers/regulator/Makefile
+++ b/drivers/regulator/Makefile
@@ -165,6 +165,7 @@ obj-$(CONFIG_REGULATOR_S5M8767) += s5m8767.o
obj-$(CONFIG_REGULATOR_SC2731) += sc2731-regulator.o
obj-$(CONFIG_REGULATOR_SKY81452) += sky81452-regulator.o
obj-$(CONFIG_REGULATOR_SLG51000) += slg51000-regulator.o
+obj-$(CONFIG_REGULATOR_SPACEMIT_P1) += spacemit-p1.o
obj-$(CONFIG_REGULATOR_STM32_BOOSTER) += stm32-booster.o
obj-$(CONFIG_REGULATOR_STM32_VREFBUF) += stm32-vrefbuf.o
obj-$(CONFIG_REGULATOR_STM32_PWR) += stm32-pwr.o
diff --git a/drivers/regulator/spacemit-p1.c b/drivers/regulator/spacemit-p1.c
new file mode 100644
index 0000000000000..d437e6738ea1e
--- /dev/null
+++ b/drivers/regulator/spacemit-p1.c
@@ -0,0 +1,157 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Driver for regulators found in the SpacemiT P1 PMIC
+ *
+ * Copyright (C) 2025 by RISCstar Solutions Corporation. All rights reserved.
+ * Derived from code from SpacemiT.
+ * Copyright (c) 2023, SPACEMIT Co., Ltd
+ */
+
+#include <linux/array_size.h>
+#include <linux/bits.h>
+#include <linux/device.h>
+#include <linux/linear_range.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/regulator/driver.h>
+
+#define MOD_NAME "spacemit-p1-regulator"
+
+enum p1_regulator_id {
+ P1_BUCK1,
+ P1_BUCK2,
+ P1_BUCK3,
+ P1_BUCK4,
+ P1_BUCK5,
+ P1_BUCK6,
+
+ P1_ALDO1,
+ P1_ALDO2,
+ P1_ALDO3,
+ P1_ALDO4,
+
+ P1_DLDO1,
+ P1_DLDO2,
+ P1_DLDO3,
+ P1_DLDO4,
+ P1_DLDO5,
+ P1_DLDO6,
+ P1_DLDO7,
+};
+
+static const struct regulator_ops p1_regulator_ops = {
+ .list_voltage = regulator_list_voltage_linear_range,
+ .get_voltage_sel = regulator_get_voltage_sel_regmap,
+ .set_voltage_sel = regulator_set_voltage_sel_regmap,
+ .set_voltage_time_sel = regulator_set_voltage_time_sel,
+ .enable = regulator_enable_regmap,
+ .disable = regulator_disable_regmap,
+ .is_enabled = regulator_is_enabled_regmap,
+};
+
+/* Selector value 255 can be used to disable the buck converter on sleep */
+static const struct linear_range p1_buck_ranges[] = {
+ REGULATOR_LINEAR_RANGE(500000, 0, 170, 5000),
+ REGULATOR_LINEAR_RANGE(1375000, 171, 254, 25000),
+};
+
+/* Selector value 0 can be used for suspend */
+static const struct linear_range p1_ldo_ranges[] = {
+ REGULATOR_LINEAR_RANGE(500000, 11, 127, 25000),
+};
+
+/* These define the voltage selector field for buck and LDO regulators */
+#define BUCK_MASK GENMASK(7, 0)
+#define LDO_MASK GENMASK(6, 0)
+
+#define P1_ID(_TYPE, _n) P1_ ## _TYPE ## _n
+#define P1_ENABLE_REG(_off, _n) ((_off) + 3 * ((_n) - 1))
+
+#define P1_REG_DESC(_TYPE, _type, _n, _s, _off, _mask, _nv, _ranges) \
+ { \
+ .name = #_type #_n, \
+ .supply_name = _s, \
+ .of_match = of_match_ptr(#_type #_n), \
+ .regulators_node = of_match_ptr("regulators"), \
+ .id = P1_ID(_TYPE, _n), \
+ .n_voltages = _nv, \
+ .ops = &p1_regulator_ops, \
+ .owner = THIS_MODULE, \
+ .linear_ranges = _ranges, \
+ .n_linear_ranges = ARRAY_SIZE(_ranges), \
+ .vsel_reg = P1_ENABLE_REG(_off, _n) + 1, \
+ .vsel_mask = _mask, \
+ .enable_reg = P1_ENABLE_REG(_off, _n), \
+ .enable_mask = BIT(0), \
+ }
+
+#define P1_BUCK_DESC(_n) \
+ P1_REG_DESC(BUCK, buck, _n, "vcc", 0x47, BUCK_MASK, 254, p1_buck_ranges)
+
+#define P1_ALDO_DESC(_n) \
+ P1_REG_DESC(ALDO, aldo, _n, "vcc", 0x5b, LDO_MASK, 117, p1_ldo_ranges)
+
+#define P1_DLDO_DESC(_n) \
+ P1_REG_DESC(DLDO, dldo, _n, "buck5", 0x67, LDO_MASK, 117, p1_ldo_ranges)
+
+static const struct regulator_desc p1_regulator_desc[] = {
+ P1_BUCK_DESC(1),
+ P1_BUCK_DESC(2),
+ P1_BUCK_DESC(3),
+ P1_BUCK_DESC(4),
+ P1_BUCK_DESC(5),
+ P1_BUCK_DESC(6),
+
+ P1_ALDO_DESC(1),
+ P1_ALDO_DESC(2),
+ P1_ALDO_DESC(3),
+ P1_ALDO_DESC(4),
+
+ P1_DLDO_DESC(1),
+ P1_DLDO_DESC(2),
+ P1_DLDO_DESC(3),
+ P1_DLDO_DESC(4),
+ P1_DLDO_DESC(5),
+ P1_DLDO_DESC(6),
+ P1_DLDO_DESC(7),
+};
+
+static int p1_regulator_probe(struct platform_device *pdev)
+{
+ struct regulator_config config = { };
+ struct device *dev = &pdev->dev;
+ u32 i;
+
+ /*
+ * The parent device (PMIC) owns the regmap. Since we don't
+ * provide one in the config structure, that one will be used.
+ */
+ config.dev = dev->parent;
+
+ for (i = 0; i < ARRAY_SIZE(p1_regulator_desc); i++) {
+ const struct regulator_desc *desc = &p1_regulator_desc[i];
+ struct regulator_dev *rdev;
+
+ rdev = devm_regulator_register(dev, desc, &config);
+ if (IS_ERR(rdev))
+ return dev_err_probe(dev, PTR_ERR(rdev),
+ "error registering regulator %s\n",
+ desc->name);
+ }
+
+ return 0;
+}
+
+static struct platform_driver p1_regulator_driver = {
+ .probe = p1_regulator_probe,
+ .driver = {
+ .name = MOD_NAME,
+ },
+};
+
+module_platform_driver(p1_regulator_driver);
+
+MODULE_DESCRIPTION("SpacemiT P1 regulator driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" MOD_NAME);
--
2.48.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v13 4/7] rtc: spacemit: support the SpacemiT P1 RTC
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
` (2 preceding siblings ...)
2025-08-25 17:20 ` [PATCH v13 3/7] regulator: spacemit: support SpacemiT P1 regulators Alex Elder
@ 2025-08-25 17:20 ` Alex Elder
2025-09-16 14:57 ` (subset) " Alexandre Belloni
2025-08-25 17:20 ` [PATCH v13 5/7] riscv: dts: spacemit: enable the i2c8 adapter Alex Elder
` (5 subsequent siblings)
9 siblings, 1 reply; 20+ messages in thread
From: Alex Elder @ 2025-08-25 17:20 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
Add support for the RTC found in the SpacemiT P1 PMIC. Initially
only setting and reading the time are supported.
The PMIC is implemented as a multi-function device. This RTC is
probed based on this driver being named in a MFD cell in the simple
MFD I2C driver.
Signed-off-by: Alex Elder <elder@riscstar.com>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
---
drivers/rtc/Kconfig | 10 ++
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-spacemit-p1.c | 167 ++++++++++++++++++++++++++++++++++
3 files changed, 178 insertions(+)
create mode 100644 drivers/rtc/rtc-spacemit-p1.c
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 64f6e9756aff4..31d355b103d43 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -406,6 +406,16 @@ config RTC_DRV_MAX77686
This driver can also be built as a module. If so, the module
will be called rtc-max77686.
+config RTC_DRV_SPACEMIT_P1
+ tristate "SpacemiT P1 RTC"
+ depends on ARCH_SPACEMIT || COMPILE_TEST
+ select MFD_SPACEMIT_P1
+ default ARCH_SPACEMIT
+ help
+ Enable support for the RTC function in the SpacemiT P1 PMIC.
+ This driver can also be built as a module, which will be called
+ "spacemit-p1-rtc".
+
config RTC_DRV_NCT3018Y
tristate "Nuvoton NCT3018Y"
depends on OF
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
index 789bddfea99d8..f41fdb4fabae9 100644
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -171,6 +171,7 @@ obj-$(CONFIG_RTC_DRV_SD2405AL) += rtc-sd2405al.o
obj-$(CONFIG_RTC_DRV_SD3078) += rtc-sd3078.o
obj-$(CONFIG_RTC_DRV_SH) += rtc-sh.o
obj-$(CONFIG_RTC_DRV_SNVS) += rtc-snvs.o
+obj-$(CONFIG_RTC_DRV_SPACEMIT_P1) += rtc-spacemit-p1.o
obj-$(CONFIG_RTC_DRV_SPEAR) += rtc-spear.o
obj-$(CONFIG_RTC_DRV_STARFIRE) += rtc-starfire.o
obj-$(CONFIG_RTC_DRV_STK17TA8) += rtc-stk17ta8.o
diff --git a/drivers/rtc/rtc-spacemit-p1.c b/drivers/rtc/rtc-spacemit-p1.c
new file mode 100644
index 0000000000000..43ab62494bb4b
--- /dev/null
+++ b/drivers/rtc/rtc-spacemit-p1.c
@@ -0,0 +1,167 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Driver for the RTC found in the SpacemiT P1 PMIC
+ *
+ * Copyright (C) 2025 by RISCstar Solutions Corporation. All rights reserved.
+ */
+
+#include <linux/bits.h>
+#include <linux/device.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/rtc.h>
+
+#define MOD_NAME "spacemit-p1-rtc"
+
+/*
+ * Six consecutive 1-byte registers hold the seconds, minutes, hours,
+ * day-of-month, month, and year (respectively).
+ *
+ * The range of values in these registers is:
+ * seconds 0-59
+ * minutes 0-59
+ * hours 0-59
+ * day 0-30 (struct tm is 1-31)
+ * month 0-11
+ * year years since 2000 (struct tm is since 1900)
+ *
+ * Note that the day and month must be converted after reading and
+ * before writing.
+ */
+#define RTC_TIME 0x0d /* Offset of the seconds register */
+
+#define RTC_CTRL 0x1d
+#define RTC_EN BIT(2)
+
+/* Number of attempts to read a consistent time stamp before giving up */
+#define RTC_READ_TRIES 20 /* At least 1 */
+
+struct p1_rtc {
+ struct regmap *regmap;
+ struct rtc_device *rtc;
+};
+
+/*
+ * The P1 hardware documentation states that the register values are
+ * latched to ensure a consistent time snapshot within the registers,
+ * but these are in fact unstable due to a bug in the hardware design.
+ * So we loop until we get two identical readings.
+ */
+static int p1_rtc_read_time(struct device *dev, struct rtc_time *t)
+{
+ struct p1_rtc *p1 = dev_get_drvdata(dev);
+ struct regmap *regmap = p1->regmap;
+ u32 count = RTC_READ_TRIES;
+ u8 seconds;
+ u8 time[6];
+ int ret;
+
+ if (!regmap_test_bits(regmap, RTC_CTRL, RTC_EN))
+ return -EINVAL; /* RTC is disabled */
+
+ ret = regmap_bulk_read(regmap, RTC_TIME, time, sizeof(time));
+ if (ret)
+ return ret;
+
+ do {
+ seconds = time[0];
+ ret = regmap_bulk_read(regmap, RTC_TIME, time, sizeof(time));
+ if (ret)
+ return ret;
+ } while (time[0] != seconds && --count);
+
+ if (!count)
+ return -EIO; /* Unable to get a consistent result */
+
+ t->tm_sec = time[0] & GENMASK(5, 0);
+ t->tm_min = time[1] & GENMASK(5, 0);
+ t->tm_hour = time[2] & GENMASK(4, 0);
+ t->tm_mday = (time[3] & GENMASK(4, 0)) + 1;
+ t->tm_mon = time[4] & GENMASK(3, 0);
+ t->tm_year = (time[5] & GENMASK(5, 0)) + 100;
+
+ return 0;
+}
+
+/*
+ * The P1 hardware documentation states that values in the registers are
+ * latched so when written they represent a consistent time snapshot.
+ * Nevertheless, this is not guaranteed by the implementation, so we must
+ * disable the RTC while updating it.
+ */
+static int p1_rtc_set_time(struct device *dev, struct rtc_time *t)
+{
+ struct p1_rtc *p1 = dev_get_drvdata(dev);
+ struct regmap *regmap = p1->regmap;
+ u8 time[6];
+ int ret;
+
+ time[0] = t->tm_sec;
+ time[1] = t->tm_min;
+ time[2] = t->tm_hour;
+ time[3] = t->tm_mday - 1;
+ time[4] = t->tm_mon;
+ time[5] = t->tm_year - 100;
+
+ /* Disable the RTC to update; re-enable again when done */
+ ret = regmap_clear_bits(regmap, RTC_CTRL, RTC_EN);
+ if (ret)
+ return ret;
+
+ /* If something goes wrong, leave the RTC disabled */
+ ret = regmap_bulk_write(regmap, RTC_TIME, time, sizeof(time));
+ if (ret)
+ return ret;
+
+ return regmap_set_bits(regmap, RTC_CTRL, RTC_EN);
+}
+
+static const struct rtc_class_ops p1_rtc_class_ops = {
+ .read_time = p1_rtc_read_time,
+ .set_time = p1_rtc_set_time,
+};
+
+static int p1_rtc_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct rtc_device *rtc;
+ struct p1_rtc *p1;
+
+ p1 = devm_kzalloc(dev, sizeof(*p1), GFP_KERNEL);
+ if (!p1)
+ return -ENOMEM;
+ dev_set_drvdata(dev, p1);
+
+ p1->regmap = dev_get_regmap(dev->parent, NULL);
+ if (!p1->regmap)
+ return dev_err_probe(dev, -ENODEV, "failed to get regmap\n");
+
+ rtc = devm_rtc_allocate_device(dev);
+ if (IS_ERR(rtc))
+ return dev_err_probe(dev, PTR_ERR(rtc),
+ "error allocating device\n");
+ p1->rtc = rtc;
+
+ rtc->ops = &p1_rtc_class_ops;
+ rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
+ rtc->range_max = RTC_TIMESTAMP_END_2063;
+
+ clear_bit(RTC_FEATURE_ALARM, rtc->features);
+ clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, rtc->features);
+
+ return devm_rtc_register_device(rtc);
+}
+
+static struct platform_driver p1_rtc_driver = {
+ .probe = p1_rtc_probe,
+ .driver = {
+ .name = MOD_NAME,
+ },
+};
+
+module_platform_driver(p1_rtc_driver);
+
+MODULE_DESCRIPTION("SpacemiT P1 RTC driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" MOD_NAME);
--
2.48.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v13 5/7] riscv: dts: spacemit: enable the i2c8 adapter
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
` (3 preceding siblings ...)
2025-08-25 17:20 ` [PATCH v13 4/7] rtc: spacemit: support the SpacemiT P1 RTC Alex Elder
@ 2025-08-25 17:20 ` Alex Elder
2025-08-25 17:20 ` [PATCH v13 6/7] riscv: dts: spacemit: define fixed regulators Alex Elder
` (4 subsequent siblings)
9 siblings, 0 replies; 20+ messages in thread
From: Alex Elder @ 2025-08-25 17:20 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
Define properties for the I2C adapter that provides access to the
SpacemiT P1 PMIC. Enable this adapter on the Banana Pi BPI-F3.
Signed-off-by: Alex Elder <elder@riscstar.com>
---
arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 12 ++++++++++++
arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 7 +++++++
arch/riscv/boot/dts/spacemit/k1.dtsi | 13 +++++++++++++
3 files changed, 32 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
index fe22c747c5012..ae9409fe398b2 100644
--- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
+++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
@@ -40,6 +40,18 @@ &emmc {
status = "okay";
};
+&i2c8 {
+ pinctrl-0 = <&i2c8_cfg>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ pmic@41 {
+ compatible = "spacemit,p1";
+ reg = <0x41>;
+ interrupts = <64>;
+ };
+};
+
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_2_cfg>;
diff --git a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi
index 3810557374228..96d7a46d4bf77 100644
--- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi
@@ -11,6 +11,13 @@
#define K1_GPIO(x) (x / 32) (x % 32)
&pinctrl {
+ i2c8_cfg: i2c8-cfg {
+ i2c8-0-pins {
+ pinmux = <K1_PADCONF(93, 0)>, /* PWR_SCL */
+ <K1_PADCONF(94, 0)>; /* PWR_SDA */
+ };
+ };
+
uart0_2_cfg: uart0-2-cfg {
uart0-2-pins {
pinmux = <K1_PADCONF(68, 2)>,
diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi
index 6c68b2e54675e..cd9b91c3358e4 100644
--- a/arch/riscv/boot/dts/spacemit/k1.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k1.dtsi
@@ -459,6 +459,19 @@ pwm7: pwm@d401bc00 {
status = "disabled";
};
+ i2c8: i2c@d401d800 {
+ compatible = "spacemit,k1-i2c";
+ reg = <0x0 0xd401d800 0x0 0x38>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&syscon_apbc CLK_TWSI8>,
+ <&syscon_apbc CLK_TWSI8_BUS>;
+ clock-names = "func", "bus";
+ clock-frequency = <400000>;
+ interrupts = <19>;
+ status = "disabled";
+ };
+
pinctrl: pinctrl@d401e000 {
compatible = "spacemit,k1-pinctrl";
reg = <0x0 0xd401e000 0x0 0x400>;
--
2.48.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v13 6/7] riscv: dts: spacemit: define fixed regulators
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
` (4 preceding siblings ...)
2025-08-25 17:20 ` [PATCH v13 5/7] riscv: dts: spacemit: enable the i2c8 adapter Alex Elder
@ 2025-08-25 17:20 ` Alex Elder
2025-08-25 17:20 ` [PATCH v13 7/7] riscv: dts: spacemit: define regulator constraints Alex Elder
` (3 subsequent siblings)
9 siblings, 0 replies; 20+ messages in thread
From: Alex Elder @ 2025-08-25 17:20 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
Define the DC power input and the 4v power as fixed supplies in the
Banana Pi BPI-F3.
Signed-off-by: Alex Elder <elder@riscstar.com>
---
.../boot/dts/spacemit/k1-bananapi-f3.dts | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
index ae9409fe398b2..a11a60b9f369b 100644
--- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
+++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
@@ -28,6 +28,25 @@ led1 {
default-state = "on";
};
};
+
+ reg_dc_in: dc-in-12v {
+ compatible = "regulator-fixed";
+ regulator-name = "dc_in_12v";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_vcc_4v: vcc-4v {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_4v";
+ regulator-min-microvolt = <4000000>;
+ regulator-max-microvolt = <4000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ vin-supply = <®_dc_in>;
+ };
};
&emmc {
--
2.48.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v13 7/7] riscv: dts: spacemit: define regulator constraints
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
` (5 preceding siblings ...)
2025-08-25 17:20 ` [PATCH v13 6/7] riscv: dts: spacemit: define fixed regulators Alex Elder
@ 2025-08-25 17:20 ` Alex Elder
2025-09-03 12:19 ` (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support Lee Jones
` (2 subsequent siblings)
9 siblings, 0 replies; 20+ messages in thread
From: Alex Elder @ 2025-08-25 17:20 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
Define basic constraints for the regulators in the SpacemiT P1 PMIC,
as implemented in the Banana Pi BPI-F3.
Signed-off-by: Alex Elder <elder@riscstar.com>
---
.../boot/dts/spacemit/k1-bananapi-f3.dts | 104 ++++++++++++++++++
1 file changed, 104 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
index a11a60b9f369b..a9a2596a94e89 100644
--- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
+++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
@@ -68,6 +68,110 @@ pmic@41 {
compatible = "spacemit,p1";
reg = <0x41>;
interrupts = <64>;
+ vin-supply = <®_vcc_4v>;
+
+ regulators {
+ buck1 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3450000>;
+ regulator-ramp-delay = <5000>;
+ regulator-always-on;
+ };
+
+ buck2 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3450000>;
+ regulator-ramp-delay = <5000>;
+ regulator-always-on;
+ };
+
+ buck3 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-ramp-delay = <5000>;
+ regulator-always-on;
+ };
+
+ buck4 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-ramp-delay = <5000>;
+ regulator-always-on;
+ };
+
+ buck5 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3450000>;
+ regulator-ramp-delay = <5000>;
+ regulator-always-on;
+ };
+
+ buck6 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3450000>;
+ regulator-ramp-delay = <5000>;
+ regulator-always-on;
+ };
+
+ aldo1 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ regulator-boot-on;
+ };
+
+ aldo2 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+
+ aldo3 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+
+ aldo4 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+
+ dldo1 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ regulator-boot-on;
+ };
+
+ dldo2 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+
+ dldo3 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+
+ dldo4 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ regulator-always-on;
+ };
+
+ dldo5 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+
+ dldo6 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ regulator-always-on;
+ };
+
+ dldo7 {
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+ };
};
};
--
2.48.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v13 2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support
2025-08-25 17:20 ` [PATCH v13 2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support Alex Elder
@ 2025-08-29 11:03 ` kernel test robot
0 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2025-08-29 11:03 UTC (permalink / raw)
To: Alex Elder, lee, lgirdwood, broonie, alexandre.belloni, robh,
krzk+dt, conor+dt
Cc: Paul Gazzillo, Necip Fazil Yildiran, oe-kbuild-all, mat.jonczyk,
dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
Hi Alex,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 6c68f4c0a147c025ae0b25fab688c7c47964a02f]
url: https://github.com/intel-lab-lkp/linux/commits/Alex-Elder/dt-bindings-mfd-add-support-the-SpacemiT-P1-PMIC/20250826-012424
base: 6c68f4c0a147c025ae0b25fab688c7c47964a02f
patch link: https://lore.kernel.org/r/20250825172057.163883-3-elder%40riscstar.com
patch subject: [PATCH v13 2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support
config: x86_64-kismet-CONFIG_I2C_K1-CONFIG_MFD_SPACEMIT_P1-0-0 (https://download.01.org/0day-ci/archive/20250829/202508291833.SY2MmoZx-lkp@intel.com/config)
reproduce: (https://download.01.org/0day-ci/archive/20250829/202508291833.SY2MmoZx-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508291833.SY2MmoZx-lkp@intel.com/
kismet warnings: (new ones prefixed by >>)
>> kismet: WARNING: unmet direct dependencies detected for I2C_K1 when selected by MFD_SPACEMIT_P1
WARNING: unmet direct dependencies detected for I2C_K1
Depends on [n]: I2C [=y] && HAS_IOMEM [=y] && (ARCH_SPACEMIT || COMPILE_TEST [=y]) && OF [=n]
Selected by [y]:
- MFD_SPACEMIT_P1 [=y] && HAS_IOMEM [=y] && (ARCH_SPACEMIT || COMPILE_TEST [=y]) && I2C [=y]
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
` (6 preceding siblings ...)
2025-08-25 17:20 ` [PATCH v13 7/7] riscv: dts: spacemit: define regulator constraints Alex Elder
@ 2025-09-03 12:19 ` Lee Jones
2025-09-11 16:36 ` Alex Elder
2025-09-16 21:54 ` Mark Brown
2025-10-14 0:01 ` Yixun Lan
9 siblings, 1 reply; 20+ messages in thread
From: Lee Jones @ 2025-09-03 12:19 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt, Alex Elder
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
On Mon, 25 Aug 2025 12:20:49 -0500, Alex Elder wrote:
> 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.
>
> [...]
Applied, thanks!
[1/7] dt-bindings: mfd: add support the SpacemiT P1 PMIC
commit: baac6755d3e8ddf47eee2be3ca72fe14ebae2143
[2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support
commit: 49833495c85f26d070e70148fd9607c6fbf927fd
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-09-03 12:19 ` (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support Lee Jones
@ 2025-09-11 16:36 ` Alex Elder
2025-09-11 18:57 ` Mark Brown
2025-09-11 19:55 ` Yixun Lan
0 siblings, 2 replies; 20+ messages in thread
From: Alex Elder @ 2025-09-11 16:36 UTC (permalink / raw)
To: Lee Jones, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
On 9/3/25 7:19 AM, Lee Jones wrote:
> On Mon, 25 Aug 2025 12:20:49 -0500, Alex Elder wrote:
>> 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.
>>
>> [...]
>
> Applied, thanks!
>
> [1/7] dt-bindings: mfd: add support the SpacemiT P1 PMIC
> commit: baac6755d3e8ddf47eee2be3ca72fe14ebae2143
> [2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support
> commit: 49833495c85f26d070e70148fd9607c6fbf927fd
>
> --
> Lee Jones [李琼斯]
>
Yixun Lan plans to merge patches 5-7 of this series.
That leaves patch 3, which enables regulator support, and patch
4, which adds RTC support.
How should these two patches be merged? Mark has reviewed the
regulator patch 3 and Alexandre has acked the RTC patch 4.
Thank you.
-Alex
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-09-11 16:36 ` Alex Elder
@ 2025-09-11 18:57 ` Mark Brown
2025-09-16 8:42 ` Lee Jones
2025-09-11 19:55 ` Yixun Lan
1 sibling, 1 reply; 20+ messages in thread
From: Mark Brown @ 2025-09-11 18:57 UTC (permalink / raw)
To: Alex Elder
Cc: Lee Jones, lgirdwood, alexandre.belloni, robh, krzk+dt, conor+dt,
mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 334 bytes --]
On Thu, Sep 11, 2025 at 11:36:41AM -0500, Alex Elder wrote:
> That leaves patch 3, which enables regulator support, and patch
> 4, which adds RTC support.
> How should these two patches be merged? Mark has reviewed the
> regulator patch 3 and Alexandre has acked the RTC patch 4.
We'd both have been expecting them to go via MFD.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-09-11 16:36 ` Alex Elder
2025-09-11 18:57 ` Mark Brown
@ 2025-09-11 19:55 ` Yixun Lan
1 sibling, 0 replies; 20+ messages in thread
From: Yixun Lan @ 2025-09-11 19:55 UTC (permalink / raw)
To: Alex Elder
Cc: Lee Jones, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt, mat.jonczyk, paul.walmsley, palmer, aou, alex,
linux.amoon, troymitchell988, guodong, linux-rtc, devicetree,
linux-riscv, spacemit, linux-kernel
Hi Alex,
On 11:36 Thu 11 Sep , Alex Elder wrote:
> On 9/3/25 7:19 AM, Lee Jones wrote:
> > On Mon, 25 Aug 2025 12:20:49 -0500, Alex Elder wrote:
> >> 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.
> >>
> >> [...]
> >
> > Applied, thanks!
> >
> > [1/7] dt-bindings: mfd: add support the SpacemiT P1 PMIC
> > commit: baac6755d3e8ddf47eee2be3ca72fe14ebae2143
> > [2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support
> > commit: 49833495c85f26d070e70148fd9607c6fbf927fd
> >
> > --
> > Lee Jones [李琼斯]
> >
>
> Yixun Lan plans to merge patches 5-7 of this series.
>
DT patches usually go as the last one, in this case, they effectively
depened on patch 3 which adds the regulator support
As Mark suggest it go via MFD, that leaves Jones to handle,
It's close to the release of rc6, I'd hope it isn't too late..
> That leaves patch 3, which enables regulator support, and patch
> 4, which adds RTC support.
>
> How should these two patches be merged? Mark has reviewed the
> regulator patch 3 and Alexandre has acked the RTC patch 4.
>
> Thank you.
>
> -Alex
--
Yixun Lan (dlan)
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-09-11 18:57 ` Mark Brown
@ 2025-09-16 8:42 ` Lee Jones
2025-09-16 11:50 ` Mark Brown
0 siblings, 1 reply; 20+ messages in thread
From: Lee Jones @ 2025-09-16 8:42 UTC (permalink / raw)
To: Mark Brown
Cc: Alex Elder, lgirdwood, alexandre.belloni, robh, krzk+dt, conor+dt,
mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
On Thu, 11 Sep 2025, Mark Brown wrote:
> On Thu, Sep 11, 2025 at 11:36:41AM -0500, Alex Elder wrote:
>
> > That leaves patch 3, which enables regulator support, and patch
> > 4, which adds RTC support.
>
> > How should these two patches be merged? Mark has reviewed the
> > regulator patch 3 and Alexandre has acked the RTC patch 4.
>
> We'd both have been expecting them to go via MFD.
Why? I don't see any dependencies between them (usually a shared MFD
header-file). If there are no deps, it should be taken through its own
repo, no?
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-09-16 8:42 ` Lee Jones
@ 2025-09-16 11:50 ` Mark Brown
2025-09-16 12:27 ` Lee Jones
0 siblings, 1 reply; 20+ messages in thread
From: Mark Brown @ 2025-09-16 11:50 UTC (permalink / raw)
To: Lee Jones
Cc: Alex Elder, lgirdwood, alexandre.belloni, robh, krzk+dt, conor+dt,
mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 733 bytes --]
On Tue, Sep 16, 2025 at 09:42:29AM +0100, Lee Jones wrote:
> On Thu, 11 Sep 2025, Mark Brown wrote:
> > On Thu, Sep 11, 2025 at 11:36:41AM -0500, Alex Elder wrote:
> > > How should these two patches be merged? Mark has reviewed the
> > > regulator patch 3 and Alexandre has acked the RTC patch 4.
> > We'd both have been expecting them to go via MFD.
> Why? I don't see any dependencies between them (usually a shared MFD
> header-file). If there are no deps, it should be taken through its own
> repo, no?
I used to just apply things but at some point Linus complained about
cases where the MFD ended up not getting merged (missing the merge
window or whatever) so I've been treating them like they had an actual
dependency.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-09-16 11:50 ` Mark Brown
@ 2025-09-16 12:27 ` Lee Jones
2025-09-16 13:05 ` Yixun Lan
0 siblings, 1 reply; 20+ messages in thread
From: Lee Jones @ 2025-09-16 12:27 UTC (permalink / raw)
To: Mark Brown
Cc: Alex Elder, lgirdwood, alexandre.belloni, robh, krzk+dt, conor+dt,
mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
On Tue, 16 Sep 2025, Mark Brown wrote:
> On Tue, Sep 16, 2025 at 09:42:29AM +0100, Lee Jones wrote:
> > On Thu, 11 Sep 2025, Mark Brown wrote:
> > > On Thu, Sep 11, 2025 at 11:36:41AM -0500, Alex Elder wrote:
>
> > > > How should these two patches be merged? Mark has reviewed the
> > > > regulator patch 3 and Alexandre has acked the RTC patch 4.
>
> > > We'd both have been expecting them to go via MFD.
>
> > Why? I don't see any dependencies between them (usually a shared MFD
> > header-file). If there are no deps, it should be taken through its own
> > repo, no?
>
> I used to just apply things but at some point Linus complained about
> cases where the MFD ended up not getting merged (missing the merge
> window or whatever) so I've been treating them like they had an actual
> dependency.
Not sure I've seen any of that from Linus, but I don't doubt you. The
MFD part has been merged now, so it's save to go ahead and apply the
Regulator part.
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-09-16 12:27 ` Lee Jones
@ 2025-09-16 13:05 ` Yixun Lan
0 siblings, 0 replies; 20+ messages in thread
From: Yixun Lan @ 2025-09-16 13:05 UTC (permalink / raw)
To: Lee Jones
Cc: Mark Brown, Alex Elder, lgirdwood, alexandre.belloni, robh,
krzk+dt, conor+dt, mat.jonczyk, paul.walmsley, palmer, aou, alex,
linux.amoon, troymitchell988, guodong, linux-rtc, devicetree,
linux-riscv, spacemit, linux-kernel
Hi Mark, Jones,
On 13:27 Tue 16 Sep , Lee Jones wrote:
> On Tue, 16 Sep 2025, Mark Brown wrote:
>
> > On Tue, Sep 16, 2025 at 09:42:29AM +0100, Lee Jones wrote:
> > > On Thu, 11 Sep 2025, Mark Brown wrote:
> > > > On Thu, Sep 11, 2025 at 11:36:41AM -0500, Alex Elder wrote:
> >
> > > > > How should these two patches be merged? Mark has reviewed the
> > > > > regulator patch 3 and Alexandre has acked the RTC patch 4.
> >
> > > > We'd both have been expecting them to go via MFD.
> >
> > > Why? I don't see any dependencies between them (usually a shared MFD
> > > header-file). If there are no deps, it should be taken through its own
> > > repo, no?
> >
> > I used to just apply things but at some point Linus complained about
> > cases where the MFD ended up not getting merged (missing the merge
> > window or whatever) so I've been treating them like they had an actual
> > dependency.
>
> Not sure I've seen any of that from Linus, but I don't doubt you. The
> MFD part has been merged now, so it's save to go ahead and apply the
> Regulator part.
>
Forgive me to chim in..
To be honest, I don't really mind which tree the patch to go through..
But since the patch 3 has no build time dependency on previous two,
so it should be fair to take via pmu/regulator tree, I've done a check
locally which imply this..
What do you think, Mark?
--
Yixun Lan (dlan)
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 4/7] rtc: spacemit: support the SpacemiT P1 RTC
2025-08-25 17:20 ` [PATCH v13 4/7] rtc: spacemit: support the SpacemiT P1 RTC Alex Elder
@ 2025-09-16 14:57 ` Alexandre Belloni
0 siblings, 0 replies; 20+ messages in thread
From: Alexandre Belloni @ 2025-09-16 14:57 UTC (permalink / raw)
To: lee, lgirdwood, broonie, robh, krzk+dt, conor+dt, Alex Elder
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
On Mon, 25 Aug 2025 12:20:53 -0500, Alex Elder wrote:
> Add support for the RTC found in the SpacemiT P1 PMIC. Initially
> only setting and reading the time are supported.
>
> The PMIC is implemented as a multi-function device. This RTC is
> probed based on this driver being named in a MFD cell in the simple
> MFD I2C driver.
>
> [...]
Applied, thanks!
[4/7] rtc: spacemit: support the SpacemiT P1 RTC
https://git.kernel.org/abelloni/c/c96433f4806f
Best regards,
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
` (7 preceding siblings ...)
2025-09-03 12:19 ` (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support Lee Jones
@ 2025-09-16 21:54 ` Mark Brown
2025-10-14 0:01 ` Yixun Lan
9 siblings, 0 replies; 20+ messages in thread
From: Mark Brown @ 2025-09-16 21:54 UTC (permalink / raw)
To: lee, lgirdwood, alexandre.belloni, robh, krzk+dt, conor+dt,
Alex Elder
Cc: mat.jonczyk, dlan, paul.walmsley, palmer, aou, alex, linux.amoon,
troymitchell988, guodong, linux-rtc, devicetree, linux-riscv,
spacemit, linux-kernel
On Mon, 25 Aug 2025 12:20:49 -0500, Alex Elder wrote:
> 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.
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next
Thanks!
[3/7] regulator: spacemit: support SpacemiT P1 regulators
commit: 8b84d712ad849172f6bbcad57534b284d942b0b5
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
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
` (8 preceding siblings ...)
2025-09-16 21:54 ` Mark Brown
@ 2025-10-14 0:01 ` Yixun Lan
9 siblings, 0 replies; 20+ messages in thread
From: Yixun Lan @ 2025-10-14 0:01 UTC (permalink / raw)
To: lee, lgirdwood, broonie, alexandre.belloni, robh, krzk+dt,
conor+dt, Alex Elder
Cc: Yixun Lan, mat.jonczyk, paul.walmsley, palmer, aou, alex,
linux.amoon, troymitchell988, guodong, linux-rtc, devicetree,
linux-riscv, spacemit, linux-kernel
On Mon, 25 Aug 2025 12:20:49 -0500, Alex Elder wrote:
> 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.
>
> [...]
Applied, thanks!
[5/7] riscv: dts: spacemit: enable the i2c8 adapter
https://github.com/spacemit-com/linux/commit/3e8d7309e6260b1d066e733bf3e2e1b6a0d3f82b
[6/7] riscv: dts: spacemit: define fixed regulators
https://github.com/spacemit-com/linux/commit/1df07a40453fd652132051419140950d47941fe9
[7/7] riscv: dts: spacemit: define regulator constraints
https://github.com/spacemit-com/linux/commit/09a412d397484e76588707d85ccc37f71e491091
Best regards,
--
Yixun Lan
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2025-10-14 0:01 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-25 17:20 [PATCH v13 0/7] spacemit: introduce P1 PMIC support Alex Elder
2025-08-25 17:20 ` [PATCH v13 1/7] dt-bindings: mfd: add support the SpacemiT P1 PMIC Alex Elder
2025-08-25 17:20 ` [PATCH v13 2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support Alex Elder
2025-08-29 11:03 ` kernel test robot
2025-08-25 17:20 ` [PATCH v13 3/7] regulator: spacemit: support SpacemiT P1 regulators Alex Elder
2025-08-25 17:20 ` [PATCH v13 4/7] rtc: spacemit: support the SpacemiT P1 RTC Alex Elder
2025-09-16 14:57 ` (subset) " Alexandre Belloni
2025-08-25 17:20 ` [PATCH v13 5/7] riscv: dts: spacemit: enable the i2c8 adapter Alex Elder
2025-08-25 17:20 ` [PATCH v13 6/7] riscv: dts: spacemit: define fixed regulators Alex Elder
2025-08-25 17:20 ` [PATCH v13 7/7] riscv: dts: spacemit: define regulator constraints Alex Elder
2025-09-03 12:19 ` (subset) [PATCH v13 0/7] spacemit: introduce P1 PMIC support Lee Jones
2025-09-11 16:36 ` Alex Elder
2025-09-11 18:57 ` Mark Brown
2025-09-16 8:42 ` Lee Jones
2025-09-16 11:50 ` Mark Brown
2025-09-16 12:27 ` Lee Jones
2025-09-16 13:05 ` Yixun Lan
2025-09-11 19:55 ` Yixun Lan
2025-09-16 21:54 ` Mark Brown
2025-10-14 0:01 ` Yixun Lan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).