[PATCH v4 00/32] Samsung S2MPG10 PMIC MFD-based drivers
Lee Jones
lee at kernel.org
Tue Apr 15 09:02:12 PDT 2025
On Wed, 09 Apr 2025, André Draszik wrote:
> 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 ***
>
> To compile, this depends on the Samsung ACPM driver in Linux next with
> the following additional patches:
> https://lore.kernel.org/all/20250324-acpm-atomic-v2-0-7d87746e1765@linaro.org/
> https://lore.kernel.org/all/20250319-acpm-fixes-v2-0-ac2c1bcf322b@linaro.org/
> https://lore.kernel.org/all/20250327-acpm-children-v1-0-0afe15ee2ff7@linaro.org/
>
> *** 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 ... 3)
> * s2m mfd prep for adding S2MPG10 support (patches 4 ... 7)
> * split S2M mfd driver into s2m-core and s2m-i2c, including the
> kconfig symbol update (patch 8)
> * S2MPG10 core driver (patch 9)
> * s2m mfd driver cleanup patches (patches 10 ... 23)
> * S2MPG10 clock driver (patch 24)
> * s2m RTC prep for adding S2MPG10 (patch 25 ... 26)
> * S2MPG10 RTC driver (patch 27)
> * s2m RTC cleanup patches (patches 28 ... 31)
>
> 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 at linaro.org>
> ---
> Changes in v4:
> - various updates to sec-acpm (patch 9, Lee)
> - cache enum type in patch 25 (Krzysztof)
> - collect tags
> - Link to v3: https://lore.kernel.org/r/20250403-s2mpg10-v3-0-b542b3505e68@linaro.org
>
> Changes in v3:
> - Krzysztof:
> - keep 'regulators' subnode required even for s2mpg10
> - drop '$ref' and 'unevaluatedProperties' from pmic subnode, use
> 'additionalProperties' instead
> - add some regulators to examples since s2mpg10 requires them as of
> v3
> - sec-acpm:
> - use an enum for struct sec_acpm_bus_context::type
> - consistent name space for all functions sec_pmic_acpm_... to be
> similar to i2c and consistent in this file
> - Link to v2: https://lore.kernel.org/r/20250328-s2mpg10-v2-0-b54dee33fb6b@linaro.org
>
> Changes in v2:
> - Rob:
> - make PMIC node a child of ACPM, and all related changes (binding,
> driver)
> - Krzysztof:
> - merge defconfig updates into patch changing the symbols (patch 8)
> - split MODULE_AUTHOR update into a separate patch
> - better alignment fix (patch 11)
> - merge two s2dos05/s2mpu05 related patches into one (patch 14)
> - myself:
> - keep PMIC DT parsing in core, not in transport driver
> - several updates in sec-acpm.c, see separate entries in patch 9
> - fix typo in patch 17
> - collect tags
> - Link to v1: https://lore.kernel.org/r/20250323-s2mpg10-v1-0-d08943702707@linaro.org
>
> ---
> André Draszik (32):
> dt-bindings: mfd: samsung,s2mps11: add s2mpg10
> dt-bindings: clock: samsung,s2mps11: add s2mpg10
> dt-bindings: firmware: google,gs101-acpm-ipc: add PMIC child node
> mfd: sec-core: 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: Split into core and transport (i2c) drivers
> mfd: sec: Add support for S2MPG10 PMIC
> mfd: sec: Merge separate core and irq modules
> mfd: sec-common: Fix multiple trivial whitespace issues
> mfd: sec-i2c: Sort struct of_device_id entries and the device type switch
> mfd: sec: Use dev_err_probe() where appropriate
> mfd: sec-i2c: s2dos05/s2mpu05: Use explicit regmap config and drop default
> mfd: sec-irq: s2dos05 doesn't support interrupts
> mfd: sec-common: Don't ignore errors from sec_irq_init()
> mfd: sec-i2c: 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-common: Use sizeof(*var), not sizeof(struct type_of_var)
> mfd: sec-common: Convert to using MFD_CELL macros
> mfd: sec-irq: Convert to using REGMAP_IRQ_REG() macros
> mfd: sec: Add myself as module author
> clk: s2mps11: add support for S2MPG10 PMIC clock
> rtc: s5m: cache device type 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 +
> .../bindings/firmware/google,gs101-acpm-ipc.yaml | 35 ++
> .../devicetree/bindings/mfd/samsung,s2mps11.yaml | 26 +-
> 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/mfd/Kconfig | 35 +-
> drivers/mfd/Makefile | 5 +-
> drivers/mfd/sec-acpm.c | 442 +++++++++++++++++++
> drivers/mfd/sec-common.c | 301 +++++++++++++
> drivers/mfd/sec-core.c | 481 ---------------------
> drivers/mfd/sec-core.h | 23 +
> drivers/mfd/sec-i2c.c | 239 ++++++++++
> drivers/mfd/sec-irq.c | 460 +++++++-------------
> drivers/rtc/rtc-s5m.c | 197 ++++++---
MFD parts look okay to me now.
With Acks from the Clk and RTC maintainers, I can merge all of the
driver stuff together and submit a PR for others to pull from.
> 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 | 454 +++++++++++++++++++
> 22 files changed, 2001 insertions(+), 864 deletions(-)
> ---
> base-commit: f58dd835f82a5dda6c9d3895ee6f15016431fb1f
> change-id: 20250321-s2mpg10-ef5d1ebd3043
>
> Best regards,
> --
> André Draszik <andre.draszik at linaro.org>
>
--
Lee Jones [李琼斯]
More information about the linux-arm-kernel
mailing list