#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/amba/bus.h>
#define RTC_CR_MIE (1 << 0)
static irqreturn_t pl030_interrupt(int irq, void *dev_id)
struct pl030_rtc *rtc = dev_id;
writel(0, rtc->base + RTC_EOI);
static int pl030_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
struct pl030_rtc *rtc = dev_get_drvdata(dev);
rtc_time_to_tm(readl(rtc->base + RTC_MR), &alrm->time);
static int pl030_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
struct pl030_rtc *rtc = dev_get_drvdata(dev);
ret = rtc_valid_tm(&alrm->time);
ret = rtc_tm_to_time(&alrm->time, &time);
writel(time, rtc->base + RTC_MR);
static int pl030_read_time(struct device *dev, struct rtc_time *tm)