diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-08-14 06:19:59 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-08-14 06:19:59 -0400 |
| commit | 8d7ccaa545490cdffdfaff0842436a8dd85cf47b (patch) | |
| tree | 8129b5907161bc6ae26deb3645ce1e280c5e1f51 /drivers/rtc/rtc-at91rm9200.c | |
| parent | b2139aa0eec330c711c5a279db361e5ef1178e78 (diff) | |
| parent | 30a2f3c60a84092c8084dfe788b710f8d0768cd4 (diff) | |
Merge commit 'v2.6.27-rc3' into x86/prototypes
Conflicts:
include/asm-x86/dma-mapping.h
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/rtc/rtc-at91rm9200.c')
| -rw-r--r-- | drivers/rtc/rtc-at91rm9200.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/drivers/rtc/rtc-at91rm9200.c b/drivers/rtc/rtc-at91rm9200.c index 9c3db934cc24..4e888cc8be5b 100644 --- a/drivers/rtc/rtc-at91rm9200.c +++ b/drivers/rtc/rtc-at91rm9200.c | |||
| @@ -29,7 +29,7 @@ | |||
| 29 | #include <linux/completion.h> | 29 | #include <linux/completion.h> |
| 30 | 30 | ||
| 31 | #include <asm/uaccess.h> | 31 | #include <asm/uaccess.h> |
| 32 | #include <asm/arch/at91_rtc.h> | 32 | #include <mach/at91_rtc.h> |
| 33 | 33 | ||
| 34 | 34 | ||
| 35 | #define AT91_RTC_FREQ 1 | 35 | #define AT91_RTC_FREQ 1 |
| @@ -171,8 +171,10 @@ static int at91_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm) | |||
| 171 | | BIN2BCD(tm.tm_mday) << 24 | 171 | | BIN2BCD(tm.tm_mday) << 24 |
| 172 | | AT91_RTC_DATEEN | AT91_RTC_MTHEN); | 172 | | AT91_RTC_DATEEN | AT91_RTC_MTHEN); |
| 173 | 173 | ||
| 174 | if (alrm->enabled) | 174 | if (alrm->enabled) { |
| 175 | at91_sys_write(AT91_RTC_SCCR, AT91_RTC_ALARM); | ||
| 175 | at91_sys_write(AT91_RTC_IER, AT91_RTC_ALARM); | 176 | at91_sys_write(AT91_RTC_IER, AT91_RTC_ALARM); |
| 177 | } | ||
| 176 | 178 | ||
| 177 | pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __func__, | 179 | pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __func__, |
| 178 | at91_alarm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, | 180 | at91_alarm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, |
| @@ -191,28 +193,22 @@ static int at91_rtc_ioctl(struct device *dev, unsigned int cmd, | |||
| 191 | 193 | ||
| 192 | pr_debug("%s(): cmd=%08x, arg=%08lx.\n", __func__, cmd, arg); | 194 | pr_debug("%s(): cmd=%08x, arg=%08lx.\n", __func__, cmd, arg); |
| 193 | 195 | ||
| 196 | /* important: scrub old status before enabling IRQs */ | ||
| 194 | switch (cmd) { | 197 | switch (cmd) { |
| 195 | case RTC_AIE_OFF: /* alarm off */ | 198 | case RTC_AIE_OFF: /* alarm off */ |
| 196 | at91_sys_write(AT91_RTC_IDR, AT91_RTC_ALARM); | 199 | at91_sys_write(AT91_RTC_IDR, AT91_RTC_ALARM); |
| 197 | break; | 200 | break; |
| 198 | case RTC_AIE_ON: /* alarm on */ | 201 | case RTC_AIE_ON: /* alarm on */ |
| 202 | at91_sys_write(AT91_RTC_SCCR, AT91_RTC_ALARM); | ||
| 199 | at91_sys_write(AT91_RTC_IER, AT91_RTC_ALARM); | 203 | at91_sys_write(AT91_RTC_IER, AT91_RTC_ALARM); |
| 200 | break; | 204 | break; |
| 201 | case RTC_UIE_OFF: /* update off */ | 205 | case RTC_UIE_OFF: /* update off */ |
| 202 | case RTC_PIE_OFF: /* periodic off */ | ||
| 203 | at91_sys_write(AT91_RTC_IDR, AT91_RTC_SECEV); | 206 | at91_sys_write(AT91_RTC_IDR, AT91_RTC_SECEV); |
| 204 | break; | 207 | break; |
| 205 | case RTC_UIE_ON: /* update on */ | 208 | case RTC_UIE_ON: /* update on */ |
| 206 | case RTC_PIE_ON: /* periodic on */ | 209 | at91_sys_write(AT91_RTC_SCCR, AT91_RTC_SECEV); |
| 207 | at91_sys_write(AT91_RTC_IER, AT91_RTC_SECEV); | 210 | at91_sys_write(AT91_RTC_IER, AT91_RTC_SECEV); |
| 208 | break; | 211 | break; |
| 209 | case RTC_IRQP_READ: /* read periodic alarm frequency */ | ||
| 210 | ret = put_user(AT91_RTC_FREQ, (unsigned long *) arg); | ||
| 211 | break; | ||
| 212 | case RTC_IRQP_SET: /* set periodic alarm frequency */ | ||
| 213 | if (arg != AT91_RTC_FREQ) | ||
| 214 | ret = -EINVAL; | ||
| 215 | break; | ||
| 216 | default: | 212 | default: |
| 217 | ret = -ENOIOCTLCMD; | 213 | ret = -ENOIOCTLCMD; |
| 218 | break; | 214 | break; |
