}
        } else {
                /* poll Card status change */
-               init_timer(&socket->poll_timer);
-               socket->poll_timer.function = pd6729_interrupt_wrapper;
-               socket->poll_timer.data = (unsigned long)socket;
-               socket->poll_timer.expires = jiffies + HZ;
-               add_timer(&socket->poll_timer);
+               setup_timer(&socket->poll_timer, pd6729_interrupt_wrapper,
+                           (unsigned long)socket);
+               mod_timer(&socket->poll_timer, jiffies + HZ);
        }
 
        for (i = 0; i < MAX_SOCKETS; i++) {
 
        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. */
-               init_timer(&socket->poll_timer);
-               socket->poll_timer.function = yenta_interrupt_wrapper;
-               socket->poll_timer.data = (unsigned long)socket;
-               socket->poll_timer.expires = jiffies + HZ;
-               add_timer(&socket->poll_timer);
+               setup_timer(&socket->poll_timer, yenta_interrupt_wrapper,
+                           (unsigned long)socket);
+               mod_timer(&socket->poll_timer, jiffies + HZ);
                dev_printk(KERN_INFO, &dev->dev,
                           "no PCI IRQ, CardBus support disabled for this "
                           "socket.\n");