Commit 6fc5d415 authored by Alex Elder's avatar Alex Elder Committed by Lee Jones
Browse files

mfd: simple-mfd-i2c: Add SpacemiT P1 support



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: default avatarAlex Elder <elder@riscstar.com>
Link: https://lore.kernel.org/r/20250825172057.163883-3-elder@riscstar.com


Signed-off-by: default avatarLee Jones <lee@kernel.org>
parent 8566de1c
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1254,6 +1254,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
+17 −0
Original line number Diff line number Diff line
@@ -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);