]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
drivers/pcmcia: Convert timers to use timer_setup()
authorKees Cook <keescook@chromium.org>
Tue, 24 Oct 2017 10:23:31 +0000 (03:23 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 4 Nov 2017 11:03:13 +0000 (12:03 +0100)
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.

Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: bcm-kernel-feedback-list@broadcom.com
Cc: David Howells <dhowells@redhat.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: linux-pcmcia@lists.infradead.org
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/pcmcia/bcm63xx_pcmcia.c
drivers/pcmcia/bfin_cf_pcmcia.c
drivers/pcmcia/i82365.c
drivers/pcmcia/omap_cf.c
drivers/pcmcia/pd6729.c
drivers/pcmcia/soc_common.c
drivers/pcmcia/tcic.c
drivers/pcmcia/yenta_socket.c

index 0802e0bc7d0c60dc4c0bfab927f3dd4fc8cfdb4b..16f573173471a89afac887d1df1a8ba118e95a46 100644 (file)
@@ -263,12 +263,12 @@ static int bcm63xx_pcmcia_get_status(struct pcmcia_socket *sock,
 /*
  * socket polling timer callback
  */
-static void bcm63xx_pcmcia_poll(unsigned long data)
+static void bcm63xx_pcmcia_poll(struct timer_list *t)
 {
        struct bcm63xx_pcmcia_socket *skt;
        unsigned int stat, events;
 
-       skt = (struct bcm63xx_pcmcia_socket *)data;
+       skt = from_timer(skt, t, timer);
 
        spin_lock_bh(&skt->lock);
 
@@ -392,7 +392,7 @@ static int bcm63xx_drv_pcmcia_probe(struct platform_device *pdev)
        sock->map_size = resource_size(skt->common_res);
 
        /* initialize polling timer */
-       setup_timer(&skt->timer, bcm63xx_pcmcia_poll, (unsigned long)skt);
+       timer_setup(&skt->timer, bcm63xx_pcmcia_poll, 0);
 
        /* initialize  pcmcia  control register,  drive  VS[12] to  0,
         * leave CB IDSEL to the old  value since it is set by the PCI
index 8b0923fd76c604322bd20fb482958a320e77ff36..00a296d431bab910be192d663660c99d221ce4e4 100644 (file)
@@ -86,9 +86,9 @@ static int bfin_cf_ss_init(struct pcmcia_socket *s)
 }
 
 /* the timer is primarily to kick this socket's pccardd */
-static void bfin_cf_timer(unsigned long _cf)
+static void bfin_cf_timer(struct timer_list *t)
 {
-       struct bfin_cf_socket *cf = (void *)_cf;
+       struct bfin_cf_socket *cf = from_timer(cf, t, timer);
        unsigned short present = bfin_cf_present(cf->cd_pfx);
 
        if (present != cf->present) {
@@ -227,7 +227,7 @@ static int bfin_cf_probe(struct platform_device *pdev)
 
        cf->cd_pfx = cd_pfx;
 
-       setup_timer(&cf->timer, bfin_cf_timer, (unsigned long)cf);
+       timer_setup(&cf->timer, bfin_cf_timer, 0);
 
        cf->pdev = pdev;
        platform_set_drvdata(pdev, cf);
index fb38cc01859f15ac3519e8310391bde330033156..891ccea2cccb0a7b455a9ab963df2b43c38ed93e 100644 (file)
@@ -875,7 +875,7 @@ static irqreturn_t pcic_interrupt(int irq, void *dev)
     return IRQ_RETVAL(handled);
 } /* pcic_interrupt */
 
-static void pcic_interrupt_wrapper(u_long data)
+static void pcic_interrupt_wrapper(struct timer_list *unused)
 {
     pcic_interrupt(0, NULL);
     poll_timer.expires = jiffies + poll_interval;
@@ -1289,9 +1289,7 @@ static int __init init_i82365(void)
 
     /* Finally, schedule a polling interrupt */
     if (poll_interval != 0) {
-       poll_timer.function = pcic_interrupt_wrapper;
-       poll_timer.data = 0;
-       init_timer(&poll_timer);
+       timer_setup(&poll_timer, pcic_interrupt_wrapper, 0);
        poll_timer.expires = jiffies + poll_interval;
        add_timer(&poll_timer);
     }
index 4e2f501e55486dbee297865f03148e5b46d09d91..8216ceb51b1813bef5a9b0e202c1bcc59d85ef3b 100644 (file)
@@ -80,9 +80,9 @@ static int omap_cf_ss_init(struct pcmcia_socket *s)
 }
 
 /* the timer is primarily to kick this socket's pccardd */
-static void omap_cf_timer(unsigned long _cf)
+static void omap_cf_timer(struct timer_list *t)
 {
-       struct omap_cf_socket   *cf = (void *) _cf;
+       struct omap_cf_socket   *cf = from_timer(cf, t, timer);
        unsigned                present = omap_cf_present();
 
        if (present != cf->present) {
@@ -102,7 +102,7 @@ static void omap_cf_timer(unsigned long _cf)
  */
 static irqreturn_t omap_cf_irq(int irq, void *_cf)
 {
-       omap_cf_timer((unsigned long)_cf);
+       omap_cf_timer(&_cf->timer);
        return IRQ_HANDLED;
 }
 
@@ -220,7 +220,7 @@ static int __init omap_cf_probe(struct platform_device *pdev)
        cf = kzalloc(sizeof *cf, GFP_KERNEL);
        if (!cf)
                return -ENOMEM;
-       setup_timer(&cf->timer, omap_cf_timer, (unsigned long)cf);
+       timer_setup(&cf->timer, omap_cf_timer, 0);
 
        cf->pdev = pdev;
        platform_set_drvdata(pdev, cf);
index 0f70b4d58f9e7c2d8bb2b9b6c0dc00d2dca3f308..959ae3e65ef8b2ae902141eb068865849e0deaad 100644 (file)
@@ -234,9 +234,9 @@ static irqreturn_t pd6729_interrupt(int irq, void *dev)
 
 /* socket functions */
 
-static void pd6729_interrupt_wrapper(unsigned long data)
+static void pd6729_interrupt_wrapper(struct timer_list *t)
 {
-       struct pd6729_socket *socket = (struct pd6729_socket *) data;
+       struct pd6729_socket *socket = from_timer(socket, t, poll_timer);
 
        pd6729_interrupt(0, (void *)socket);
        mod_timer(&socket->poll_timer, jiffies + HZ);
@@ -707,8 +707,7 @@ static int pd6729_pci_probe(struct pci_dev *dev,
                }
        } else {
                /* poll Card status change */
-               setup_timer(&socket->poll_timer, pd6729_interrupt_wrapper,
-                           (unsigned long)socket);
+               timer_setup(&socket->poll_timer, pd6729_interrupt_wrapper, 0);
                mod_timer(&socket->poll_timer, jiffies + HZ);
        }
 
index b6b316de055c7129648904cbdae92cafb593e8dd..764650eb8897995a55ccc7dc3aaf20c210b53199 100644 (file)
@@ -456,9 +456,9 @@ static void soc_common_check_status(struct soc_pcmcia_socket *skt)
 }
 
 /* Let's poll for events in addition to IRQs since IRQ only is unreliable... */
-static void soc_common_pcmcia_poll_event(unsigned long dummy)
+static void soc_common_pcmcia_poll_event(struct timer_list *t)
 {
-       struct soc_pcmcia_socket *skt = (struct soc_pcmcia_socket *)dummy;
+       struct soc_pcmcia_socket *skt = from_timer(skt, t, poll_timer);
        debug(skt, 4, "polling for events\n");
 
        mod_timer(&skt->poll_timer, jiffies + SOC_PCMCIA_POLL_PERIOD);
@@ -794,8 +794,7 @@ int soc_pcmcia_add_one(struct soc_pcmcia_socket *skt)
 
        skt->cs_state = dead_socket;
 
-       setup_timer(&skt->poll_timer, soc_common_pcmcia_poll_event,
-                   (unsigned long)skt);
+       timer_setup(&skt->poll_timer, soc_common_pcmcia_poll_event, 0);
        skt->poll_timer.expires = jiffies + SOC_PCMCIA_POLL_PERIOD;
 
        ret = request_resource(&iomem_resource, &skt->res_skt);
index a1ac72d51d707d816a15130cccdb45549424e098..1a0e3f0987599d8a8b6415ac31dac40bc4bab8a1 100644 (file)
@@ -98,7 +98,7 @@ module_param(cycle_time, int, 0444);
 /*====================================================================*/
 
 static irqreturn_t tcic_interrupt(int irq, void *dev);
-static void tcic_timer(u_long data);
+static void tcic_timer(struct timer_list *unused);
 static struct pccard_operations tcic_operations;
 
 struct tcic_socket {
@@ -435,9 +435,7 @@ static int __init init_tcic(void)
     }
     
     /* Set up polling */
-    poll_timer.function = &tcic_timer;
-    poll_timer.data = 0;
-    init_timer(&poll_timer);
+    timer_setup(&poll_timer, &tcic_timer, 0);
 
     /* Build interrupt mask */
     printk(KERN_CONT ", %d sockets\n", sockets);
@@ -583,7 +581,7 @@ static irqreturn_t tcic_interrupt(int irq, void *dev)
     return IRQ_HANDLED;
 } /* tcic_interrupt */
 
-static void tcic_timer(u_long data)
+static void tcic_timer(struct timer_list *unused)
 {
     pr_debug("tcic_timer()\n");
     tcic_timer_pending = 0;
index 5d6d9b1549bc4fa345a613da000e6efc1ea01b91..ab3da2262f0fc89f7b65fe898d6efa5bd3113d8f 100644 (file)
@@ -534,9 +534,9 @@ static irqreturn_t yenta_interrupt(int irq, void *dev_id)
        return IRQ_HANDLED;
 }
 
-static void yenta_interrupt_wrapper(unsigned long data)
+static void yenta_interrupt_wrapper(struct timer_list *t)
 {
-       struct yenta_socket *socket = (struct yenta_socket *) data;
+       struct yenta_socket *socket = from_timer(socket, t, poll_timer);
 
        yenta_interrupt(0, (void *)socket);
        socket->poll_timer.expires = jiffies + HZ;
@@ -1233,8 +1233,7 @@ static int yenta_probe(struct pci_dev *dev, const struct pci_device_id *id)
        if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
                /* No IRQ or request_irq failed. Poll */
                socket->cb_irq = 0; /* But zero is a valid IRQ number. */
-               setup_timer(&socket->poll_timer, yenta_interrupt_wrapper,
-                           (unsigned long)socket);
+               timer_setup(&socket->poll_timer, yenta_interrupt_wrapper, 0);
                mod_timer(&socket->poll_timer, jiffies + HZ);
                dev_info(&dev->dev,
                         "no PCI IRQ, CardBus support disabled for this socket.\n");