From nobody Thu May  1 19:48:57 2025
Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com
 [209.85.208.49])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by smtp.subspace.kernel.org (Postfix) with ESMTPS id 084E521C195
	for <linux-kernel@vger.kernel.org>; Wed,  9 Apr 2025 20:37:47 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
 arc=none smtp.client-ip=209.85.208.49
ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
	t=1744231078; cv=none;
 b=bV307aM/e/nt0AjTtdJQj59udA7jIOhJHEfDoZcvptyqnj4DDW/9BGlIAMIWici/Ndq+TcmSYZ67HVu6rJME0hSrs6e51xf0dF7tf0MMMgw3RBcaz44WqACmVtFJ3jgk3Nir+Fx08omOms0ctPuFpeln6uCLy0vzSjuJ/MgXYc0=
ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1744231078; c=relaxed/simple;
	bh=QZqp12Gpl5oL/WfKhx+VRQRqmvJcvISjDOsh/fCNvMg=;
	h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
	 In-Reply-To:To:Cc;
 b=nATHTsz4JQ7okp8x0FQrs+fm3vBJo+KSi7U0uDfZx50WOq/uCnnRAqB0oTZv7pn7I4Rqwgc4kuPohp4MZgkdCIP7VOwoU5kSeecgg4sTicAkTXDRXegugf5Jpn4FKVVJvGWuJ61HD9szlXApDMMG5azF/sop4UF47NcKvzCgYYs=
ARC-Authentication-Results: i=1; smtp.subspace.kernel.org;
 dmarc=pass (p=none dis=none) header.from=linaro.org;
 spf=pass smtp.mailfrom=linaro.org;
 dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org
 header.b=QYT5EXN8; arc=none smtp.client-ip=209.85.208.49
Authentication-Results: smtp.subspace.kernel.org;
 dmarc=pass (p=none dis=none) header.from=linaro.org
Authentication-Results: smtp.subspace.kernel.org;
 spf=pass smtp.mailfrom=linaro.org
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org
 header.b="QYT5EXN8"
Received: by mail-ed1-f49.google.com with SMTP id
 4fb4d7f45d1cf-5e5e34f4e89so231609a12.1
        for <linux-kernel@vger.kernel.org>;
 Wed, 09 Apr 2025 13:37:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1744231063; x=1744835863;
 darn=vger.kernel.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:from:to:cc:subject:date:message-id
         :reply-to;
        bh=10AZOLwAO1V0GSmGNS0bnbti04nTAWbZ/3NrDOuj7Tg=;
        b=QYT5EXN8rbmA8ypL1EZ3hUBUeQtgHZW/D7u1yIbNm9+xvNo4UgPXqU6JIdTOkpE7RL
         DezODl4X/Vig++YMhOh5fne6xkNqAlGhLvXPVvTJrHAdf6NopyROQ6wg3+G+bV3uLEub
         N97qDnvvYMkd7RABHfsnGKctvQ0j4aGMA1e+l3a9H4YaEsNWApSQn9PsGabXhPrIHYRX
         Si7kMpYonb1h/+h7lb0WU7tLjmjS/UPT9l9Op6rV8IQRQttZEFi6VI/OLI++TacgDuiT
         qo8oEiIrqpE0XB4SAdBRpcGTaGE+hCt7h5Ub//dwdXS7+wYb/G7W1gpOi5t6jKhDcDe2
         NgBg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1744231063; x=1744835863;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :mime-version:subject:date:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=10AZOLwAO1V0GSmGNS0bnbti04nTAWbZ/3NrDOuj7Tg=;
        b=sTrSQ+lHFPxSAIOqE7JFCDK/nL5ddBJMNpyRbrcFakqSmC2To4+0RlIGAunHvvdZaY
         9jzEKcV5/FEH40JuyfkJlYJ0kRBMwkLADvDYJf9zMFnZMAuJI7zRbZxBUEn5wSuqRE47
         ASMvNXA/I6B15QVXjTA99SGmJqgsafQbgcDWyeuwumFntD3+mccpLzbb5SebPWLPugr4
         rSyEvl8JGrYBuMjlY2FQjYHdA9WdFcrpjUTjCj4KpwPI/wJYpDz03SKdXq4z50nobGLN
         Ev4H3Wu+cLe4FRLMysZETe3oqYhHmGbGhH0rlcqizSFd/UN9rOWPKKvVLHJ+X6mZywG4
         qFiQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCUxHlSw1FIasJwaTxYIpDBE3TnkbcUyGolJQmwwxj2rKHsC5M/Vz0wIEcTZq0oNrqbhm5OUS+1I1HiMWSE=@vger.kernel.org
X-Gm-Message-State: AOJu0YzvC/XbpGWsBAsUhBo7D0Nv0fZXFhe5ogsKZiIhiTMQp+uIMc4u
	mlN6DhkFF/JKS9VRcOksJDyBQ92dhLvmKH2/5DnkbgN4d52Ngf1AhtLyqRJjF48=
X-Gm-Gg: ASbGncuzl0EiEIRGJMMGXCwtBTWNPg9xi6NbF6XDYwCtthVknL/Z17DJWkiHh184Y4m
	xSztKZ0rDRC9QfbwLqfGvZt1z5mDi5O4WHiQDGvbnXB76Mzik/wyg4c2TuwoWm8KVU2fjyWuZuE
	BpbzR331ppsCi1jg8RR7CUdgVBwKxxT/52tHmXfEO67AG25kttbYM8/Cbtq67cDEWEf0uWUo3xS
	+yMV8D7JRnIQVI1zF5aEMOa+TGVr/qtSGUcvTUXKbyWlrVyN9AV8AFqQUC+aOP9M6iYD4VhgZNH
	rmxrKF4oQRFzuu7LiRe6FEyeGONgNMMrZHdogo6jpFP+4/UivtvYZfYK/TmJj74LICWC8GC9sG/
	icfG67iukbJW6nCLzRCgr93xojso=
X-Google-Smtp-Source: 
 AGHT+IFUTssASe24CO9TPtl71HAttAgy9US9arxRXimezJ/dltcAvjXzhwFcY2meWd733DjD83/qUg==
X-Received: by 2002:a17:907:980a:b0:abf:6ec7:65e9 with SMTP id
 a640c23a62f3a-acabd3ac9bemr9253366b.43.1744231062911;
        Wed, 09 Apr 2025 13:37:42 -0700 (PDT)
Received: from puffmais.c.googlers.com
 (40.162.204.35.bc.googleusercontent.com. [35.204.162.40])
        by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-acaa1ccc001sm145850366b.126.2025.04.09.13.37.42
        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
        Wed, 09 Apr 2025 13:37:42 -0700 (PDT)
From: =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Date: Wed, 09 Apr 2025 21:37:47 +0100
Subject: [PATCH v4 26/32] rtc: s5m: prepare for external regmap
Precedence: bulk
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Message-Id: <20250409-s2mpg10-v4-26-d66d5f39b6bf@linaro.org>
References: <20250409-s2mpg10-v4-0-d66d5f39b6bf@linaro.org>
In-Reply-To: <20250409-s2mpg10-v4-0-d66d5f39b6bf@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,
 =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>,
 Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
X-Mailer: b4 0.14.2

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.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Andr=C3=A9 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 c7636738b797b8087a0ed6844df62d47427e33b8..f8abcdee8611d1181fb575aeb8d=
094360538ca7e 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)
 	enum sec_device_type device_type =3D
 		platform_get_device_id(pdev)->driver_data;
 	struct s5m_rtc_info *info;
-	struct i2c_client *i2c;
-	const struct regmap_config *regmap_cfg;
 	int ret, alarm_irq;
=20
 	info =3D devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
 	if (!info)
 		return -ENOMEM;
=20
-	switch (device_type) {
-	case S2MPS15X:
-		regmap_cfg =3D &s2mps14_rtc_regmap_config;
-		info->regs =3D &s2mps15_rtc_regs;
-		alarm_irq =3D S2MPS14_IRQ_RTCA0;
-		break;
-	case S2MPS14X:
-		regmap_cfg =3D &s2mps14_rtc_regmap_config;
-		info->regs =3D &s2mps14_rtc_regs;
-		alarm_irq =3D S2MPS14_IRQ_RTCA0;
-		break;
-	case S2MPS13X:
-		regmap_cfg =3D &s2mps14_rtc_regmap_config;
-		info->regs =3D &s2mps13_rtc_regs;
-		alarm_irq =3D S2MPS14_IRQ_RTCA0;
-		break;
-	case S5M8767X:
-		regmap_cfg =3D &s5m_rtc_regmap_config;
-		info->regs =3D &s5m_rtc_regs;
-		alarm_irq =3D S5M8767_IRQ_RTCA1;
-		break;
-	default:
+	info->regmap =3D dev_get_regmap(pdev->dev.parent, "rtc");
+	if (!info->regmap) {
+		const struct regmap_config *regmap_cfg;
+		struct i2c_client *i2c;
+
+		switch (device_type) {
+		case S2MPS15X:
+			regmap_cfg =3D &s2mps14_rtc_regmap_config;
+			info->regs =3D &s2mps15_rtc_regs;
+			alarm_irq =3D S2MPS14_IRQ_RTCA0;
+			break;
+		case S2MPS14X:
+			regmap_cfg =3D &s2mps14_rtc_regmap_config;
+			info->regs =3D &s2mps14_rtc_regs;
+			alarm_irq =3D S2MPS14_IRQ_RTCA0;
+			break;
+		case S2MPS13X:
+			regmap_cfg =3D &s2mps14_rtc_regmap_config;
+			info->regs =3D &s2mps13_rtc_regs;
+			alarm_irq =3D S2MPS14_IRQ_RTCA0;
+			break;
+		case S5M8767X:
+			regmap_cfg =3D &s5m_rtc_regmap_config;
+			info->regs =3D &s5m_rtc_regs;
+			alarm_irq =3D S5M8767_IRQ_RTCA1;
+			break;
+		default:
+			return dev_err_probe(&pdev->dev, -ENODEV,
+					     "Unsupported device type %d\n",
+					     device_type);
+		}
+
+		i2c =3D 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 =3D 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 %d is not supported by RTC driver\n",
+				     "Unsupported device type %d\n",
 				     device_type);
 	}
=20
-	i2c =3D 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 =3D 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 =3D &pdev->dev;
 	info->s5m87xx =3D s5m87xx;
 	info->device_type =3D device_type;

--=20
2.49.0.604.gff1f9ca942-goog