Merge branch 'fix/asoc' into for-linus
[cascardo/linux.git] / drivers / firewire / core-card.c
index 3c44fbc..29d2423 100644 (file)
@@ -228,8 +228,8 @@ void fw_schedule_bus_reset(struct fw_card *card, bool delayed, bool short_reset)
 
        /* Use an arbitrary short delay to combine multiple reset requests. */
        fw_card_get(card);
-       if (!schedule_delayed_work(&card->br_work,
-                                  delayed ? DIV_ROUND_UP(HZ, 100) : 0))
+       if (!queue_delayed_work(fw_workqueue, &card->br_work,
+                               delayed ? DIV_ROUND_UP(HZ, 100) : 0))
                fw_card_put(card);
 }
 EXPORT_SYMBOL(fw_schedule_bus_reset);
@@ -241,7 +241,7 @@ static void br_work(struct work_struct *work)
        /* Delay for 2s after last reset per IEEE 1394 clause 8.2.1. */
        if (card->reset_jiffies != 0 &&
            time_before64(get_jiffies_64(), card->reset_jiffies + 2 * HZ)) {
-               if (!schedule_delayed_work(&card->br_work, 2 * HZ))
+               if (!queue_delayed_work(fw_workqueue, &card->br_work, 2 * HZ))
                        fw_card_put(card);
                return;
        }
@@ -258,8 +258,7 @@ static void allocate_broadcast_channel(struct fw_card *card, int generation)
 
        if (!card->broadcast_channel_allocated) {
                fw_iso_resource_manage(card, generation, 1ULL << 31,
-                                      &channel, &bandwidth, true,
-                                      card->bm_transaction_data);
+                                      &channel, &bandwidth, true);
                if (channel != 31) {
                        fw_notify("failed to allocate broadcast channel\n");
                        return;
@@ -294,6 +293,7 @@ static void bm_work(struct work_struct *work)
        bool root_device_is_cmc;
        bool irm_is_1394_1995_only;
        bool keep_this_irm;
+       __be32 transaction_data[2];
 
        spin_lock_irq(&card->lock);
 
@@ -355,21 +355,21 @@ static void bm_work(struct work_struct *work)
                        goto pick_me;
                }
 
-               card->bm_transaction_data[0] = cpu_to_be32(0x3f);
-               card->bm_transaction_data[1] = cpu_to_be32(local_id);
+               transaction_data[0] = cpu_to_be32(0x3f);
+               transaction_data[1] = cpu_to_be32(local_id);
 
                spin_unlock_irq(&card->lock);
 
                rcode = fw_run_transaction(card, TCODE_LOCK_COMPARE_SWAP,
                                irm_id, generation, SCODE_100,
                                CSR_REGISTER_BASE + CSR_BUS_MANAGER_ID,
-                               card->bm_transaction_data, 8);
+                               transaction_data, 8);
 
                if (rcode == RCODE_GENERATION)
                        /* Another bus reset, BM work has been rescheduled. */
                        goto out;
 
-               bm_id = be32_to_cpu(card->bm_transaction_data[0]);
+               bm_id = be32_to_cpu(transaction_data[0]);
 
                spin_lock_irq(&card->lock);
                if (rcode == RCODE_COMPLETE && generation == card->generation)
@@ -490,11 +490,11 @@ static void bm_work(struct work_struct *work)
                /*
                 * Make sure that the cycle master sends cycle start packets.
                 */
-               card->bm_transaction_data[0] = cpu_to_be32(CSR_STATE_BIT_CMSTR);
+               transaction_data[0] = cpu_to_be32(CSR_STATE_BIT_CMSTR);
                rcode = fw_run_transaction(card, TCODE_WRITE_QUADLET_REQUEST,
                                root_id, generation, SCODE_100,
                                CSR_REGISTER_BASE + CSR_STATE_SET,
-                               card->bm_transaction_data, 4);
+                               transaction_data, 4);
                if (rcode == RCODE_GENERATION)
                        goto out;
        }
@@ -630,6 +630,10 @@ static int dummy_queue_iso(struct fw_iso_context *ctx, struct fw_iso_packet *p,
        return -ENODEV;
 }
 
+static void dummy_flush_queue_iso(struct fw_iso_context *ctx)
+{
+}
+
 static const struct fw_card_driver dummy_driver_template = {
        .read_phy_reg           = dummy_read_phy_reg,
        .update_phy_reg         = dummy_update_phy_reg,
@@ -641,6 +645,7 @@ static const struct fw_card_driver dummy_driver_template = {
        .start_iso              = dummy_start_iso,
        .set_iso_channels       = dummy_set_iso_channels,
        .queue_iso              = dummy_queue_iso,
+       .flush_queue_iso        = dummy_flush_queue_iso,
 };
 
 void fw_card_release(struct kref *kref)