linux-kernel.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 17/32] mfd: sec-i2c: Rework platform data and regmap instantiating
Date: Wed, 09 Apr 2025 21:37:38 +0100	[thread overview]
Message-ID: <20250409-s2mpg10-v4-17-d66d5f39b6bf@linaro.org> (raw)
In-Reply-To: <20250409-s2mpg10-v4-0-d66d5f39b6bf@linaro.org>

Instead of a large open-coded switch statement, just add both regmap
config and device type to the OF match data. This allows us to have all
related information in one place, and avoids a long switch() statement.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
v2: fix typo in platform data for "samsung,s2mps14-pmic"
---
 drivers/mfd/sec-i2c.c | 133 +++++++++++++++++++++++++-------------------------
 1 file changed, 66 insertions(+), 67 deletions(-)

diff --git a/drivers/mfd/sec-i2c.c b/drivers/mfd/sec-i2c.c
index 81f90003eea2a40f2caaebb49fc9494b89370e7f..41b09f5e3c49f410604a5d47e625cbb37d7f5fa2 100644
--- a/drivers/mfd/sec-i2c.c
+++ b/drivers/mfd/sec-i2c.c
@@ -20,11 +20,16 @@
 #include <linux/mfd/samsung/s5m8767.h>
 #include <linux/mod_devicetable.h>
 #include <linux/module.h>
-#include <linux/of.h>
 #include <linux/pm.h>
+#include <linux/property.h>
 #include <linux/regmap.h>
 #include "sec-core.h"
 
+struct sec_pmic_i2c_platform_data {
+	const struct regmap_config *regmap_cfg;
+	unsigned long device_type;
+};
+
 static bool s2mpa01_volatile(struct device *dev, unsigned int reg)
 {
 	switch (reg) {
@@ -136,52 +141,20 @@ static const struct regmap_config s5m8767_regmap_config = {
 
 static int sec_pmic_i2c_probe(struct i2c_client *client)
 {
-	const struct regmap_config *regmap;
-	unsigned long device_type;
+	const struct sec_pmic_i2c_platform_data *pdata;
 	struct regmap *regmap_pmic;
 
-	device_type = (unsigned long)of_device_get_match_data(&client->dev);
-
-	switch (device_type) {
-	case S2DOS05:
-		regmap = &s2dos05_regmap_config;
-		break;
-	case S2MPA01:
-		regmap = &s2mpa01_regmap_config;
-		break;
-	case S2MPS11X:
-		regmap = &s2mps11_regmap_config;
-		break;
-	case S2MPS13X:
-		regmap = &s2mps13_regmap_config;
-		break;
-	case S2MPS14X:
-		regmap = &s2mps14_regmap_config;
-		break;
-	case S2MPS15X:
-		regmap = &s2mps15_regmap_config;
-		break;
-	case S2MPU02:
-		regmap = &s2mpu02_regmap_config;
-		break;
-	case S2MPU05:
-		regmap = &s2mpu05_regmap_config;
-		break;
-	case S5M8767X:
-		regmap = &s5m8767_regmap_config;
-		break;
-	default:
+	pdata = device_get_match_data(&client->dev);
+	if (!pdata)
 		return dev_err_probe(&client->dev, -ENODEV,
-				     "Unsupported device type %lu\n",
-				     device_type);
-	}
+				     "Unsupported device type\n");
 
-	regmap_pmic = devm_regmap_init_i2c(client, regmap);
+	regmap_pmic = devm_regmap_init_i2c(client, pdata->regmap_cfg);
 	if (IS_ERR(regmap_pmic))
 		return dev_err_probe(&client->dev, PTR_ERR(regmap_pmic),
 				     "regmap init failed\n");
 
-	return sec_pmic_probe(&client->dev, device_type, client->irq,
+	return sec_pmic_probe(&client->dev, pdata->device_type, client->irq,
 			      regmap_pmic, client);
 }
 
@@ -190,35 +163,61 @@ static void sec_pmic_i2c_shutdown(struct i2c_client *i2c)
 	sec_pmic_shutdown(&i2c->dev);
 }
 
+static const struct sec_pmic_i2c_platform_data s2dos05_data = {
+	.regmap_cfg = &s2dos05_regmap_config,
+	.device_type = S2DOS05
+};
+
+static const struct sec_pmic_i2c_platform_data s2mpa01_data = {
+	.regmap_cfg = &s2mpa01_regmap_config,
+	.device_type = S2MPA01,
+};
+
+static const struct sec_pmic_i2c_platform_data s2mps11_data = {
+	.regmap_cfg = &s2mps11_regmap_config,
+	.device_type = S2MPS11X,
+};
+
+static const struct sec_pmic_i2c_platform_data s2mps13_data = {
+	.regmap_cfg = &s2mps13_regmap_config,
+	.device_type = S2MPS13X,
+};
+
+static const struct sec_pmic_i2c_platform_data s2mps14_data = {
+	.regmap_cfg = &s2mps14_regmap_config,
+	.device_type = S2MPS14X,
+};
+
+static const struct sec_pmic_i2c_platform_data s2mps15_data = {
+	.regmap_cfg = &s2mps15_regmap_config,
+	.device_type = S2MPS15X,
+};
+
+static const struct sec_pmic_i2c_platform_data s2mpu02_data = {
+	.regmap_cfg = &s2mpu02_regmap_config,
+	.device_type = S2MPU02,
+};
+
+static const struct sec_pmic_i2c_platform_data s2mpu05_data = {
+	.regmap_cfg = &s2mpu05_regmap_config,
+	.device_type = S2MPU05,
+};
+
+static const struct sec_pmic_i2c_platform_data s5m8767_data = {
+	.regmap_cfg = &s5m8767_regmap_config,
+	.device_type = S5M8767X,
+};
+
 static const struct of_device_id sec_pmic_i2c_of_match[] = {
-	{
-		.compatible = "samsung,s2dos05",
-		.data = (void *)S2DOS05,
-	}, {
-		.compatible = "samsung,s2mpa01-pmic",
-		.data = (void *)S2MPA01,
-	}, {
-		.compatible = "samsung,s2mps11-pmic",
-		.data = (void *)S2MPS11X,
-	}, {
-		.compatible = "samsung,s2mps13-pmic",
-		.data = (void *)S2MPS13X,
-	}, {
-		.compatible = "samsung,s2mps14-pmic",
-		.data = (void *)S2MPS14X,
-	}, {
-		.compatible = "samsung,s2mps15-pmic",
-		.data = (void *)S2MPS15X,
-	}, {
-		.compatible = "samsung,s2mpu02-pmic",
-		.data = (void *)S2MPU02,
-	}, {
-		.compatible = "samsung,s2mpu05-pmic",
-		.data = (void *)S2MPU05,
-	}, {
-		.compatible = "samsung,s5m8767-pmic",
-		.data = (void *)S5M8767X,
-	},
+	{ .compatible = "samsung,s2dos05", .data = &s2dos05_data, },
+	{ .compatible = "samsung,s2mpa01-pmic", .data = &s2mpa01_data, },
+	{ .compatible = "samsung,s2mps11-pmic", .data = &s2mps11_data, },
+	{ .compatible = "samsung,s2mps13-pmic", .data = &s2mps13_data, },
+	{ .compatible = "samsung,s2mps14-pmic", .data = &s2mps14_data, },
+	{ .compatible = "samsung,s2mps15-pmic", .data = &s2mps15_data, },
+	{ .compatible = "samsung,s2mpu02-pmic", .data = &s2mpu02_data, },
+	{ .compatible = "samsung,s2mpu05-pmic", .data = &s2mpu05_data, },
+	{ .compatible = "samsung,s5m8767-pmic", .data = &s5m8767_data, },
 	{ },
 };
 MODULE_DEVICE_TABLE(of, sec_pmic_i2c_of_match);

-- 
2.49.0.604.gff1f9ca942-goog


  parent 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 [PATCH v4 00/32] Samsung S2MPG10 PMIC MFD-based drivers André Draszik
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 ` André Draszik [this message]
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-17-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).