diff options
Diffstat (limited to 'include/linux/rtc.h')
-rw-r--r-- | include/linux/rtc.h | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/include/linux/rtc.h b/include/linux/rtc.h index a0b639f8e805..877ece45426f 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,10 +223,13 @@ 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, |
221 | struct rtc_wkalrm *alrm); | 230 | struct rtc_wkalrm *alrm); |
231 | extern int rtc_initialize_alarm(struct rtc_device *rtc, | ||
232 | struct rtc_wkalrm *alrm); | ||
222 | extern void rtc_update_irq(struct rtc_device *rtc, | 233 | extern void rtc_update_irq(struct rtc_device *rtc, |
223 | unsigned long num, unsigned long events); | 234 | unsigned long num, unsigned long events); |
224 | 235 | ||
@@ -235,7 +246,10 @@ extern int rtc_irq_set_freq(struct rtc_device *rtc, | |||
235 | struct rtc_task *task, int freq); | 246 | struct rtc_task *task, int freq); |
236 | extern int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled); | 247 | 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); | 248 | extern int rtc_alarm_irq_enable(struct rtc_device *rtc, unsigned int enabled); |
249 | extern int rtc_dev_update_irq_enable_emul(struct rtc_device *rtc, | ||
250 | unsigned int enabled); | ||
238 | 251 | ||
252 | void rtc_handle_legacy_irq(struct rtc_device *rtc, int num, int mode); | ||
239 | void rtc_aie_update_irq(void *private); | 253 | void rtc_aie_update_irq(void *private); |
240 | void rtc_uie_update_irq(void *private); | 254 | void rtc_uie_update_irq(void *private); |
241 | enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer); | 255 | enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer); |