]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/char/rio/rio_linux.c
Merge master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6-omap-h63xx.git] / drivers / char / rio / rio_linux.c
index e79b2ede8510c6cecbffffa1c0ba72f2823de580..0ce96670f97994093fdc39ed84af0c5efc69d024 100644 (file)
@@ -418,8 +418,7 @@ static void rio_pollfunc(unsigned long data)
        func_enter();
 
        rio_interrupt(0, &p->RIOHosts[data]);
-       p->RIOHosts[data].timer.expires = jiffies + rio_poll;
-       add_timer(&p->RIOHosts[data].timer);
+       mod_timer(&p->RIOHosts[data].timer, jiffies + rio_poll);
 
        func_exit();
 }
@@ -804,9 +803,7 @@ static void *ckmalloc(int size)
 {
        void *p;
 
-       p = kmalloc(size, GFP_KERNEL);
-       if (p)
-               memset(p, 0, size);
+       p = kzalloc(size, GFP_KERNEL);
        return p;
 }
 
@@ -1147,20 +1144,17 @@ static int __init rio_init(void)
                                rio_dprintk(RIO_DEBUG_INIT, "Enabling interrupts on rio card.\n");
                                hp->Mode |= RIO_PCI_INT_ENABLE;
                        } else
-                               hp->Mode &= !RIO_PCI_INT_ENABLE;
+                               hp->Mode &= ~RIO_PCI_INT_ENABLE;
                        rio_dprintk(RIO_DEBUG_INIT, "New Mode: %x\n", hp->Mode);
                        rio_start_card_running(hp);
                }
                /* Init the timer "always" to make sure that it can safely be
                   deleted when we unload... */
 
-               init_timer(&hp->timer);
+               setup_timer(&hp->timer, rio_pollfunc, i);
                if (!hp->Ivec) {
                        rio_dprintk(RIO_DEBUG_INIT, "Starting polling at %dj intervals.\n", rio_poll);
-                       hp->timer.data = i;
-                       hp->timer.function = rio_pollfunc;
-                       hp->timer.expires = jiffies + rio_poll;
-                       add_timer(&hp->timer);
+                       mod_timer(&hp->timer, jiffies + rio_poll);
                }
        }
 
@@ -1191,7 +1185,7 @@ static void __exit rio_exit(void)
                        rio_dprintk(RIO_DEBUG_INIT, "freed irq %d.\n", hp->Ivec);
                }
                /* It is safe/allowed to del_timer a non-active timer */
-               del_timer(&hp->timer);
+               del_timer_sync(&hp->timer);
                if (hp->Caddr)
                        iounmap(hp->Caddr);
                if (hp->Type == RIO_PCI)