Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 131f8b75 authored by Shiraz Hashim's avatar Shiraz Hashim Committed by Linus Torvalds
Browse files

rtc/spear: fix for RTC_AIE_ON and RTC_AIE_OFF ioctl errors



Define API for '.alarm_irq_enable' to enable and disable alarm irq. This
is required by the framework else RTC_AIE_ON and RTC_AIE_OFF ioctls
return errors.

Signed-off-by: default avatarShiraz Hashim <shiraz.hashim@st.com>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@st.com>
Cc: Deepak Sikri <deepak.sikri@st.com>
Acked-by: default avatarRajeev Kumar <rajeev-dlh.kumar@st.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent cd0e08a8
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -327,11 +327,39 @@ static int spear_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)

	return 0;
}

static int spear_alarm_irq_enable(struct device *dev, unsigned int enabled)
{
	struct platform_device *pdev = to_platform_device(dev);
	struct rtc_device *rtc = platform_get_drvdata(pdev);
	struct spear_rtc_config *config = dev_get_drvdata(&rtc->dev);
	int ret = 0;

	spear_rtc_clear_interrupt(config);

	switch (enabled) {
	case 0:
		/* alarm off */
		spear_rtc_disable_interrupt(config);
		break;
	case 1:
		/* alarm on */
		spear_rtc_enable_interrupt(config);
		break;
	default:
		ret = -EINVAL;
		break;
	}

	return ret;
}

static struct rtc_class_ops spear_rtc_ops = {
	.read_time = spear_rtc_read_time,
	.set_time = spear_rtc_set_time,
	.read_alarm = spear_rtc_read_alarm,
	.set_alarm = spear_rtc_set_alarm,
	.alarm_irq_enable = spear_alarm_irq_enable,
};

static int __devinit spear_rtc_probe(struct platform_device *pdev)