Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] rtc framewok: rtc_wkalrm.enabled reporting updates

Fix a glitch in the procfs dumping of whether the alarm IRQ is enabled: use
the traditional name (from drivers/char/rtc.c and many other places) of
"alarm_IRQ", not "alrm_wakeup" (which didn't even match the efirtc code, which
originated that reporting API).

Also, update a few of the RTC drivers to stop providing that duplicate status,
and/or to expose it properly when reporting the alarm state. We really don't
want every RTC driver doing their own thing here...

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

David Brownell and committed by
Linus Torvalds
a2db8dfc 5a6534e4

+8 -12
+3 -2
drivers/rtc/rtc-at91rm9200.c
··· 137 137 tm->tm_yday = rtc_year_days(tm->tm_mday, tm->tm_mon, tm->tm_year); 138 138 tm->tm_year = at91_alarm_year - 1900; 139 139 140 + alrm->enabled = (at91_sys_read(AT91_RTC_IMR) & AT91_RTC_ALARM) 141 + ? 1 : 0; 142 + 140 143 pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __FUNCTION__, 141 144 1900 + tm->tm_year, tm->tm_mon, tm->tm_mday, 142 145 tm->tm_hour, tm->tm_min, tm->tm_sec); ··· 226 223 { 227 224 unsigned long imr = at91_sys_read(AT91_RTC_IMR); 228 225 229 - seq_printf(seq, "alarm_IRQ\t: %s\n", 230 - (imr & AT91_RTC_ALARM) ? "yes" : "no"); 231 226 seq_printf(seq, "update_IRQ\t: %s\n", 232 227 (imr & AT91_RTC_ACKUPD) ? "yes" : "no"); 233 228 seq_printf(seq, "periodic_IRQ\t: %s\n",
+1 -2
drivers/rtc/rtc-omap.c
··· 279 279 local_irq_enable(); 280 280 281 281 bcd2tm(&alm->time); 282 - alm->pending = !!(rtc_read(OMAP_RTC_INTERRUPTS_REG) 282 + alm->enabled = !!(rtc_read(OMAP_RTC_INTERRUPTS_REG) 283 283 & OMAP_RTC_INTERRUPTS_IT_ALARM); 284 - alm->enabled = alm->pending && device_may_wakeup(dev); 285 284 286 285 return 0; 287 286 }
+1 -1
drivers/rtc/rtc-proc.c
··· 65 65 seq_printf(seq, "%02d\n", alrm.time.tm_mday); 66 66 else 67 67 seq_printf(seq, "**\n"); 68 - seq_printf(seq, "alrm_wakeup\t: %s\n", 68 + seq_printf(seq, "alarm_IRQ\t: %s\n", 69 69 alrm.enabled ? "yes" : "no"); 70 70 seq_printf(seq, "alrm_pending\t: %s\n", 71 71 alrm.pending ? "yes" : "no");
+2 -4
drivers/rtc/rtc-s3c.c
··· 191 191 192 192 alm_en = readb(base + S3C2410_RTCALM); 193 193 194 + alrm->enabled = (alm_en & S3C2410_RTCALM_ALMEN) ? 1 : 0; 195 + 194 196 pr_debug("read alarm %02x %02x.%02x.%02x %02x/%02x/%02x\n", 195 197 alm_en, 196 198 alm_tm->tm_year, alm_tm->tm_mon, alm_tm->tm_mday, ··· 333 331 334 332 static int s3c_rtc_proc(struct device *dev, struct seq_file *seq) 335 333 { 336 - unsigned int rtcalm = readb(s3c_rtc_base + S3C2410_RTCALM); 337 334 unsigned int ticnt = readb(s3c_rtc_base + S3C2410_TICNT); 338 - 339 - seq_printf(seq, "alarm_IRQ\t: %s\n", 340 - (rtcalm & S3C2410_RTCALM_ALMEN) ? "yes" : "no" ); 341 335 342 336 seq_printf(seq, "periodic_IRQ\t: %s\n", 343 337 (ticnt & S3C2410_TICNT_ENABLE) ? "yes" : "no" );
+1 -3
drivers/rtc/rtc-sa1100.c
··· 289 289 290 290 static int sa1100_rtc_proc(struct device *dev, struct seq_file *seq) 291 291 { 292 - seq_printf(seq, "trim/divider\t: 0x%08lx\n", RTTR); 293 - seq_printf(seq, "alarm_IRQ\t: %s\n", 294 - (RTSR & RTSR_ALE) ? "yes" : "no" ); 292 + seq_printf(seq, "trim/divider\t: 0x%08x\n", (u32) RTTR); 295 293 seq_printf(seq, "update_IRQ\t: %s\n", 296 294 (RTSR & RTSR_HZE) ? "yes" : "no"); 297 295 seq_printf(seq, "periodic_IRQ\t: %s\n",