[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