]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/s390/cio/eadm_sch.c
s390/cio: Convert timers to use timer_setup()
[mirror_ubuntu-bionic-kernel.git] / drivers / s390 / cio / eadm_sch.c
index d14795f7110b4021a2fa58b08b332af34573a735..ce16e4f45d440fd25538d9223db5e07566ad22f5 100644 (file)
@@ -94,9 +94,10 @@ static int eadm_subchannel_clear(struct subchannel *sch)
        return 0;
 }
 
-static void eadm_subchannel_timeout(unsigned long data)
+static void eadm_subchannel_timeout(struct timer_list *t)
 {
-       struct subchannel *sch = (struct subchannel *) data;
+       struct eadm_private *private = from_timer(private, t, timer);
+       struct subchannel *sch = private->sch;
 
        spin_lock_irq(sch->lock);
        EADM_LOG(1, "timeout");
@@ -118,8 +119,6 @@ static void eadm_subchannel_set_timeout(struct subchannel *sch, int expires)
                if (mod_timer(&private->timer, jiffies + expires))
                        return;
        }
-       private->timer.function = eadm_subchannel_timeout;
-       private->timer.data = (unsigned long) sch;
        private->timer.expires = jiffies + expires;
        add_timer(&private->timer);
 }
@@ -224,7 +223,7 @@ static int eadm_subchannel_probe(struct subchannel *sch)
                return -ENOMEM;
 
        INIT_LIST_HEAD(&private->head);
-       init_timer(&private->timer);
+       timer_setup(&private->timer, eadm_subchannel_timeout, 0);
 
        spin_lock_irq(sch->lock);
        set_eadm_private(sch, private);