All of lore.kernel.org
 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:14 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.