mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
RTC: Convert rtc drivers to use the alarm_irq_enable method
Some rtc drivers use the ioctl method instead of the alarm_irq_enable method for enabling alarm interupts. With the new virtualized RTC rework, its important for drivers to use the alarm_irq_enable instead. This patch converts the drivers that use the AIE ioctl method to use the alarm_irq_enable method. Other ioctl cmds are left untouched. I have not been able to test or even compile most of these drivers. Any help to make sure this change is correct would be appreciated! CC: Alessandro Zummo <a.zummo@towertech.it> CC: Thomas Gleixner <tglx@linutronix.de> CC: Marcelo Roberto Jimenez <mroberto@cpti.cetuc.puc-rio.br> Reported-by: Marcelo Roberto Jimenez <mroberto@cpti.cetuc.puc-rio.br> Tested-by: Marcelo Roberto Jimenez <mroberto@cpti.cetuc.puc-rio.br> Signed-off-by: John Stultz <john.stultz@linaro.org>
This commit is contained in:
parent
ac54cd2bd5
commit
16380c153a
18 changed files with 223 additions and 297 deletions
|
@ -143,8 +143,6 @@ omap_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
|
|||
u8 reg;
|
||||
|
||||
switch (cmd) {
|
||||
case RTC_AIE_OFF:
|
||||
case RTC_AIE_ON:
|
||||
case RTC_UIE_OFF:
|
||||
case RTC_UIE_ON:
|
||||
break;
|
||||
|
@ -156,13 +154,6 @@ omap_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
|
|||
rtc_wait_not_busy();
|
||||
reg = rtc_read(OMAP_RTC_INTERRUPTS_REG);
|
||||
switch (cmd) {
|
||||
/* AIE = Alarm Interrupt Enable */
|
||||
case RTC_AIE_OFF:
|
||||
reg &= ~OMAP_RTC_INTERRUPTS_IT_ALARM;
|
||||
break;
|
||||
case RTC_AIE_ON:
|
||||
reg |= OMAP_RTC_INTERRUPTS_IT_ALARM;
|
||||
break;
|
||||
/* UIE = Update Interrupt Enable (1/second) */
|
||||
case RTC_UIE_OFF:
|
||||
reg &= ~OMAP_RTC_INTERRUPTS_IT_TIMER;
|
||||
|
@ -182,6 +173,24 @@ omap_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
|
|||
#define omap_rtc_ioctl NULL
|
||||
#endif
|
||||
|
||||
static int omap_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
|
||||
{
|
||||
u8 reg;
|
||||
|
||||
local_irq_disable();
|
||||
rtc_wait_not_busy();
|
||||
reg = rtc_read(OMAP_RTC_INTERRUPTS_REG);
|
||||
if (enabled)
|
||||
reg |= OMAP_RTC_INTERRUPTS_IT_ALARM;
|
||||
else
|
||||
reg &= ~OMAP_RTC_INTERRUPTS_IT_ALARM;
|
||||
rtc_wait_not_busy();
|
||||
rtc_write(reg, OMAP_RTC_INTERRUPTS_REG);
|
||||
local_irq_enable();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* this hardware doesn't support "don't care" alarm fields */
|
||||
static int tm2bcd(struct rtc_time *tm)
|
||||
{
|
||||
|
@ -309,6 +318,7 @@ static struct rtc_class_ops omap_rtc_ops = {
|
|||
.set_time = omap_rtc_set_time,
|
||||
.read_alarm = omap_rtc_read_alarm,
|
||||
.set_alarm = omap_rtc_set_alarm,
|
||||
.alarm_irq_enable = omap_rtc_alarm_irq_enable,
|
||||
};
|
||||
|
||||
static int omap_rtc_alarm;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue