diff options
Diffstat (limited to 'include/linux/rtc.h')
| -rw-r--r-- | include/linux/rtc.h | 20 | 
1 files changed, 16 insertions, 4 deletions
diff --git a/include/linux/rtc.h b/include/linux/rtc.h index a0b639f8e805..2ca7e8a78060 100644 --- a/include/linux/rtc.h +++ b/include/linux/rtc.h @@ -133,7 +133,6 @@ extern struct class *rtc_class;   * The (current) exceptions are mostly filesystem hooks:   *   - the proc() hook for procfs   *   - non-ioctl() chardev hooks:  open(), release(), read_callback() - *   - periodic irq calls:  irq_set_state(), irq_set_freq()   *   * REVISIT those periodic irq calls *do* have ops_lock when they're   * issued through ioctl() ... @@ -148,11 +147,8 @@ struct rtc_class_ops {  	int (*set_alarm)(struct device *, struct rtc_wkalrm *);  	int (*proc)(struct device *, struct seq_file *);  	int (*set_mmss)(struct device *, unsigned long secs); -	int (*irq_set_state)(struct device *, int enabled); -	int (*irq_set_freq)(struct device *, int freq);  	int (*read_callback)(struct device *, int data);  	int (*alarm_irq_enable)(struct device *, unsigned int enabled); -	int (*update_irq_enable)(struct device *, unsigned int enabled);  };  #define RTC_DEVICE_NAME_SIZE 20 @@ -203,6 +199,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) @@ -215,6 +223,7 @@ extern void rtc_device_unregister(struct rtc_device *rtc);  extern int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm);  extern int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm);  extern int rtc_set_mmss(struct rtc_device *rtc, unsigned long secs); +int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm);  extern int rtc_read_alarm(struct rtc_device *rtc,  			struct rtc_wkalrm *alrm);  extern int rtc_set_alarm(struct rtc_device *rtc, @@ -235,7 +244,10 @@ 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_handle_legacy_irq(struct rtc_device *rtc, int num, int mode);  void rtc_aie_update_irq(void *private);  void rtc_uie_update_irq(void *private);  enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer);  | 
