Author: titmuss
Date: Fri Jan 25 10:15:14 2008
New Revision: 1630
URL: http://svn.slimdevices.com?rev=1630&root=Jive&view=rev
Log:
Bug 6580
Description:
Fixed rtc driver to allow suspend until a specified wakeup time.
Modified:
branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/arch/arm/plat-s3c24xx/pm.c
branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/drivers/rtc/rtc-s3c.c
Modified:
branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/arch/arm/plat-s3c24xx/pm.c
URL:
http://svn.slimdevices.com/branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/arch/arm/plat-s3c24xx/pm.c?rev=1630&root=Jive&r1=1629&r2=1630&view=diff
==============================================================================
---
branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/arch/arm/plat-s3c24xx/pm.c
(original)
+++
branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/arch/arm/plat-s3c24xx/pm.c
Fri Jan 25 10:15:14 2008
@@ -377,7 +377,7 @@
{
for (; count > 0; count--, ptr++) {
ptr->val = __raw_readl(ptr->reg);
- DBG("saved %p value %08lx\n", ptr->reg, ptr->val);
+ //DBG("saved %p value %08lx\n", ptr->reg, ptr->val);
}
}
@@ -392,8 +392,8 @@
void s3c2410_pm_do_restore(struct sleep_save *ptr, int count)
{
for (; count > 0; count--, ptr++) {
- printk(KERN_DEBUG "restore %p (restore %08lx, was %08x)\n",
- ptr->reg, ptr->val, __raw_readl(ptr->reg));
+ //printk(KERN_DEBUG "restore %p (restore %08lx, was %08x)\n",
+ // ptr->reg, ptr->val, __raw_readl(ptr->reg));
__raw_writel(ptr->val, ptr->reg);
}
Modified:
branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/drivers/rtc/rtc-s3c.c
URL:
http://svn.slimdevices.com/branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/drivers/rtc/rtc-s3c.c?rev=1630&root=Jive&r1=1629&r2=1630&view=diff
==============================================================================
---
branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/drivers/rtc/rtc-s3c.c
(original)
+++
branches/7.0/squeezeboxJive/src/kernel-P7/linux-2.6.22/drivers/rtc/rtc-s3c.c
Fri Jan 25 10:15:14 2008
@@ -266,16 +266,29 @@
writeb(BIN2BCD(tm->tm_hour), base + S3C2410_ALMHOUR);
}
+ if (tm->tm_mday < 31 && tm->tm_mday >= 0) {
+ alrm_en |= S3C2410_RTCALM_DAYEN;
+ writeb(BIN2BCD(tm->tm_mday), base + S3C2410_ALMDATE);
+ }
+
+ if (tm->tm_mon < 12 && tm->tm_mon >= 0) {
+ alrm_en |= S3C2410_RTCALM_MONEN;
+ writeb(BIN2BCD(tm->tm_mon + 1), base + S3C2410_ALMMON);
+ }
+
+ if (tm->tm_year >= 0 && tm->tm_year < 0xffff) {
+ alrm_en |= S3C2410_RTCALM_YEAREN;
+ writeb(BIN2BCD(tm->tm_year - 100), base + S3C2410_ALMYEAR);
+ }
+
+ if (alrm->enabled)
+ alrm_en |= S3C2410_RTCALM_ALMEN;
+ else
+ alrm_en &= ~S3C2410_RTCALM_ALMEN;
+
pr_debug("setting S3C2410_RTCALM to %08x\n", alrm_en);
- writeb(alrm_en, base + S3C2410_RTCALM);
-
- if (0) {
- alrm_en = readb(base + S3C2410_RTCALM);
- alrm_en &= ~S3C2410_RTCALM_ALMEN;
- writeb(alrm_en, base + S3C2410_RTCALM);
- disable_irq_wake(s3c_rtc_alarmno);
- }
+ writeb(alrm_en, base + S3C2410_RTCALM);
if (alrm->enabled)
enable_irq_wake(s3c_rtc_alarmno);
@@ -511,6 +524,8 @@
s3c_rtc_setfreq(s3c_rtc_freq);
+ device_init_wakeup(&pdev->dev, 1);
+
/* register RTC and exit */
rtc = rtc_device_register("s3c", &pdev->dev, &s3c_rtcops,
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins