devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/34] Samsung S2MPG10 PMIC MFD-based drivers
@ 2025-03-23 22:39 André Draszik
  2025-03-23 22:39 ` [PATCH 01/34] dt-bindings: mfd: samsung,s2mps11: add s2mpg10 André Draszik
                   ` (34 more replies)
  0 siblings, 35 replies; 66+ messages in thread
From: André Draszik @ 2025-03-23 22:39 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Lee Jones, Rob Herring, Conor Dooley,
	Sylwester Nawrocki, Chanwoo Choi, Alim Akhtar, Michael Turquette,
	Stephen Boyd, Russell King, Catalin Marinas, Will Deacon,
	Alexandre Belloni
  Cc: Peter Griffin, Tudor Ambarus, Will McVicker, kernel-team,
	linux-kernel, linux-samsung-soc, devicetree, linux-clk,
	linux-arm-kernel, linux-rtc, André Draszik

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@linaro.org/
https://lore.kernel.org/all/20250319-acpm-fixes-v2-0-ac2c1bcf322b@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 ... 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@linaro.org>
---
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@linaro.org>


^ permalink raw reply	[flat|nested] 66+ messages in thread

end of thread, other threads:[~2025-03-28  8:11 UTC | newest]

Thread overview: 66+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-23 22:39 [PATCH 00/34] Samsung S2MPG10 PMIC MFD-based drivers André Draszik
2025-03-23 22:39 ` [PATCH 01/34] dt-bindings: mfd: samsung,s2mps11: add s2mpg10 André Draszik
2025-03-24 16:55   ` Rob Herring
2025-03-24 17:23     ` André Draszik
2025-03-23 22:39 ` [PATCH 02/34] dt-bindings: clock: " André Draszik
2025-03-24 17:01   ` Rob Herring (Arm)
2025-03-25 15:12   ` Stephen Boyd
2025-03-23 22:39 ` [PATCH 03/34] firmware: exynos-acpm: export devm_acpm_get_by_phandle() André Draszik
2025-03-26  7:03   ` Krzysztof Kozlowski
2025-03-26  9:19     ` André Draszik
2025-03-23 22:39 ` [PATCH 04/34] mfd: sec: drop non-existing forward declarations André Draszik
2025-03-26  7:03   ` Krzysztof Kozlowski
2025-03-23 22:39 ` [PATCH 05/34] mfd: sec: sort includes alphabetically André Draszik
2025-03-23 22:39 ` [PATCH 06/34] mfd: sec: update includes to add missing and remove superfluous ones André Draszik
2025-03-23 22:39 ` [PATCH 07/34] mfd: sec: move private internal API to internal header André Draszik
2025-03-26  7:04   ` Krzysztof Kozlowski
2025-03-23 22:39 ` [PATCH 08/34] mfd: sec: fix open parenthesis alignment (of_property_read_bool) André Draszik
2025-03-26  7:06   ` Krzysztof Kozlowski
2025-03-26  9:21     ` André Draszik
2025-03-27 16:55       ` Krzysztof Kozlowski
2025-03-23 22:39 ` [PATCH 09/34] mfd: sec: slightly rework runtime platform data allocation André Draszik
2025-03-26  7:06   ` Krzysztof Kozlowski
2025-03-23 22:39 ` [PATCH 10/34] mfd: sec: split into core and transport (i2c) drivers André Draszik
2025-03-26  7:14   ` Krzysztof Kozlowski
2025-03-26  9:33     ` André Draszik
2025-03-23 22:39 ` [PATCH 11/34] defconfigs: rename CONFIG_MFD_SEC_CORE to CONFIG_MFD_SEC_I2C André Draszik
2025-03-26  7:16   ` Krzysztof Kozlowski
2025-03-27  8:56     ` André Draszik
2025-03-27 16:57       ` Krzysztof Kozlowski
2025-03-27 19:00         ` André Draszik
2025-03-23 22:39 ` [PATCH 12/34] mfd: sec: add support for S2MPG10 PMIC André Draszik
2025-03-26  7:22   ` Krzysztof Kozlowski
2025-03-26  9:35     ` André Draszik
2025-03-23 22:39 ` [PATCH 13/34] mfd: sec: merge separate core and irq modules André Draszik
2025-03-26  7:22   ` Krzysztof Kozlowski
2025-03-23 22:39 ` [PATCH 14/34] mfd: sec: sort struct of_device_id entries and the device type switch André Draszik
2025-03-26  7:22   ` Krzysztof Kozlowski
2025-03-23 22:39 ` [PATCH 15/34] mfd: sec: use dev_err_probe() where appropriate André Draszik
2025-03-26  7:24   ` Krzysztof Kozlowski
2025-03-26  9:42     ` André Draszik
2025-03-23 22:39 ` [PATCH 16/34] mfd: sec: s2dos05/s2mpu05: use explicit regmap config André Draszik
2025-03-23 22:39 ` [PATCH 17/34] mfd: sec: drop generic " André Draszik
2025-03-26  7:27   ` Krzysztof Kozlowski
2025-03-23 22:39 ` [PATCH 18/34] mfd: sec: s2dos05: doesn't support interrupts (it seems) André Draszik
2025-03-26  7:28   ` Krzysztof Kozlowski
2025-03-23 22:39 ` [PATCH 19/34] mfd: sec: don't ignore errors from sec_irq_init() André Draszik
2025-03-26  7:29   ` Krzysztof Kozlowski
2025-03-23 22:39 ` [PATCH 20/34] mfd: sec: rework platform data and regmap instantiating André Draszik
2025-03-24  3:52   ` kernel test robot
2025-03-24  5:09   ` kernel test robot
2025-03-23 22:39 ` [PATCH 21/34] mfd: sec: change device_type to int André Draszik
2025-03-23 22:39 ` [PATCH 22/34] mfd: sec: don't compare against NULL / 0 for errors, use ! André Draszik
2025-03-23 22:39 ` [PATCH 23/34] mfd: sec: use sizeof(*var), not sizeof(struct type_of_var) André Draszik
2025-03-23 22:39 ` [PATCH 24/34] mfd: sec: convert to using MFD_CELL macros André Draszik
2025-03-23 22:39 ` [PATCH 25/34] mfd: sec: convert to using REGMAP_IRQ_REG() macros André Draszik
2025-03-23 22:39 ` [PATCH 26/34] clk: s2mps11: add support for S2MPG10 PMIC clock André Draszik
2025-03-25 15:11   ` Stephen Boyd
2025-03-23 22:39 ` [PATCH 27/34] rtc: s5m: cache value of platform_get_device_id() during probe André Draszik
2025-03-23 22:39 ` [PATCH 28/34] rtc: s5m: prepare for external regmap André Draszik
2025-03-23 22:39 ` [PATCH 29/34] rtc: s5m: add support for S2MPG10 RTC André Draszik
2025-03-23 22:39 ` [PATCH 30/34] rtc: s5m: fix a typo: peding -> pending André Draszik
2025-03-23 22:39 ` [PATCH 31/34] rtc: s5m: switch to devm_device_init_wakeup André Draszik
2025-03-23 22:39 ` [PATCH 32/34] rtc: s5m: replace regmap_update_bits with regmap_clear/set_bits André Draszik
2025-03-23 22:39 ` [PATCH 33/34] rtc: s5m: replace open-coded read/modify/write registers with regmap helpers André Draszik
2025-03-23 22:39 ` [PATCH 34/34] MAINTAINERS: add myself as reviewer for Samsung S2M MFD André Draszik
2025-03-28  8:11 ` [PATCH 00/34] Samsung S2MPG10 PMIC MFD-based drivers Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).