Merge branch 'exec_rm_compat' of git://git.kernel.org/pub/scm/linux/kernel/git/oleg...
[pandora-kernel.git] / drivers / firewire / core-iso.c
index 481056d..57c3973 100644 (file)
@@ -185,6 +185,12 @@ int fw_iso_context_queue(struct fw_iso_context *ctx,
 }
 EXPORT_SYMBOL(fw_iso_context_queue);
 
+void fw_iso_context_queue_flush(struct fw_iso_context *ctx)
+{
+       ctx->card->driver->flush_queue_iso(ctx);
+}
+EXPORT_SYMBOL(fw_iso_context_queue_flush);
+
 int fw_iso_context_stop(struct fw_iso_context *ctx)
 {
        return ctx->card->driver->stop_iso(ctx);
@@ -196,9 +202,10 @@ EXPORT_SYMBOL(fw_iso_context_stop);
  */
 
 static int manage_bandwidth(struct fw_card *card, int irm_id, int generation,
-                           int bandwidth, bool allocate, __be32 data[2])
+                           int bandwidth, bool allocate)
 {
        int try, new, old = allocate ? BANDWIDTH_AVAILABLE_INITIAL : 0;
+       __be32 data[2];
 
        /*
         * On a 1394a IRM with low contention, try < 1 is enough.
@@ -233,9 +240,10 @@ static int manage_bandwidth(struct fw_card *card, int irm_id, int generation,
 }
 
 static int manage_channel(struct fw_card *card, int irm_id, int generation,
-               u32 channels_mask, u64 offset, bool allocate, __be32 data[2])
+               u32 channels_mask, u64 offset, bool allocate)
 {
        __be32 bit, all, old;
+       __be32 data[2];
        int channel, ret = -EIO, retry = 5;
 
        old = all = allocate ? cpu_to_be32(~0) : 0;
@@ -284,7 +292,7 @@ static int manage_channel(struct fw_card *card, int irm_id, int generation,
 }
 
 static void deallocate_channel(struct fw_card *card, int irm_id,
-                              int generation, int channel, __be32 buffer[2])
+                              int generation, int channel)
 {
        u32 mask;
        u64 offset;
@@ -293,7 +301,7 @@ static void deallocate_channel(struct fw_card *card, int irm_id,
        offset = channel < 32 ? CSR_REGISTER_BASE + CSR_CHANNELS_AVAILABLE_HI :
                                CSR_REGISTER_BASE + CSR_CHANNELS_AVAILABLE_LO;
 
-       manage_channel(card, irm_id, generation, mask, offset, false, buffer);
+       manage_channel(card, irm_id, generation, mask, offset, false);
 }
 
 /**
@@ -322,7 +330,7 @@ static void deallocate_channel(struct fw_card *card, int irm_id,
  */
 void fw_iso_resource_manage(struct fw_card *card, int generation,
                            u64 channels_mask, int *channel, int *bandwidth,
-                           bool allocate, __be32 buffer[2])
+                           bool allocate)
 {
        u32 channels_hi = channels_mask;        /* channels 31...0 */
        u32 channels_lo = channels_mask >> 32;  /* channels 63...32 */
@@ -335,11 +343,11 @@ void fw_iso_resource_manage(struct fw_card *card, int generation,
        if (channels_hi)
                c = manage_channel(card, irm_id, generation, channels_hi,
                                CSR_REGISTER_BASE + CSR_CHANNELS_AVAILABLE_HI,
-                               allocate, buffer);
+                               allocate);
        if (channels_lo && c < 0) {
                c = manage_channel(card, irm_id, generation, channels_lo,
                                CSR_REGISTER_BASE + CSR_CHANNELS_AVAILABLE_LO,
-                               allocate, buffer);
+                               allocate);
                if (c >= 0)
                        c += 32;
        }
@@ -351,14 +359,13 @@ void fw_iso_resource_manage(struct fw_card *card, int generation,
        if (*bandwidth == 0)
                return;
 
-       ret = manage_bandwidth(card, irm_id, generation, *bandwidth,
-                              allocate, buffer);
+       ret = manage_bandwidth(card, irm_id, generation, *bandwidth, allocate);
        if (ret < 0)
                *bandwidth = 0;
 
        if (allocate && ret < 0) {
                if (c >= 0)
-                       deallocate_channel(card, irm_id, generation, c, buffer);
+                       deallocate_channel(card, irm_id, generation, c);
                *channel = ret;
        }
 }