@@ -51,6 +51,21 @@ static unsigned int at91_alarm_year = AT91_RTC_EPOCH;
5151static void __iomem * at91_rtc_regs ;
5252static int irq ;
5353
54+ static void at91_rtc_write_ier (u32 mask )
55+ {
56+ at91_rtc_write (AT91_RTC_IER , mask );
57+ }
58+
59+ static void at91_rtc_write_idr (u32 mask )
60+ {
61+ at91_rtc_write (AT91_RTC_IDR , mask );
62+ }
63+
64+ static u32 at91_rtc_read_imr (void )
65+ {
66+ return at91_rtc_read (AT91_RTC_IMR );
67+ }
68+
5469/*
5570 * Decode time/date into rtc_time structure
5671 */
@@ -114,9 +129,9 @@ static int at91_rtc_settime(struct device *dev, struct rtc_time *tm)
114129cr = at91_rtc_read (AT91_RTC_CR );
115130at91_rtc_write (AT91_RTC_CR , cr | AT91_RTC_UPDCAL | AT91_RTC_UPDTIM );
116131
117- at91_rtc_write ( AT91_RTC_IER , AT91_RTC_ACKUPD );
132+ at91_rtc_write_ier ( AT91_RTC_ACKUPD );
118133wait_for_completion (& at91_rtc_updated );/* wait for ACKUPD interrupt */
119- at91_rtc_write ( AT91_RTC_IDR , AT91_RTC_ACKUPD );
134+ at91_rtc_write_idr ( AT91_RTC_ACKUPD );
120135
121136at91_rtc_write (AT91_RTC_TIMR ,
122137 bin2bcd (tm -> tm_sec ) << 0
@@ -148,7 +163,7 @@ static int at91_rtc_readalarm(struct device *dev, struct rtc_wkalrm *alrm)
148163tm -> tm_yday = rtc_year_days (tm -> tm_mday , tm -> tm_mon , tm -> tm_year );
149164tm -> tm_year = at91_alarm_year - 1900 ;
150165
151- alrm -> enabled = (at91_rtc_read ( AT91_RTC_IMR ) & AT91_RTC_ALARM )
166+ alrm -> enabled = (at91_rtc_read_imr ( ) & AT91_RTC_ALARM )
152167? 1 : 0 ;
153168
154169dev_dbg (dev , "%s(): %4d-%02d-%02d %02d:%02d:%02d\n" , __func__ ,
@@ -173,7 +188,7 @@ static int at91_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
173188tm .tm_min = alrm -> time .tm_min ;
174189tm .tm_sec = alrm -> time .tm_sec ;
175190
176- at91_rtc_write ( AT91_RTC_IDR , AT91_RTC_ALARM );
191+ at91_rtc_write_idr ( AT91_RTC_ALARM );
177192at91_rtc_write (AT91_RTC_TIMALR ,
178193 bin2bcd (tm .tm_sec ) << 0
179194| bin2bcd (tm .tm_min ) << 8
@@ -186,7 +201,7 @@ static int at91_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
186201
187202if (alrm -> enabled ) {
188203at91_rtc_write (AT91_RTC_SCCR , AT91_RTC_ALARM );
189- at91_rtc_write ( AT91_RTC_IER , AT91_RTC_ALARM );
204+ at91_rtc_write_ier ( AT91_RTC_ALARM );
190205}
191206
192207dev_dbg (dev , "%s(): %4d-%02d-%02d %02d:%02d:%02d\n" , __func__ ,
@@ -202,9 +217,9 @@ static int at91_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
202217
203218if (enabled ) {
204219at91_rtc_write (AT91_RTC_SCCR , AT91_RTC_ALARM );
205- at91_rtc_write ( AT91_RTC_IER , AT91_RTC_ALARM );
220+ at91_rtc_write_ier ( AT91_RTC_ALARM );
206221} else
207- at91_rtc_write ( AT91_RTC_IDR , AT91_RTC_ALARM );
222+ at91_rtc_write_idr ( AT91_RTC_ALARM );
208223
209224return 0 ;
210225}
@@ -213,7 +228,7 @@ static int at91_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
213228 */
214229static int at91_rtc_proc (struct device * dev , struct seq_file * seq )
215230{
216- unsigned long imr = at91_rtc_read ( AT91_RTC_IMR );
231+ unsigned long imr = at91_rtc_read_imr ( );
217232
218233seq_printf (seq , "update_IRQ\t: %s\n" ,
219234(imr & AT91_RTC_ACKUPD ) ? "yes" : "no" );
@@ -233,7 +248,7 @@ static irqreturn_t at91_rtc_interrupt(int irq, void *dev_id)
233248unsigned int rtsr ;
234249unsigned long events = 0 ;
235250
236- rtsr = at91_rtc_read (AT91_RTC_SR ) & at91_rtc_read ( AT91_RTC_IMR );
251+ rtsr = at91_rtc_read (AT91_RTC_SR ) & at91_rtc_read_imr ( );
237252if (rtsr ) {/* this interrupt is shared! Is it ours? */
238253if (rtsr & AT91_RTC_ALARM )
239254events |= (RTC_AF | RTC_IRQF );
@@ -328,7 +343,7 @@ static int __init at91_rtc_probe(struct platform_device *pdev)
328343at91_rtc_write (AT91_RTC_MR , 0 );/* 24 hour mode */
329344
330345/* Disable all interrupts */
331- at91_rtc_write ( AT91_RTC_IDR , AT91_RTC_ACKUPD | AT91_RTC_ALARM |
346+ at91_rtc_write_idr ( AT91_RTC_ACKUPD | AT91_RTC_ALARM |
332347AT91_RTC_SECEV | AT91_RTC_TIMEV |
333348AT91_RTC_CALEV );
334349
@@ -373,7 +388,7 @@ static int __exit at91_rtc_remove(struct platform_device *pdev)
373388struct rtc_device * rtc = platform_get_drvdata (pdev );
374389
375390/* Disable all interrupts */
376- at91_rtc_write ( AT91_RTC_IDR , AT91_RTC_ACKUPD | AT91_RTC_ALARM |
391+ at91_rtc_write_idr ( AT91_RTC_ACKUPD | AT91_RTC_ALARM |
377392AT91_RTC_SECEV | AT91_RTC_TIMEV |
378393AT91_RTC_CALEV );
379394free_irq (irq , pdev );
@@ -396,13 +411,13 @@ static int at91_rtc_suspend(struct device *dev)
396411/* this IRQ is shared with DBGU and other hardware which isn't
397412 * necessarily doing PM like we are...
398413 */
399- at91_rtc_imr = at91_rtc_read ( AT91_RTC_IMR )
414+ at91_rtc_imr = at91_rtc_read_imr ( )
400415& (AT91_RTC_ALARM |AT91_RTC_SECEV );
401416if (at91_rtc_imr ) {
402417if (device_may_wakeup (dev ))
403418enable_irq_wake (irq );
404419else
405- at91_rtc_write ( AT91_RTC_IDR , at91_rtc_imr );
420+ at91_rtc_write_idr ( at91_rtc_imr );
406421}
407422return 0 ;
408423}
@@ -413,7 +428,7 @@ static int at91_rtc_resume(struct device *dev)
413428if (device_may_wakeup (dev ))
414429disable_irq_wake (irq );
415430else
416- at91_rtc_write ( AT91_RTC_IER , at91_rtc_imr );
431+ at91_rtc_write_ier ( at91_rtc_imr );
417432}
418433return 0 ;
419434}
0 commit comments