linux-clk.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "André Draszik" <andre.draszik@linaro.org>
To: Krzysztof Kozlowski <krzk@kernel.org>, Lee Jones <lee@kernel.org>,
	 Rob Herring <robh@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	 Sylwester Nawrocki <s.nawrocki@samsung.com>,
	 Chanwoo Choi <cw00.choi@samsung.com>,
	Alim Akhtar <alim.akhtar@samsung.com>,
	 Michael Turquette <mturquette@baylibre.com>,
	 Stephen Boyd <sboyd@kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	 Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	 Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: "Peter Griffin" <peter.griffin@linaro.org>,
	"Tudor Ambarus" <tudor.ambarus@linaro.org>,
	"Will McVicker" <willmcvicker@google.com>,
	kernel-team@android.com, linux-kernel@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org,
	linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-rtc@vger.kernel.org,
	"André Draszik" <andre.draszik@linaro.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski@linaro.org>
Subject: [PATCH v4 00/32] Samsung S2MPG10 PMIC MFD-based drivers
Date: Wed, 09 Apr 2025 21:37:21 +0100	[thread overview]
Message-ID: <20250409-s2mpg10-v4-0-d66d5f39b6bf@linaro.org> (raw)

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@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 ++++++---
 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@linaro.org>


             reply	other threads:[~2025-04-09 20:37 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-09 20:37 André Draszik [this message]
2025-04-09 20:37 ` [PATCH v4 01/32] dt-bindings: mfd: samsung,s2mps11: add s2mpg10 André Draszik
2025-04-09 20:37 ` [PATCH v4 02/32] dt-bindings: clock: " André Draszik
2025-06-16 11:43   ` André Draszik
2025-06-27 12:15   ` André Draszik
2025-07-10  6:13   ` André Draszik
2025-04-09 20:37 ` [PATCH v4 03/32] dt-bindings: firmware: google,gs101-acpm-ipc: add PMIC child node André Draszik
2025-04-10  6:27   ` (subset) " Krzysztof Kozlowski
2025-04-09 20:37 ` [PATCH v4 04/32] mfd: sec-core: Drop non-existing forward declarations André Draszik
2025-04-09 20:37 ` [PATCH v4 05/32] mfd: sec: Sort includes alphabetically André Draszik
2025-04-09 20:37 ` [PATCH v4 06/32] mfd: sec: Update includes to add missing and remove superfluous ones André Draszik
2025-04-09 20:37 ` [PATCH v4 07/32] mfd: sec: Move private internal API to internal header André Draszik
2025-04-09 20:37 ` [PATCH v4 08/32] mfd: sec: Split into core and transport (i2c) drivers André Draszik
2025-04-09 20:37 ` [PATCH v4 09/32] mfd: sec: Add support for S2MPG10 PMIC André Draszik
2025-04-09 20:37 ` [PATCH v4 10/32] mfd: sec: Merge separate core and irq modules André Draszik
2025-04-09 20:37 ` [PATCH v4 11/32] mfd: sec-common: Fix multiple trivial whitespace issues André Draszik
2025-04-09 20:37 ` [PATCH v4 12/32] mfd: sec-i2c: Sort struct of_device_id entries and the device type switch André Draszik
2025-04-09 20:37 ` [PATCH v4 13/32] mfd: sec: Use dev_err_probe() where appropriate André Draszik
2025-04-09 20:37 ` [PATCH v4 14/32] mfd: sec-i2c: s2dos05/s2mpu05: Use explicit regmap config and drop default André Draszik
2025-04-09 20:37 ` [PATCH v4 15/32] mfd: sec-irq: s2dos05 doesn't support interrupts André Draszik
2025-04-09 20:37 ` [PATCH v4 16/32] mfd: sec-common: Don't ignore errors from sec_irq_init() André Draszik
2025-04-09 20:37 ` [PATCH v4 17/32] mfd: sec-i2c: Rework platform data and regmap instantiating André Draszik
2025-04-09 20:37 ` [PATCH v4 18/32] mfd: sec: Change device_type to int André Draszik
2025-04-09 20:37 ` [PATCH v4 19/32] mfd: sec: Don't compare against NULL / 0 for errors, use ! André Draszik
2025-04-09 20:37 ` [PATCH v4 20/32] mfd: sec-common: Use sizeof(*var), not sizeof(struct type_of_var) André Draszik
2025-04-09 20:37 ` [PATCH v4 21/32] mfd: sec-common: Convert to using MFD_CELL macros André Draszik
2025-04-09 20:37 ` [PATCH v4 22/32] mfd: sec-irq: Convert to using REGMAP_IRQ_REG() macros André Draszik
2025-04-09 20:37 ` [PATCH v4 23/32] mfd: sec: Add myself as module author André Draszik
2025-04-09 20:37 ` [PATCH v4 24/32] clk: s2mps11: add support for S2MPG10 PMIC clock André Draszik
2025-07-10  6:13   ` André Draszik
2025-04-09 20:37 ` [PATCH v4 25/32] rtc: s5m: cache device type during probe André Draszik
2025-04-09 20:37 ` [PATCH v4 26/32] rtc: s5m: prepare for external regmap André Draszik
2025-04-09 20:37 ` [PATCH v4 27/32] rtc: s5m: add support for S2MPG10 RTC André Draszik
2025-04-09 20:37 ` [PATCH v4 28/32] rtc: s5m: fix a typo: peding -> pending André Draszik
2025-04-09 20:37 ` [PATCH v4 29/32] rtc: s5m: switch to devm_device_init_wakeup André Draszik
2025-04-09 20:37 ` [PATCH v4 30/32] rtc: s5m: replace regmap_update_bits with regmap_clear/set_bits André Draszik
2025-04-09 20:37 ` [PATCH v4 31/32] rtc: s5m: replace open-coded read/modify/write registers with regmap helpers André Draszik
2025-04-09 20:37 ` [PATCH v4 32/32] MAINTAINERS: add myself as reviewer for Samsung S2M MFD André Draszik
2025-04-10  6:18 ` [PATCH v4 00/32] Samsung S2MPG10 PMIC MFD-based drivers Krzysztof Kozlowski
2025-04-28 18:03   ` André Draszik
2025-04-15 16:02 ` Lee Jones
2025-04-17 15:42   ` Alexandre Belloni
2025-04-28 18:17     ` André Draszik
2025-05-19 14:41       ` André Draszik
2025-06-16 11:33         ` André Draszik
2025-06-23 22:19           ` Alexandre Belloni
2025-06-24  6:38             ` André Draszik
2025-04-24 15:11 ` (subset) " Lee Jones
2025-06-23 22:17 ` Alexandre Belloni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250409-s2mpg10-v4-0-d66d5f39b6bf@linaro.org \
    --to=andre.draszik@linaro.org \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alim.akhtar@samsung.com \
    --cc=catalin.marinas@arm.com \
    --cc=conor+dt@kernel.org \
    --cc=cw00.choi@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=kernel-team@android.com \
    --cc=krzk@kernel.org \
    --cc=krzysztof.kozlowski@linaro.org \
    --cc=lee@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mturquette@baylibre.com \
    --cc=peter.griffin@linaro.org \
    --cc=robh@kernel.org \
    --cc=s.nawrocki@samsung.com \
    --cc=sboyd@kernel.org \
    --cc=tudor.ambarus@linaro.org \
    --cc=will@kernel.org \
    --cc=willmcvicker@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).