Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1260148 > unrolled thread

[PATCH v2] rtc: rtc-s3c: Set year, month, day value for setting alarm

Started byKrzysztof Kozlowski <k.kozlowski.k@gmail.com>
First post2015-11-01 12:50 +0100
Last post2015-11-01 12:50 +0100
Articles 2 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH v2] rtc: rtc-s3c: Set year, month, day value for setting alarm Krzysztof Kozlowski <k.kozlowski.k@gmail.com> - 2015-11-01 12:50 +0100
    Re: [PATCH v2] rtc: rtc-s3c: Set year, month, day value for setting  alarm Krzysztof Kozlowski <k.kozlowski.k@gmail.com> - 2015-11-01 12:50 +0100

#1260148 — [PATCH v2] rtc: rtc-s3c: Set year, month, day value for setting alarm

FromKrzysztof Kozlowski <k.kozlowski.k@gmail.com>
Date2015-11-01 12:50 +0100
Subject[PATCH v2] rtc: rtc-s3c: Set year, month, day value for setting alarm
Message-ID<qpZj3-7Fy-1@gated-at.bofh.it>
From: Donggeun Kim <dg77.kim@samsung.com>

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 <dg77.kim@samsung.com>
Signed-off-by: MyungJoo Ham <myungjoo.kim@samsung.com>
Signed-off-by: KyungMin Park <kyungmin.park@samsung.com>
[k.kozlowski: Rebase and test the patch, update commit message]
Signed-off-by: Krzysztof Kozlowski <k.kozlowski.k@gmail.com>
---
 drivers/rtc/rtc-s3c.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c
index 7cc8f73a3fe8..5604ebbef222 100644
--- a/drivers/rtc/rtc-s3c.c
+++ b/drivers/rtc/rtc-s3c.c
@@ -149,6 +149,7 @@ static int s3c_rtc_setfreq(struct s3c_rtc *info, int freq)
 	if (!is_power_of_2(freq))
 		return -EINVAL;
 
+	WARN_ON(1);
 	spin_lock_irq(&info->pie_lock);
 
 	if (info->data->set_freq)
@@ -302,6 +303,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 +330,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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1260152 — Re: [PATCH v2] rtc: rtc-s3c: Set year, month, day value for setting alarm

FromKrzysztof Kozlowski <k.kozlowski.k@gmail.com>
Date2015-11-01 12:50 +0100
SubjectRe: [PATCH v2] rtc: rtc-s3c: Set year, month, day value for setting alarm
Message-ID<qpZj4-7Fy-11@gated-at.bofh.it>
In reply to#1260148
W dniu 01.11.2015 o 20:40, Krzysztof Kozlowski pisze:
> From: Donggeun Kim <dg77.kim@samsung.com>
> 
> 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 <dg77.kim@samsung.com>
> Signed-off-by: MyungJoo Ham <myungjoo.kim@samsung.com>
> Signed-off-by: KyungMin Park <kyungmin.park@samsung.com>
> [k.kozlowski: Rebase and test the patch, update commit message]
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski.k@gmail.com>
> ---
>  drivers/rtc/rtc-s3c.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c
> index 7cc8f73a3fe8..5604ebbef222 100644
> --- a/drivers/rtc/rtc-s3c.c
> +++ b/drivers/rtc/rtc-s3c.c
> @@ -149,6 +149,7 @@ static int s3c_rtc_setfreq(struct s3c_rtc *info, int freq)
>  	if (!is_power_of_2(freq))
>  		return -EINVAL;
>  
> +	WARN_ON(1);

Ehhh, this is debug. Sorry for the noise.

These emails: dg77.kim@samsung.com and myungjoo.kim@samsung.com do not
exist anymore. I'll replace the author with myself in that case.

Best regards,
Krzysztof

>  	spin_lock_irq(&info->pie_lock);
>  
>  	if (info->data->set_freq)
> @@ -302,6 +303,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 +330,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);
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web