From patchwork Fri Mar 28 13:29:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 14032065 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 561E4C28B20 for ; Fri, 28 Mar 2025 14:18:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ZwiQ684ZfeWSIriRYeiGWHceehqqEuabrmdfgVRjbUU=; b=AXle+8CXa3qXCNLmLuH1hLuzXu j1akJe/Y3cMpTu4ncYJy2N/H+rQuywulQHczlXdYgQJYsHmiRxUMDvASS9zBHcIwpiCKnsozZPSGm KlobDtL80QgdP47c4J/a26pJe5quNLvNIVBEOnHGIeAzuNZ5DXpJH3/JA21TvtWH3EckfBdZPcIJr bVpqSVrrL0JtIY+wdz6wbJ0+zw/09IoLKRZli4cJXjAuereImbobfRenKNmhXoWYKzws7vSDNA8JS K6lCPU3PAVwwACsWV6oJ+PEwfBoJxIBbWoNx9Hopk25n83LvsVEZZAevl2sLyQyUWk/ddMPy/Ye4k McEKNppw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1tyAXn-0000000DZSl-1G0H; Fri, 28 Mar 2025 14:18:47 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty9ng-0000000DQm9-47D3 for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 13:31:10 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-5edc07c777eso1349669a12.3 for ; Fri, 28 Mar 2025 06:31:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1743168668; x=1743773468; darn=lists.infradead.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=ZwiQ684ZfeWSIriRYeiGWHceehqqEuabrmdfgVRjbUU=; b=ly048qO1MFW2X8kUwLHkK0yJB1lQokZ1SqpI6hKnAgRATdHRvHZmfQDyQzYdmhWS+k VNuveAuwEPGLYme2wovhUsJhR7if32jg1nBgVtopbyNp1ftZ91RYQklWVdLoMzrV/7w6 EWVEF5JvdINF9TgKeVDynAQPKzKhz75vh7QjHzLp1D/QQllCjoawcjE2ypHUhS5Wr6Cf B7xVFr4taxOzlzyZZAz6duslwfEIPG+nytGevk+BNtLqZYWXJVvABaLOq6VFf2OTed5p REjOB7JU6ru5F/XFDNrt9wea3fekw4D0kpMVVO0hPR/2rktvgzLWPgxvWxv8DbG9BGC7 CVzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743168668; x=1743773468; 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=ZwiQ684ZfeWSIriRYeiGWHceehqqEuabrmdfgVRjbUU=; b=JgJytuq/1yviIO5dhkSse0ITvPRF7a53HQJHcZMAO9/NjW7JOTfoYIPifeShHhZS9W VMPYj6pc8mT/cZaImK21D5/3KoLl+V0eP2oHgLuYAJv0XPl1RxNy0B09Sh6j0J+Vngxa Sc8OrsoV0sg931P/JLquIMVQldm9PV4kwv3P/3ZU5GOzxFEnyjodyLA3q5DrSigAQ7ZC IC59XumPwnBeUKJmaMQCbIIDeh5ZgOTnCHCT5aidn8i1nrHt2Ihi5bmL6EN2fXxJbE/w Mrxy5K9nxNyexKf8NIm1JNLXV16+2RVygyWin9BtmQPFMQmMEfd9htPP5l4Vc4vSg+DF ivmQ== X-Forwarded-Encrypted: i=1; AJvYcCW9dfwSrXTgUfJgnnJtcXnmqU/sywzqOaslJKuTSXTqnXSSlwkj3JBbIr9GyRfYrACDjOsN16hc3KkQq13Ojafr@lists.infradead.org X-Gm-Message-State: AOJu0YxCVrSQKRbWM8VKOWJzXbH0dE7WpZoSDYAVHF6uE61IDraHqR1a j2NFaMKZG4o/bqlcZW0xMIidthpp3HW3Tll4LfqHg5PxOE5gqp13HcHLdEk93Sw= X-Gm-Gg: ASbGncsIV8jU+uucaKQhJS2sipL14duTkANN5FDc3UHV1jwd/77IiOH1+47XwzodPZX 7nu0p4j8VL6iO+1W1A9UmufnFPjnKv1546KFHjfk25ykzHlm0E8bk8LQWwULVeUpP0C9CR/V6s5 X0HAzqDJfPxhKky5jwxps5iSoRGN91qPCIyEj0ro9cwNARfrSenmm7dpyB757P1NB608O1Hs4xM TeK6OgSF6FjC1po61qCcKg62MB5X3OYkqHPqGwaRbXT0emzq4yUu/+chjlCJdJiWvbGMeNGCw+Q lIaz1d4lm3vV/aAQbihr7VRGTgD39c9bzuQBBx4GRYVu059cL074+BAZBZNHJHcVshtxXE0v2q5 4V+xkmL+Z07pA8YAJxhxhMruA2xmpW7ANe+tA/jc= X-Google-Smtp-Source: AGHT+IGGNzjfKLDz9VEqvXIc5x4+us5D+sfcsDSKvKIds4Ov17i1NhheRxJHbrgm44PnOKBE2PxwXA== X-Received: by 2002:a05:6402:350c:b0:5e4:9348:72c3 with SMTP id 4fb4d7f45d1cf-5ed8e27b242mr8087751a12.10.1743168667494; Fri, 28 Mar 2025 06:31:07 -0700 (PDT) Received: from puffmais.c.googlers.com (8.239.204.35.bc.googleusercontent.com. [35.204.239.8]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5edc17e01f7sm1355284a12.79.2025.03.28.06.31.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 06:31:07 -0700 (PDT) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 28 Mar 2025 13:29:12 +0000 Subject: [PATCH v2 26/32] rtc: s5m: prepare for external regmap MIME-Version: 1.0 Message-Id: <20250328-s2mpg10-v2-26-b54dee33fb6b@linaro.org> References: <20250328-s2mpg10-v2-0-b54dee33fb6b@linaro.org> In-Reply-To: <20250328-s2mpg10-v2-0-b54dee33fb6b@linaro.org> To: Krzysztof Kozlowski , Lee Jones , Rob Herring , Conor Dooley , Sylwester Nawrocki , Chanwoo Choi , Alim Akhtar , Michael Turquette , Stephen Boyd , Russell King , Catalin Marinas , Will Deacon , Alexandre Belloni Cc: Peter Griffin , Tudor Ambarus , Will McVicker , 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?= X-Mailer: b4 0.14.2 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250328_063109_037073_0A82A41D X-CRM114-Status: GOOD ( 17.05 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.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 --- 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;