]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/irda/sir_dev.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm
[linux-2.6-omap-h63xx.git] / drivers / net / irda / sir_dev.c
index 3b5854d10c17f348ffb6482c738c4a865a61cc0d..6078e03de9a83d256368cf61a4c7be4710b7e612 100644 (file)
@@ -14,7 +14,6 @@
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
-#include <linux/smp_lock.h>
 #include <linux/delay.h>
 
 #include <net/irda/irda.h>
@@ -100,9 +99,9 @@ static int sirdev_tx_complete_fsm(struct sir_dev *dev)
  * Both must be unlocked/restarted on completion - but only on final exit.
  */
 
-static void sirdev_config_fsm(void *data)
+static void sirdev_config_fsm(struct work_struct *work)
 {
-       struct sir_dev *dev = data;
+       struct sir_dev *dev = container_of(work, struct sir_dev, fsm.work.work);
        struct sir_fsm *fsm = &dev->fsm;
        int next_state;
        int ret = -1;
@@ -309,8 +308,8 @@ int sirdev_schedule_request(struct sir_dev *dev, int initial_state, unsigned par
        fsm->param = param;
        fsm->result = 0;
 
-       INIT_WORK(&fsm->work, sirdev_config_fsm, dev);
-       queue_work(irda_sir_wq, &fsm->work);
+       INIT_DELAYED_WORK(&fsm->work, sirdev_config_fsm);
+       queue_delayed_work(irda_sir_wq, &fsm->work, 0);
        return 0;
 }
 
@@ -415,7 +414,7 @@ EXPORT_SYMBOL(sirdev_raw_read);
 int sirdev_set_dtr_rts(struct sir_dev *dev, int dtr, int rts)
 {
        int ret = -ENXIO;
-       if (dev->drv->set_dtr_rts != 0)
+       if (dev->drv->set_dtr_rts)
                ret =  dev->drv->set_dtr_rts(dev, dtr, rts);
        return ret;
 }
@@ -914,8 +913,6 @@ struct sir_dev * sirdev_get_instance(const struct sir_driver *drv, const char *n
        dev->drv = drv;
        dev->netdev = ndev;
 
-       SET_MODULE_OWNER(ndev);
-
        /* Override the network functions we need to use */
        ndev->hard_start_xmit = sirdev_hard_xmit;
        ndev->open = sirdev_open;