[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250323-s2mpg10-v1-0-d08943702707@linaro.org>
Date: Sun, 23 Mar 2025 22:39:16 +0000
From: André Draszik <andre.draszik@...aro.org>
To: Krzysztof Kozlowski <krzk@...nel.org>, Lee Jones <lee@...nel.org>,
Rob Herring <robh@...nel.org>, Conor Dooley <conor+dt@...nel.org>,
Sylwester Nawrocki <s.nawrocki@...sung.com>,
Chanwoo Choi <cw00.choi@...sung.com>, Alim Akhtar <alim.akhtar@...sung.com>,
Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>, Russell King <linux@...linux.org.uk>,
Catalin Marinas <catalin.marinas@....com>, Will Deacon <will@...nel.org>,
Alexandre Belloni <alexandre.belloni@...tlin.com>
Cc: Peter Griffin <peter.griffin@...aro.org>,
Tudor Ambarus <tudor.ambarus@...aro.org>,
Will McVicker <willmcvicker@...gle.com>, kernel-team@...roid.com,
linux-kernel@...r.kernel.org, linux-samsung-soc@...r.kernel.org,
devicetree@...r.kernel.org, linux-clk@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-rtc@...r.kernel.org,
André Draszik <andre.draszik@...aro.org>
Subject: [PATCH 00/34] Samsung S2MPG10 PMIC MFD-based drivers
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@...aro.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@...aro.org>
Powered by blists - more mailing lists