All of lore.kernel.org
 help / color / mirror / Atom feed
From: Biju Das <biju.das.jz@bp.renesas.com>
To: cip-dev@lists.cip-project.org,
	Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>,
	Pavel Machek <pavel@denx.de>
Cc: Biju Das <biju.das.jz@bp.renesas.com>,
	Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Subject: [PATCH 5.10.y-cip 17/31] rtc: rtc_update_irq_enable: rework UIE emulation
Date: Wed, 16 Aug 2023 15:20:03 +0100	[thread overview]
Message-ID: <20230816142017.147173-18-biju.das.jz@bp.renesas.com> (raw)
In-Reply-To: <20230816142017.147173-1-biju.das.jz@bp.renesas.com>

From: Alexandre Belloni <alexandre.belloni@bootlin.com>

commit c55c3a516ceff3a041d5e3253d4d9a1b75fbb1d8 upstream.

Now that the core is aware of whether alarms are available, it is possible
to decide whether UIE emulation is required before actually trying to set
the alarm.

This greatly simplifies rtc_update_irq_enable because there is now only one
error value to track and is not relying on the return value of
__rtc_set_alarm anymore.

Tested-by: Łukasz Stelmach <l.stelmach@samsung.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20210418000023.995758-3-alexandre.belloni@bootlin.com
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
 drivers/rtc/interface.c | 34 ++++++++++------------------------
 1 file changed, 10 insertions(+), 24 deletions(-)

diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
index 4bd6dd09a1b5..3ee17c4d7298 100644
--- a/drivers/rtc/interface.c
+++ b/drivers/rtc/interface.c
@@ -545,7 +545,7 @@ EXPORT_SYMBOL_GPL(rtc_alarm_irq_enable);
 
 int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled)
 {
-	int rc = 0, err;
+	int err;
 
 	err = mutex_lock_interruptible(&rtc->ops_lock);
 	if (err)
@@ -561,17 +561,21 @@ int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled)
 	if (rtc->uie_rtctimer.enabled == enabled)
 		goto out;
 
-	if (rtc->uie_unsupported) {
-		err = -EINVAL;
-		goto out;
+	if (rtc->uie_unsupported || !test_bit(RTC_FEATURE_ALARM, rtc->features)) {
+		mutex_unlock(&rtc->ops_lock);
+#ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL
+		return rtc_dev_update_irq_enable_emul(rtc, enabled);
+#else
+		return -EINVAL;
+#endif
 	}
 
 	if (enabled) {
 		struct rtc_time tm;
 		ktime_t now, onesec;
 
-		rc = __rtc_read_time(rtc, &tm);
-		if (rc)
+		err = __rtc_read_time(rtc, &tm);
+		if (err)
 			goto out;
 		onesec = ktime_set(1, 0);
 		now = rtc_tm_to_ktime(tm);
@@ -585,24 +589,6 @@ int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled)
 out:
 	mutex_unlock(&rtc->ops_lock);
 
-	/*
-	 * __rtc_read_time() failed, this probably means that the RTC time has
-	 * never been set or less probably there is a transient error on the
-	 * bus. In any case, avoid enabling emulation has this will fail when
-	 * reading the time too.
-	 */
-	if (rc)
-		return rc;
-
-#ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL
-	/*
-	 * Enable emulation if the driver returned -EINVAL to signal that it has
-	 * been configured without interrupts or they are not available at the
-	 * moment.
-	 */
-	if (err == -EINVAL)
-		err = rtc_dev_update_irq_enable_emul(rtc, enabled);
-#endif
 	return err;
 }
 EXPORT_SYMBOL_GPL(rtc_update_irq_enable);
-- 
2.25.1



  parent reply	other threads:[~2023-08-16 14:21 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-16 14:19 [PATCH 5.10.y-cip 00/31] Add Renesas PMIC RAA215300 driver and builtin RTC support Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 01/31] regulator: dt-bindings: Add Renesas RAA215300 PMIC bindings Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 02/31] regulator: Add Renesas PMIC RAA215300 driver Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 03/31] regulator: raa215300: Add build dependency with COMMON_CLK Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 04/31] Documentation: list RTC devres helpers in devres.rst Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 05/31] rtc: nvmem: remove nvram ABI Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 06/31] rtc: rv3032: fix nvram nvmem priv pointer Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 07/31] rtc: add devm_ prefix to rtc_nvmem_register() Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 08/31] rtc: rework rtc_register_device() resource management Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 09/31] rtc: shrink devm_rtc_allocate_device() Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 10/31] rtc: destroy mutex when releasing the device Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 11/31] rtc: fix RTC removal Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 12/31] rtc: introduce features bitfield Biju Das
2023-08-16 14:19 ` [PATCH 5.10.y-cip 13/31] rtc: class: don't call cdev_device_del() when cdev_device_add() failed Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 14/31] rtc: class: check return value when calling dev_set_name() Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 15/31] rtc: add alarm related features Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 16/31] rtc: expose correction feature Biju Das
2023-08-16 14:20 ` Biju Das [this message]
2023-08-16 14:20 ` [PATCH 5.10.y-cip 18/31] rtc: expose RTC_FEATURE_UPDATE_INTERRUPT Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 19/31] rtc: class: Fix potential memleak in devm_rtc_allocate_device() Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 20/31] rtc: isl1208: quiet maybe-unused variable warning Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 21/31] rtc: isl1208: do not advertise update interrupt feature if no interrupt specified Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 22/31] dt-bindings: rtc: isl1208: Convert to json-schema Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 23/31] dt-bindings: rtc: isil,isl1208: Document clock and clock-names properties Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 24/31] rtc: isl1208: Drop name variable Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 25/31] rtc: isl1208: Make similar I2C and DT-based matching table Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 26/31] rtc: isl1208: Drop enum isl1208_id and split isl1208_configs[] Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 27/31] rtc: isl1208: Add isl1208_set_xtoscb() Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 28/31] rtc: isl1208: Add support for the built-in RTC on the PMIC RAA215300 Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 29/31] arm64: defconfig: Enable PMIC RAA215300 and RTC ISL 1208 configs Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 30/31] arm64: dts: renesas: rzg2l-smarc-som: Enable PMIC and built-in RTC Biju Das
2023-08-16 14:20 ` [PATCH 5.10.y-cip 31/31] arm64: dts: renesas: rzg2lc-smarc-som: " Biju Das
2023-08-17 10:56 ` [PATCH 5.10.y-cip 00/31] Add Renesas PMIC RAA215300 driver and builtin RTC support Pavel Machek
2023-08-17 11:05   ` Biju Das

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=20230816142017.147173-18-biju.das.jz@bp.renesas.com \
    --to=biju.das.jz@bp.renesas.com \
    --cc=cip-dev@lists.cip-project.org \
    --cc=claudiu.beznea.uj@bp.renesas.com \
    --cc=nobuhiro1.iwamatsu@toshiba.co.jp \
    --cc=pavel@denx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.