From patchwork Thu Mar 20 10:18:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wolfram Sang X-Patchwork-Id: 14023657 X-Patchwork-Delegate: geert@linux-m68k.org Received: from mail.zeus03.de (zeus03.de [194.117.254.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BAF9C223324 for ; Thu, 20 Mar 2025 10:22:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.117.254.33 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742466155; cv=none; b=feVT39sS60/MbTW/2tQ1U3xZh4ZsmgiHwECg+nhuJsoEZJ/xYrKAlsAclOiegYeUsU5PWm7Y1wPlwbF5I+SNN/zJN4TfuWInqo+4WlLzSZpZJJhe29bCOu+e+cRpKUvcQM9PrCsgOdlprsWdXttdq4lqOB67sp+/YnFn0lPVono= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742466155; c=relaxed/simple; bh=xc4l5quk1bxoMTXbEGj/k5zFg0CCvwEq5viPzoMAzzo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=qwYkImOJwhSnipeI8OpvcZ7BDva2RbUwWtO+I67utzxqqImQZqdg4MV1+Ki9N0iILWuc9ZCqm9Jfd3bvnv2EVLm3GNIXE4l5wcPlDQXJfo7lWlBx324e7RceqsQSfbq2TJSJgCYKmwXT2c7UpYmXQuOD2yirC+agutvtLFdO4+4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com; spf=pass smtp.mailfrom=sang-engineering.com; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b=bEWy3jUV; arc=none smtp.client-ip=194.117.254.33 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sang-engineering.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b="bEWy3jUV" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= sang-engineering.com; h=from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; s=k1; bh=xVpjTV1/PofVwR bI3BsHQzQ4pOnhYkcfI7KpJG2ReHI=; b=bEWy3jUVRl3bvJV2bDd3C2nyhQL2n0 NgnPG91x7sF6XTZnmXiupuOwoowr0PPy1BLsMHmUD1iF+9Ws3pbkDp2V+KzYvg/8 juM8EG8pRRoOsvgj8lRqY0cC/BOQ33QH01179lcsi2HMxdqvmdG2twjZidvTS/NT h1OksR6/9AJ1mMkgTbVVtbf9tG+9hQq3iSWvu2lRpJtqcD0E8LfEpvt6d/ypxIrU nQUXenclbruxOeC1WgFo26A5qlAPQ/8J87n86H+J4a6OBGgXiKNwlExumvL7RE2d 5BqUyBNewBkuUGzO62tUGo+2tCDpmBSvfyteha8/OjRNqKvoacv6kVLg== Received: (qmail 603974 invoked from network); 20 Mar 2025 11:22:27 +0100 Received: by mail.zeus03.de with UTF8SMTPSA (TLS_AES_256_GCM_SHA384 encrypted, authenticated); 20 Mar 2025 11:22:27 +0100 X-UD-Smtp-Session: l3s3148p1@TUC2g8MwfoAgAwDPXyTHAJp038nK7dx+ From: Wolfram Sang To: linux-renesas-soc@vger.kernel.org Cc: Wolfram Sang , Support Opensource , Alexandre Belloni , linux-rtc@vger.kernel.org Subject: [PATCH] rtc: da9063: simplify irq management Date: Thu, 20 Mar 2025 11:18:49 +0100 Message-ID: <20250320102218.10781-2-wsa+renesas@sang-engineering.com> X-Mailer: git-send-email 2.47.2 Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The code for enabling and disabling the irq is so similar that it can easily be handled by one function. Like in most other RTC drivers. Save the duplicated code and one layer of indirection. Signed-off-by: Wolfram Sang --- Tested on a Renesas Lager board (R-Car H2). 'rtctest' behaves the same before and after the patch. Originally, I wanted to implement UIE support on top of this. But when I realised that only the oldest variant of this chip would need UIE support, I decided it is not worth the hazzle. There is no real need and later revisions have alarm seconds to make up for it. So, this patch is all that was created. drivers/rtc/rtc-da9063.c | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/drivers/rtc/rtc-da9063.c b/drivers/rtc/rtc-da9063.c index 859397541f29..d05b8be98087 100644 --- a/drivers/rtc/rtc-da9063.c +++ b/drivers/rtc/rtc-da9063.c @@ -194,26 +194,17 @@ static void da9063_tm_to_data(struct rtc_time *tm, u8 *data, config->rtc_count_year_mask; } -static int da9063_rtc_stop_alarm(struct device *dev) -{ - struct da9063_compatible_rtc *rtc = dev_get_drvdata(dev); - const struct da9063_compatible_rtc_regmap *config = rtc->config; - - return regmap_update_bits(rtc->regmap, - config->rtc_alarm_year_reg, - config->rtc_alarm_on_mask, - 0); -} - -static int da9063_rtc_start_alarm(struct device *dev) +static int da9063_rtc_alarm_irq_enable(struct device *dev, + unsigned int enabled) { struct da9063_compatible_rtc *rtc = dev_get_drvdata(dev); const struct da9063_compatible_rtc_regmap *config = rtc->config; + u8 set_bit = enabled ? config->rtc_alarm_on_mask : 0; return regmap_update_bits(rtc->regmap, config->rtc_alarm_year_reg, config->rtc_alarm_on_mask, - config->rtc_alarm_on_mask); + set_bit); } static int da9063_rtc_read_time(struct device *dev, struct rtc_time *tm) @@ -312,7 +303,7 @@ static int da9063_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) da9063_tm_to_data(&alrm->time, data, rtc); - ret = da9063_rtc_stop_alarm(dev); + ret = da9063_rtc_alarm_irq_enable(dev, 0); if (ret < 0) { dev_err(dev, "Failed to stop alarm: %d\n", ret); return ret; @@ -330,7 +321,7 @@ static int da9063_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) da9063_data_to_tm(data, &rtc->alarm_time, rtc); if (alrm->enabled) { - ret = da9063_rtc_start_alarm(dev); + ret = da9063_rtc_alarm_irq_enable(dev, 1); if (ret < 0) { dev_err(dev, "Failed to start alarm: %d\n", ret); return ret; @@ -340,15 +331,6 @@ static int da9063_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) return ret; } -static int da9063_rtc_alarm_irq_enable(struct device *dev, - unsigned int enabled) -{ - if (enabled) - return da9063_rtc_start_alarm(dev); - else - return da9063_rtc_stop_alarm(dev); -} - static irqreturn_t da9063_alarm_event(int irq, void *data) { struct da9063_compatible_rtc *rtc = data;