This series adds initial support for the Samsung S2MPG10 PMIC using the MFD framework. This is a PMIC for mobile applications and is used on the Google Pixel 6 and 6 Pro (oriole / raven). *** dependency note *** This depends on the Samsung ACPM driver in Linux next, and runtime depends on some fixes for it: https://lore.kernel.org/all/20250321-acpm-atomic-v1-0-fb887bde7e61@xxxxxxxxxx/ https://lore.kernel.org/all/20250319-acpm-fixes-v2-0-ac2c1bcf322b@xxxxxxxxxx/ *** dependency note end *** +++ Kconfig update +++ There is a Kconfig symbol update in this series, because the existing Samsung S2M driver has been split into core and transport (I2C & ACPM) parts. CONFIG_MFD_SEC_CORE is now truly a core driver, and the I2C code that was part of it is now enabled via CONFIG_MFD_SEC_I2C. This was necessary because unlike the other S2M PMICs, S2MPG10 doesn't talk via I2C, but via the Samsung ACPM firmware. +++ Kconfig update end +++ This series must be applied in-order, due to interdependencies of some of the patches. There are also various cleanup patches to the S2M drivers. I've kept them ordered as: * DT bindings (patches 1 ... 2) * EXPORT_SYMBOL ACPM's devm_acpm_get_by_phandle() (patch 3) * S2M MFD prep for adding S2MPG10 to MFD core (patches 4 ... 11) * S2MPG10 core driver (patch 12) * S2M MFD cleanup patches (patches 14 ... 25) * S2MPG10 clock driver (patch 26) * S2M RTC prep for adding S2MPG10 (patch 27 ... 28) * S2MPG10 RTC driver (patch 29) * S2M RTC cleanup patches (patches 30 ... 33) I realise these are many, but since some prep-work was required to be able to add S2MPG anyway, I wanted to get the cleanup patches in as well :-) Let me know if I should postpone them to a later date instead. The S2MPG10 includes buck converters, various LDOs, power meters, RTC, clock outputs, and additional GPIOs interfaces. This series adds support in the top-level device driver, and for the RTC and clock. Importantly, having the RTC driver allows to do a proper reset of the system. Drivers or driver updates for the other components will be added in future patches. This will need a DT update for Oriole / Raven to enable this device. I will send that out separately. Cheers, Andre' Signed-off-by: André Draszik <andre.draszik@xxxxxxxxxx> --- André Draszik (34): dt-bindings: mfd: samsung,s2mps11: add s2mpg10 dt-bindings: clock: samsung,s2mps11: add s2mpg10 firmware: exynos-acpm: export devm_acpm_get_by_phandle() mfd: sec: drop non-existing forward declarations mfd: sec: sort includes alphabetically mfd: sec: update includes to add missing and remove superfluous ones mfd: sec: move private internal API to internal header mfd: sec: fix open parenthesis alignment (of_property_read_bool) mfd: sec: slightly rework runtime platform data allocation mfd: sec: split into core and transport (i2c) drivers defconfigs: rename CONFIG_MFD_SEC_CORE to CONFIG_MFD_SEC_I2C mfd: sec: add support for S2MPG10 PMIC mfd: sec: merge separate core and irq modules mfd: sec: sort struct of_device_id entries and the device type switch mfd: sec: use dev_err_probe() where appropriate mfd: sec: s2dos05/s2mpu05: use explicit regmap config mfd: sec: drop generic regmap config mfd: sec: s2dos05: doesn't support interrupts (it seems) mfd: sec: don't ignore errors from sec_irq_init() mfd: sec: rework platform data and regmap instantiating mfd: sec: change device_type to int mfd: sec: don't compare against NULL / 0 for errors, use ! mfd: sec: use sizeof(*var), not sizeof(struct type_of_var) mfd: sec: convert to using MFD_CELL macros mfd: sec: convert to using REGMAP_IRQ_REG() macros clk: s2mps11: add support for S2MPG10 PMIC clock rtc: s5m: cache value of platform_get_device_id() during probe rtc: s5m: prepare for external regmap rtc: s5m: add support for S2MPG10 RTC rtc: s5m: fix a typo: peding -> pending rtc: s5m: switch to devm_device_init_wakeup rtc: s5m: replace regmap_update_bits with regmap_clear/set_bits rtc: s5m: replace open-coded read/modify/write registers with regmap helpers MAINTAINERS: add myself as reviewer for Samsung S2M MFD .../devicetree/bindings/clock/samsung,s2mps11.yaml | 1 + .../devicetree/bindings/mfd/samsung,s2mps11.yaml | 34 +- MAINTAINERS | 3 +- arch/arm/configs/exynos_defconfig | 2 +- arch/arm/configs/multi_v7_defconfig | 2 +- arch/arm/configs/pxa_defconfig | 2 +- arch/arm64/configs/defconfig | 2 +- drivers/clk/clk-s2mps11.c | 8 + drivers/firmware/samsung/exynos-acpm.c | 1 + drivers/mfd/Kconfig | 35 +- drivers/mfd/Makefile | 5 +- drivers/mfd/sec-acpm.c | 471 ++++++++++++++++++++ drivers/mfd/sec-common.c | 284 ++++++++++++ drivers/mfd/sec-core.c | 481 --------------------- drivers/mfd/sec-core.h | 32 ++ drivers/mfd/sec-i2c.c | 259 +++++++++++ drivers/mfd/sec-irq.c | 461 +++++++------------- drivers/rtc/rtc-s5m.c | 197 ++++++--- include/linux/mfd/samsung/core.h | 7 +- include/linux/mfd/samsung/irq.h | 103 +++++ include/linux/mfd/samsung/rtc.h | 37 ++ include/linux/mfd/samsung/s2mpg10.h | 310 +++++++++++++ 22 files changed, 1872 insertions(+), 865 deletions(-) --- base-commit: c4d4884b67802c41fd67399747165d65c770621a change-id: 20250321-s2mpg10-ef5d1ebd3043 Best regards, -- André Draszik <andre.draszik@xxxxxxxxxx>