]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/firewire/sbp2.c
Merge branch 'gpio/next' of git://git.secretlab.ca/git/linux-2.6
[karo-tx-linux.git] / drivers / firewire / sbp2.c
index cc002e92275a6895dc3b1d5bc76b995b2a563364..41841a3e3f99c9acd4c4fc72c972626d8dffdcee 100644 (file)
@@ -258,7 +258,6 @@ struct sbp2_orb {
        struct kref kref;
        dma_addr_t request_bus;
        int rcode;
-       struct sbp2_pointer pointer;
        void (*callback)(struct sbp2_orb * orb, struct sbp2_status * status);
        struct list_head link;
 };
@@ -490,10 +489,11 @@ static void sbp2_send_orb(struct sbp2_orb *orb, struct sbp2_logical_unit *lu,
                          int node_id, int generation, u64 offset)
 {
        struct fw_device *device = target_device(lu->tgt);
+       struct sbp2_pointer orb_pointer;
        unsigned long flags;
 
-       orb->pointer.high = 0;
-       orb->pointer.low = cpu_to_be32(orb->request_bus);
+       orb_pointer.high = 0;
+       orb_pointer.low = cpu_to_be32(orb->request_bus);
 
        spin_lock_irqsave(&device->card->lock, flags);
        list_add_tail(&orb->link, &lu->orb_list);
@@ -504,7 +504,7 @@ static void sbp2_send_orb(struct sbp2_orb *orb, struct sbp2_logical_unit *lu,
 
        fw_send_request(device->card, &orb->t, TCODE_WRITE_BLOCK_REQUEST,
                        node_id, generation, device->max_speed, offset,
-                       &orb->pointer, 8, complete_transaction, orb);
+                       &orb_pointer, 8, complete_transaction, orb);
 }
 
 static int sbp2_cancel_orbs(struct sbp2_logical_unit *lu)
@@ -826,8 +826,6 @@ static void sbp2_target_put(struct sbp2_target *tgt)
        kref_put(&tgt->kref, sbp2_release_target);
 }
 
-static struct workqueue_struct *sbp2_wq;
-
 /*
  * Always get the target's kref when scheduling work on one its units.
  * Each workqueue job is responsible to call sbp2_target_put() upon return.
@@ -835,7 +833,7 @@ static struct workqueue_struct *sbp2_wq;
 static void sbp2_queue_work(struct sbp2_logical_unit *lu, unsigned long delay)
 {
        sbp2_target_get(lu->tgt);
-       if (!queue_delayed_work(sbp2_wq, &lu->work, delay))
+       if (!queue_delayed_work(fw_workqueue, &lu->work, delay))
                sbp2_target_put(lu->tgt);
 }
 
@@ -1645,17 +1643,12 @@ MODULE_ALIAS("sbp2");
 
 static int __init sbp2_init(void)
 {
-       sbp2_wq = create_singlethread_workqueue(KBUILD_MODNAME);
-       if (!sbp2_wq)
-               return -ENOMEM;
-
        return driver_register(&sbp2_driver.driver);
 }
 
 static void __exit sbp2_cleanup(void)
 {
        driver_unregister(&sbp2_driver.driver);
-       destroy_workqueue(sbp2_wq);
 }
 
 module_init(sbp2_init);