RTC: Revert UIE emulation removal
Uwe pointed out that my alarm based UIE emulation is not sufficient to replace the older timer/polling based UIE emulation on devices where there is no alarm irq. This causes rtc devices without alarms to return -EINVAL to UIE ioctls. The fix is to re-instate the old timer/polling method for devices without alarm irqs. This patch reverts the following commits:042620a018
- Remove UIE emulation1daeddd596
- Cleanup removed UIE emulation declarationb5cc8ca1c9
- Remove Kconfig symbol for UIE emulation The emulation mode will still need to be wired-in with a following patch before it will work. CC: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> CC: Thomas Gleixner <tglx@linutronix.de> Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: John Stultz <john.stultz@linaro.org>
This commit is contained in:
@@ -203,6 +203,18 @@ struct rtc_device
|
||||
struct hrtimer pie_timer; /* sub second exp, so needs hrtimer */
|
||||
int pie_enabled;
|
||||
struct work_struct irqwork;
|
||||
|
||||
|
||||
#ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL
|
||||
struct work_struct uie_task;
|
||||
struct timer_list uie_timer;
|
||||
/* Those fields are protected by rtc->irq_lock */
|
||||
unsigned int oldsecs;
|
||||
unsigned int uie_irq_active:1;
|
||||
unsigned int stop_uie_polling:1;
|
||||
unsigned int uie_task_active:1;
|
||||
unsigned int uie_timer_active:1;
|
||||
#endif
|
||||
};
|
||||
#define to_rtc_device(d) container_of(d, struct rtc_device, dev)
|
||||
|
||||
@@ -235,6 +247,8 @@ extern int rtc_irq_set_freq(struct rtc_device *rtc,
|
||||
struct rtc_task *task, int freq);
|
||||
extern int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled);
|
||||
extern int rtc_alarm_irq_enable(struct rtc_device *rtc, unsigned int enabled);
|
||||
extern int rtc_dev_update_irq_enable_emul(struct rtc_device *rtc,
|
||||
unsigned int enabled);
|
||||
|
||||
void rtc_aie_update_irq(void *private);
|
||||
void rtc_uie_update_irq(void *private);
|
||||
|
Reference in New Issue
Block a user