rtc: enforce rtc_timer_init private_data type
authorAlexandre Belloni <alexandre.belloni@bootlin.com>
Tue, 18 Dec 2018 21:11:26 +0000 (22:11 +0100)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Tue, 18 Dec 2018 21:53:29 +0000 (22:53 +0100)
All the remaining users of rtc_timers are passing the rtc_device as private
data. Enforce that and rename private_data to rtc.

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/class.c
drivers/rtc/interface.c
include/linux/rtc.h

index 6d36408..8d9b65d 100644 (file)
@@ -178,9 +178,9 @@ static struct rtc_device *rtc_allocate_device(void)
        timerqueue_init_head(&rtc->timerqueue);
        INIT_WORK(&rtc->irqwork, rtc_timer_do_work);
        /* Init aie timer */
-       rtc_timer_init(&rtc->aie_timer, rtc_aie_update_irq, (void *)rtc);
+       rtc_timer_init(&rtc->aie_timer, rtc_aie_update_irq, rtc);
        /* Init uie timer */
-       rtc_timer_init(&rtc->uie_rtctimer, rtc_uie_update_irq, (void *)rtc);
+       rtc_timer_init(&rtc->uie_rtctimer, rtc_uie_update_irq, rtc);
        /* Init pie timer */
        hrtimer_init(&rtc->pie_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
        rtc->pie_timer.function = rtc_pie_update_irq;
index e8d77b1..98d9c87 100644 (file)
@@ -609,26 +609,24 @@ void rtc_handle_legacy_irq(struct rtc_device *rtc, int num, int mode)
 
 /**
  * rtc_aie_update_irq - AIE mode rtctimer hook
- * @private: pointer to the rtc_device
+ * @rtc: pointer to the rtc_device
  *
  * This functions is called when the aie_timer expires.
  */
-void rtc_aie_update_irq(void *private)
+void rtc_aie_update_irq(struct rtc_device *rtc)
 {
-       struct rtc_device *rtc = (struct rtc_device *)private;
        rtc_handle_legacy_irq(rtc, 1, RTC_AF);
 }
 
 
 /**
  * rtc_uie_update_irq - UIE mode rtctimer hook
- * @private: pointer to the rtc_device
+ * @rtc: pointer to the rtc_device
  *
  * This functions is called when the uie_timer expires.
  */
-void rtc_uie_update_irq(void *private)
+void rtc_uie_update_irq(struct rtc_device *rtc)
 {
-       struct rtc_device *rtc = (struct rtc_device *)private;
        rtc_handle_legacy_irq(rtc, 1,  RTC_UF);
 }
 
@@ -908,7 +906,7 @@ again:
                trace_rtc_timer_dequeue(timer);
                timer->enabled = 0;
                if (timer->func)
-                       timer->func(timer->private_data);
+                       timer->func(timer->rtc);
 
                trace_rtc_timer_fired(timer);
                /* Re-add/fwd periodic timers */
@@ -955,16 +953,17 @@ reprogram:
 /* rtc_timer_init - Initializes an rtc_timer
  * @timer: timer to be intiialized
  * @f: function pointer to be called when timer fires
- * @data: private data passed to function pointer
+ * @rtc: pointer to the rtc_device
  *
  * Kernel interface to initializing an rtc_timer.
  */
-void rtc_timer_init(struct rtc_timer *timer, void (*f)(void *p), void *data)
+void rtc_timer_init(struct rtc_timer *timer, void (*f)(struct rtc_device *r),
+                   struct rtc_device *rtc)
 {
        timerqueue_init(&timer->node);
        timer->enabled = 0;
        timer->func = f;
-       timer->private_data = data;
+       timer->rtc = rtc;
 }
 
 /* rtc_timer_start - Sets an rtc_timer to fire in the future
index 58147b0..c1089fe 100644 (file)
@@ -87,15 +87,16 @@ struct rtc_class_ops {
        int (*set_offset)(struct device *, long offset);
 };
 
+struct rtc_device;
+
 struct rtc_timer {
        struct timerqueue_node node;
        ktime_t period;
-       void (*func)(void *private_data);
-       void *private_data;
+       void (*func)(struct rtc_device *rtc);
+       struct rtc_device *rtc;
        int enabled;
 };
 
-
 /* flags */
 #define RTC_DEV_BUSY 0
 
@@ -197,11 +198,12 @@ 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);
+void rtc_aie_update_irq(struct rtc_device *rtc);
+void rtc_uie_update_irq(struct rtc_device *rtc);
 enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer);
 
-void rtc_timer_init(struct rtc_timer *timer, void (*f)(void *p), void *data);
+void rtc_timer_init(struct rtc_timer *timer, void (*f)(struct rtc_device *r),
+                   struct rtc_device *rtc);
 int rtc_timer_start(struct rtc_device *rtc, struct rtc_timer *timer,
                    ktime_t expires, ktime_t period);
 void rtc_timer_cancel(struct rtc_device *rtc, struct rtc_timer *timer);