You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07: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:
@@ -263,30 +263,21 @@ static int m48t59_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
|
||||
/*
|
||||
* Handle commands from user-space
|
||||
*/
|
||||
static int m48t59_rtc_ioctl(struct device *dev, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
static int m48t59_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct m48t59_plat_data *pdata = pdev->dev.platform_data;
|
||||
struct m48t59_private *m48t59 = platform_get_drvdata(pdev);
|
||||
unsigned long flags;
|
||||
int ret = 0;
|
||||
|
||||
spin_lock_irqsave(&m48t59->lock, flags);
|
||||
switch (cmd) {
|
||||
case RTC_AIE_OFF: /* alarm interrupt off */
|
||||
M48T59_WRITE(0x00, M48T59_INTR);
|
||||
break;
|
||||
case RTC_AIE_ON: /* alarm interrupt on */
|
||||
if (enabled)
|
||||
M48T59_WRITE(M48T59_INTR_AFE, M48T59_INTR);
|
||||
break;
|
||||
default:
|
||||
ret = -ENOIOCTLCMD;
|
||||
break;
|
||||
}
|
||||
else
|
||||
M48T59_WRITE(0x00, M48T59_INTR);
|
||||
spin_unlock_irqrestore(&m48t59->lock, flags);
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int m48t59_rtc_proc(struct device *dev, struct seq_file *seq)
|
||||
@@ -330,12 +321,12 @@ static irqreturn_t m48t59_rtc_interrupt(int irq, void *dev_id)
|
||||
}
|
||||
|
||||
static const struct rtc_class_ops m48t59_rtc_ops = {
|
||||
.ioctl = m48t59_rtc_ioctl,
|
||||
.read_time = m48t59_rtc_read_time,
|
||||
.set_time = m48t59_rtc_set_time,
|
||||
.read_alarm = m48t59_rtc_readalarm,
|
||||
.set_alarm = m48t59_rtc_setalarm,
|
||||
.proc = m48t59_rtc_proc,
|
||||
.alarm_irq_enable = m48t59_rtc_alarm_irq_enable,
|
||||
};
|
||||
|
||||
static const struct rtc_class_ops m48t02_rtc_ops = {
|
||||
|
||||
Reference in New Issue
Block a user