[PATCH 3/3] regulator: mp886x: add MP8864 support
From: Jisheng Zhang
Date: Tue Sep 01 2026 - 00:51:39 EST
The MP8864 is a 4 A, 21 V synchronous step-down converter. Its
register layout and voltage transition handling are compatible with the
MP8867, but its selectable switching frequencies are 600 kHz, 850 kHz,
1.1 MHz and 1.6 MHz.
Add the compatible and chip-specific switching-frequency table.
Signed-off-by: Jisheng Zhang <jszhang@xxxxxxxxxx>
Assisted-by: Codex:gpt-5
---
drivers/regulator/Kconfig | 2 +-
drivers/regulator/mp886x.c | 21 ++++++++++++++++++++-
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
index 89789ac7a786..c8940e2c7e04 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -864,7 +864,7 @@ config REGULATOR_MP8859
module. The module will be named "mp8859".
config REGULATOR_MP886X
- tristate "MPS MP8869 regulator driver"
+ tristate "MPS MP8864/MP8867/MP8869 regulator driver"
depends on I2C && OF
select REGMAP_I2C
help
diff --git a/drivers/regulator/mp886x.c b/drivers/regulator/mp886x.c
index a10f3a20d413..14f60cdcbbd6 100644
--- a/drivers/regulator/mp886x.c
+++ b/drivers/regulator/mp886x.c
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
//
-// MP8867/MP8869 regulator driver
+// MP8864/MP8867/MP8869 regulator driver
//
// Copyright (C) 2020 Synaptics Incorporated
//
@@ -229,6 +229,23 @@ static const struct regulator_ops mp8867_regulator_ops = {
.set_ramp_delay = regulator_set_ramp_delay_regmap,
};
+static const struct mp886x_cfg_info mp8864_ci = {
+ .rops = &mp8867_regulator_ops,
+ .slew_rates = {
+ 64000,
+ 32000,
+ 16000,
+ 8000,
+ 4000,
+ 2000,
+ 1000,
+ 500,
+ },
+ .switch_freq = { 600000, 850000, 1100000, 1600000 },
+ .fs_reg = MP886X_SYSCNTLREG1,
+ .fs_shift = 1,
+};
+
static const struct mp886x_cfg_info mp8867_ci = {
.rops = &mp8867_regulator_ops,
.slew_rates = {
@@ -341,6 +358,7 @@ static int mp886x_i2c_probe(struct i2c_client *client)
}
static const struct of_device_id mp886x_dt_ids[] = {
+ { .compatible = "mps,mp8864", .data = &mp8864_ci },
{ .compatible = "mps,mp8867", .data = &mp8867_ci },
{ .compatible = "mps,mp8869", .data = &mp8869_ci },
{ }
@@ -348,6 +366,7 @@ static const struct of_device_id mp886x_dt_ids[] = {
MODULE_DEVICE_TABLE(of, mp886x_dt_ids);
static const struct i2c_device_id mp886x_id[] = {
+ { .name = "mp8864", .driver_data = (kernel_ulong_t)&mp8864_ci },
{ .name = "mp8867", .driver_data = (kernel_ulong_t)&mp8867_ci },
{ .name = "mp8869", .driver_data = (kernel_ulong_t)&mp8869_ci },
{ }
--
2.51.0