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; | |||
| 133 | * The (current) exceptions are mostly filesystem hooks: | 133 | * The (current) exceptions are mostly filesystem hooks: |
| 134 | * - the proc() hook for procfs | 134 | * - the proc() hook for procfs |
| 135 | * - non-ioctl() chardev hooks: open(), release(), read_callback() | 135 | * - non-ioctl() chardev hooks: open(), release(), read_callback() |
| 136 | * - periodic irq calls: irq_set_state(), irq_set_freq() | ||
| 137 | * | 136 | * |
| 138 | * REVISIT those periodic irq calls *do* have ops_lock when they're | 137 | * REVISIT those periodic irq calls *do* have ops_lock when they're |
| 139 | * issued through ioctl() ... | 138 | * issued through ioctl() ... |
| @@ -148,11 +147,8 @@ struct rtc_class_ops { | |||
| 148 | int (*set_alarm)(struct device *, struct rtc_wkalrm *); | 147 | int (*set_alarm)(struct device *, struct rtc_wkalrm *); |
| 149 | int (*proc)(struct device *, struct seq_file *); | 148 | int (*proc)(struct device *, struct seq_file *); |
| 150 | int (*set_mmss)(struct device *, unsigned long secs); | 149 | int (*set_mmss)(struct device *, unsigned long secs); |
| 151 | int (*irq_set_state)(struct device *, int enabled); | ||
| 152 | int (*irq_set_freq)(struct device *, int freq); | ||
| 153 | int (*read_callback)(struct device *, int data); | 150 | int (*read_callback)(struct device *, int data); |
| 154 | int (*alarm_irq_enable)(struct device *, unsigned int enabled); | 151 | int (*alarm_irq_enable)(struct device *, unsigned int enabled); |
| 155 | int (*update_irq_enable)(struct device *, unsigned int enabled); | ||
| 156 | }; | 152 | }; |
| 157 | 153 | ||
| 158 | #define RTC_DEVICE_NAME_SIZE 20 | 154 | #define RTC_DEVICE_NAME_SIZE 20 |
| @@ -203,6 +199,18 @@ struct rtc_device | |||
| 203 | struct hrtimer pie_timer; /* sub second exp, so needs hrtimer */ | 199 | struct hrtimer pie_timer; /* sub second exp, so needs hrtimer */ |
| 204 | int pie_enabled; | 200 | int pie_enabled; |
| 205 | struct work_struct irqwork; | 201 | struct work_struct irqwork; |
| 202 | |||
| 203 | |||
| 204 | #ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL | ||
| 205 | struct work_struct uie_task; | ||
| 206 | struct timer_list uie_timer; | ||
| 207 | /* Those fields are protected by rtc->irq_lock */ | ||
| 208 | unsigned int oldsecs; | ||
| 209 | unsigned int uie_irq_active:1; | ||
| 210 | unsigned int stop_uie_polling:1; | ||
| 211 | unsigned int uie_task_active:1; | ||
| 212 | unsigned int uie_timer_active:1; | ||
| 213 | #endif | ||
| 206 | }; | 214 | }; |
| 207 | #define to_rtc_device(d) container_of(d, struct rtc_device, dev) | 215 | #define to_rtc_device(d) container_of(d, struct rtc_device, dev) |
| 208 | 216 | ||
| @@ -215,6 +223,7 @@ extern void rtc_device_unregister(struct rtc_device *rtc); | |||
| 215 | extern int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm); | 223 | extern int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm); |
| 216 | extern int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm); | 224 | extern int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm); |
| 217 | extern int rtc_set_mmss(struct rtc_device *rtc, unsigned long secs); | 225 | extern int rtc_set_mmss(struct rtc_device *rtc, unsigned long secs); |
| 226 | int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm); | ||
| 218 | extern int rtc_read_alarm(struct rtc_device *rtc, | 227 | extern int rtc_read_alarm(struct rtc_device *rtc, |
| 219 | struct rtc_wkalrm *alrm); | 228 | struct rtc_wkalrm *alrm); |
| 220 | extern int rtc_set_alarm(struct rtc_device *rtc, | 229 | extern int rtc_set_alarm(struct rtc_device *rtc, |
| @@ -235,7 +244,10 @@ extern int rtc_irq_set_freq(struct rtc_device *rtc, | |||
| 235 | struct rtc_task *task, int freq); | 244 | struct rtc_task *task, int freq); |
| 236 | extern int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled); | 245 | extern int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled); |
| 237 | extern int rtc_alarm_irq_enable(struct rtc_device *rtc, unsigned int enabled); | 246 | extern int rtc_alarm_irq_enable(struct rtc_device *rtc, unsigned int enabled); |
| 247 | extern int rtc_dev_update_irq_enable_emul(struct rtc_device *rtc, | ||
| 248 | unsigned int enabled); | ||
| 238 | 249 | ||
| 250 | void rtc_handle_legacy_irq(struct rtc_device *rtc, int num, int mode); | ||
| 239 | void rtc_aie_update_irq(void *private); | 251 | void rtc_aie_update_irq(void *private); |
| 240 | void rtc_uie_update_irq(void *private); | 252 | void rtc_uie_update_irq(void *private); |
| 241 | enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer); | 253 | enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer); |
