aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire/fw-ohci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/firewire/fw-ohci.c')
-rw-r--r--drivers/firewire/fw-ohci.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c
index 72f80361fc43..8499d70bf9ee 100644
--- a/drivers/firewire/fw-ohci.c
+++ b/drivers/firewire/fw-ohci.c
@@ -1251,14 +1251,16 @@ static void ohci_free_iso_context(struct fw_iso_context *base)
1251 1251
1252static int 1252static int
1253ohci_queue_iso(struct fw_iso_context *base, 1253ohci_queue_iso(struct fw_iso_context *base,
1254 struct fw_iso_packet *packet, void *payload) 1254 struct fw_iso_packet *packet,
1255 struct fw_iso_buffer *buffer,
1256 unsigned long payload)
1255{ 1257{
1256 struct iso_context *ctx = (struct iso_context *)base; 1258 struct iso_context *ctx = (struct iso_context *)base;
1257 struct fw_ohci *ohci = fw_ohci(ctx->base.card); 1259 struct fw_ohci *ohci = fw_ohci(ctx->base.card);
1258 struct descriptor *d, *end, *last, *tail, *pd; 1260 struct descriptor *d, *end, *last, *tail, *pd;
1259 struct fw_iso_packet *p; 1261 struct fw_iso_packet *p;
1260 __le32 *header; 1262 __le32 *header;
1261 dma_addr_t d_bus; 1263 dma_addr_t d_bus, page_bus;
1262 u32 z, header_z, payload_z, irq; 1264 u32 z, header_z, payload_z, irq;
1263 u32 payload_index, payload_end_index, next_page_index; 1265 u32 payload_index, payload_end_index, next_page_index;
1264 int index, page, end_page, i, length, offset; 1266 int index, page, end_page, i, length, offset;
@@ -1267,7 +1269,7 @@ ohci_queue_iso(struct fw_iso_context *base,
1267 * packet, retransmit or terminate.. */ 1269 * packet, retransmit or terminate.. */
1268 1270
1269 p = packet; 1271 p = packet;
1270 payload_index = payload - ctx->base.buffer; 1272 payload_index = payload;
1271 d = ctx->head_descriptor; 1273 d = ctx->head_descriptor;
1272 tail = ctx->tail_descriptor; 1274 tail = ctx->tail_descriptor;
1273 end = ctx->buffer + ISO_BUFFER_SIZE / sizeof(struct descriptor); 1275 end = ctx->buffer + ISO_BUFFER_SIZE / sizeof(struct descriptor);
@@ -1337,7 +1339,9 @@ ohci_queue_iso(struct fw_iso_context *base,
1337 length = 1339 length =
1338 min(next_page_index, payload_end_index) - payload_index; 1340 min(next_page_index, payload_end_index) - payload_index;
1339 pd[i].req_count = cpu_to_le16(length); 1341 pd[i].req_count = cpu_to_le16(length);
1340 pd[i].data_address = cpu_to_le32(ctx->base.pages[page] + offset); 1342
1343 page_bus = page_private(buffer->pages[page]);
1344 pd[i].data_address = cpu_to_le32(page_bus + offset);
1341 1345
1342 payload_index += length; 1346 payload_index += length;
1343 } 1347 }