From e44d4907f8b0f54d3aa0d057302f95df804aa171 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Mon, 16 Oct 2017 16:25:03 -0700 Subject: staging/comedi: Convert timers to use timer_setup() In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. Adds pointer back to comedi device from private struct. Cc: H Hartley Sweeten Cc: devel@driverdev.osuosl.org Signed-off-by: Kees Cook Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- drivers/staging/comedi/drivers/das16.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'drivers/staging/comedi/drivers/das16.c') diff --git a/drivers/staging/comedi/drivers/das16.c b/drivers/staging/comedi/drivers/das16.c index 2b2a446af3f5..ddd4aeab6365 100644 --- a/drivers/staging/comedi/drivers/das16.c +++ b/drivers/staging/comedi/drivers/das16.c @@ -440,6 +440,7 @@ static inline int timer_period(void) struct das16_private_struct { struct comedi_isadma *dma; + struct comedi_device *dev; unsigned int clockbase; unsigned int ctrl_reg; unsigned int divisor1; @@ -525,10 +526,10 @@ static void das16_interrupt(struct comedi_device *dev) comedi_handle_events(dev, s); } -static void das16_timer_interrupt(unsigned long arg) +static void das16_timer_interrupt(struct timer_list *t) { - struct comedi_device *dev = (struct comedi_device *)arg; - struct das16_private_struct *devpriv = dev->private; + struct das16_private_struct *devpriv = from_timer(devpriv, t, timer); + struct comedi_device *dev = devpriv->dev; unsigned long flags; das16_interrupt(dev); @@ -934,8 +935,7 @@ static void das16_alloc_dma(struct comedi_device *dev, unsigned int dma_chan) { struct das16_private_struct *devpriv = dev->private; - setup_timer(&devpriv->timer, das16_timer_interrupt, - (unsigned long)dev); + timer_setup(&devpriv->timer, das16_timer_interrupt, 0); /* only DMA channels 3 and 1 are valid */ if (!(dma_chan == 1 || dma_chan == 3)) @@ -1044,6 +1044,7 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) devpriv = comedi_alloc_devpriv(dev, sizeof(*devpriv)); if (!devpriv) return -ENOMEM; + devpriv->dev = dev; if (board->size < 0x400) { ret = comedi_request_region(dev, it->options[0], board->size); -- cgit v1.2.3