diff options
Diffstat (limited to 'drivers/firewire/fw-ohci.c')
-rw-r--r-- | drivers/firewire/fw-ohci.c | 12 |
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 | ||
1252 | static int | 1252 | static int |
1253 | ohci_queue_iso(struct fw_iso_context *base, | 1253 | ohci_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 | } |