2015-11-01 11:49:17

by Krzysztof Kozłowski

[permalink] [raw]
Subject: [PATCH v3] rtc: rtc-s3c: Set year, month, day value for setting alarm

This patch sets year, month, day value for set_alarm function.
The current driver omits to set the values.

This fixes setting wake alarm for dates different than current day.
Without the patch the alarm scheduled for tomorrow would fire today on
chosen time.

Signed-off-by: Donggeun Kim <[email protected]>
Signed-off-by: MyungJoo Ham <[email protected]>
Signed-off-by: KyungMin Park <[email protected]>
[k.kozlowski: Rebase and test the patch, update commit message]
Signed-off-by: Krzysztof Kozlowski <[email protected]>

---

Changes since v2:
1. Emails [email protected] and [email protected] are no
longer valid.
2. Remove debug code added by mistake.

Changes since v1:
1. Rebase, test, update.
---
drivers/rtc/rtc-s3c.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c
index 7cc8f73a3fe8..ffb860d18701 100644
--- a/drivers/rtc/rtc-s3c.c
+++ b/drivers/rtc/rtc-s3c.c
@@ -302,6 +302,7 @@ static int s3c_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
struct s3c_rtc *info = dev_get_drvdata(dev);
struct rtc_time *tm = &alrm->time;
unsigned int alrm_en;
+ int year = tm->tm_year - 100;

dev_dbg(dev, "s3c_rtc_setalarm: %d, %04d.%02d.%02d %02d:%02d:%02d\n",
alrm->enabled,
@@ -328,6 +329,21 @@ static int s3c_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
writeb(bin2bcd(tm->tm_hour), info->base + S3C2410_ALMHOUR);
}

+ if (year < 100 && year >= 0) {
+ alrm_en |= S3C2410_RTCALM_YEAREN;
+ writeb(bin2bcd(year), info->base + S3C2410_ALMYEAR);
+ }
+
+ if (tm->tm_mon < 12 && tm->tm_mon >= 0) {
+ alrm_en |= S3C2410_RTCALM_MONEN;
+ writeb(bin2bcd(tm->tm_mon + 1), info->base + S3C2410_ALMMON);
+ }
+
+ if (tm->tm_mday <= 31 && tm->tm_mday >= 1) {
+ alrm_en |= S3C2410_RTCALM_DAYEN;
+ writeb(bin2bcd(tm->tm_mday), info->base + S3C2410_ALMDATE);
+ }
+
dev_dbg(dev, "setting S3C2410_RTCALM to %08x\n", alrm_en);

writeb(alrm_en, info->base + S3C2410_RTCALM);
--
2.1.4


2015-11-01 17:35:00

by Alexandre Belloni

[permalink] [raw]
Subject: Re: [PATCH v3] rtc: rtc-s3c: Set year, month, day value for setting alarm

On 01/11/2015 at 20:49:04 +0900, Krzysztof Kozlowski wrote :
> This patch sets year, month, day value for set_alarm function.
> The current driver omits to set the values.
>
> This fixes setting wake alarm for dates different than current day.
> Without the patch the alarm scheduled for tomorrow would fire today on
> chosen time.
>
> Signed-off-by: Donggeun Kim <[email protected]>
> Signed-off-by: MyungJoo Ham <[email protected]>
> Signed-off-by: KyungMin Park <[email protected]>
> [k.kozlowski: Rebase and test the patch, update commit message]
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
>
Applied, many thanks for your reviews.

--
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com