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>
Subject: [PATCH v2 26/32] rtc: s5m: prepare for external regmap
Date: Fri, 28 Mar 2025 13:29:12 +0000 [thread overview]
Message-ID: <20250328-s2mpg10-v2-26-b54dee33fb6b@linaro.org> (raw)
In-Reply-To: <20250328-s2mpg10-v2-0-b54dee33fb6b@linaro.org>
The Samsung S2MPG10 PMIC is not connected via I2C as this driver
assumes, hence this driver's current approach of creating an I2C-based
regmap doesn't work for it, and this driver should use the regmap
provided by the parent (core) driver instead for that PMIC.
To prepare this driver for s2mpg support, restructure the code to only
create a regmap if one isn't provided by the parent.
No functional changes, since the parent doesn't provide a regmap for
any of the PMICs currently supported by this driver. Having this change
separate will simply make the addition of S2MPG10 support more
self-contained, without additional restructuring.
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
drivers/rtc/rtc-s5m.c | 81 ++++++++++++++++++++++++++++-----------------------
1 file changed, 45 insertions(+), 36 deletions(-)
diff --git a/drivers/rtc/rtc-s5m.c b/drivers/rtc/rtc-s5m.c
index 53c76b0e4253a9ba225c3c723d35d9182d071607..86ccf666c68059408907c97f2647716ffaad10c6 100644
--- a/drivers/rtc/rtc-s5m.c
+++ b/drivers/rtc/rtc-s5m.c
@@ -640,52 +640,61 @@ static int s5m_rtc_probe(struct platform_device *pdev)
const struct platform_device_id * const id =
platform_get_device_id(pdev);
struct s5m_rtc_info *info;
- struct i2c_client *i2c;
- const struct regmap_config *regmap_cfg;
int ret, alarm_irq;
info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
if (!info)
return -ENOMEM;
- switch (id->driver_data) {
- case S2MPS15X:
- regmap_cfg = &s2mps14_rtc_regmap_config;
- info->regs = &s2mps15_rtc_regs;
- alarm_irq = S2MPS14_IRQ_RTCA0;
- break;
- case S2MPS14X:
- regmap_cfg = &s2mps14_rtc_regmap_config;
- info->regs = &s2mps14_rtc_regs;
- alarm_irq = S2MPS14_IRQ_RTCA0;
- break;
- case S2MPS13X:
- regmap_cfg = &s2mps14_rtc_regmap_config;
- info->regs = &s2mps13_rtc_regs;
- alarm_irq = S2MPS14_IRQ_RTCA0;
- break;
- case S5M8767X:
- regmap_cfg = &s5m_rtc_regmap_config;
- info->regs = &s5m_rtc_regs;
- alarm_irq = S5M8767_IRQ_RTCA1;
- break;
- default:
+ info->regmap = dev_get_regmap(pdev->dev.parent, "rtc");
+ if (!info->regmap) {
+ const struct regmap_config *regmap_cfg;
+ struct i2c_client *i2c;
+
+ switch (id->driver_data) {
+ case S2MPS15X:
+ regmap_cfg = &s2mps14_rtc_regmap_config;
+ info->regs = &s2mps15_rtc_regs;
+ alarm_irq = S2MPS14_IRQ_RTCA0;
+ break;
+ case S2MPS14X:
+ regmap_cfg = &s2mps14_rtc_regmap_config;
+ info->regs = &s2mps14_rtc_regs;
+ alarm_irq = S2MPS14_IRQ_RTCA0;
+ break;
+ case S2MPS13X:
+ regmap_cfg = &s2mps14_rtc_regmap_config;
+ info->regs = &s2mps13_rtc_regs;
+ alarm_irq = S2MPS14_IRQ_RTCA0;
+ break;
+ case S5M8767X:
+ regmap_cfg = &s5m_rtc_regmap_config;
+ info->regs = &s5m_rtc_regs;
+ alarm_irq = S5M8767_IRQ_RTCA1;
+ break;
+ default:
+ return dev_err_probe(&pdev->dev, -ENODEV,
+ "Unsupported device type %lu\n",
+ id->driver_data);
+ }
+
+ i2c = devm_i2c_new_dummy_device(&pdev->dev,
+ s5m87xx->i2c->adapter,
+ RTC_I2C_ADDR);
+ if (IS_ERR(i2c))
+ return dev_err_probe(&pdev->dev, PTR_ERR(i2c),
+ "Failed to allocate I2C\n");
+
+ info->regmap = devm_regmap_init_i2c(i2c, regmap_cfg);
+ if (IS_ERR(info->regmap))
+ return dev_err_probe(&pdev->dev, PTR_ERR(info->regmap),
+ "Failed to allocate regmap\n");
+ } else {
return dev_err_probe(&pdev->dev, -ENODEV,
- "Device type %lu is not supported by RTC driver\n",
+ "Unsupported device type %lu\n",
id->driver_data);
}
- i2c = devm_i2c_new_dummy_device(&pdev->dev, s5m87xx->i2c->adapter,
- RTC_I2C_ADDR);
- if (IS_ERR(i2c))
- return dev_err_probe(&pdev->dev, PTR_ERR(i2c),
- "Failed to allocate I2C for RTC\n");
-
- info->regmap = devm_regmap_init_i2c(i2c, regmap_cfg);
- if (IS_ERR(info->regmap))
- return dev_err_probe(&pdev->dev, PTR_ERR(info->regmap),
- "Failed to allocate RTC register map\n");
-
info->dev = &pdev->dev;
info->s5m87xx = s5m87xx;
info->device_type = id->driver_data;
--
2.49.0.472.ge94155a9ec-goog
next prev parent reply other threads:[~2025-03-28 13:31 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-28 13:28 [PATCH v2 00/32] Samsung S2MPG10 PMIC MFD-based drivers André Draszik
2025-03-28 13:28 ` [PATCH v2 01/32] dt-bindings: mfd: samsung,s2mps11: add s2mpg10 André Draszik
2025-03-31 7:34 ` Krzysztof Kozlowski
2025-03-31 9:50 ` André Draszik
2025-06-24 8:51 ` Krzysztof Kozlowski
2025-03-28 13:28 ` [PATCH v2 02/32] dt-bindings: clock: " André Draszik
2025-03-28 13:28 ` [PATCH v2 03/32] dt-bindings: firmware: google,gs101-acpm-ipc: add PMIC child node André Draszik
2025-03-31 7:35 ` Krzysztof Kozlowski
2025-03-28 13:28 ` [PATCH v2 04/32] mfd: sec: drop non-existing forward declarations André Draszik
2025-03-28 13:28 ` [PATCH v2 05/32] mfd: sec: sort includes alphabetically André Draszik
2025-03-28 13:28 ` [PATCH v2 06/32] mfd: sec: update includes to add missing and remove superfluous ones André Draszik
2025-03-28 13:28 ` [PATCH v2 07/32] mfd: sec: move private internal API to internal header André Draszik
2025-03-28 13:28 ` [PATCH v2 08/32] mfd: sec: split into core and transport (i2c) drivers André Draszik
2025-03-28 13:28 ` [PATCH v2 09/32] mfd: sec: add support for S2MPG10 PMIC André Draszik
2025-03-28 13:28 ` [PATCH v2 10/32] mfd: sec: merge separate core and irq modules André Draszik
2025-03-28 13:28 ` [PATCH v2 11/32] mfd: sec: fix open parenthesis alignment (multiple) André Draszik
2025-03-28 13:28 ` [PATCH v2 12/32] mfd: sec: sort struct of_device_id entries and the device type switch André Draszik
2025-03-28 13:28 ` [PATCH v2 13/32] mfd: sec: use dev_err_probe() where appropriate André Draszik
2025-03-28 13:29 ` [PATCH v2 14/32] mfd: sec: s2dos05/s2mpu05: use explicit regmap config and drop default André Draszik
2025-03-28 13:29 ` [PATCH v2 15/32] mfd: sec: s2dos05: doesn't support interrupts (it seems) André Draszik
2025-03-28 13:29 ` [PATCH v2 16/32] mfd: sec: don't ignore errors from sec_irq_init() André Draszik
2025-03-28 13:29 ` [PATCH v2 17/32] mfd: sec: rework platform data and regmap instantiating André Draszik
2025-03-28 13:29 ` [PATCH v2 18/32] mfd: sec: change device_type to int André Draszik
2025-03-28 13:29 ` [PATCH v2 19/32] mfd: sec: don't compare against NULL / 0 for errors, use ! André Draszik
2025-03-28 13:29 ` [PATCH v2 20/32] mfd: sec: use sizeof(*var), not sizeof(struct type_of_var) André Draszik
2025-03-28 13:29 ` [PATCH v2 21/32] mfd: sec: convert to using MFD_CELL macros André Draszik
2025-03-28 13:29 ` [PATCH v2 22/32] mfd: sec: convert to using REGMAP_IRQ_REG() macros André Draszik
2025-03-28 13:29 ` [PATCH v2 23/32] mfd: sec: add myself as module author André Draszik
2025-03-28 13:29 ` [PATCH v2 24/32] clk: s2mps11: add support for S2MPG10 PMIC clock André Draszik
2025-03-28 13:29 ` [PATCH v2 25/32] rtc: s5m: cache value of platform_get_device_id() during probe André Draszik
2025-03-28 13:29 ` André Draszik [this message]
2025-03-28 13:29 ` [PATCH v2 27/32] rtc: s5m: add support for S2MPG10 RTC André Draszik
2025-03-28 13:29 ` [PATCH v2 28/32] rtc: s5m: fix a typo: peding -> pending André Draszik
2025-03-28 13:29 ` [PATCH v2 29/32] rtc: s5m: switch to devm_device_init_wakeup André Draszik
2025-03-28 13:29 ` [PATCH v2 30/32] rtc: s5m: replace regmap_update_bits with regmap_clear/set_bits André Draszik
2025-03-28 13:29 ` [PATCH v2 31/32] rtc: s5m: replace open-coded read/modify/write registers with regmap helpers André Draszik
2025-03-28 13:29 ` [PATCH v2 32/32] MAINTAINERS: add myself as reviewer for Samsung S2M MFD André Draszik
2025-03-28 13:40 ` [PATCH v2 00/32] Samsung S2MPG10 PMIC MFD-based drivers André Draszik
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=20250328-s2mpg10-v2-26-b54dee33fb6b@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=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).