diff options
Diffstat (limited to 'include/linux/firewire-cdev.h')
-rw-r--r-- | include/linux/firewire-cdev.h | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/include/linux/firewire-cdev.h b/include/linux/firewire-cdev.h index 357dbfc2829e..d50036953497 100644 --- a/include/linux/firewire-cdev.h +++ b/include/linux/firewire-cdev.h | |||
@@ -207,12 +207,16 @@ struct fw_cdev_event_request2 { | |||
207 | * @closure: See &fw_cdev_event_common; | 207 | * @closure: See &fw_cdev_event_common; |
208 | * set by %FW_CDEV_CREATE_ISO_CONTEXT ioctl | 208 | * set by %FW_CDEV_CREATE_ISO_CONTEXT ioctl |
209 | * @type: See &fw_cdev_event_common; always %FW_CDEV_EVENT_ISO_INTERRUPT | 209 | * @type: See &fw_cdev_event_common; always %FW_CDEV_EVENT_ISO_INTERRUPT |
210 | * @cycle: Cycle counter of the interrupt packet | 210 | * @cycle: Cycle counter of the last completed packet |
211 | * @header_length: Total length of following headers, in bytes | 211 | * @header_length: Total length of following headers, in bytes |
212 | * @header: Stripped headers, if any | 212 | * @header: Stripped headers, if any |
213 | * | 213 | * |
214 | * This event is sent when the controller has completed an &fw_cdev_iso_packet | 214 | * This event is sent when the controller has completed an &fw_cdev_iso_packet |
215 | * with the %FW_CDEV_ISO_INTERRUPT bit set. | 215 | * with the %FW_CDEV_ISO_INTERRUPT bit set, when explicitly requested with |
216 | * %FW_CDEV_IOC_FLUSH_ISO, or when there have been so many completed packets | ||
217 | * without the interrupt bit set that the kernel's internal buffer for @header | ||
218 | * is about to overflow. (In the last case, kernels with ABI version < 5 drop | ||
219 | * header data up to the next interrupt packet.) | ||
216 | * | 220 | * |
217 | * Isochronous transmit events (context type %FW_CDEV_ISO_CONTEXT_TRANSMIT): | 221 | * Isochronous transmit events (context type %FW_CDEV_ISO_CONTEXT_TRANSMIT): |
218 | * | 222 | * |
@@ -267,9 +271,9 @@ struct fw_cdev_event_iso_interrupt { | |||
267 | * | 271 | * |
268 | * This event is sent in multichannel contexts (context type | 272 | * This event is sent in multichannel contexts (context type |
269 | * %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL) for &fw_cdev_iso_packet buffer | 273 | * %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL) for &fw_cdev_iso_packet buffer |
270 | * chunks that have the %FW_CDEV_ISO_INTERRUPT bit set. Whether this happens | 274 | * chunks that have been completely filled and that have the |
271 | * when a packet is completed and/or when a buffer chunk is completed depends | 275 | * %FW_CDEV_ISO_INTERRUPT bit set, or when explicitly requested with |
272 | * on the hardware implementation. | 276 | * %FW_CDEV_IOC_FLUSH_ISO. |
273 | * | 277 | * |
274 | * The buffer is continuously filled with the following data, per packet: | 278 | * The buffer is continuously filled with the following data, per packet: |
275 | * - the 1394 iso packet header as described at &fw_cdev_event_iso_interrupt, | 279 | * - the 1394 iso packet header as described at &fw_cdev_event_iso_interrupt, |
@@ -419,6 +423,9 @@ union fw_cdev_event { | |||
419 | #define FW_CDEV_IOC_RECEIVE_PHY_PACKETS _IOW('#', 0x16, struct fw_cdev_receive_phy_packets) | 423 | #define FW_CDEV_IOC_RECEIVE_PHY_PACKETS _IOW('#', 0x16, struct fw_cdev_receive_phy_packets) |
420 | #define FW_CDEV_IOC_SET_ISO_CHANNELS _IOW('#', 0x17, struct fw_cdev_set_iso_channels) | 424 | #define FW_CDEV_IOC_SET_ISO_CHANNELS _IOW('#', 0x17, struct fw_cdev_set_iso_channels) |
421 | 425 | ||
426 | /* available since kernel version 3.4 */ | ||
427 | #define FW_CDEV_IOC_FLUSH_ISO _IOW('#', 0x18, struct fw_cdev_flush_iso) | ||
428 | |||
422 | /* | 429 | /* |
423 | * ABI version history | 430 | * ABI version history |
424 | * 1 (2.6.22) - initial version | 431 | * 1 (2.6.22) - initial version |
@@ -441,6 +448,9 @@ union fw_cdev_event { | |||
441 | * - added %FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL, | 448 | * - added %FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL, |
442 | * %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL, and | 449 | * %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL, and |
443 | * %FW_CDEV_IOC_SET_ISO_CHANNELS | 450 | * %FW_CDEV_IOC_SET_ISO_CHANNELS |
451 | * 5 (3.4) - send %FW_CDEV_EVENT_ISO_INTERRUPT events when needed to | ||
452 | * avoid dropping data | ||
453 | * - added %FW_CDEV_IOC_FLUSH_ISO | ||
444 | */ | 454 | */ |
445 | 455 | ||
446 | /** | 456 | /** |
@@ -851,6 +861,25 @@ struct fw_cdev_stop_iso { | |||
851 | }; | 861 | }; |
852 | 862 | ||
853 | /** | 863 | /** |
864 | * struct fw_cdev_flush_iso - flush completed iso packets | ||
865 | * @handle: handle of isochronous context to flush | ||
866 | * | ||
867 | * For %FW_CDEV_ISO_CONTEXT_TRANSMIT or %FW_CDEV_ISO_CONTEXT_RECEIVE contexts, | ||
868 | * report any completed packets. | ||
869 | * | ||
870 | * For %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL contexts, report the current | ||
871 | * offset in the receive buffer, if it has changed; this is typically in the | ||
872 | * middle of some buffer chunk. | ||
873 | * | ||
874 | * Any %FW_CDEV_EVENT_ISO_INTERRUPT or %FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL | ||
875 | * events generated by this ioctl are sent synchronously, i.e., are available | ||
876 | * for reading from the file descriptor when this ioctl returns. | ||
877 | */ | ||
878 | struct fw_cdev_flush_iso { | ||
879 | __u32 handle; | ||
880 | }; | ||
881 | |||
882 | /** | ||
854 | * struct fw_cdev_get_cycle_timer - read cycle timer register | 883 | * struct fw_cdev_get_cycle_timer - read cycle timer register |
855 | * @local_time: system time, in microseconds since the Epoch | 884 | * @local_time: system time, in microseconds since the Epoch |
856 | * @cycle_timer: Cycle Time register contents | 885 | * @cycle_timer: Cycle Time register contents |