diff options
Diffstat (limited to 'drivers/firewire/fw-transaction.c')
-rw-r--r-- | drivers/firewire/fw-transaction.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c index 76938fe432a0..e3da58991960 100644 --- a/drivers/firewire/fw-transaction.c +++ b/drivers/firewire/fw-transaction.c | |||
@@ -37,6 +37,10 @@ | |||
37 | #include "fw-topology.h" | 37 | #include "fw-topology.h" |
38 | #include "fw-device.h" | 38 | #include "fw-device.h" |
39 | 39 | ||
40 | #define HEADER_TAG(tag) ((tag) << 14) | ||
41 | #define HEADER_CHANNEL(ch) ((ch) << 8) | ||
42 | #define HEADER_SY(sy) ((sy) << 0) | ||
43 | |||
40 | #define HEADER_PRI(pri) ((pri) << 0) | 44 | #define HEADER_PRI(pri) ((pri) << 0) |
41 | #define HEADER_TCODE(tcode) ((tcode) << 4) | 45 | #define HEADER_TCODE(tcode) ((tcode) << 4) |
42 | #define HEADER_RETRY(retry) ((retry) << 8) | 46 | #define HEADER_RETRY(retry) ((retry) << 8) |
@@ -293,6 +297,27 @@ void fw_send_request(struct fw_card *card, struct fw_transaction *t, int tcode, | |||
293 | } | 297 | } |
294 | EXPORT_SYMBOL(fw_send_request); | 298 | EXPORT_SYMBOL(fw_send_request); |
295 | 299 | ||
300 | void fw_send_stream_packet(struct fw_card *card, struct fw_packet *p, | ||
301 | int generation, int speed, int channel, int sy, int tag, | ||
302 | void *payload, size_t length, fw_packet_callback_t callback) | ||
303 | { | ||
304 | p->callback = callback; | ||
305 | p->header[0] = | ||
306 | HEADER_DATA_LENGTH(length) | ||
307 | | HEADER_TAG(tag) | ||
308 | | HEADER_CHANNEL(channel) | ||
309 | | HEADER_TCODE(TCODE_STREAM_DATA) | ||
310 | | HEADER_SY(sy); | ||
311 | p->header_length = 4; | ||
312 | p->payload = payload; | ||
313 | p->payload_length = length; | ||
314 | p->speed = speed; | ||
315 | p->generation = generation; | ||
316 | p->ack = 0; | ||
317 | |||
318 | card->driver->send_request(card, p); | ||
319 | } | ||
320 | |||
296 | struct transaction_callback_data { | 321 | struct transaction_callback_data { |
297 | struct completion done; | 322 | struct completion done; |
298 | void *payload; | 323 | void *payload; |