sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget'/translations/zh_CN/driver-api/firewiremodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/driver-api/firewiremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/driver-api/firewiremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/driver-api/firewiremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/driver-api/firewiremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/driver-api/firewiremodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h+Firewire (IEEE 1394) driver Interface Guideh]h+Firewire (IEEE 1394) driver Interface Guide}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhA/var/lib/git/docbuild/linux/Documentation/driver-api/firewire.rsthKubh)}(hhh](h)}(hIntroduction and Overviewh]hIntroduction and Overview}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhdefinition_list)}(hhh]hdefinition_list_item)}(hwThe Linux FireWire subsystem adds some interfaces into the Linux system to use/maintain+any resource on IEEE 1394 bus. h](hterm)}(hJThe Linux FireWire subsystem adds some interfaces into the Linux system toh]hJThe Linux FireWire subsystem adds some interfaces into the Linux system to}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubh definition)}(hhh]h paragraph)}(h+use/maintain+any resource on IEEE 1394 bus.h]h+use/maintain+any resource on IEEE 1394 bus.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hThe main purpose of these interfaces is to access address space on each node on IEEE 1394 bus by ISO/IEC 13213 (IEEE 1212) procedure, and to control isochronous resources on the bus by IEEE 1394 procedure.h]hThe main purpose of these interfaces is to access address space on each node on IEEE 1394 bus by ISO/IEC 13213 (IEEE 1212) procedure, and to control isochronous resources on the bus by IEEE 1394 procedure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hTwo types of interfaces are added, according to consumers of the interface. A set of userspace interfaces is available via `firewire character devices`. A set of kernel interfaces is available via exported symbols in `firewire-core` module.h](h{Two types of interfaces are added, according to consumers of the interface. A set of userspace interfaces is available via }(hjhhhNhNubhtitle_reference)}(h`firewire character devices`h]hfirewire character devices}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhB. A set of kernel interfaces is available via exported symbols in }(hjhhhNhNubj!)}(h`firewire-core`h]h firewire-core}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh module.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]introduction-and-overviewah ]h"]introduction and overviewah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h$Firewire char device data structuresh]h$Firewire char device data structures}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThhhhhKubh literal_block)}(hXWhat: /dev/fw[0-9]+ Date: May 2007 KernelVersion: 2.6.22 Contact: linux1394-devel@lists.sourceforge.net Description: The character device files /dev/fw* are the interface between firewire-core and IEEE 1394 device drivers implemented in userspace. The ioctl(2)- and read(2)-based ABI is defined and documented in . This ABI offers most of the features which firewire-core also exposes to kernelspace IEEE 1394 drivers. Each /dev/fw* is associated with one IEEE 1394 node, which can be remote or local nodes. Operations on a /dev/fw* file have different scope: - The 1394 node which is associated with the file: - Asynchronous request transmission - Get the Configuration ROM - Query node ID - Query maximum speed of the path between this node and local node - The 1394 bus (i.e. "card") to which the node is attached to: - Isochronous stream transmission and reception - Asynchronous stream transmission and reception - Asynchronous broadcast request transmission - PHY packet transmission and reception - Allocate, reallocate, deallocate isochronous resources (channels, bandwidth) at the bus's IRM - Query node IDs of local node, root node, IRM, bus manager - Query cycle time - Bus reset initiation, bus reset event reception - All 1394 buses: - Allocation of IEEE 1212 address ranges on the local link layers, reception of inbound requests to such an address range, asynchronous response transmission to inbound requests - Addition of descriptors or directories to the local nodes' Configuration ROM Due to the different scope of operations and in order to let userland implement different access permission models, some operations are restricted to /dev/fw* files that are associated with a local node: - Addition of descriptors or directories to the local nodes' Configuration ROM - PHY packet transmission and reception A /dev/fw* file remains associated with one particular node during its entire life time. Bus topology changes, and hence node ID changes, are tracked by firewire-core. ABI users do not need to be aware of topology. The following file operations are supported: open(2) Currently the only useful flags are O_RDWR. ioctl(2) Initiate various actions. Some take immediate effect, others are performed asynchronously while or after the ioctl returns. See the inline documentation in for descriptions of all ioctls. poll(2), select(2), epoll_wait(2) etc. Watch for events to become available to be read. read(2) Receive various events. There are solicited events like outbound asynchronous transaction completion or isochronous buffer completion, and unsolicited events such as bus resets, request reception, or PHY packet reception. Always use a read buffer which is large enough to receive the largest event that could ever arrive. See for descriptions of all event types and for which ioctls affect reception of events. mmap(2) Allocate a DMA buffer for isochronous reception or transmission and map it into the process address space. The arguments should be used as follows: addr = NULL, length = the desired buffer size, i.e. number of packets times size of largest packet, prot = at least PROT_READ for reception and at least PROT_WRITE for transmission, flags = MAP_SHARED, fd = the handle to the /dev/fw*, offset = 0. Isochronous reception works in packet-per-buffer fashion except for multichannel reception which works in buffer-fill mode. munmap(2) Unmap the isochronous I/O buffer from the process address space. close(2) Besides stopping and freeing I/O contexts that were associated with the file descriptor, back out any changes to the local nodes' Configuration ROM. Deallocate isochronous channels and bandwidth at the IRM that were marked for kernel-assisted re- and deallocation. Users: libraw1394; libdc1394; libhinawa; tools like linux-firewire-utils, fwhack, ... h]hXWhat: /dev/fw[0-9]+ Date: May 2007 KernelVersion: 2.6.22 Contact: linux1394-devel@lists.sourceforge.net Description: The character device files /dev/fw* are the interface between firewire-core and IEEE 1394 device drivers implemented in userspace. The ioctl(2)- and read(2)-based ABI is defined and documented in . This ABI offers most of the features which firewire-core also exposes to kernelspace IEEE 1394 drivers. Each /dev/fw* is associated with one IEEE 1394 node, which can be remote or local nodes. Operations on a /dev/fw* file have different scope: - The 1394 node which is associated with the file: - Asynchronous request transmission - Get the Configuration ROM - Query node ID - Query maximum speed of the path between this node and local node - The 1394 bus (i.e. "card") to which the node is attached to: - Isochronous stream transmission and reception - Asynchronous stream transmission and reception - Asynchronous broadcast request transmission - PHY packet transmission and reception - Allocate, reallocate, deallocate isochronous resources (channels, bandwidth) at the bus's IRM - Query node IDs of local node, root node, IRM, bus manager - Query cycle time - Bus reset initiation, bus reset event reception - All 1394 buses: - Allocation of IEEE 1212 address ranges on the local link layers, reception of inbound requests to such an address range, asynchronous response transmission to inbound requests - Addition of descriptors or directories to the local nodes' Configuration ROM Due to the different scope of operations and in order to let userland implement different access permission models, some operations are restricted to /dev/fw* files that are associated with a local node: - Addition of descriptors or directories to the local nodes' Configuration ROM - PHY packet transmission and reception A /dev/fw* file remains associated with one particular node during its entire life time. Bus topology changes, and hence node ID changes, are tracked by firewire-core. ABI users do not need to be aware of topology. The following file operations are supported: open(2) Currently the only useful flags are O_RDWR. ioctl(2) Initiate various actions. Some take immediate effect, others are performed asynchronously while or after the ioctl returns. See the inline documentation in for descriptions of all ioctls. poll(2), select(2), epoll_wait(2) etc. Watch for events to become available to be read. read(2) Receive various events. There are solicited events like outbound asynchronous transaction completion or isochronous buffer completion, and unsolicited events such as bus resets, request reception, or PHY packet reception. Always use a read buffer which is large enough to receive the largest event that could ever arrive. See for descriptions of all event types and for which ioctls affect reception of events. mmap(2) Allocate a DMA buffer for isochronous reception or transmission and map it into the process address space. The arguments should be used as follows: addr = NULL, length = the desired buffer size, i.e. number of packets times size of largest packet, prot = at least PROT_READ for reception and at least PROT_WRITE for transmission, flags = MAP_SHARED, fd = the handle to the /dev/fw*, offset = 0. Isochronous reception works in packet-per-buffer fashion except for multichannel reception which works in buffer-fill mode. munmap(2) Unmap the isochronous I/O buffer from the process address space. close(2) Besides stopping and freeing I/O contexts that were associated with the file descriptor, back out any changes to the local nodes' Configuration ROM. Deallocate isochronous channels and bandwidth at the IRM that were marked for kernel-assisted re- and deallocation. Users: libraw1394; libdc1394; libhinawa; tools like linux-firewire-utils, fwhack, ... }hjgsbah}(h]h ]h"]h$]h&]source&Documentation/ABI/stable/firewire-cdev xml:spacepreserveuh1jehKhjThhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlefw_cdev_event_common (C struct)c.fw_cdev_event_commonhNtauh1jyhjThhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhNubhdesc)}(hhh](hdesc_signature)}(hfw_cdev_event_commonh]hdesc_signature_line)}(hstruct fw_cdev_event_commonh](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKubh desc_name)}(hfw_cdev_event_commonh]h desc_sig_name)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]jwjxuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jwjx add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h)}(h(Common part of all fw_cdev_event_* typesh]h(Common part of all fw_cdev_event_* types}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK8hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhjThjhNubh container)}(h**Definition**:: struct fw_cdev_event_common { __u64 closure; __u32 type; }; **Members** ``closure`` For arbitrary use by userspace ``type`` Discriminates the fw_cdev_event_* typesh](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK>hjubh)}(h **Members**h]j$)}(hjOh]hMembers}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjMubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKChjubh)}(hhh](h)}(h+``closure`` For arbitrary use by userspace h](h)}(h ``closure``h]hliteral)}(hjnh]hclosure}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjlubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK:hjhubh)}(hhh]h)}(hFor arbitrary use by userspaceh]hFor arbitrary use by userspace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK:hjubah}(h]h ]h"]h$]h&]uh1hhjhubeh}(h]h ]h"]h$]h&]uh1hhjhK:hjeubh)}(h0``type`` Discriminates the fw_cdev_event_* typesh](h)}(h``type``h]jq)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK:hjubh)}(hhh]h)}(h'Discriminates the fw_cdev_event_* typesh]h'Discriminates the fw_cdev_event_* types}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK;hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhK:hjeubeh}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK>hjThhubh)}(hoThis struct may be used to access generic members of all fw_cdev_event_* types regardless of the specific type.h]hoThis struct may be used to access generic members of all fw_cdev_event_* types regardless of the specific type.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKjj>jjjuh1jhhhjThjhNubj)}(hXG**Definition**:: struct fw_cdev_event_response { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 data[]; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_REQUEST`` or ``FW_CDEV_IOC_SEND_BROADCAST_REQUEST`` or ``FW_CDEV_IOC_SEND_STREAM_PACKET`` ioctl ``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_RESPONSE`` ``rcode`` Response code returned by the remote node ``length`` Data length, i.e. the response's payload size in bytes ``data`` Payload data, if anyh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjFubh:}(hjFhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKkhjBubjf)}(hzstruct fw_cdev_event_response { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 data[]; };h]hzstruct fw_cdev_event_response { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 data[]; };}hjcsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKmhjBubh)}(h **Members**h]j$)}(hjth]hMembers}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjrubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKuhjBubh)}(hhh](h)}(h``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_REQUEST`` or ``FW_CDEV_IOC_SEND_BROADCAST_REQUEST`` or ``FW_CDEV_IOC_SEND_STREAM_PACKET`` ioctl h](h)}(h ``closure``h]jq)}(hjh]hclosure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKkhjubh)}(hhh]h)}(hSee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_REQUEST`` or ``FW_CDEV_IOC_SEND_BROADCAST_REQUEST`` or ``FW_CDEV_IOC_SEND_STREAM_PACKET`` ioctlh](hSee }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKihjubh ; set by }(hjhhhNhNubjq)}(h``FW_CDEV_IOC_SEND_REQUEST``h]hFW_CDEV_IOC_SEND_REQUEST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh or }(hjhhhNhNubjq)}(h&``FW_CDEV_IOC_SEND_BROADCAST_REQUEST``h]h"FW_CDEV_IOC_SEND_BROADCAST_REQUEST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh or }hjsbjq)}(h"``FW_CDEV_IOC_SEND_STREAM_PACKET``h]hFW_CDEV_IOC_SEND_STREAM_PACKET}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh ioctl}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKihjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKkhjubh)}(hO``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_RESPONSE`` h](h)}(h``type``h]jq)}(hj&h]htype}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj$ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKlhj ubh)}(hhh]h)}(hESee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_RESPONSE``h](hSee }(hj?hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjIh]hfw_cdev_event_common}(hjKhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjGubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhj;hKlhj?ubh ; always }(hj?hhhNhNubjq)}(h``FW_CDEV_EVENT_RESPONSE``h]hFW_CDEV_EVENT_RESPONSE}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj?ubeh}(h]h ]h"]h$]h&]uh1hhj;hKlhj<ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj;hKlhjubh)}(h4``rcode`` Response code returned by the remote node h](h)}(h ``rcode``h]jq)}(hjh]hrcode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKmhjubh)}(hhh]h)}(h)Response code returned by the remote nodeh]h)Response code returned by the remote node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKmhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKmhjubh)}(hB``length`` Data length, i.e. the response's payload size in bytes h](h)}(h ``length``h]jq)}(hjh]hlength}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKnhjubh)}(hhh]h)}(h6Data length, i.e. the response's payload size in bytesh]h8Data length, i.e. the response’s payload size in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKnhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKnhjubh)}(h``data`` Payload data, if anyh](h)}(h``data``h]jq)}(hj h]hdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKnhjubh)}(hhh]h)}(hPayload data, if anyh]hPayload data, if any}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKohj ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj hKnhjubeh}(h]h ]h"]h$]h&]uh1hhjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjE h]h Description}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjC ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKrhjThhubh)}(hThis event is sent instead of :c:type:`fw_cdev_event_response` if the kernel or the client implements ABI version <= 5. It has the lack of time stamp field comparing to :c:type:`fw_cdev_event_response2`.h](hThis event is sent instead of }(hj[ hhhNhNubh)}(h :c:type:`fw_cdev_event_response`h]jq)}(hje h]hfw_cdev_event_response}(hjg hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjc ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_responseuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKphj[ ubhk if the kernel or the client implements ABI version <= 5. It has the lack of time stamp field comparing to }(hj[ hhhNhNubh)}(h!:c:type:`fw_cdev_event_response2`h]jq)}(hj h]hfw_cdev_event_response2}(hj hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_response2uh1hhj hKphj[ ubh.}(hj[ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKphjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j"fw_cdev_event_response2 (C struct)c.fw_cdev_event_response2hNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_event_response2h]j)}(hstruct fw_cdev_event_response2h](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKvubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKvubj)}(hfw_cdev_event_response2h]j)}(hj h]hfw_cdev_event_response2}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj hhhj hKvubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj hhhj hKvubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hKvhj hhubj)}(hhh]h)}(h(Sent when a response packet was receivedh]h(Sent when a response packet was received}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK|hj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKvubeh}(h]h ](jstructeh"]h$]h&]jjjj# jj# jjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_event_response2 { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 request_tstamp; __u32 response_tstamp; __u32 padding; __u32 data[]; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_REQUEST`` or ``FW_CDEV_IOC_SEND_BROADCAST_REQUEST`` or ``FW_CDEV_IOC_SEND_STREAM_PACKET`` ioctl ``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_RESPONSE`` ``rcode`` Response code returned by the remote node ``length`` Data length, i.e. the response's payload size in bytes ``request_tstamp`` The time stamp of isochronous cycle at which the request was sent. ``response_tstamp`` The time stamp of isochronous cycle at which the response was sent. ``padding`` Padding to keep the size of structure as multiples of 8 in various architectures since 4 byte alignment is used for 8 byte of object type in System V ABI for i386 architecture. ``data`` Payload data, if anyh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj+ ubh:}(hj+ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj' ubjf)}(hstruct fw_cdev_event_response2 { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 request_tstamp; __u32 response_tstamp; __u32 padding; __u32 data[]; };h]hstruct fw_cdev_event_response2 { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 request_tstamp; __u32 response_tstamp; __u32 padding; __u32 data[]; };}hjH sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj' ubh)}(h **Members**h]j$)}(hjY h]hMembers}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjW ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj' ubh)}(hhh](h)}(h``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_REQUEST`` or ``FW_CDEV_IOC_SEND_BROADCAST_REQUEST`` or ``FW_CDEV_IOC_SEND_STREAM_PACKET`` ioctl h](h)}(h ``closure``h]jq)}(hjx h]hclosure}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjv ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjr ubh)}(hhh]h)}(hSee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_REQUEST`` or ``FW_CDEV_IOC_SEND_BROADCAST_REQUEST`` or ``FW_CDEV_IOC_SEND_STREAM_PACKET`` ioctlh](hSee }(hj hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hj h]hfw_cdev_event_common}(hj hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK~hj ubh ; set by }(hj hhhNhNubjq)}(h``FW_CDEV_IOC_SEND_REQUEST``h]hFW_CDEV_IOC_SEND_REQUEST}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubh or }(hj hhhNhNubjq)}(h&``FW_CDEV_IOC_SEND_BROADCAST_REQUEST``h]h"FW_CDEV_IOC_SEND_BROADCAST_REQUEST}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubh or }hj sbjq)}(h"``FW_CDEV_IOC_SEND_STREAM_PACKET``h]hFW_CDEV_IOC_SEND_STREAM_PACKET}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubh ioctl}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK~hj ubah}(h]h ]h"]h$]h&]uh1hhjr ubeh}(h]h ]h"]h$]h&]uh1hhj hKhjo ubh)}(hO``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_RESPONSE`` h](h)}(h``type``h]jq)}(hj h]htype}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj ubh)}(hhh]h)}(hESee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_RESPONSE``h](hSee }(hj$ hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hj. h]hfw_cdev_event_common}(hj0 hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj, ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhj hKhj$ ubh ; always }(hj$ hhhNhNubjq)}(h``FW_CDEV_EVENT_RESPONSE``h]hFW_CDEV_EVENT_RESPONSE}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj$ ubeh}(h]h ]h"]h$]h&]uh1hhj hKhj! ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhjo ubh)}(h4``rcode`` Response code returned by the remote node h](h)}(h ``rcode``h]jq)}(hju h]hrcode}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjs ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjo ubh)}(hhh]h)}(h)Response code returned by the remote nodeh]h)Response code returned by the remote node}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1hhjo ubeh}(h]h ]h"]h$]h&]uh1hhj hKhjo ubh)}(hB``length`` Data length, i.e. the response's payload size in bytes h](h)}(h ``length``h]jq)}(hj h]hlength}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj ubh)}(hhh]h)}(h6Data length, i.e. the response's payload size in bytesh]h8Data length, i.e. the response’s payload size in bytes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhjo ubh)}(hV``request_tstamp`` The time stamp of isochronous cycle at which the request was sent. h](h)}(h``request_tstamp``h]jq)}(hj h]hrequest_tstamp}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj ubh)}(hhh]h)}(hBThe time stamp of isochronous cycle at which the request was sent.h]hBThe time stamp of isochronous cycle at which the request was sent.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhjo ubh)}(hX``response_tstamp`` The time stamp of isochronous cycle at which the response was sent. h](h)}(h``response_tstamp``h]jq)}(hj h]hresponse_tstamp}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj ubh)}(hhh]h)}(hCThe time stamp of isochronous cycle at which the response was sent.h]hCThe time stamp of isochronous cycle at which the response was sent.}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5 hKhj6 ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj5 hKhjo ubh)}(h``padding`` Padding to keep the size of structure as multiples of 8 in various architectures since 4 byte alignment is used for 8 byte of object type in System V ABI for i386 architecture. h](h)}(h ``padding``h]jq)}(hjY h]hpadding}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjW ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjS ubh)}(hhh]h)}(hPadding to keep the size of structure as multiples of 8 in various architectures since 4 byte alignment is used for 8 byte of object type in System V ABI for i386 architecture.h]hPadding to keep the size of structure as multiples of 8 in various architectures since 4 byte alignment is used for 8 byte of object type in System V ABI for i386 architecture.}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjo ubah}(h]h ]h"]h$]h&]uh1hhjS ubeh}(h]h ]h"]h$]h&]uh1hhjn hKhjo ubh)}(h``data`` Payload data, if anyh](h)}(h``data``h]jq)}(hj h]hdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj ubh)}(hhh]h)}(hPayload data, if anyh]hPayload data, if any}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhjo ubeh}(h]h ]h"]h$]h&]uh1hhj' ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjThhubh)}(hXThis event is sent when the stack receives a response to an outgoing request sent by ``FW_CDEV_IOC_SEND_REQUEST`` ioctl. The payload data for responses carrying data (read and lock responses) follows immediately and can be accessed through the **data** field.h](hUThis event is sent when the stack receives a response to an outgoing request sent by }(hj hhhNhNubjq)}(h``FW_CDEV_IOC_SEND_REQUEST``h]hFW_CDEV_IOC_SEND_REQUEST}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubh ioctl. The payload data for responses carrying data (read and lock responses) follows immediately and can be accessed through the }(hj hhhNhNubj$)}(h**data**h]hdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubh field.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjThhubh)}(hXThe event is also generated after conclusions of transactions that do not involve response packets. This includes unified write transactions, broadcast write transactions, and transmission of asynchronous stream packets. **rcode** indicates success or failure of such transmissions.h](hThe event is also generated after conclusions of transactions that do not involve response packets. This includes unified write transactions, broadcast write transactions, and transmission of asynchronous stream packets. }(hj hhhNhNubj$)}(h **rcode**h]hrcode}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubh4 indicates success or failure of such transmissions.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjThhubh)}(hXThe value of **request_tstamp** expresses the isochronous cycle at which the request was sent to initiate the transaction. The value of **response_tstamp** expresses the isochronous cycle at which the response arrived to complete the transaction. Each value is unsigned 16 bit integer containing three low order bits of second field and all 13 bits of cycle field in format of CYCLE_TIMER register.h](h The value of }(hj@ hhhNhNubj$)}(h**request_tstamp**h]hrequest_tstamp}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj@ ubhi expresses the isochronous cycle at which the request was sent to initiate the transaction. The value of }(hj@ hhhNhNubj$)}(h**response_tstamp**h]hresponse_tstamp}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj@ ubh expresses the isochronous cycle at which the response arrived to complete the transaction. Each value is unsigned 16 bit integer containing three low order bits of second field and all 13 bits of cycle field in format of CYCLE_TIMER register.}(hj@ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j fw_cdev_event_request (C struct)c.fw_cdev_event_requesthNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_event_requesth]j)}(hstruct fw_cdev_event_requesth](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKubj)}(hfw_cdev_event_requesth]j)}(hj h]hfw_cdev_event_request}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hKhj hhubj)}(hhh]h)}(h/Old version of :c:type:`fw_cdev_event_request2`h](hOld version of }(hj hhhNhNubh)}(h :c:type:`fw_cdev_event_request2`h]jq)}(hj h]hfw_cdev_event_request2}(hj hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jb)}je]j` ASTIdentifier)} identifierj sbc.fw_cdev_event_requestasbjgfw_cdev_event_request2uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj ubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_event_request { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 handle; __u32 length; __u32 data[]; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctl ``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST`` ``tcode`` Transaction code of the incoming request ``offset`` The offset into the 48-bit per-node address space ``handle`` Reference to the kernel-side pending request ``length`` Data length, i.e. the request's payload size in bytes ``data`` Incoming data, if anyh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubjf)}(hstruct fw_cdev_event_request { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 handle; __u32 length; __u32 data[]; };h]hstruct fw_cdev_event_request { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 handle; __u32 length; __u32 data[]; };}hj5sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(h **Members**h]j$)}(hjFh]hMembers}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjDubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh](h)}(hV``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctl h](h)}(h ``closure``h]jq)}(hjeh]hclosure}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jphjcubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj_ubh)}(hhh]h)}(hISee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctlh](hSee }(hj~hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhjzhKhj~ubh ; set by }(hj~hhhNhNubjq)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj~ubh ioctl}(hj~hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjzhKhj{ubah}(h]h ]h"]h$]h&]uh1hhj_ubeh}(h]h ]h"]h$]h&]uh1hhjzhKhj\ubh)}(hN``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST`` h](h)}(h``type``h]jq)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(hDSee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST``h](hSee }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhjhKhjubh ; always }(hjhhhNhNubjq)}(h``FW_CDEV_EVENT_REQUEST``h]hFW_CDEV_EVENT_REQUEST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhj\ubh)}(h3``tcode`` Transaction code of the incoming request h](h)}(h ``tcode``h]jq)}(hj=h]htcode}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj;ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj7ubh)}(hhh]h)}(h(Transaction code of the incoming requesth]h(Transaction code of the incoming request}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKhjSubah}(h]h ]h"]h$]h&]uh1hhj7ubeh}(h]h ]h"]h$]h&]uh1hhjRhKhj\ubh)}(h=``offset`` The offset into the 48-bit per-node address space h](h)}(h ``offset``h]jq)}(hjvh]hoffset}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjtubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjpubh)}(hhh]h)}(h1The offset into the 48-bit per-node address spaceh]h1The offset into the 48-bit per-node address space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjpubeh}(h]h ]h"]h$]h&]uh1hhjhKhj\ubh)}(h8``handle`` Reference to the kernel-side pending request h](h)}(h ``handle``h]jq)}(hjh]hhandle}(hjhhhNhNubah}(h]h 0]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h,Reference to the kernel-side pending requesth]h,Reference to the kernel-side pending request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhj\ubh)}(hA``length`` Data length, i.e. the request's payload size in bytes h](h)}(h ``length``h]jq)}(hjh]hlength}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h5Data length, i.e. the request's payload size in bytesh]h7Data length, i.e. the request’s payload size in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhj\ubh)}(h``data`` Incoming data, if anyh](h)}(h``data``h]jq)}(hj!h]hdata}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(hIncoming data, if anyh]hIncoming data, if any}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj7ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj6hKhj\ubeh}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjdh]h Description}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjbubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjThhubh)}(hThis event is sent instead of :c:type:`fw_cdev_event_request2` if the kernel or the client implements ABI version <= 3. :c:type:`fw_cdev_event_request` lacks essential information; use :c:type:`fw_cdev_event_request2` instead.h](hThis event is sent instead of }(hjzhhhNhNubh)}(h :c:type:`fw_cdev_event_request2`h]jq)}(hjh]hfw_cdev_event_request2}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_request2uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjzubh; if the kernel or the client implements ABI version <= 3. }(hjzhhhNhNubh)}(h:c:type:`fw_cdev_event_request`h]jq)}(hjh]hfw_cdev_event_request}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_requestuh1hhjhKhjzubh" lacks essential information; use }(hjzhhhNhNubh)}(h :c:type:`fw_cdev_event_request2`h]jq)}(hjh]hfw_cdev_event_request2}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_request2uh1hhjhKhjzubh instead.}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j!fw_cdev_event_request2 (C struct)c.fw_cdev_event_request2hNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_event_request2h]j)}(hstruct fw_cdev_event_request2h](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hfw_cdev_event_request2h]j)}(hjh]hfw_cdev_event_request2}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhKhjhhubj)}(hhh]h)}(h-Sent on incoming request to an address regionh]h-Sent on incoming request to an address region}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjJhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjejjejjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_event_request2 { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 source_node_id; __u32 destination_node_id; __u32 card; __u32 generation; __u32 handle; __u32 length; __u32 data[]; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctl ``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST2`` ``tcode`` Transaction code of the incoming request ``offset`` The offset into the 48-bit per-node address space ``source_node_id`` Sender node ID ``destination_node_id`` Destination node ID ``card`` The index of the card from which the request came ``generation`` Bus generation in which the request is valid ``handle`` Reference to the kernel-side pending request ``length`` Data length, i.e. the request's payload size in bytes ``data`` Incoming data, if anyh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjmubh:}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjiubjf)}(hstruct fw_cdev_event_request2 { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 source_node_id; __u32 destination_node_id; __u32 card; __u32 generation; __u32 handle; __u32 length; __u32 data[]; };h]hstruct fw_cdev_event_request2 { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 source_node_id; __u32 destination_node_id; __u32 card; __u32 generation; __u32 handle; __u32 length; __u32 data[]; };}hjsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjiubh)}(h **Members**h]j$)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjiubh)}(hhh](h)}(hV``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctl h](h)}(h ``closure``h]jq)}(hjh]hclosure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(hISee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctlh](hSee }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhjhKhjubh ; set by }(hjhhhNhNubjq)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh ioctl}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(hO``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST2`` h](h)}(h``type``h]jq)}(hj(h]htype}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj&ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj"ubh)}(hhh]h)}(hESee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST2``h](hSee }(hjAhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjKh]hfw_cdev_event_common}(hjMhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjIubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhj=hKhjAubh ; always }(hjAhhhNhNubjq)}(h``FW_CDEV_EVENT_REQUEST2``h]hFW_CDEV_EVENT_REQUEST2}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubeh}(h]h ]h"]h$]h&]uh1hhj=hKhj>ubah}(h]h ]h"]h$]h&]uh1hhj"ubeh}(h]h ]h"]h$]h&]uh1hhj=hKhjubh)}(h3``tcode`` Transaction code of the incoming request h](h)}(h ``tcode``h]jq)}(hjh]htcode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h(Transaction code of the incoming requesth]h(Transaction code of the incoming request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h=``offset`` The offset into the 48-bit per-node address space h](h)}(h ``offset``h]jq)}(hjh]hoffset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h1The offset into the 48-bit per-node address spaceh]h1The offset into the 48-bit per-node address space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h"``source_node_id`` Sender node ID h](h)}(h``source_node_id``h]jq)}(hjh]hsource_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(hSender node IDh]hSender node ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h,``destination_node_id`` Destination node ID h](h)}(h``destination_node_id``h]jq)}(hj=h]hdestination_node_id}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj;ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj7ubh)}(hhh]h)}(hDestination node IDh]hDestination node ID}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKhjSubah}(h]h ]h"]h$]h&]uh1hhj7ubeh}(h]h ]h"]h$]h&]uh1hhjRhKhjubh)}(h;``card`` The index of the card from which the request came h](h)}(h``card``h]jq)}(hjvh]hcard}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjtubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjpubh)}(hhh]h)}(h1The index of the card from which the request cameh]h1The index of the card from which the request came}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjpubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h<``generation`` Bus generation in which the request is valid h](h)}(h``generation``h]jq)}(hjh]h generation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h,Bus generation in which the request is validh]h,Bus generation in which the request is valid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h8``handle`` Reference to the kernel-side pending request h](h)}(h ``handle``h]jq)}(hjh]hhandle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h,Reference to the kernel-side pending requesth]h,Reference to the kernel-side pending request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(hA``length`` Data length, i.e. the request's payload size in bytes h](h)}(h ``length``h]jq)}(hj!h]hlength}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h5Data length, i.e. the request's payload size in bytesh]h7Data length, i.e. the request’s payload size in bytes}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKhj7ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj6hKhjubh)}(h``data`` Incoming data, if anyh](h)}(h``data``h]jq)}(hjZh]hdata}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjXubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjTubh)}(hhh]h)}(hIncoming data, if anyh]hIncoming data, if any}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjpubah}(h]h ]h"]h$]h&]uh1hhjTubeh}(h]h ]h"]h$]h&]uh1hhjohKhjubeh}(h]h ]h"]h$]h&]uh1hhjiubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjThhubh)}(hThis event is sent instead of :c:type:`fw_cdev_event_request3` if the kernel or the client implements ABI version <= 5. It has the lack of time stamp field comparing to :c:type:`fw_cdev_event_request3`.h](hThis event is sent instead of }(hjhhhNhNubh)}(h :c:type:`fw_cdev_event_request3`h]jq)}(hjh]hfw_cdev_event_request3}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_request3uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubhk if the kernel or the client implements ABI version <= 5. It has the lack of time stamp field comparing to }(hjhhhNhNubh)}(h :c:type:`fw_cdev_event_request3`h]jq)}(hjh]hfw_cdev_event_request3}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_request3uh1hhjhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j!fw_cdev_event_request3 (C struct)c.fw_cdev_event_request3hNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_event_request3h]j)}(hstruct fw_cdev_event_request3h](j)}(hjh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj.hKubj)}(hfw_cdev_event_request3h]j)}(hjh]hfw_cdev_event_request3}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjhhhj.hKubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjhhhj.hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj.hKhjhhubj)}(hhh]h)}(h-Sent on incoming request to an address regionh]h-Sent on incoming request to an address region}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj`hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj.hKubeh}(h]h ](jstructeh"]h$]h&]jjjj{jj{jjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_event_request3 { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 source_node_id; __u32 destination_node_id; __u32 card; __u32 generation; __u32 handle; __u32 length; __u32 tstamp; __u32 padding; __u32 data[]; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctl ``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST2`` ``tcode`` Transaction code of the incoming request ``offset`` The offset into the 48-bit per-node address space ``source_node_id`` Sender node ID ``destination_node_id`` Destination node ID ``card`` The index of the card from which the request came ``generation`` Bus generation in which the request is valid ``handle`` Reference to the kernel-side pending request ``length`` Data length, i.e. the request's payload size in bytes ``tstamp`` The time stamp of isochronous cycle at which the request arrived. ``padding`` Padding to keep the size of structure as multiples of 8 in various architectures since 4 byte alignment is used for 8 byte of object type in System V ABI for i386 architecture. ``data`` Incoming data, if anyh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubjf)}(hX"struct fw_cdev_event_request3 { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 source_node_id; __u32 destination_node_id; __u32 card; __u32 generation; __u32 handle; __u32 length; __u32 tstamp; __u32 padding; __u32 data[]; };h]hX"struct fw_cdev_event_request3 { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 source_node_id; __u32 destination_node_id; __u32 card; __u32 generation; __u32 handle; __u32 length; __u32 tstamp; __u32 padding; __u32 data[]; };}hjsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(h **Members**h]j$)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh](h)}(hV``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctl h](h)}(h ``closure``h]jq)}(hjh]hclosure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(hISee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctlh](hSee }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhjhKhjubh ; set by }(hjhhhNhNubjq)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh ioctl}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(hO``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST2`` h](h)}(h``type``h]jq)}(hj>h]htype}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj8ubh)}(hhh]h)}(hESee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST2``h](hSee }(hjWhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjah]hfw_cdev_event_common}(hjchhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj_ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhjShKhjWubh ; always }(hjWhhhNhNubjq)}(h``FW_CDEV_EVENT_REQUEST2``h]hFW_CDEV_EVENT_REQUEST2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjWubeh}(h]h ]h"]h$]h&]uh1hhjShKhjTubah}(h]h ]h"]h$]h&]uh1hhj8ubeh}(h]h ]h"]h$]h&]uh1hhjShKhjubh)}(h3``tcode`` Transaction code of the incoming request h](h)}(h ``tcode``h]jq)}(hjh]htcode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h(Transaction code of the incoming requesth]h(Transaction code of the incoming request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h=``offset`` The offset into the 48-bit per-node address space h](h)}(h ``offset``h]jq)}(hjh]hoffset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h1The offset into the 48-bit per-node address spaceh]h1The offset into the 48-bit per-node address space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h"``source_node_id`` Sender node ID h](h)}(h``source_node_id``h]jq)}(hjh]hsource_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(hSender node IDh]hSender node ID}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hKhj0ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj/hKhjubh)}(h,``destination_node_id`` Destination node ID h](h)}(h``destination_node_id``h]jq)}(hjSh]hdestination_node_id}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjQubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjMubh)}(hhh]h)}(hDestination node IDh]hDestination node ID}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhKhjiubah}(h]h ]h"]h$]h&]uh1hhjMubeh}(h]h ]h"]h$]h&]uh1hhjhhKhjubh)}(h;``card`` The index of the card from which the request came h](h)}(h``card``h]jq)}(hjh]hcard}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h1The index of the card from which the request cameh]h1The index of the card from which the request came}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h<``generation`` Bus generation in which the request is valid h](h)}(h``generation``h]jq)}(hjh]h generation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h,Bus generation in which the request is validh]h,Bus generation in which the request is valid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h8``handle`` Reference to the kernel-side pending request h](h)}(h ``handle``h]jq)}(hjh]hhandle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(h,Reference to the kernel-side pending requesth]h,Reference to the kernel-side pending request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(hA``length`` Data length, i.e. the request's payload size in bytes h](h)}(h ``length``h]jq)}(hj7h]hlength}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj5ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj1ubh)}(hhh]h)}(h5Data length, i.e. the request's payload size in bytesh]h7Data length, i.e. the request’s payload size in bytes}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhKhjMubah}(h]h ]h"]h$]h&]uh1hhj1ubeh}(h]h ]h"]h$]h&]uh1hhjLhKhjubh)}(hM``tstamp`` The time stamp of isochronous cycle at which the request arrived. h](h)}(h ``tstamp``h]jq)}(hjph]htstamp}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjnubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjjubh)}(hhh]h)}(hAThe time stamp of isochronous cycle at which the request arrived.h]hAThe time stamp of isochronous cycle at which the request arrived.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h``padding`` Padding to keep the size of structure as multiples of 8 in various architectures since 4 byte alignment is used for 8 byte of object type in System V ABI for i386 architecture. h](h)}(h ``padding``h]jq)}(hjh]hpadding}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(hPadding to keep the size of structure as multiples of 8 in various architectures since 4 byte alignment is used for 8 byte of object type in System V ABI for i386 architecture.h]hPadding to keep the size of structure as multiples of 8 in various architectures since 4 byte alignment is used for 8 byte of object type in System V ABI for i386 architecture.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h``data`` Incoming data, if anyh](h)}(h``data``h]jq)}(hjh]hdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(hhh]h)}(hIncoming data, if anyh]hIncoming data, if any}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj&h]h Description}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj$ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjThhubh)}(hXMThis event is sent when the stack receives an incoming request to an address region registered using the ``FW_CDEV_IOC_ALLOCATE`` ioctl. The request is guaranteed to be completely contained in the specified region. Userspace is responsible for sending the response by ``FW_CDEV_IOC_SEND_RESPONSE`` ioctl, using the same **handle**.h](hiThis event is sent when the stack receives an incoming request to an address region registered using the }(hj<hhhNhNubjq)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<ubh ioctl. The request is guaranteed to be completely contained in the specified region. Userspace is responsible for sending the response by }(hj<hhhNhNubjq)}(h``FW_CDEV_IOC_SEND_RESPONSE``h]hFW_CDEV_IOC_SEND_RESPONSE}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<ubh ioctl, using the same }(hj<hhhNhNubj$)}(h **handle**h]hhandle}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubh.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjThhubh)}(hThe payload data for requests carrying data (write and lock requests) follows immediately and can be accessed through the **data** field.h](hzThe payload data for requests carrying data (write and lock requests) follows immediately and can be accessed through the }(hjhhhNhNubj$)}(h**data**h]hdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh field.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjThhubh)}(hUnlike :c:type:`fw_cdev_event_request`, **tcode** of lock requests is one of the firewire-core specific ``TCODE_LOCK_MASK_SWAP``...``TCODE_LOCK_VENDOR_DEPENDENT``, i.e. encodes the extended transaction code.h](hUnlike }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_request`h]jq)}(hjh]hfw_cdev_event_request}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_requestuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh, }(hjhhhNhNubj$)}(h **tcode**h]htcode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh7 of lock requests is one of the firewire-core specific }(hjhhhNhNubjq)}(h``TCODE_LOCK_MASK_SWAP``h]hTCODE_LOCK_MASK_SWAP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubhO...``TCODE_LOCK_VENDOR_DEPENDENT``, i.e. encodes the extended transaction code.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjThhubh)}(hXl**card** may differ from :c:type:`fw_cdev_get_info.card ` because requests are received from all cards of the Linux host. **source_node_id**, **destination_node_id**, and **generation** pertain to that card. Destination node ID and bus generation may therefore differ from the corresponding fields of the last :c:type:`fw_cdev_event_bus_reset`.h](j$)}(h**card**h]hcard}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh may differ from }(hjhhhNhNubh)}(h2:c:type:`fw_cdev_get_info.card `h]jq)}(hjh]hfw_cdev_get_info.card}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_get_infouh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubhB because requests are received from all cards of the Linux host. }(hjhhhNhNubj$)}(h**source_node_id**h]hsource_node_id}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh, }(hjhhhNhNubj$)}(h**destination_node_id**h]hdestination_node_id}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh, and }(hjhhhNhNubj$)}(h**generation**h]h generation}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh~ pertain to that card. Destination node ID and bus generation may therefore differ from the corresponding fields of the last }(hjhhhNhNubh)}(h!:c:type:`fw_cdev_event_bus_reset`h]jq)}(hjjh]hfw_cdev_event_bus_reset}(hjlhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjhubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_bus_resetuh1hhj-hKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj-hKhjThhubh)}(hXc**destination_node_id** may also differ from the current node ID because of a non-local bus ID part or in case of a broadcast write request. Note, a client must call an ``FW_CDEV_IOC_SEND_RESPONSE`` ioctl even in case of a broadcast write request; the kernel will then release the kernel-side pending request but will not actually send a response packet.h](j$)}(h**destination_node_id**h]hdestination_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh may also differ from the current node ID because of a non-local bus ID part or in case of a broadcast write request. Note, a client must call an }(hjhhhNhNubjq)}(h``FW_CDEV_IOC_SEND_RESPONSE``h]hFW_CDEV_IOC_SEND_RESPONSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh ioctl even in case of a broadcast write request; the kernel will then release the kernel-side pending request but will not actually send a response packet.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hX1In case of a write request to FCP_REQUEST or FCP_RESPONSE, the kernel already sent a write response immediately after the request was received; in this case the client must still call an ``FW_CDEV_IOC_SEND_RESPONSE`` ioctl to release the kernel-side pending request, though another response won't be sent.h](hIn case of a write request to FCP_REQUEST or FCP_RESPONSE, the kernel already sent a write response immediately after the request was received; in this case the client must still call an }(hjhhhNhNubjq)}(h``FW_CDEV_IOC_SEND_RESPONSE``h]hFW_CDEV_IOC_SEND_RESPONSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh[ ioctl to release the kernel-side pending request, though another response won’t be sent.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hIf the client subsequently needs to initiate requests to the sender node of an :c:type:`fw_cdev_event_request3`, it needs to use a device file with matching card index, node ID, and generation for outbound requests.h](hOIf the client subsequently needs to initiate requests to the sender node of an }(hjhhhNhNubh)}(h :c:type:`fw_cdev_event_request3`h]jq)}(hjh]hfw_cdev_event_request3}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_request3uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM hjubhh, it needs to use a device file with matching card index, node ID, and generation for outbound requests.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM hjThhubh)}(h**tstamp** is isochronous cycle at which the request arrived. It is 16 bit integer value and the higher 3 bits expresses three low order bits of second field in the format of CYCLE_TIME register and the rest 13 bits expresses cycle field.h](j$)}(h **tstamp**h]htstamp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh is isochronous cycle at which the request arrived. It is 16 bit integer value and the higher 3 bits expresses three low order bits of second field in the format of CYCLE_TIME register and the rest 13 bits expresses cycle field.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j&fw_cdev_event_iso_interrupt (C struct)c.fw_cdev_event_iso_interrupthNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_event_iso_interrupth]j)}(h"struct fw_cdev_event_iso_interrupth](j)}(hjh]hstruct}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEhhhjVhMubj)}(hfw_cdev_event_iso_interrupth]j)}(hjCh]hfw_cdev_event_iso_interrupt}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjEhhhjVhMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjAhhhjVhMubah}(h]j<ah ](jjeh"]h$]h&]jj)jhuh1jhjVhMhj>hhubj)}(hhh]h)}(h%Sent when an iso packet was completedh]h%Sent when an iso packet was completed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM&hjhhubah}(h]h ]h"]h$]h&]uh1jhj>hhhjVhMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjThjhNubj)}(hX **Definition**:: struct fw_cdev_event_iso_interrupt { __u64 closure; __u32 type; __u32 cycle; __u32 header_length; __u32 header[]; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_CREATE_ISO_CONTEXT`` ioctl ``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_ISO_INTERRUPT`` ``cycle`` Cycle counter of the last completed packet ``header_length`` Total length of following headers, in bytes ``header`` Stripped headers, if anyh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM*hjubjf)}(hstruct fw_cdev_event_iso_interrupt { __u64 closure; __u32 type; __u32 cycle; __u32 header_length; __u32 header[]; };h]hstruct fw_cdev_event_iso_interrupt { __u64 closure; __u32 type; __u32 cycle; __u32 header_length; __u32 header[]; };}hjsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM,hjubh)}(h **Members**h]j$)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM4hjubh)}(hhh](h)}(h\``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_CREATE_ISO_CONTEXT`` ioctl h](h)}(h ``closure``h]jq)}(hjh]hclosure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM)hjubh)}(hhh]h)}(hOSee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_CREATE_ISO_CONTEXT`` ioctlh](hSee }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM(hjubh ; set by }(hjhhhNhNubjq)}(h``FW_CDEV_CREATE_ISO_CONTEXT``h]hFW_CDEV_CREATE_ISO_CONTEXT}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh ioctl}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj8hM(hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj hM)hjubh)}(hT``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_ISO_INTERRUPT`` h](h)}(h``type``h]jq)}(hjgh]htype}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jphjeubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM*hjaubh)}(hhh]h)}(hJSee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_ISO_INTERRUPT``h](hSee }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhj|hM*hjubh ; always }(hjhhhNhNubjq)}(h``FW_CDEV_EVENT_ISO_INTERRUPT``h]hFW_CDEV_EVENT_ISO_INTERRUPT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubeh}(h]h ]h"]h$]h&]uh1hhj|hM*hj}ubah}(h]h ]h"]h$]h&]uh1hhjaubeh}(h]h ]h"]h$]h&]uh1hhj|hM*hjubh)}(h5``cycle`` Cycle counter of the last completed packet h](h)}(h ``cycle``h]jq)}(hjh]hcycle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM+hjubh)}(hhh]h)}(h*Cycle counter of the last completed packeth]h*Cycle counter of the last completed packet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM+hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhM+hjubh)}(h>``header_length`` Total length of following headers, in bytes h](h)}(h``header_length``h]jq)}(hj h]h header_length}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM,hjubh)}(hhh]h)}(h+Total length of following headers, in bytesh]h+Total length of following headers, in bytes}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM,hj ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhM,hjubh)}(h#``header`` Stripped headers, if anyh](h)}(h ``header``h]jq)}(hjCh]hheader}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM,hj=ubh)}(hhh]h)}(hStripped headers, if anyh]hStripped headers, if any}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM-hjYubah}(h]h ]h"]h$]h&]uh1hhj=ubeh}(h]h ]h"]h$]h&]uh1hhjXhM,hjubeh}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM0hjThhubh)}(hXThis event is sent when the controller has completed an :c:type:`fw_cdev_iso_packet` with the ``FW_CDEV_ISO_INTERRUPT`` bit set, when explicitly requested with ``FW_CDEV_IOC_FLUSH_ISO``, or when there have been so many completed packets without the interrupt bit set that the kernel's internal buffer for **header** is about to overflow. (In the last case, ABI versions < 5 drop header data up to the next interrupt packet.)h](h8This event is sent when the controller has completed an }(hjhhhNhNubh)}(h:c:type:`fw_cdev_iso_packet`h]jq)}(hjh]hfw_cdev_iso_packet}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_iso_packetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM.hjubh with the }(hjhhhNhNubjq)}(h``FW_CDEV_ISO_INTERRUPT``h]hFW_CDEV_ISO_INTERRUPT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh) bit set, when explicitly requested with }(hjhhhNhNubjq)}(h``FW_CDEV_IOC_FLUSH_ISO``h]hFW_CDEV_IOC_FLUSH_ISO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubhz, or when there have been so many completed packets without the interrupt bit set that the kernel’s internal buffer for }(hjhhhNhNubj$)}(h **header**h]hheader}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubhn is about to overflow. (In the last case, ABI versions < 5 drop header data up to the next interrupt packet.)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM.hjThhubh)}(hLIsochronous transmit events (context type ``FW_CDEV_ISO_CONTEXT_TRANSMIT``):h](h*Isochronous transmit events (context type }(hjhhhNhNubjq)}(h ``FW_CDEV_ISO_CONTEXT_TRANSMIT``h]hFW_CDEV_ISO_CONTEXT_TRANSMIT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh):}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM5hjThhubh)}(hXHIn version 3 and some implementations of version 2 of the ABI, :c:type:`header_length` is a multiple of 4 and :c:type:`header` contains timestamps of all packets up until the interrupt packet. The format of the timestamps is as described below for isochronous reception. In version 1 of the ABI, :c:type:`header_length` was 0.h](h?In version 3 and some implementations of version 2 of the ABI, }(hj%hhhNhNubh)}(h:c:type:`header_length`h]jq)}(hj/h]h header_length}(hj1hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj-ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjg header_lengthuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM7hj%ubh is a multiple of 4 and }(hj%hhhNhNubh)}(h:c:type:`header`h]jq)}(hjSh]hheader}(hjUhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjQubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgheaderuh1hhjLhM7hj%ubh contains timestamps of all packets up until the interrupt packet. The format of the timestamps is as described below for isochronous reception. In version 1 of the ABI, }(hj%hhhNhNubh)}(h:c:type:`header_length`h]jq)}(hjvh]h header_length}(hjxhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjtubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjg header_lengthuh1hhjLhM7hj%ubh was 0.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjLhM7hjThhubh)}(hJIsochronous receive events (context type ``FW_CDEV_ISO_CONTEXT_RECEIVE``):h](h)Isochronous receive events (context type }(hjhhhNhNubjq)}(h``FW_CDEV_ISO_CONTEXT_RECEIVE``h]hFW_CDEV_ISO_CONTEXT_RECEIVE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh):}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM<hjThhubh)}(hXThe headers stripped of all packets up until and including the interrupt packet are returned in the **header** field. The amount of header data per packet is as specified at iso context creation by :c:type:`fw_cdev_create_iso_context.header_size `.h](hdThe headers stripped of all packets up until and including the interrupt packet are returned in the }(hjhhhNhNubj$)}(h **header**h]hheader}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubhY field. The amount of header data per packet is as specified at iso context creation by }(hjhhhNhNubh)}(hM:c:type:`fw_cdev_create_iso_context.header_size `h]jq)}(hjh]h&fw_cdev_create_iso_context.header_size}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_create_iso_contextuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM>hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM>hjThhubh)}(hX"Hence, _interrupt.header_length / _context.header_size is the number of packets received in this interrupt event. The client can now iterate through the mmap()'ed DMA buffer according to this number of packets and to the buffer sizes as the client specified in :c:type:`fw_cdev_queue_iso`.h](hXHence, _interrupt.header_length / _context.header_size is the number of packets received in this interrupt event. The client can now iterate through the mmap()’ed DMA buffer according to this number of packets and to the buffer sizes as the client specified in }(hjhhhNhNubh)}(h:c:type:`fw_cdev_queue_iso`h]jq)}(hj h]hfw_cdev_queue_iso}(hjhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_queue_isouh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMChjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj)hMChjThhubh)}(hXvSince version 2 of this ABI, the portion for each packet in _interrupt.header consists of the 1394 isochronous packet header, followed by a timestamp quadlet if :c:type:`fw_cdev_create_iso_context.header_size ` > 4, followed by quadlets from the packet payload if :c:type:`fw_cdev_create_iso_context.header_size ` > 8.h](hSince version 2 of this ABI, the portion for each packet in _interrupt.header consists of the 1394 isochronous packet header, followed by a timestamp quadlet if }(hj4hhhNhNubh)}(hM:c:type:`fw_cdev_create_iso_context.header_size `h]jq)}(hj>h]h&fw_cdev_create_iso_context.header_size}(hj@hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj<ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_create_iso_contextuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMHhj4ubh6 > 4, followed by quadlets from the packet payload if }(hj4hhhNhNubh)}(hM:c:type:`fw_cdev_create_iso_context.header_size `h]jq)}(hjbh]h&fw_cdev_create_iso_context.header_size}(hjdhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj`ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_create_iso_contextuh1hhj[hMHhj4ubh > 8.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj[hMHhjThhubh)}(hFormat of 1394 iso packet header: 16 bits data_length, 2 bits tag, 6 bits channel, 4 bits tcode, 4 bits sy, in big endian byte order. data_length is the actual received size of the packet without the four 1394 iso packet header bytes.h]hFormat of 1394 iso packet header: 16 bits data_length, 2 bits tag, 6 bits channel, 4 bits tcode, 4 bits sy, in big endian byte order. data_length is the actual received size of the packet without the four 1394 iso packet header bytes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMMhjThhubh)}(hiFormat of timestamp: 16 bits invalid, 3 bits cycleSeconds, 13 bits cycleCount, in big endian byte order.h]hiFormat of timestamp: 16 bits invalid, 3 bits cycleSeconds, 13 bits cycleCount, in big endian byte order.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMRhjThhubh)}(hIn version 1 of the ABI, no timestamp quadlet was inserted; instead, payload data followed directly after the 1394 is header if header_size > 4. Behaviour of ver. 1 of this ABI is no longer available since ABI ver. 2.h]hIn version 1 of the ABI, no timestamp quadlet was inserted; instead, payload data followed directly after the 1394 is header if header_size > 4. Behaviour of ver. 1 of this ABI is no longer available since ABI ver. 2.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMUhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j)fw_cdev_event_iso_interrupt_mc (C struct) c.fw_cdev_event_iso_interrupt_mchNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_event_iso_interrupt_mch]j)}(h%struct fw_cdev_event_iso_interrupt_mch](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM\ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM\ubj)}(hfw_cdev_event_iso_interrupt_mch]j)}(hjh]hfw_cdev_event_iso_interrupt_mc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjhhhjhM\ubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjhhhjhM\ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhM\hjhhubj)}(hhh]h)}(h!An iso buffer chunk was completedh]h!An iso buffer chunk was completed}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMbhj hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM\ubeh}(h]h ](jstructeh"]h$]h&]jjjj) jj) jjjuh1jhhhjThjhNubj)}(hXw**Definition**:: struct fw_cdev_event_iso_interrupt_mc { __u64 closure; __u32 type; __u32 completed; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_CREATE_ISO_CONTEXT`` ioctl ``type`` ``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL`` ``completed`` Offset into the receive buffer; data before this offset is validh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj1 ubh:}(hj1 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhj- ubjf)}(hbstruct fw_cdev_event_iso_interrupt_mc { __u64 closure; __u32 type; __u32 completed; };h]hbstruct fw_cdev_event_iso_interrupt_mc { __u64 closure; __u32 type; __u32 completed; };}hjN sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhhj- ubh)}(h **Members**h]j$)}(hj_ h]hMembers}(hja hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj] ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMnhj- ubh)}(hhh](h)}(h\``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_CREATE_ISO_CONTEXT`` ioctl h](h)}(h ``closure``h]jq)}(hj~ h]hclosure}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj| ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMehjx ubh)}(hhh]h)}(hOSee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_CREATE_ISO_CONTEXT`` ioctlh](hSee }(hj hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hj h]hfw_cdev_event_common}(hj hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMdhj ubh ; set by }(hj hhhNhNubjq)}(h``FW_CDEV_CREATE_ISO_CONTEXT``h]hFW_CDEV_CREATE_ISO_CONTEXT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubh ioctl}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMdhj ubah}(h]h ]h"]h$]h&]uh1hhjx ubeh}(h]h ]h"]h$]h&]uh1hhj hMehju ubh)}(h6``type`` ``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL`` h](h)}(h``type``h]jq)}(hj h]htype}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhj ubh)}(hhh]h)}(h,``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL``h]jq)}(hj!h]h(FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL}(hj !hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!ubah}(h]h ]h"]h$]h&]uh1hhj!hMfhj!ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj!hMfhju ubh)}(hN``completed`` Offset into the receive buffer; data before this offset is valideh](h)}(h ``completed``h]jq)}(hj/!h]h completed}(hj1!hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj-!ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhj)!ubh)}(hhh]h)}(h@Offset into the receive buffer; data before this offset is validh]h@Offset into the receive buffer; data before this offset is valid}(hjH!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMghjE!ubah}(h]h ]h"]h$]h&]uh1hhj)!ubeh}(h]h ]h"]h$]h&]uh1hhjD!hMfhju ubeh}(h]h ]h"]h$]h&]uh1hhj- ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjr!h]h Description}(hjt!hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjp!ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMjhjThhubh)}(hX)This event is sent in multichannel contexts (context type ``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``) for :c:type:`fw_cdev_iso_packet` buffer chunks that have been completely filled and that have the ``FW_CDEV_ISO_INTERRUPT`` bit set, or when explicitly requested with ``FW_CDEV_IOC_FLUSH_ISO``.h](h:This event is sent in multichannel contexts (context type }(hj!hhhNhNubjq)}(h,``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``h]h(FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!ubh) for }(hj!hhhNhNubh)}(h:c:type:`fw_cdev_iso_packet`h]jq)}(hj!h]hfw_cdev_iso_packet}(hj!hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj!ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_iso_packetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhhj!ubhB buffer chunks that have been completely filled and that have the }(hj!hhhNhNubjq)}(h``FW_CDEV_ISO_INTERRUPT``h]hFW_CDEV_ISO_INTERRUPT}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!ubh, bit set, or when explicitly requested with }(hj!hhhNhNubjq)}(h``FW_CDEV_IOC_FLUSH_ISO``h]hFW_CDEV_IOC_FLUSH_ISO}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!ubh.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj!hMhhjThhubh)}(hhh]h)}(hXThe buffer is continuously filled with the following data, per packet: - the 1394 iso packet header as described at :c:type:`fw_cdev_event_iso_interrupt`, but in little endian byte order, - packet payload (as many bytes as specified in the data_length field of the 1394 iso packet header) in big endian byte order, - 0...3 padding bytes as needed to align the following trailer quadlet, - trailer quadlet, containing the reception timestamp as described at :c:type:`fw_cdev_event_iso_interrupt`, but in little endian byte order. h](h)}(hFThe buffer is continuously filled with the following data, per packet:h]hFThe buffer is continuously filled with the following data, per packet:}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMuhj!ubh)}(hhh]h bullet_list)}(hhh](h list_item)}(hrthe 1394 iso packet header as described at :c:type:`fw_cdev_event_iso_interrupt`, but in little endian byte order,h]h)}(hrthe 1394 iso packet header as described at :c:type:`fw_cdev_event_iso_interrupt`, but in little endian byte order,h](h+the 1394 iso packet header as described at }(hj"hhhNhNubh)}(h%:c:type:`fw_cdev_event_iso_interrupt`h]jq)}(hj"h]hfw_cdev_event_iso_interrupt}(hj "hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj"ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMohj"ubh", but in little endian byte order,}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj;"hMohj"ubah}(h]h ]h"]h$]h&]uh1j"hj "ubj")}(h|packet payload (as many bytes as specified in the data_length field of the 1394 iso packet header) in big endian byte order,h]h)}(h|packet payload (as many bytes as specified in the data_length field of the 1394 iso packet header) in big endian byte order,h]h|packet payload (as many bytes as specified in the data_length field of the 1394 iso packet header) in big endian byte order,}(hjP"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMqhjL"ubah}(h]h ]h"]h$]h&]uh1j"hj "ubj")}(hE0...3 padding bytes as needed to align the following trailer quadlet,h]h)}(hjg"h]hE0...3 padding bytes as needed to align the following trailer quadlet,}(hji"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMshje"ubah}(h]h ]h"]h$]h&]uh1j"hj "ubj")}(htrailer quadlet, containing the reception timestamp as described at :c:type:`fw_cdev_event_iso_interrupt`, but in little endian byte order. h]h)}(htrailer quadlet, containing the reception timestamp as described at :c:type:`fw_cdev_event_iso_interrupt`, but in little endian byte order.h](hDtrailer quadlet, containing the reception timestamp as described at }(hj"hhhNhNubh)}(h%:c:type:`fw_cdev_event_iso_interrupt`h]jq)}(hj"h]hfw_cdev_event_iso_interrupt}(hj"hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj"ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMthj"ubh", but in little endian byte order.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj"hMthj}"ubah}(h]h ]h"]h$]h&]uh1j"hj "ubeh}(h]h ]h"]h$]h&]bullet-uh1j "hj;"hMohj"ubah}(h]h ]h"]h$]h&]uh1hhj!ubeh}(h]h ]h"]h$]h&]uh1hhj"hMuhj!ubah}(h]h ]h"]h$]h&]uh1hhjThhhjhNubh)}(hHence the per-packet size is data_length (rounded up to a multiple of 4) + 8. When processing the data, stop before a packet that would cross the **completed** offset.h](hHence the per-packet size is data_length (rounded up to a multiple of 4) + 8. When processing the data, stop before a packet that would cross the }(hj"hhhNhNubj$)}(h **completed**h]h completed}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj"ubh offset.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMwhjThhubh)}(hX'A packet near the end of a buffer chunk will typically spill over into the next queued buffer chunk. It is the responsibility of the client to check for this condition, assemble a broken-up packet from its parts, and not to re-queue any buffer chunks in which as yet unread packet parts reside.h]hX'A packet near the end of a buffer chunk will typically spill over into the next queued buffer chunk. It is the responsibility of the client to check for this condition, assemble a broken-up packet from its parts, and not to re-queue any buffer chunks in which as yet unread packet parts reside.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM{hjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_cdev_event_iso_resource (C struct)c.fw_cdev_event_iso_resourcehNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_event_iso_resourceh]j)}(h!struct fw_cdev_event_iso_resourceh](j)}(hjh]hstruct}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj*#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhhj)#hMubj)}(hfw_cdev_event_iso_resourceh]j)}(hj#h]hfw_cdev_event_iso_resource}(hj<#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8#ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj#hhhj)#hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj#hhhj)#hMubah}(h]j#ah ](jjeh"]h$]h&]jj)jhuh1jhj)#hMhj#hhubj)}(hhh]h)}(h%Iso resources were allocated or freedh]h%Iso resources were allocated or freed}(hj^#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj[#hhubah}(h]h ]h"]h$]h&]uh1jhj#hhhj)#hMubeh}(h]h ](jstructeh"]h$]h&]jjjjv#jjv#jjjuh1jhhhjThjhNubj)}(hXa**Definition**:: struct fw_cdev_event_iso_resource { __u64 closure; __u32 type; __u32 handle; __s32 channel; __s32 bandwidth; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by``FW_CDEV_IOC_(DE)ALLOCATE_ISO_RESOURCE(_ONCE)`` ioctl ``type`` ``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` or ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED`` ``handle`` Reference by which an allocated resource can be deallocated ``channel`` Isochronous channel which was (de)allocated, if any ``bandwidth`` Bandwidth allocation units which were (de)allocated, if anyh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj~#ubh:}(hj~#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjz#ubjf)}(hstruct fw_cdev_event_iso_resource { __u64 closure; __u32 type; __u32 handle; __s32 channel; __s32 bandwidth; };h]hstruct fw_cdev_event_iso_resource { __u64 closure; __u32 type; __u32 handle; __s32 channel; __s32 bandwidth; };}hj#sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjz#ubh)}(h **Members**h]j$)}(hj#h]hMembers}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj#ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjz#ubh)}(hhh](h)}(hm``closure`` See :c:type:`fw_cdev_event_common`; set by``FW_CDEV_IOC_(DE)ALLOCATE_ISO_RESOURCE(_ONCE)`` ioctl h](h)}(h ``closure``h]jq)}(hj#h]hclosure}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj#ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj#ubh)}(hhh]h)}(h`See :c:type:`fw_cdev_event_common`; set by``FW_CDEV_IOC_(DE)ALLOCATE_ISO_RESOURCE(_ONCE)`` ioctlh](hSee }(hj#hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hj#h]hfw_cdev_event_common}(hj#hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj#ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj#ubh>; set by``FW_CDEV_IOC_(DE)ALLOCATE_ISO_RESOURCE(_ONCE)`` ioctl}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj $hMhj#ubah}(h]h ]h"]h$]h&]uh1hhj#ubeh}(h]h ]h"]h$]h&]uh1hhj#hMhj#ubh)}(h```type`` ``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` or ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED`` h](h)}(h``type``h]jq)}(hj($h]htype}(hj*$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj&$ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj"$ubh)}(hhh]h)}(hV``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` or ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h](jq)}(h(``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED``h]h$FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED}(hjE$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjA$ubh or }(hjA$hhhNhNubjq)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hjW$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjA$ubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj>$ubah}(h]h ]h"]h$]h&]uh1hhj"$ubeh}(h]h ]h"]h$]h&]uh1hhj=$hMhj#ubh)}(hG``handle`` Reference by which an allocated resource can be deallocated h](h)}(h ``handle``h]jq)}(hj~$h]hhandle}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj|$ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjx$ubh)}(hhh]h)}(h;Reference by which an allocated resource can be deallocatedh]h;Reference by which an allocated resource can be deallocated}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMhj$ubah}(h]h ]h"]h$]h&]uh1hhjx$ubeh}(h]h ]h"]h$]h&]uh1hhj$hMhj#ubh)}(h@``channel`` Isochronous channel which was (de)allocated, if any h](h)}(h ``channel``h]jq)}(hj$h]hchannel}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj$ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj$ubh)}(hhh]h)}(h3Isochronous channel which was (de)allocated, if anyh]h3Isochronous channel which was (de)allocated, if any}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMhj$ubah}(h]h ]h"]h$]h&]uh1hhj$ubeh}(h]h ]h"]h$]h&]uh1hhj$hMhj#ubh)}(hI``bandwidth`` Bandwidth allocation units which were (de)allocated, if anyh](h)}(h ``bandwidth``h]jq)}(hj$h]h bandwidth}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj$ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj$ubh)}(hhh]h)}(h;Bandwidth allocation units which were (de)allocated, if anyh]h;Bandwidth allocation units which were (de)allocated, if any}(hj %hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj%ubah}(h]h ]h"]h$]h&]uh1hhj$ubeh}(h]h ]h"]h$]h&]uh1hhj%hMhj#ubeh}(h]h ]h"]h$]h&]uh1hhjz#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj3%h]h Description}(hj5%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj1%ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hAn ``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` event is sent after an isochronous resource was allocated at the IRM. The client has to check **channel** and **bandwidth** for whether the allocation actually succeeded.h](hAn }(hjI%hhhNhNubjq)}(h(``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED``h]h$FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED}(hjQ%hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjI%ubh` event is sent after an isochronous resource was allocated at the IRM. The client has to check }(hjI%hhhNhNubj$)}(h **channel**h]hchannel}(hjc%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjI%ubh and }(hjI%hhhNhNubj$)}(h **bandwidth**h]h bandwidth}(hju%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjI%ubh/ for whether the allocation actually succeeded.}(hjI%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hAn ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED`` event is sent after an isochronous resource was deallocated at the IRM. It is also sent when automatic reallocation after a bus reset failed.h](hAn }(hj%hhhNhNubjq)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj%ubh event is sent after an isochronous resource was deallocated at the IRM. It is also sent when automatic reallocation after a bus reset failed.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(h**channel** is <0 if no channel was (de)allocated or if reallocation failed. **bandwidth** is 0 if no bandwidth was (de)allocated or if reallocation failed.h](j$)}(h **channel**h]hchannel}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj%ubhB is <0 if no channel was (de)allocated or if reallocation failed. }(hj%hhhNhNubj$)}(h **bandwidth**h]h bandwidth}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj%ubhB is 0 if no bandwidth was (de)allocated or if reallocation failed.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j#fw_cdev_event_phy_packet (C struct)c.fw_cdev_event_phy_packethNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_event_phy_packeth]j)}(hstruct fw_cdev_event_phy_packeth](j)}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhj&hMubj)}(hfw_cdev_event_phy_packeth]j)}(hj%h]hfw_cdev_event_phy_packet}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj%hhhj&hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj%hhhj&hMubah}(h]j%ah ](jjeh"]h$]h&]jj)jhuh1jhj&hMhj%hhubj)}(hhh]h)}(h(A PHY packet was transmitted or receivedh]h(A PHY packet was transmitted or received}(hj9&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj6&hhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj&hMubeh}(h]h ](jstructeh"]h$]h&]jjjjQ&jjQ&jjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_event_phy_packet { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 data[]; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_PHY_PACKET`` or ``FW_CDEV_IOC_RECEIVE_PHY_PACKETS`` ioctl ``type`` ``FW_CDEV_EVENT_PHY_PACKET_SENT`` or %..._RECEIVED ``rcode`` ``RCODE_``..., indicates success or failure of transmission ``length`` Data length in bytes ``data`` Incoming data for ``FW_CDEV_IOC_RECEIVE_PHY_PACKETS``. For ``FW_CDEV_IOC_SEND_PHY_PACKET`` the field has the same data in the request, thus the length of 8 bytes.h](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj]&hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjY&ubh:}(hjY&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjU&ubjf)}(h|struct fw_cdev_event_phy_packet { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 data[]; };h]h|struct fw_cdev_event_phy_packet { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 data[]; };}hjv&sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjU&ubh)}(h **Members**h]j$)}(hj&h]hMembers}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj&ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjU&ubh)}(hhh](h)}(h``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_PHY_PACKET`` or ``FW_CDEV_IOC_RECEIVE_PHY_PACKETS`` ioctl h](h)}(h ``closure``h]jq)}(hj&h]hclosure}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj&ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj&ubh)}(hhh]h)}(hwSee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_PHY_PACKET`` or ``FW_CDEV_IOC_RECEIVE_PHY_PACKETS`` ioctlh](hSee }(hj&hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hj&h]hfw_cdev_event_common}(hj&hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj&ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj&ubh ; set by }(hj&hhhNhNubjq)}(h``FW_CDEV_IOC_SEND_PHY_PACKET``h]hFW_CDEV_IOC_SEND_PHY_PACKET}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj&ubh or }(hj&hhhNhNubjq)}(h#``FW_CDEV_IOC_RECEIVE_PHY_PACKETS``h]hFW_CDEV_IOC_RECEIVE_PHY_PACKETS}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj&ubh ioctl}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1hhj&ubeh}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubh)}(h<``type`` ``FW_CDEV_EVENT_PHY_PACKET_SENT`` or %..._RECEIVED h](h)}(h``type``h]jq)}(hj''h]htype}(hj)'hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj%'ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj!'ubh)}(hhh]h)}(h2``FW_CDEV_EVENT_PHY_PACKET_SENT`` or %..._RECEIVEDh](jq)}(h!``FW_CDEV_EVENT_PHY_PACKET_SENT``h]hFW_CDEV_EVENT_PHY_PACKET_SENT}(hjD'hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj@'ubh or %..._RECEIVED}(hj@'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj<'hMhj='ubah}(h]h ]h"]h$]h&]uh1hhj!'ubeh}(h]h ]h"]h$]h&]uh1hhj<'hMhj&ubh)}(hF``rcode`` ``RCODE_``..., indicates success or failure of transmission h](h)}(h ``rcode``h]jq)}(hjn'h]hrcode}(hjp'hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjl'ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjh'ubh)}(hhh]h)}(h;``RCODE_``..., indicates success or failure of transmissionh](jq)}(h ``RCODE_``h]hRCODE_}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj'ubh1..., indicates success or failure of transmission}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj'hMhj'ubah}(h]h ]h"]h$]h&]uh1hhjh'ubeh}(h]h ]h"]h$]h&]uh1hhj'hMhj&ubh)}(h ``length`` Data length in bytes h](h)}(h ``length``h]jq)}(hj'h]hlength}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj'ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj'ubh)}(hhh]h)}(hData length in bytesh]hData length in bytes}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMhj'ubah}(h]h ]h"]h$]h&]uh1hhj'ubeh}(h]h ]h"]h$]h&]uh1hhj'hMhj&ubh)}(h``data`` Incoming data for ``FW_CDEV_IOC_RECEIVE_PHY_PACKETS``. For ``FW_CDEV_IOC_SEND_PHY_PACKET`` the field has the same data in the request, thus the length of 8 bytes.h](h)}(h``data``h]jq)}(hj'h]hdata}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj'ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj'ubh)}(hhh]h)}(hIncoming data for ``FW_CDEV_IOC_RECEIVE_PHY_PACKETS``. For ``FW_CDEV_IOC_SEND_PHY_PACKET`` the field has the same data in the request, thus the length of 8 bytes.h](hIncoming data for }(hj(hhhNhNubjq)}(h#``FW_CDEV_IOC_RECEIVE_PHY_PACKETS``h]hFW_CDEV_IOC_RECEIVE_PHY_PACKETS}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj(ubh. For }(hj(hhhNhNubjq)}(h``FW_CDEV_IOC_SEND_PHY_PACKET``h]hFW_CDEV_IOC_SEND_PHY_PACKET}(hj!(hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj(ubhH the field has the same data in the request, thus the length of 8 bytes.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj(hMhj(ubah}(h]h ]h"]h$]h&]uh1hhj'ubeh}(h]h ]h"]h$]h&]uh1hhj(hMhj&ubeh}(h]h ]h"]h$]h&]uh1hhjU&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjT(h]h Description}(hjV(hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjR(ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hThis event is sent instead of :c:type:`fw_cdev_event_phy_packet2` if the kernel or the client implements ABI version <= 5. It has the lack of time stamp field comparing to :c:type:`fw_cdev_event_phy_packet2`.h](hThis event is sent instead of }(hjj(hhhNhNubh)}(h#:c:type:`fw_cdev_event_phy_packet2`h]jq)}(hjt(h]hfw_cdev_event_phy_packet2}(hjv(hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjr(ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_phy_packet2uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjj(ubhk if the kernel or the client implements ABI version <= 5. It has the lack of time stamp field comparing to }(hjj(hhhNhNubh)}(h#:c:type:`fw_cdev_event_phy_packet2`h]jq)}(hj(h]hfw_cdev_event_phy_packet2}(hj(hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj(ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_phy_packet2uh1hhj(hMhjj(ubh.}(hjj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj(hMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j$fw_cdev_event_phy_packet2 (C struct)c.fw_cdev_event_phy_packet2hNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_event_phy_packet2h]j)}(h struct fw_cdev_event_phy_packet2h](j)}(hjh]hstruct}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhhj(hMubj)}(hfw_cdev_event_phy_packet2h]j)}(hj(h]hfw_cdev_event_phy_packet2}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj(hhhj(hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj(hhhj(hMubah}(h]j(ah ](jjeh"]h$]h&]jj)jhuh1jhj(hMhj(hhubj)}(hhh]h)}(h9A PHY packet was transmitted or received with time stamp.h]h9A PHY packet was transmitted or received with time stamp.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj)hhubah}(h]h ]h"]h$]h&]uh1jhj(hhhj(hMubeh}(h]h ](jstructeh"]h$]h&]jjjj2)jj2)jjjuh1jhhhjThjhNubj)}(hX6**Definition**:: struct fw_cdev_event_phy_packet2 { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 tstamp; __u32 data[]; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_PHY_PACKET`` or ``FW_CDEV_IOC_RECEIVE_PHY_PACKETS`` ioctl ``type`` ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2`` ``rcode`` ``RCODE_``..., indicates success or failure of transmission ``length`` Data length in bytes ``tstamp`` For ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``, the time stamp of isochronous cycle at which the packet arrived. For ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` and non-ping packet, the time stamp of isochronous cycle at which the packet was sent. For ping packet, the tick count for round-trip time measured by 1394 OHCI controller. The time stamp of isochronous cycle at which either the response was sent for ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` or the request arrived for ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``. ``data`` Incoming datah](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj>)hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj:)ubh:}(hj:)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj6)ubjf)}(hstruct fw_cdev_event_phy_packet2 { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 tstamp; __u32 data[]; };h]hstruct fw_cdev_event_phy_packet2 { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 tstamp; __u32 data[]; };}hjW)sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj6)ubh)}(h **Members**h]j$)}(hjh)h]hMembers}(hjj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjf)ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj6)ubh)}(hhh](h)}(h``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_PHY_PACKET`` or ``FW_CDEV_IOC_RECEIVE_PHY_PACKETS`` ioctl h](h)}(h ``closure``h]jq)}(hj)h]hclosure}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj)ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj)ubh)}(hhh]h)}(hwSee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_SEND_PHY_PACKET`` or ``FW_CDEV_IOC_RECEIVE_PHY_PACKETS`` ioctlh](hSee }(hj)hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]jq)}(hj)h]hfw_cdev_event_common}(hj)hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj)ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj)ubh ; set by }(hj)hhhNhNubjq)}(h``FW_CDEV_IOC_SEND_PHY_PACKET``h]hFW_CDEV_IOC_SEND_PHY_PACKET}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj)ubh or }(hj)hhhNhNubjq)}(h#``FW_CDEV_IOC_RECEIVE_PHY_PACKETS``h]hFW_CDEV_IOC_RECEIVE_PHY_PACKETS}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj)ubh ioctl}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1hhj)ubeh}(h]h ]h"]h$]h&]uh1hhj)hMhj~)ubh)}(hV``type`` ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2`` h](h)}(h``type``h]jq)}(hj*h]htype}(hj *hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj*ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj*ubh)}(hhh]h)}(hL``FW_CDEV_EVENT_PHY_PACKET_SENT2`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h](jq)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj%*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!*ubh or }(hj!*hhhNhNubjq)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hj7*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!*ubeh}(h]h ]h"]h$]h&]uh1hhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1hhj*ubeh}(h]h ]h"]h$]h&]uh1hhj*hMhj~)ubh)}(hF``rcode`` ``RCODE_``..., indicates success or failure of transmission h](h)}(h ``rcode``h]jq)}(hj]*h]hrcode}(hj_*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj[*ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjW*ubh)}(hhh]h)}(h;``RCODE_``..., indicates success or failure of transmissionh](jq)}(h ``RCODE_``h]hRCODE_}(hjz*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjv*ubh1..., indicates success or failure of transmission}(hjv*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjr*hMhjs*ubah}(h]h ]h"]h$]h&]uh1hhjW*ubeh}(h]h ]h"]h$]h&]uh1hhjr*hMhj~)ubh)}(h ``length`` Data length in bytes h](h)}(h ``length``h]jq)}(hj*h]hlength}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj*ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj*ubh)}(hhh]h)}(hData length in bytesh]hData length in bytes}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1hhj*ubeh}(h]h ]h"]h$]h&]uh1hhj*hMhj~)ubh)}(hX``tstamp`` For ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``, the time stamp of isochronous cycle at which the packet arrived. For ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` and non-ping packet, the time stamp of isochronous cycle at which the packet was sent. For ping packet, the tick count for round-trip time measured by 1394 OHCI controller. The time stamp of isochronous cycle at which either the response was sent for ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` or the request arrived for ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``. h](h)}(h ``tstamp``h]jq)}(hj*h]htstamp}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj*ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj*ubh)}(hhh](h)}(hX@For ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``, the time stamp of isochronous cycle at which the packet arrived. For ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` and non-ping packet, the time stamp of isochronous cycle at which the packet was sent. For ping packet, the tick count for round-trip time measured by 1394 OHCI controller.h](hFor }(hj*hhhNhNubjq)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj*ubhG, the time stamp of isochronous cycle at which the packet arrived. For }(hj*hhhNhNubjq)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj*ubh and non-ping packet, the time stamp of isochronous cycle at which the packet was sent. For ping packet, the tick count for round-trip time measured by 1394 OHCI controller.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj*ubh)}(hThe time stamp of isochronous cycle at which either the response was sent for ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` or the request arrived for ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``.h](hNThe time stamp of isochronous cycle at which either the response was sent for }(hj)+hhhNhNubjq)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj1+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj)+ubh or the request arrived for }(hj)+hhhNhNubjq)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hjC+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj)+ubh.}(hj)+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj*ubeh}(h]h ]h"]h$]h&]uh1hhj*ubeh}(h]h ]h"]h$]h&]uh1hhj*hMhj~)ubh)}(h``data`` Incoming datah](h)}(h``data``h]jq)}(hjn+h]hdata}(hjp+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjl+ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjh+ubh)}(hhh]h)}(h Incoming datah]h Incoming data}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj+ubah}(h]h ]h"]h$]h&]uh1hhjh+ubeh}(h]h ]h"]h$]h&]uh1hhj+hMhj~)ubeh}(h]h ]h"]h$]h&]uh1hhj6)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj+h]h Description}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj+ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hIf **type** is ``FW_CDEV_EVENT_PHY_PACKET_SENT2``, **length** is 8 and **data** consists of the two PHY packet quadlets to be sent, in host byte order,h](hIf }(hj+hhhNhNubj$)}(h**type**h]htype}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj+ubh is }(hj+hhhNhNubjq)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj+ubh, }(hj+hhhNhNubj$)}(h **length**h]hlength}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj+ubh is 8 and }(hj+hhhNhNubj$)}(h**data**h]hdata}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj+ubhH consists of the two PHY packet quadlets to be sent, in host byte order,}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hIf **type** is ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``, **length** is 8 and **data** consists of the two PHY packet quadlets, in host byte order.h](hIf }(hj,hhhNhNubj$)}(h**type**h]htype}(hj&,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj,ubh is }(hj,hhhNhNubjq)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hj8,hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj,ubh, }(hj,hhhNhNubj$)}(h **length**h]hlength}(hjJ,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj,ubh is 8 and }(hj,hhhNhNubj$)}(h**data**h]hdata}(hj\,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj,ubh= consists of the two PHY packet quadlets, in host byte order.}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hX!For ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``, the **tstamp** is the isochronous cycle at which the packet arrived. It is 16 bit integer value and the higher 3 bits expresses three low order bits of second field and the rest 13 bits expresses cycle field in the format of CYCLE_TIME register.h](hFor }(hju,hhhNhNubjq)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hj},hhhNhNubah}(h]h ]h"]h$]h&]uh1jphju,ubh, the }(hju,hhhNhNubj$)}(h **tstamp**h]htstamp}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hju,ubh is the isochronous cycle at which the packet arrived. It is 16 bit integer value and the higher 3 bits expresses three low order bits of second field and the rest 13 bits expresses cycle field in the format of CYCLE_TIME register.}(hju,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hXFor ``FW_CDEV_EVENT_PHY_PACKET_SENT2``, the **tstamp** has different meanings whether to sent the packet for ping or not. If it's not for ping, the **tstamp** is the isochronous cycle at which the packet was sent, and use the same format as the case of ``FW_CDEV_EVENT_PHY_PACKET_SENT2``. If it's for ping, the **tstamp** is for round-trip time measured by 1394 OHCI controller with 42.195 MHz resolution.h](hFor }(hj,hhhNhNubjq)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj,ubh, the }(hj,hhhNhNubj$)}(h **tstamp**h]htstamp}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj,ubh` has different meanings whether to sent the packet for ping or not. If it’s not for ping, the }(hj,hhhNhNubj$)}(h **tstamp**h]htstamp}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj,ubh_ is the isochronous cycle at which the packet was sent, and use the same format as the case of }(hj,hhhNhNubjq)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj,ubh. If it’s for ping, the }(hj,hhhNhNubj$)}(h **tstamp**h]htstamp}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj,ubhT is for round-trip time measured by 1394 OHCI controller with 42.195 MHz resolution.}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_event (C union)c.fw_cdev_eventhNtauh1jyhjThhhjhNubj)}(hhh](j)}(h fw_cdev_eventh]j)}(hunion fw_cdev_eventh](j)}(hunionh]hunion}(hj*-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&-hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj9-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&-hhhj8-hMubj)}(h fw_cdev_eventh]j)}(hj$-h]h fw_cdev_event}(hjK-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG-ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj&-hhhj8-hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj"-hhhj8-hMubah}(h]j-ah ](jjeh"]h$]h&]jj)jhuh1jhj8-hMhj-hhubj)}(hhh]h)}(h*Convenience union of fw_cdev_event_* typesh]h*Convenience union of fw_cdev_event_* types}(hjm-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjj-hhubah}(h]h ]h"]h$]h&]uh1jhj-hhhj8-hMubeh}(h]h ](junioneh"]h$]h&]jjjj-jj-jjjuh1jhhhjThjhNubj)}(hX**Definition**:: union fw_cdev_event { struct fw_cdev_event_common common; struct fw_cdev_event_bus_reset bus_reset; struct fw_cdev_event_response response; struct fw_cdev_event_request request; struct fw_cdev_event_request2 request2; struct fw_cdev_event_iso_interrupt iso_interrupt; struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc; struct fw_cdev_event_iso_resource iso_resource; struct fw_cdev_event_phy_packet phy_packet; struct fw_cdev_event_request3 request3; struct fw_cdev_event_response2 response2; struct fw_cdev_event_phy_packet2 phy_packet2; }; **Members** ``common`` Valid for all types ``bus_reset`` Valid if **common.type** == ``FW_CDEV_EVENT_BUS_RESET`` ``response`` Valid if **common.type** == ``FW_CDEV_EVENT_RESPONSE`` ``request`` Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST`` ``request2`` Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST2`` ``iso_interrupt`` Valid if **common.type** == ``FW_CDEV_EVENT_ISO_INTERRUPT`` ``iso_interrupt_mc`` Valid if **common.type** == ``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL`` ``iso_resource`` Valid if **common.type** == ``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` or ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED`` ``phy_packet`` Valid if **common.type** == ``FW_CDEV_EVENT_PHY_PACKET_SENT`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED`` ``request3`` Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST3`` ``response2`` Valid if **common.type** == ``FW_CDEV_EVENT_RESPONSE2`` ``phy_packet2`` Valid if **common.type** == ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj-ubh:}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj-ubjf)}(hXunion fw_cdev_event { struct fw_cdev_event_common common; struct fw_cdev_event_bus_reset bus_reset; struct fw_cdev_event_response response; struct fw_cdev_event_request request; struct fw_cdev_event_request2 request2; struct fw_cdev_event_iso_interrupt iso_interrupt; struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc; struct fw_cdev_event_iso_resource iso_resource; struct fw_cdev_event_phy_packet phy_packet; struct fw_cdev_event_request3 request3; struct fw_cdev_event_response2 response2; struct fw_cdev_event_phy_packet2 phy_packet2; };h]hXunion fw_cdev_event { struct fw_cdev_event_common common; struct fw_cdev_event_bus_reset bus_reset; struct fw_cdev_event_response response; struct fw_cdev_event_request request; struct fw_cdev_event_request2 request2; struct fw_cdev_event_iso_interrupt iso_interrupt; struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc; struct fw_cdev_event_iso_resource iso_resource; struct fw_cdev_event_phy_packet phy_packet; struct fw_cdev_event_request3 request3; struct fw_cdev_event_response2 response2; struct fw_cdev_event_phy_packet2 phy_packet2; };}hj-sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj-ubh)}(h **Members**h]j$)}(hj-h]hMembers}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj-ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj-ubh)}(hhh](h)}(h``common`` Valid for all types h](h)}(h ``common``h]jq)}(hj-h]hcommon}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj-ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj-ubh)}(hhh]h)}(hValid for all typesh]hValid for all types}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMhj-ubah}(h]h ]h"]h$]h&]uh1hhj-ubeh}(h]h ]h"]h$]h&]uh1hhj-hMhj-ubh)}(hF``bus_reset`` Valid if **common.type** == ``FW_CDEV_EVENT_BUS_RESET`` h](h)}(h ``bus_reset``h]jq)}(hj.h]h bus_reset}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj.ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj .ubh)}(hhh]h)}(h7Valid if **common.type** == ``FW_CDEV_EVENT_BUS_RESET``h](h Valid if }(hj,.hhhNhNubj$)}(h**common.type**h]h common.type}(hj4.hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj,.ubh == }(hj,.hhhNhNubjq)}(h``FW_CDEV_EVENT_BUS_RESET``h]hFW_CDEV_EVENT_BUS_RESET}(hjF.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj,.ubeh}(h]h ]h"]h$]h&]uh1hhj(.hMhj).ubah}(h]h ]h"]h$]h&]uh1hhj .ubeh}(h]h ]h"]h$]h&]uh1hhj(.hMhj-ubh)}(hD``response`` Valid if **common.type** == ``FW_CDEV_EVENT_RESPONSE`` h](h)}(h ``response``h]jq)}(hjl.h]hresponse}(hjn.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjj.ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjf.ubh)}(hhh]h)}(h6Valid if **common.type** == ``FW_CDEV_EVENT_RESPONSE``h](h Valid if }(hj.hhhNhNubj$)}(h**common.type**h]h common.type}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj.ubh == }(hj.hhhNhNubjq)}(h``FW_CDEV_EVENT_RESPONSE``h]hFW_CDEV_EVENT_RESPONSE}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj.ubeh}(h]h ]h"]h$]h&]uh1hhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1hhjf.ubeh}(h]h ]h"]h$]h&]uh1hhj.hMhj-ubh)}(hB``request`` Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST`` h](h)}(h ``request``h]jq)}(hj.h]hrequest}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj.ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj.ubh)}(hhh]h)}(h5Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST``h](h Valid if }(hj.hhhNhNubj$)}(h**common.type**h]h common.type}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj.ubh == }(hj.hhhNhNubjq)}(h``FW_CDEV_EVENT_REQUEST``h]hFW_CDEV_EVENT_REQUEST}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj.ubeh}(h]h ]h"]h$]h&]uh1hhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1hhj.ubeh}(h]h ]h"]h$]h&]uh1hhj.hMhj-ubh)}(hD``request2`` Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST2`` h](h)}(h ``request2``h]jq)}(hj/h]hrequest2}(hj /hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj/ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj/ubh)}(hhh]h)}(h6Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST2``h](h Valid if }(hj7/hhhNhNubj$)}(h**common.type**h]h common.type}(hj?/hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj7/ubh == }(hj7/hhhNhNubjq)}(h``FW_CDEV_EVENT_REQUEST2``h]hFW_CDEV_EVENT_REQUEST2}(hjQ/hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj7/ubeh}(h]h ]h"]h$]h&]uh1hhj3/hMhj4/ubah}(h]h ]h"]h$]h&]uh1hhj/ubeh}(h]h ]h"]h$]h&]uh1hhj3/hMhj-ubh)}(hN``iso_interrupt`` Valid if **common.type** == ``FW_CDEV_EVENT_ISO_INTERRUPT`` h](h)}(h``iso_interrupt``h]jq)}(hjw/h]h iso_interrupt}(hjy/hhhNhNubah}(h]h ]h"]h$]h&]uh1jphju/ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjq/ubh)}(hhh]h)}(h;Valid if **common.type** == ``FW_CDEV_EVENT_ISO_INTERRUPT``h](h Valid if }(hj/hhhNhNubj$)}(h**common.type**h]h common.type}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj/ubh == }(hj/hhhNhNubjq)}(h``FW_CDEV_EVENT_ISO_INTERRUPT``h]hFW_CDEV_EVENT_ISO_INTERRUPT}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj/ubeh}(h]h ]h"]h$]h&]uh1hhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1hhjq/ubeh}(h]h ]h"]h$]h&]uh1hhj/hMhj-ubh)}(h^``iso_interrupt_mc`` Valid if **common.type** == ``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL`` h](h)}(h``iso_interrupt_mc``h]jq)}(hj/h]hiso_interrupt_mc}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj/ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj/ubh)}(hhh]h)}(hHValid if **common.type** == ``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL``h](h Valid if }(hj/hhhNhNubj$)}(h**common.type**h]h common.type}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj/ubh == }(hj/hhhNhNubjq)}(h,``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL``h]h(FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj/ubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj/ubah}(h]h ]h"]h$]h&]uh1hhj/ubeh}(h]h ]h"]h$]h&]uh1hhj/hMhj-ubh)}(h``iso_resource`` Valid if **common.type** == ``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` or ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED`` h](h)}(h``iso_resource``h]jq)}(hj*0h]h iso_resource}(hj,0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj(0ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj$0ubh)}(hhh]h)}(hrValid if **common.type** == ``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` or ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h](h Valid if }(hjC0hhhNhNubj$)}(h**common.type**h]h common.type}(hjK0hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjC0ubh == }(hjC0hhhNhNubjq)}(h(``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED``h]h$FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED}(hj]0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjC0ubh or }(hjC0hhhNhNubjq)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hjo0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjC0ubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj@0ubah}(h]h ]h"]h$]h&]uh1hhj$0ubeh}(h]h ]h"]h$]h&]uh1hhj?0hMhj-ubh)}(hv``phy_packet`` Valid if **common.type** == ``FW_CDEV_EVENT_PHY_PACKET_SENT`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED`` h](h)}(h``phy_packet``h]jq)}(hj0h]h phy_packet}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj0ubh)}(hhh]h)}(hfValid if **common.type** == ``FW_CDEV_EVENT_PHY_PACKET_SENT`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED``h](h Valid if }(hj0hhhNhNubj$)}(h**common.type**h]h common.type}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj0ubh == }(hj0hhhNhNubjq)}(h!``FW_CDEV_EVENT_PHY_PACKET_SENT``h]hFW_CDEV_EVENT_PHY_PACKET_SENT}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0ubh or }(hj0hhhNhNubjq)}(h%``FW_CDEV_EVENT_PHY_PACKET_RECEIVED``h]h!FW_CDEV_EVENT_PHY_PACKET_RECEIVED}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0ubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj0ubah}(h]h ]h"]h$]h&]uh1hhj0ubeh}(h]h ]h"]h$]h&]uh1hhj0hMhj-ubh)}(hD``request3`` Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST3`` h](h)}(h ``request3``h]jq)}(hj1h]hrequest3}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj0ubh)}(hhh]h)}(h6Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST3``h](h Valid if }(hj1hhhNhNubj$)}(h**common.type**h]h common.type}(hj#1hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj1ubh == }(hj1hhhNhNubjq)}(h``FW_CDEV_EVENT_REQUEST3``h]hFW_CDEV_EVENT_REQUEST3}(hj51hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubeh}(h]h ]h"]h$]h&]uh1hhj1hMhj1ubah}(h]h ]h"]h$]h&]uh1hhj0ubeh}(h]h ]h"]h$]h&]uh1hhj1hMhj-ubh)}(hF``response2`` Valid if **common.type** == ``FW_CDEV_EVENT_RESPONSE2`` h](h)}(h ``response2``h]jq)}(hj[1h]h response2}(hj]1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjY1ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjU1ubh)}(hhh]h)}(h7Valid if **common.type** == ``FW_CDEV_EVENT_RESPONSE2``h](h Valid if }(hjt1hhhNhNubj$)}(h**common.type**h]h common.type}(hj|1hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjt1ubh == }(hjt1hhhNhNubjq)}(h``FW_CDEV_EVENT_RESPONSE2``h]hFW_CDEV_EVENT_RESPONSE2}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjt1ubeh}(h]h ]h"]h$]h&]uh1hhjp1hMhjq1ubah}(h]h ]h"]h$]h&]uh1hhjU1ubeh}(h]h ]h"]h$]h&]uh1hhjp1hMhj-ubh)}(hx``phy_packet2`` Valid if **common.type** == ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h](h)}(h``phy_packet2``h]jq)}(hj1h]h phy_packet2}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj1ubh)}(hhh]h)}(hhValid if **common.type** == ``FW_CDEV_EVENT_PHY_PACKET_SENT2`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h](h Valid if }(hj1hhhNhNubj$)}(h**common.type**h]h common.type}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj1ubh == }(hj1hhhNhNubjq)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubh or }(hj1hhhNhNubjq)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubeh}(h]h ]h"]h$]h&]uh1hhj1hMhj1ubah}(h]h ]h"]h$]h&]uh1hhj1ubeh}(h]h ]h"]h$]h&]uh1hhj1hMhj-ubeh}(h]h ]h"]h$]h&]uh1hhj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj(2h]h Description}(hj*2hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj&2ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hXConvenience union for userspace use. Events could be read(2) into an appropriately aligned char buffer and then cast to this union for further processing. Note that for a request, response or iso_interrupt event, the data[] or header[] may make the size of the full event larger than sizeof(union fw_cdev_event). Also note that if you attempt to read(2) an event into a buffer that is not large enough for it, the data that does not fit will be discarded so that the next read(2) will return a new event.h]hXConvenience union for userspace use. Events could be read(2) into an appropriately aligned char buffer and then cast to this union for further processing. Note that for a request, response or iso_interrupt event, the data[] or header[] may make the size of the full event larger than sizeof(union fw_cdev_event). Also note that if you attempt to read(2) an event into a buffer that is not large enough for it, the data that does not fit will be discarded so that the next read(2) will return a new event.}(hj>2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_get_info (C struct)c.fw_cdev_get_infohNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_get_infoh]j)}(hstruct fw_cdev_get_infoh](j)}(hjh]hstruct}(hjf2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb2hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjt2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb2hhhjs2hMubj)}(hfw_cdev_get_infoh]j)}(hj`2h]hfw_cdev_get_info}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjb2hhhjs2hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj^2hhhjs2hMubah}(h]jY2ah ](jjeh"]h$]h&]jj)jhuh1jhjs2hMhj[2hhubj)}(hhh]h)}(h!General purpose information ioctlh]h!General purpose information ioctl}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMVhj2hhubah}(h]h ]h"]h$]h&]uh1jhj[2hhhjs2hMubeh}(h]h ](jstructeh"]h$]h&]jjjj2jj2jjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_get_info { __u32 version; __u32 rom_length; __u64 rom; __u64 bus_reset; __u64 bus_reset_closure; __u32 card; }; **Members** ``version`` The version field is just a running serial number. Both an input parameter (ABI version implemented by the client) and output parameter (ABI version implemented by the kernel). A client shall fill in the ABI **version** for which the client was implemented. This is necessary for forward compatibility. ``rom_length`` If **rom** is non-zero, up to **rom_length** bytes of Configuration ROM will be copied into that user space address. In either case, **rom_length** is updated with the actual length of the Configuration ROM. ``rom`` If non-zero, address of a buffer to be filled by a copy of the device's Configuration ROM ``bus_reset`` If non-zero, address of a buffer to be filled by a :c:type:`struct fw_cdev_event_bus_reset ` with the current state of the bus. This does not cause a bus reset to happen. ``bus_reset_closure`` Value of :c:type:`closure` in this and subsequent bus reset events ``card`` The index of the card this device belongs toh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj2ubh:}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMZhj2ubjf)}(hstruct fw_cdev_get_info { __u32 version; __u32 rom_length; __u64 rom; __u64 bus_reset; __u64 bus_reset_closure; __u32 card; };h]hstruct fw_cdev_get_info { __u32 version; __u32 rom_length; __u64 rom; __u64 bus_reset; __u64 bus_reset_closure; __u32 card; };}hj2sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM\hj2ubh)}(h **Members**h]j$)}(hj2h]hMembers}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj2ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMehj2ubh)}(hhh](h)}(hX=``version`` The version field is just a running serial number. Both an input parameter (ABI version implemented by the client) and output parameter (ABI version implemented by the kernel). A client shall fill in the ABI **version** for which the client was implemented. This is necessary for forward compatibility. h](h)}(h ``version``h]jq)}(hj3h]hversion}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj3ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM\hj3ubh)}(hhh]h)}(hX0The version field is just a running serial number. Both an input parameter (ABI version implemented by the client) and output parameter (ABI version implemented by the kernel). A client shall fill in the ABI **version** for which the client was implemented. This is necessary for forward compatibility.h](hThe version field is just a running serial number. Both an input parameter (ABI version implemented by the client) and output parameter (ABI version implemented by the kernel). A client shall fill in the ABI }(hj.3hhhNhNubj$)}(h **version**h]hversion}(hj63hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj.3ubhT for which the client was implemented. This is necessary for forward compatibility.}(hj.3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMXhj+3ubah}(h]h ]h"]h$]h&]uh1hhj3ubeh}(h]h ]h"]h$]h&]uh1hhj*3hM\hj 3ubh)}(h``rom_length`` If **rom** is non-zero, up to **rom_length** bytes of Configuration ROM will be copied into that user space address. In either case, **rom_length** is updated with the actual length of the Configuration ROM. h](h)}(h``rom_length``h]jq)}(hja3h]h rom_length}(hjc3hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj_3ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM`hj[3ubh)}(hhh]h)}(hIf **rom** is non-zero, up to **rom_length** bytes of Configuration ROM will be copied into that user space address. In either case, **rom_length** is updated with the actual length of the Configuration ROM.h](hIf }(hjz3hhhNhNubj$)}(h**rom**h]hrom}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjz3ubh is non-zero, up to }(hjz3hhhNhNubj$)}(h**rom_length**h]h rom_length}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjz3ubhZ bytes of Configuration ROM will be copied into that user space address. In either case, }(hjz3hhhNhNubj$)}(h**rom_length**h]h rom_length}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjz3ubh< is updated with the actual length of the Configuration ROM.}(hjz3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM]hjw3ubah}(h]h ]h"]h$]h&]uh1hhj[3ubeh}(h]h ]h"]h$]h&]uh1hhjv3hM`hj 3ubh)}(hb``rom`` If non-zero, address of a buffer to be filled by a copy of the device's Configuration ROM h](h)}(h``rom``h]jq)}(hj3h]hrom}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj3ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMbhj3ubh)}(hhh]h)}(hYIf non-zero, address of a buffer to be filled by a copy of the device's Configuration ROMh]h[If non-zero, address of a buffer to be filled by a copy of the device’s Configuration ROM}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMahj3ubah}(h]h ]h"]h$]h&]uh1hhj3ubeh}(h]h ]h"]h$]h&]uh1hhj3hMbhj 3ubh)}(h``bus_reset`` If non-zero, address of a buffer to be filled by a :c:type:`struct fw_cdev_event_bus_reset ` with the current state of the bus. This does not cause a bus reset to happen. h](h)}(h ``bus_reset``h]jq)}(hj 4h]h bus_reset}(hj 4hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj 4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMehj4ubh)}(hhh]h)}(hIf non-zero, address of a buffer to be filled by a :c:type:`struct fw_cdev_event_bus_reset ` with the current state of the bus. This does not cause a bus reset to happen.h](h3If non-zero, address of a buffer to be filled by a }(hj$4hhhNhNubh)}(hB:c:type:`struct fw_cdev_event_bus_reset `h]jq)}(hj.4h]hstruct fw_cdev_event_bus_reset}(hj04hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj,4ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_bus_resetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMchj$4ubhO with the current state of the bus. This does not cause a bus reset to happen.}(hj$4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjK4hMchj!4ubah}(h]h ]h"]h$]h&]uh1hhj4ubeh}(h]h ]h"]h$]h&]uh1hhj 4hMehj 3ubh)}(hY``bus_reset_closure`` Value of :c:type:`closure` in this and subsequent bus reset events h](h)}(h``bus_reset_closure``h]jq)}(hjh4h]hbus_reset_closure}(hjj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjf4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhjb4ubh)}(hhh]h)}(hBValue of :c:type:`closure` in this and subsequent bus reset eventsh](h Value of }(hj4hhhNhNubh)}(h:c:type:`closure`h]jq)}(hj4h]hclosure}(hj4hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj4ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgclosureuh1hhj}4hMfhj4ubh( in this and subsequent bus reset events}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj}4hMfhj~4ubah}(h]h ]h"]h$]h&]uh1hhjb4ubeh}(h]h ]h"]h$]h&]uh1hhj}4hMfhj 3ubh)}(h5``card`` The index of the card this device belongs toh](h)}(h``card``h]jq)}(hj4h]hcard}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhj4ubh)}(hhh]h)}(h,The index of the card this device belongs toh]h,The index of the card this device belongs to}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMghj4ubah}(h]h ]h"]h$]h&]uh1hhj4ubeh}(h]h ]h"]h$]h&]uh1hhj4hMfhj 3ubeh}(h]h ]h"]h$]h&]uh1hhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj5h]h Description}(hj 5hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj5ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMjhjThhubh)}(hThe ``FW_CDEV_IOC_GET_INFO`` ioctl is usually the very first one which a client performs right after it opened a /dev/fw* file.h](hThe }(hj5hhhNhNubjq)}(h``FW_CDEV_IOC_GET_INFO``h]hFW_CDEV_IOC_GET_INFO}(hj%5hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj5ubhc ioctl is usually the very first one which a client performs right after it opened a /dev/fw* file.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhhjThhubh)}(hiAs a side effect, reception of ``FW_CDEV_EVENT_BUS_RESET`` events to be read(2) is started by this ioctl.h](hAs a side effect, reception of }(hj>5hhhNhNubjq)}(h``FW_CDEV_EVENT_BUS_RESET``h]hFW_CDEV_EVENT_BUS_RESET}(hjF5hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj>5ubh/ events to be read(2) is started by this ioctl.}(hj>5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMkhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_send_request (C struct)c.fw_cdev_send_requesthNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_send_requesth]j)}(hstruct fw_cdev_send_requesth](j)}(hjh]hstruct}(hjx5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjt5hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMqubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjt5hhhj5hMqubj)}(hfw_cdev_send_requesth]j)}(hjr5h]hfw_cdev_send_request}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjt5hhhj5hMqubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjp5hhhj5hMqubah}(h]jk5ah ](jjeh"]h$]h&]jj)jhuh1jhj5hMqhjm5hhubj)}(hhh]h)}(h#Send an asynchronous request packeth]h#Send an asynchronous request packet}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMxhj5hhubah}(h]h ]h"]h$]h&]uh1jhjm5hhhj5hMqubeh}(h]h ](jstructeh"]h$]h&]jjjj5jj5jjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_send_request { __u32 tcode; __u32 length; __u64 offset; __u64 closure; __u64 data; __u32 generation; }; **Members** ``tcode`` Transaction code of the request ``length`` Length of outgoing payload, in bytes ``offset`` 48-bit offset at destination node ``closure`` Passed back to userspace in the response event ``data`` Userspace pointer to payload ``generation`` The bus generation where packet is validh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj5ubh:}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM|hj5ubjf)}(hstruct fw_cdev_send_request { __u32 tcode; __u32 length; __u64 offset; __u64 closure; __u64 data; __u32 generation; };h]hstruct fw_cdev_send_request { __u32 tcode; __u32 length; __u64 offset; __u64 closure; __u64 data; __u32 generation; };}hj5sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM~hj5ubh)}(h **Members**h]j$)}(hj6h]hMembers}(hj 6hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj6ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj5ubh)}(hhh](h)}(h*``tcode`` Transaction code of the request h](h)}(h ``tcode``h]jq)}(hj'6h]htcode}(hj)6hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj%6ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMzhj!6ubh)}(hhh]h)}(hTransaction code of the requesth]hTransaction code of the request}(hj@6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<6hMzhj=6ubah}(h]h ]h"]h$]h&]uh1hhj!6ubeh}(h]h ]h"]h$]h&]uh1hhj<6hMzhj6ubh)}(h0``length`` Length of outgoing payload, in bytes h](h)}(h ``length``h]jq)}(hj`6h]hlength}(hjb6hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj^6ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM{hjZ6ubh)}(hhh]h)}(h$Length of outgoing payload, in bytesh]h$Length of outgoing payload, in bytes}(hjy6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhju6hM{hjv6ubah}(h]h ]h"]h$]h&]uh1hhjZ6ubeh}(h]h ]h"]h$]h&]uh1hhju6hM{hj6ubh)}(h-``offset`` 48-bit offset at destination node h](h)}(h ``offset``h]jq)}(hj6h]hoffset}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj6ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM|hj6ubh)}(hhh]h)}(h!48-bit offset at destination nodeh]h!48-bit offset at destination node}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hM|hj6ubah}(h]h ]h"]h$]h&]uh1hhj6ubeh}(h]h ]h"]h$]h&]uh1hhj6hM|hj6ubh)}(h;``closure`` Passed back to userspace in the response event h](h)}(h ``closure``h]jq)}(hj6h]hclosure}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj6ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM}hj6ubh)}(hhh]h)}(h.Passed back to userspace in the response eventh]h.Passed back to userspace in the response event}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hM}hj6ubah}(h]h ]h"]h$]h&]uh1hhj6ubeh}(h]h ]h"]h$]h&]uh1hhj6hM}hj6ubh)}(h&``data`` Userspace pointer to payload h](h)}(h``data``h]jq)}(hj 7h]hdata}(hj 7hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj 7ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM~hj7ubh)}(hhh]h)}(hUserspace pointer to payloadh]hUserspace pointer to payload}(hj$7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj 7hM~hj!7ubah}(h]h ]h"]h$]h&]uh1hhj7ubeh}(h]h ]h"]h$]h&]uh1hhj 7hM~hj6ubh)}(h7``generation`` The bus generation where packet is validh](h)}(h``generation``h]jq)}(hjD7h]h generation}(hjF7hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjB7ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM~hj>7ubh)}(hhh]h)}(h(The bus generation where packet is validh]h(The bus generation where packet is valid}(hj]7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjZ7ubah}(h]h ]h"]h$]h&]uh1hhj>7ubeh}(h]h ]h"]h$]h&]uh1hhjY7hM~hj6ubeh}(h]h ]h"]h$]h&]uh1hhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj7h]h Description}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj7ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hXSend a request to the device. This ioctl implements all outgoing requests. Both quadlet and block request specify the payload as a pointer to the data in the **data** field. Once the transaction completes, the kernel writes either :c:type:`fw_cdev_event_response` event or :c:type:`fw_cdev_event_response` event back. The **closure** field is passed back to user space in the response event.h](hSend a request to the device. This ioctl implements all outgoing requests. Both quadlet and block request specify the payload as a pointer to the data in the }(hj7hhhNhNubj$)}(h**data**h]hdata}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj7ubhA field. Once the transaction completes, the kernel writes either }(hj7hhhNhNubh)}(h :c:type:`fw_cdev_event_response`h]jq)}(hj7h]hfw_cdev_event_response}(hj7hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj7ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_responseuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj7ubh event or }(hj7hhhNhNubh)}(h :c:type:`fw_cdev_event_response`h]jq)}(hj7h]hfw_cdev_event_response}(hj7hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj7ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_responseuh1hhj7hMhj7ubh event back. The }(hj7hhhNhNubj$)}(h **closure**h]hclosure}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj7ubh: field is passed back to user space in the response event.}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj7hMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j fw_cdev_send_response (C struct)c.fw_cdev_send_responsehNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_send_responseh]j)}(hstruct fw_cdev_send_responseh](j)}(hjh]hstruct}(hj/8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+8hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj=8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+8hhhj<8hMubj)}(hfw_cdev_send_responseh]j)}(hj)8h]hfw_cdev_send_response}(hjO8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjK8ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj+8hhhj<8hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj'8hhhj<8hMubah}(h]j"8ah ](jjeh"]h$]h&]jj)jhuh1jhj<8hMhj$8hhubj)}(hhh]h)}(h$Send an asynchronous response packeth]h$Send an asynchronous response packet}(hjq8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjn8hhubah}(h]h ]h"]h$]h&]uh1jhj$8hhhj<8hMubeh}(h]h ](jstructeh"]h$]h&]jjjj8jj8jjjuh1jhhhjThjhNubj)}(hXq**Definition**:: struct fw_cdev_send_response { __u32 rcode; __u32 length; __u64 data; __u32 handle; }; **Members** ``rcode`` Response code as determined by the userspace handler ``length`` Length of outgoing payload, in bytes ``data`` Userspace pointer to payload ``handle`` The handle from the :c:type:`fw_cdev_event_request`h](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj8ubh:}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj8ubjf)}(hfstruct fw_cdev_send_response { __u32 rcode; __u32 length; __u64 data; __u32 handle; };h]hfstruct fw_cdev_send_response { __u32 rcode; __u32 length; __u64 data; __u32 handle; };}hj8sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj8ubh)}(h **Members**h]j$)}(hj8h]hMembers}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj8ubh)}(hhh](h)}(h?``rcode`` Response code as determined by the userspace handler h](h)}(h ``rcode``h]jq)}(hj8h]hrcode}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj8ubh)}(hhh]h)}(h4Response code as determined by the userspace handlerh]h4Response code as determined by the userspace handler}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1hhj8ubeh}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubh)}(h0``length`` Length of outgoing payload, in bytes h](h)}(h ``length``h]jq)}(hj9h]hlength}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj9ubh)}(hhh]h)}(h$Length of outgoing payload, in bytesh]h$Length of outgoing payload, in bytes}(hj09hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,9hMhj-9ubah}(h]h ]h"]h$]h&]uh1hhj9ubeh}(h]h ]h"]h$]h&]uh1hhj,9hMhj8ubh)}(h&``data`` Userspace pointer to payload h](h)}(h``data``h]jq)}(hjP9h]hdata}(hjR9hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjN9ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjJ9ubh)}(hhh]h)}(hUserspace pointer to payloadh]hUserspace pointer to payload}(hji9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje9hMhjf9ubah}(h]h ]h"]h$]h&]uh1hhjJ9ubeh}(h]h ]h"]h$]h&]uh1hhje9hMhj8ubh)}(h>``handle`` The handle from the :c:type:`fw_cdev_event_request`h](h)}(h ``handle``h]jq)}(hj9h]hhandle}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj9ubh)}(hhh]h)}(h3The handle from the :c:type:`fw_cdev_event_request`h](hThe handle from the }(hj9hhhNhNubh)}(h:c:type:`fw_cdev_event_request`h]jq)}(hj9h]hfw_cdev_event_request}(hj9hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj9ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_requestuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj9ubeh}(h]h ]h"]h$]h&]uh1hhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1hhj9ubeh}(h]h ]h"]h$]h&]uh1hhj9hMhj8ubeh}(h]h ]h"]h$]h&]uh1hhj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj9h]h Description}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj9ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hXvSend a response to an incoming request. By setting up an address range using the ``FW_CDEV_IOC_ALLOCATE`` ioctl, userspace can listen for incoming requests. An incoming request will generate an ``FW_CDEV_EVENT_REQUEST``, and userspace must send a reply using this ioctl. The event has a handle to the kernel-side pending transaction, which should be used with this ioctl.h](hRSend a response to an incoming request. By setting up an address range using the }(hj:hhhNhNubjq)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hj :hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:ubhZ ioctl, userspace can listen for incoming requests. An incoming request will generate an }(hj:hhhNhNubjq)}(h``FW_CDEV_EVENT_REQUEST``h]hFW_CDEV_EVENT_REQUEST}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:ubh, and userspace must send a reply using this ioctl. The event has a handle to the kernel-side pending transaction, which should be used with this ioctl.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_allocate (C struct)c.fw_cdev_allocatehNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_allocateh]j)}(hstruct fw_cdev_allocateh](j)}(hjh]hstruct}(hjM:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI:hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj[:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI:hhhjZ:hMubj)}(hfw_cdev_allocateh]j)}(hjG:h]hfw_cdev_allocate}(hjm:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhji:ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjI:hhhjZ:hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjE:hhhjZ:hMubah}(h]j@:ah ](jjeh"]h$]h&]jj)jhuh1jhjZ:hMhjB:hhubj)}(hhh]h)}(h"Allocate a CSR in an address rangeh]h"Allocate a CSR in an address range}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj:hhubah}(h]h ]h"]h$]h&]uh1jhjB:hhhjZ:hMubeh}(h]h ](jstructeh"]h$]h&]jjjj:jj:jjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_allocate { __u64 offset; __u64 closure; __u32 length; __u32 handle; __u64 region_end; }; **Members** ``offset`` Start offset of the address range ``closure`` To be passed back to userspace in request events ``length`` Length of the CSR, in bytes ``handle`` Handle to the allocation, written by the kernel ``region_end`` First address above the address range (added in ABI v4, 2.6.36)h](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj:ubh:}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj:ubjf)}(h{struct fw_cdev_allocate { __u64 offset; __u64 closure; __u32 length; __u32 handle; __u64 region_end; };h]h{struct fw_cdev_allocate { __u64 offset; __u64 closure; __u32 length; __u32 handle; __u64 region_end; };}hj:sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj:ubh)}(h **Members**h]j$)}(hj:h]hMembers}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj:ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj:ubh)}(hhh](h)}(h-``offset`` Start offset of the address range h](h)}(h ``offset``h]jq)}(hj:h]hoffset}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj:ubh)}(hhh]h)}(h!Start offset of the address rangeh]h!Start offset of the address range}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1hhj:ubeh}(h]h ]h"]h$]h&]uh1hhj;hMhj:ubh)}(h=``closure`` To be passed back to userspace in request events h](h)}(h ``closure``h]jq)}(hj5;h]hclosure}(hj7;hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj3;ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj/;ubh)}(hhh]h)}(h0To be passed back to userspace in request eventsh]h0To be passed back to userspace in request events}(hjN;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJ;hMhjK;ubah}(h]h ]h"]h$]h&]uh1hhj/;ubeh}(h]h ]h"]h$]h&]uh1hhjJ;hMhj:ubh)}(h'``length`` Length of the CSR, in bytes h](h)}(h ``length``h]jq)}(hjn;h]hlength}(hjp;hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjl;ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjh;ubh)}(hhh]h)}(hLength of the CSR, in bytesh]hLength of the CSR, in bytes}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1hhjh;ubeh}(h]h ]h"]h$]h&]uh1hhj;hMhj:ubh)}(h;``handle`` Handle to the allocation, written by the kernel h](h)}(h ``handle``h]jq)}(hj;h]hhandle}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj;ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj;ubh)}(hhh]h)}(h/Handle to the allocation, written by the kernelh]h/Handle to the allocation, written by the kernel}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1hhj;ubeh}(h]h ]h"]h$]h&]uh1hhj;hMhj:ubh)}(hN``region_end`` First address above the address range (added in ABI v4, 2.6.36)h](h)}(h``region_end``h]jq)}(hj;h]h region_end}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj;ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj;ubh)}(hhh]h)}(h?First address above the address range (added in ABI v4, 2.6.36)h]h?First address above the address range (added in ABI v4, 2.6.36)}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj;ubah}(h]h ]h"]h$]h&]uh1hhj;ubeh}(h]h ]h"]h$]h&]uh1hhj;hMhj:ubeh}(h]h ]h"]h$]h&]uh1hhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj#<h]h Description}(hj%<hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj!<ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hXAllocate an address range in the 48-bit address space on the local node (the controller). This allows userspace to listen for requests with an offset within that address range. Every time when the kernel receives a request within the range, an :c:type:`fw_cdev_event_request2` event will be emitted. (If the kernel or the client implements ABI version <= 3, an :c:type:`fw_cdev_event_request` will be generated instead.)h](hAllocate an address range in the 48-bit address space on the local node (the controller). This allows userspace to listen for requests with an offset within that address range. Every time when the kernel receives a request within the range, an }(hj9<hhhNhNubh)}(h :c:type:`fw_cdev_event_request2`h]jq)}(hjC<h]hfw_cdev_event_request2}(hjE<hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjA<ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_request2uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj9<ubhU event will be emitted. (If the kernel or the client implements ABI version <= 3, an }(hj9<hhhNhNubh)}(h:c:type:`fw_cdev_event_request`h]jq)}(hjg<h]hfw_cdev_event_request}(hji<hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphje<ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_requestuh1hhj`<hMhj9<ubh will be generated instead.)}(hj9<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj`<hMhjThhubh)}(hThe **closure** field is passed back to userspace in these request events. The **handle** field is an out parameter, returning a handle to the allocated range to be used for later deallocation of the range.h](hThe }(hj<hhhNhNubj$)}(h **closure**h]hclosure}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubh@ field is passed back to userspace in these request events. The }(hj<hhhNhNubj$)}(h **handle**h]hhandle}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubhu field is an out parameter, returning a handle to the allocated range to be used for later deallocation of the range.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hThe address range is allocated on all local nodes. The address allocation is exclusive except for the FCP command and response registers. If an exclusive address region is already in use, the ioctl fails with errno set to ``EBUSY``.h](hThe address range is allocated on all local nodes. The address allocation is exclusive except for the FCP command and response registers. If an exclusive address region is already in use, the ioctl fails with errno set to }(hj<hhhNhNubjq)}(h ``EBUSY``h]hEBUSY}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<ubh.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hXIf kernel and client implement ABI version >= 4, the kernel looks up a free spot of size **length** inside [**offset**..**region_end**) and, if found, writes the start address of the new CSR back in **offset**. I.e. **offset** is an in and out parameter. If this automatic placement of a CSR in a bigger address range is not desired, the client simply needs to set **region_end** = **offset** + **length**.h](hYIf kernel and client implement ABI version >= 4, the kernel looks up a free spot of size }(hj<hhhNhNubj$)}(h **length**h]hlength}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubh inside [}(hj<hhhNhNubj$)}(h **offset**h]hoffset}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubhQ..**region_end**) and, if found, writes the start address of the new CSR back in }(hj<hhhNhNubj$)}(h **offset**h]hoffset}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubh. I.e. }(hj<hhhNhNubj$)}(h **offset**h]hoffset}(hj =hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubh is an in and out parameter. If this automatic placement of a CSR in a bigger address range is not desired, the client simply needs to set }(hj<hhhNhNubj$)}(h**region_end**h]h region_end}(hj2=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubh = }(hj<hhhNhNubj$)}(h **offset**h]hoffset}(hjD=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubh + }(hj<hhhNhNubj$)}(h **length**h]hlength}(hjV=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj<ubh.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hIf the kernel or the client implements ABI version <= 3, **region_end** is ignored and effectively assumed to be **offset** + **length**.h](h9If the kernel or the client implements ABI version <= 3, }(hjo=hhhNhNubj$)}(h**region_end**h]h region_end}(hjw=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjo=ubh* is ignored and effectively assumed to be }(hjo=hhhNhNubj$)}(h **offset**h]hoffset}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjo=ubh + }(hjo=hhhNhNubj$)}(h **length**h]hlength}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjo=ubh.}(hjo=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(h**region_end** is only present in a kernel header >= 2.6.36. If necessary, this can for example be tested by #ifdef FW_CDEV_EVENT_REQUEST2.h](j$)}(h**region_end**h]h region_end}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj=ubh~ is only present in a kernel header >= 2.6.36. If necessary, this can for example be tested by #ifdef FW_CDEV_EVENT_REQUEST2.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_deallocate (C struct)c.fw_cdev_deallocatehNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_deallocateh]j)}(hstruct fw_cdev_deallocateh](j)}(hjh]hstruct}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=hhhj=hMubj)}(hfw_cdev_deallocateh]j)}(hj=h]hfw_cdev_deallocate}(hj >hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj=hhhj=hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj=hhhj=hMubah}(h]j=ah ](jjeh"]h$]h&]jj)jhuh1jhj=hMhj=hhubj)}(hhh]h)}(h0Free a CSR address range or isochronous resourceh]h0Free a CSR address range or isochronous resource}(hj,>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj)>hhubah}(h]h ]h"]h$]h&]uh1jhj=hhhj=hMubeh}(h]h ](jstructeh"]h$]h&]jjjjD>jjD>jjjuh1jhhhjThjhNubj)}(h**Definition**:: struct fw_cdev_deallocate { __u32 handle; }; **Members** ``handle`` Handle to the address range or iso resource, as returned by the kernel when the range or resource was allocatedh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjP>hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjL>ubh:}(hjL>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjH>ubjf)}(h0struct fw_cdev_deallocate { __u32 handle; };h]h0struct fw_cdev_deallocate { __u32 handle; };}hji>sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjH>ubh)}(h **Members**h]j$)}(hjz>h]hMembers}(hj|>hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjx>ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjH>ubh)}(hhh]h)}(hz``handle`` Handle to the address range or iso resource, as returned by the kernel when the range or resource was allocatedh](h)}(h ``handle``h]jq)}(hj>h]hhandle}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj>ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj>ubh)}(hhh]h)}(hoHandle to the address range or iso resource, as returned by the kernel when the range or resource was allocatedh]hoHandle to the address range or iso resource, as returned by the kernel when the range or resource was allocated}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hMhj>ubah}(h]h ]h"]h$]h&]uh1hhj>ubeh}(h]h ]h"]h$]h&]uh1hhj>hMhj>ubah}(h]h ]h"]h$]h&]uh1hhjH>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_cdev_initiate_bus_reset (C struct)c.fw_cdev_initiate_bus_resethNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_initiate_bus_reseth]j)}(h!struct fw_cdev_initiate_bus_reseth](j)}(hjh]hstruct}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>hhhj>hMubj)}(hfw_cdev_initiate_bus_reseth]j)}(hj>h]hfw_cdev_initiate_bus_reset}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj>hhhj>hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj>hhhj>hMubah}(h]j>ah ](jjeh"]h$]h&]jj)jhuh1jhj>hMhj>hhubj)}(hhh]h)}(hInitiate a bus reseth]hInitiate a bus reset}(hj4?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj1?hhubah}(h]h ]h"]h$]h&]uh1jhj>hhhj>hMubeh}(h]h ](jstructeh"]h$]h&]jjjjL?jjL?jjjuh1jhhhjThjhNubj)}(h**Definition**:: struct fw_cdev_initiate_bus_reset { __u32 type; }; **Members** ``type`` ``FW_CDEV_SHORT_RESET`` or ``FW_CDEV_LONG_RESET``h](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjX?hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjT?ubh:}(hjT?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjP?ubjf)}(h6struct fw_cdev_initiate_bus_reset { __u32 type; };h]h6struct fw_cdev_initiate_bus_reset { __u32 type; };}hjq?sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjP?ubh)}(h **Members**h]j$)}(hj?h]hMembers}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj?ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjP?ubh)}(hhh]h)}(h:``type`` ``FW_CDEV_SHORT_RESET`` or ``FW_CDEV_LONG_RESET``h](h)}(h``type``h]jq)}(hj?h]htype}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj?ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj?ubh)}(hhh]h)}(h1``FW_CDEV_SHORT_RESET`` or ``FW_CDEV_LONG_RESET``h](jq)}(h``FW_CDEV_SHORT_RESET``h]hFW_CDEV_SHORT_RESET}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj?ubh or }(hj?hhhNhNubjq)}(h``FW_CDEV_LONG_RESET``h]hFW_CDEV_LONG_RESET}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj?ubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj?ubah}(h]h ]h"]h$]h&]uh1hhj?ubeh}(h]h ]h"]h$]h&]uh1hhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1hhjP?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj@h]h Description}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj?ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hInitiate a bus reset for the bus this device is on. The bus reset can be either the original (long) bus reset or the arbitrated (short) bus reset introduced in 1394a-2000.h]hInitiate a bus reset for the bus this device is on. The bus reset can be either the original (long) bus reset or the arbitrated (short) bus reset introduced in 1394a-2000.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hX.The ioctl returns immediately. A subsequent :c:type:`fw_cdev_event_bus_reset` indicates when the reset actually happened. Since ABI v4, this may be considerably later than the ioctl because the kernel ensures a grace period between subsequent bus resets as per IEEE 1394 bus management specification.h](h-The ioctl returns immediately. A subsequent }(hj%@hhhNhNubh)}(h!:c:type:`fw_cdev_event_bus_reset`h]jq)}(hj/@h]hfw_cdev_event_bus_reset}(hj1@hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj-@ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_bus_resetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj%@ubh indicates when the reset actually happened. Since ABI v4, this may be considerably later than the ioctl because the kernel ensures a grace period between subsequent bus resets as per IEEE 1394 bus management specification.}(hj%@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjL@hMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j!fw_cdev_add_descriptor (C struct)c.fw_cdev_add_descriptorhNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_add_descriptorh]j)}(hstruct fw_cdev_add_descriptorh](j)}(hjh]hstruct}(hjp@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl@hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj~@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl@hhhj}@hMubj)}(hfw_cdev_add_descriptorh]j)}(hjj@h]hfw_cdev_add_descriptor}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjl@hhhj}@hMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjh@hhhj}@hMubah}(h]jc@ah ](jjeh"]h$]h&]jj)jhuh1jhj}@hMhje@hhubj)}(hhh]h)}(h+Add contents to the local node's config ROMh]h-Add contents to the local node’s config ROM}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj@hhubah}(h]h ]h"]h$]h&]uh1jhje@hhhj}@hMubeh}(h]h ](jstructeh"]h$]h&]jjjj@jj@jjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_add_descriptor { __u32 immediate; __u32 key; __u64 data; __u32 length; __u32 handle; }; **Members** ``immediate`` If non-zero, immediate key to insert before pointer ``key`` Upper 8 bits of root directory pointer ``data`` Userspace pointer to contents of descriptor block ``length`` Length of descriptor block data, in quadlets ``handle`` Handle to the descriptor, written by the kernelh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj@ubh:}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj@ubjf)}(hzstruct fw_cdev_add_descriptor { __u32 immediate; __u32 key; __u64 data; __u32 length; __u32 handle; };h]hzstruct fw_cdev_add_descriptor { __u32 immediate; __u32 key; __u64 data; __u32 length; __u32 handle; };}hj@sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj@ubh)}(h **Members**h]j$)}(hjAh]hMembers}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj@ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj@ubh)}(hhh](h)}(hB``immediate`` If non-zero, immediate key to insert before pointer h](h)}(h ``immediate``h]jq)}(hjAh]h immediate}(hj!AhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjAubh)}(hhh]h)}(h3If non-zero, immediate key to insert before pointerh]h3If non-zero, immediate key to insert before pointer}(hj8AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4AhMhj5Aubah}(h]h ]h"]h$]h&]uh1hhjAubeh}(h]h ]h"]h$]h&]uh1hhj4AhMhjAubh)}(h/``key`` Upper 8 bits of root directory pointer h](h)}(h``key``h]jq)}(hjXAh]hkey}(hjZAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjVAubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjRAubh)}(hhh]h)}(h&Upper 8 bits of root directory pointerh]h&Upper 8 bits of root directory pointer}(hjqAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmAhMhjnAubah}(h]h ]h"]h$]h&]uh1hhjRAubeh}(h]h ]h"]h$]h&]uh1hhjmAhMhjAubh)}(h;``data`` Userspace pointer to contents of descriptor block h](h)}(h``data``h]jq)}(hjAh]hdata}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjAubh)}(hhh]h)}(h1Userspace pointer to contents of descriptor blockh]h1Userspace pointer to contents of descriptor block}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjAubah}(h]h ]h"]h$]h&]uh1hhjAubeh}(h]h ]h"]h$]h&]uh1hhjAhMhjAubh)}(h8``length`` Length of descriptor block data, in quadlets h](h)}(h ``length``h]jq)}(hjAh]hlength}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjAubh)}(hhh]h)}(h,Length of descriptor block data, in quadletsh]h,Length of descriptor block data, in quadlets}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjAubah}(h]h ]h"]h$]h&]uh1hhjAubeh}(h]h ]h"]h$]h&]uh1hhjAhMhjAubh)}(h:``handle`` Handle to the descriptor, written by the kernelh](h)}(h ``handle``h]jq)}(hjBh]hhandle}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjBubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjAubh)}(hhh]h)}(h/Handle to the descriptor, written by the kernelh]h/Handle to the descriptor, written by the kernel}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjBubah}(h]h ]h"]h$]h&]uh1hhjAubeh}(h]h ]h"]h$]h&]uh1hhjBhMhjAubeh}(h]h ]h"]h$]h&]uh1hhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjFBh]h Description}(hjHBhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjDBubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hfAdd a descriptor block and optionally a preceding immediate key to the local node's Configuration ROM.h]hhAdd a descriptor block and optionally a preceding immediate key to the local node’s Configuration ROM.}(hj\BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hX The **key** field specifies the upper 8 bits of the descriptor root directory pointer and the **data** and **length** fields specify the contents. The **key** should be of the form 0xXX000000. The offset part of the root directory entry will be filled in by the kernel.h](hThe }(hjkBhhhNhNubj$)}(h**key**h]hkey}(hjsBhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjkBubhS field specifies the upper 8 bits of the descriptor root directory pointer and the }(hjkBhhhNhNubj$)}(h**data**h]hdata}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjkBubh and }(hjkBhhhNhNubj$)}(h **length**h]hlength}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjkBubh" fields specify the contents. The }(hjkBhhhNhNubj$)}(h**key**h]hkey}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjkBubho should be of the form 0xXX000000. The offset part of the root directory entry will be filled in by the kernel.}(hjkBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hvIf not 0, the **immediate** field specifies an immediate key which will be inserted before the root directory pointer.h](hIf not 0, the }(hjBhhhNhNubj$)}(h **immediate**h]h immediate}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjBubh[ field specifies an immediate key which will be inserted before the root directory pointer.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hL**immediate**, **key**, and **data** array elements are CPU-endian quadlets.h](j$)}(h **immediate**h]h immediate}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjBubh, }(hjBhhhNhNubj$)}(h**key**h]hkey}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjBubh, and }(hjBhhhNhNubj$)}(h**data**h]hdata}(hj ChhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjBubh( array elements are CPU-endian quadlets.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hXIf successful, the kernel adds the descriptor and writes back a **handle** to the kernel-side object to be used for later removal of the descriptor block and immediate key. The kernel will also generate a bus reset to signal the change of the Configuration ROM to other nodes.h](h@If successful, the kernel adds the descriptor and writes back a }(hj$ChhhNhNubj$)}(h **handle**h]hhandle}(hj,ChhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj$Cubh to the kernel-side object to be used for later removal of the descriptor block and immediate key. The kernel will also generate a bus reset to signal the change of the Configuration ROM to other nodes.}(hj$ChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hThis ioctl affects the Configuration ROMs of all local nodes. The ioctl only succeeds on device files which represent a local node.h]hThis ioctl affects the Configuration ROMs of all local nodes. The ioctl only succeeds on device files which represent a local node.}(hjEChhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j$fw_cdev_remove_descriptor (C struct)c.fw_cdev_remove_descriptorhNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_remove_descriptorh]j)}(h struct fw_cdev_remove_descriptorh](j)}(hjh]hstruct}(hjmChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiChhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM ubj)}(h h]h }(hj{ChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiChhhjzChM ubj)}(hfw_cdev_remove_descriptorh]j)}(hjgCh]hfw_cdev_remove_descriptor}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjiChhhjzChM ubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjeChhhjzChM ubah}(h]j`Cah ](jjeh"]h$]h&]jj)jhuh1jhjzChM hjbChhubj)}(hhh]h)}(h*Remove contents from the Configuration ROMh]h*Remove contents from the Configuration ROM}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjChhubah}(h]h ]h"]h$]h&]uh1jhjbChhhjzChM ubeh}(h]h ](jstructeh"]h$]h&]jjjjCjjCjjjuh1jhhhjThjhNubj)}(h**Definition**:: struct fw_cdev_remove_descriptor { __u32 handle; }; **Members** ``handle`` Handle to the descriptor, as returned by the kernel when the descriptor was addedh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjCubh:}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjCubjf)}(h7struct fw_cdev_remove_descriptor { __u32 handle; };h]h7struct fw_cdev_remove_descriptor { __u32 handle; };}hjCsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjCubh)}(h **Members**h]j$)}(hjCh]hMembers}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjCubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjCubh)}(hhh]h)}(h\``handle`` Handle to the descriptor, as returned by the kernel when the descriptor was addedh](h)}(h ``handle``h]jq)}(hjDh]hhandle}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjDubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjDubh)}(hhh]h)}(hQHandle to the descriptor, as returned by the kernel when the descriptor was addedh]hQHandle to the descriptor, as returned by the kernel when the descriptor was added}(hj5DhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1DhMhj2Dubah}(h]h ]h"]h$]h&]uh1hhjDubeh}(h]h ]h"]h$]h&]uh1hhj1DhMhjDubah}(h]h ]h"]h$]h&]uh1hhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj^Dh]h Description}(hj`DhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj\Dubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hRemove a descriptor block and accompanying immediate key from the local nodes' Configuration ROMs. The kernel will also generate a bus reset to signal the change of the Configuration ROM to other nodes.h]hRemove a descriptor block and accompanying immediate key from the local nodes’ Configuration ROMs. The kernel will also generate a bus reset to signal the change of the Configuration ROM to other nodes.}(hjtDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_cdev_create_iso_context (C struct)c.fw_cdev_create_iso_contexthNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_create_iso_contexth]j)}(h!struct fw_cdev_create_iso_contexth](j)}(hjh]hstruct}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDhhhjDhMubj)}(hfw_cdev_create_iso_contexth]j)}(hjDh]hfw_cdev_create_iso_context}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjDhhhjDhMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjDhhhjDhMubah}(h]jDah ](jjeh"]h$]h&]jj)jhuh1jhjDhMhjDhhubj)}(hhh]h)}(h$Create a context for isochronous I/Oh]h$Create a context for isochronous I/O}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM$hjDhhubah}(h]h ]h"]h$]h&]uh1jhjDhhhjDhMubeh}(h]h ](jstructeh"]h$]h&]jjjjDjjDjjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_create_iso_context { __u32 type; __u32 header_size; __u32 channel; __u32 speed; __u64 closure; __u32 handle; }; **Members** ``type`` ``FW_CDEV_ISO_CONTEXT_TRANSMIT`` or ``FW_CDEV_ISO_CONTEXT_RECEIVE`` or ``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL`` ``header_size`` Header size to strip in single-channel reception ``channel`` Channel to bind to in single-channel reception or transmission ``speed`` Transmission speed ``closure`` To be returned in :c:type:`fw_cdev_event_iso_interrupt` or :c:type:`fw_cdev_event_iso_interrupt_multichannel` ``handle`` Handle to context, written back by kernelh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjDubh:}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM(hjDubjf)}(hstruct fw_cdev_create_iso_context { __u32 type; __u32 header_size; __u32 channel; __u32 speed; __u64 closure; __u32 handle; };h]hstruct fw_cdev_create_iso_context { __u32 type; __u32 header_size; __u32 channel; __u32 speed; __u64 closure; __u32 handle; };}hjEsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM*hjDubh)}(h **Members**h]j$)}(hj,Eh]hMembers}(hj.EhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj*Eubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM3hjDubh)}(hhh](h)}(h}``type`` ``FW_CDEV_ISO_CONTEXT_TRANSMIT`` or ``FW_CDEV_ISO_CONTEXT_RECEIVE`` or ``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL`` h](h)}(h``type``h]jq)}(hjKEh]htype}(hjMEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjIEubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM'hjEEubh)}(hhh]h)}(hs``FW_CDEV_ISO_CONTEXT_TRANSMIT`` or ``FW_CDEV_ISO_CONTEXT_RECEIVE`` or ``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``h](jq)}(h ``FW_CDEV_ISO_CONTEXT_TRANSMIT``h]hFW_CDEV_ISO_CONTEXT_TRANSMIT}(hjhEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjdEubh or }(hjdEhhhNhNubjq)}(h``FW_CDEV_ISO_CONTEXT_RECEIVE``h]hFW_CDEV_ISO_CONTEXT_RECEIVE}(hjzEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjdEubh or }(hjdEhhhNhNubjq)}(h,``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``h]h(FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjdEubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM&hjaEubah}(h]h ]h"]h$]h&]uh1hhjEEubeh}(h]h ]h"]h$]h&]uh1hhj`EhM'hjBEubh)}(hA``header_size`` Header size to strip in single-channel reception h](h)}(h``header_size``h]jq)}(hjEh]h header_size}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjEubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM(hjEubh)}(hhh]h)}(h0Header size to strip in single-channel receptionh]h0Header size to strip in single-channel reception}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhM(hjEubah}(h]h ]h"]h$]h&]uh1hhjEubeh}(h]h ]h"]h$]h&]uh1hhjEhM(hjBEubh)}(hK``channel`` Channel to bind to in single-channel reception or transmission h](h)}(h ``channel``h]jq)}(hjEh]hchannel}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjEubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM)hjEubh)}(hhh]h)}(h>Channel to bind to in single-channel reception or transmissionh]h>Channel to bind to in single-channel reception or transmission}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhM)hjFubah}(h]h ]h"]h$]h&]uh1hhjEubeh}(h]h ]h"]h$]h&]uh1hhjFhM)hjBEubh)}(h``speed`` Transmission speed h](h)}(h ``speed``h]jq)}(hj%Fh]hspeed}(hj'FhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj#Fubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM*hjFubh)}(hhh]h)}(hTransmission speedh]hTransmission speed}(hj>FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:FhM*hj;Fubah}(h]h ]h"]h$]h&]uh1hhjFubeh}(h]h ]h"]h$]h&]uh1hhj:FhM*hjBEubh)}(hz``closure`` To be returned in :c:type:`fw_cdev_event_iso_interrupt` or :c:type:`fw_cdev_event_iso_interrupt_multichannel` h](h)}(h ``closure``h]jq)}(hj^Fh]hclosure}(hj`FhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\Fubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM,hjXFubh)}(hhh]h)}(hmTo be returned in :c:type:`fw_cdev_event_iso_interrupt` or :c:type:`fw_cdev_event_iso_interrupt_multichannel`h](hTo be returned in }(hjwFhhhNhNubh)}(h%:c:type:`fw_cdev_event_iso_interrupt`h]jq)}(hjFh]hfw_cdev_event_iso_interrupt}(hjFhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjFubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM+hjwFubh or }(hjwFhhhNhNubh)}(h2:c:type:`fw_cdev_event_iso_interrupt_multichannel`h]jq)}(hjFh]h(fw_cdev_event_iso_interrupt_multichannel}(hjFhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjFubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjg(fw_cdev_event_iso_interrupt_multichanneluh1hhjFhM+hjwFubeh}(h]h ]h"]h$]h&]uh1hhjFhM+hjtFubah}(h]h ]h"]h$]h&]uh1hhjXFubeh}(h]h ]h"]h$]h&]uh1hhjsFhM,hjBEubh)}(h4``handle`` Handle to context, written back by kernelh](h)}(h ``handle``h]jq)}(hjFh]hhandle}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjFubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM,hjFubh)}(hhh]h)}(h)Handle to context, written back by kernelh]h)Handle to context, written back by kernel}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM-hjFubah}(h]h ]h"]h$]h&]uh1hhjFubeh}(h]h ]h"]h$]h&]uh1hhjFhM,hjBEubeh}(h]h ]h"]h$]h&]uh1hhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjGh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjGubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM0hjThhubh)}(hX6Prior to sending or receiving isochronous I/O, a context must be created. The context records information about the transmit or receive configuration and typically maps to an underlying hardware resource. A context is set up for either sending or receiving. It is bound to a specific isochronous **channel**.h](hX*Prior to sending or receiving isochronous I/O, a context must be created. The context records information about the transmit or receive configuration and typically maps to an underlying hardware resource. A context is set up for either sending or receiving. It is bound to a specific isochronous }(hj3GhhhNhNubj$)}(h **channel**h]hchannel}(hj;GhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj3Gubh.}(hj3GhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM.hjThhubh)}(hIn case of multichannel reception, **header_size** and **channel** are ignored and the channels are selected by ``FW_CDEV_IOC_SET_ISO_CHANNELS``.h](h#In case of multichannel reception, }(hjTGhhhNhNubj$)}(h**header_size**h]h header_size}(hj\GhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjTGubh and }(hjTGhhhNhNubj$)}(h **channel**h]hchannel}(hjnGhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjTGubh. are ignored and the channels are selected by }(hjTGhhhNhNubjq)}(h ``FW_CDEV_IOC_SET_ISO_CHANNELS``h]hFW_CDEV_IOC_SET_ISO_CHANNELS}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjTGubh.}(hjTGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM4hjThhubh)}(hFor ``FW_CDEV_ISO_CONTEXT_RECEIVE`` contexts, **header_size** must be at least 4 and must be a multiple of 4. It is ignored in other context types.h](hFor }(hjGhhhNhNubjq)}(h``FW_CDEV_ISO_CONTEXT_RECEIVE``h]hFW_CDEV_ISO_CONTEXT_RECEIVE}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjGubh contexts, }(hjGhhhNhNubj$)}(h**header_size**h]h header_size}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjGubhW must be at least 4 and must be a multiple of 4. It is ignored in other context types.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM7hjThhubh)}(h.**speed** is ignored in receive context types.h](j$)}(h **speed**h]hspeed}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjGubh% is ignored in receive context types.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM:hjThhubh)}(hIf a context was successfully created, the kernel writes back a handle to the context, which must be passed in for subsequent operations on that context.h]hIf a context was successfully created, the kernel writes back a handle to the context, which must be passed in for subsequent operations on that context.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM<hjThhubh)}(hXLimitations: No more than one iso context can be created per fd. The total number of contexts that all userspace and kernelspace drivers can create on a card at a time is a hardware limit, typically 4 or 8 contexts per direction, and of them at most one multichannel receive context.h]hXLimitations: No more than one iso context can be created per fd. The total number of contexts that all userspace and kernelspace drivers can create on a card at a time is a hardware limit, typically 4 or 8 contexts per direction, and of them at most one multichannel receive context.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM?hjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j#fw_cdev_set_iso_channels (C struct)c.fw_cdev_set_iso_channelshNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_set_iso_channelsh]j)}(hstruct fw_cdev_set_iso_channelsh](j)}(hjh]hstruct}(hj HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMHubj)}(h h]h }(hj.HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHhhhj-HhMHubj)}(hfw_cdev_set_iso_channelsh]j)}(hjHh]hfw_cdev_set_iso_channels}(hj@HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubh:}(hj>JhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMkhj:Jubjf)}(hEstruct fw_cdev_iso_packet { __u32 control; __u32 header[]; };h]hEstruct fw_cdev_iso_packet { __u32 control; __u32 header[]; };}hj[Jsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMmhj:Jubh)}(h **Members**h]j$)}(hjlJh]hMembers}(hjnJhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjjJubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMrhj:Jubh)}(hhh](h)}(h``control`` Contains the header length (8 uppermost bits), the sy field (4 bits), the tag field (2 bits), a sync flag or a skip flag (1 bit), an interrupt flag (1 bit), and the payload length (16 lowermost bits) h](h)}(h ``control``h]jq)}(hjJh]hcontrol}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjJubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMlhjJubh)}(hhh]h)}(hContains the header length (8 uppermost bits), the sy field (4 bits), the tag field (2 bits), a sync flag or a skip flag (1 bit), an interrupt flag (1 bit), and the payload length (16 lowermost bits)h]hContains the header length (8 uppermost bits), the sy field (4 bits), the tag field (2 bits), a sync flag or a skip flag (1 bit), an interrupt flag (1 bit), and the payload length (16 lowermost bits)}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMihjJubah}(h]h ]h"]h$]h&]uh1hhjJubeh}(h]h ]h"]h$]h&]uh1hhjJhMlhjJubh)}(h<``header`` Header and payload in case of a transmit context.h](h)}(h ``header``h]jq)}(hjJh]hheader}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjJubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMlhjJubh)}(hhh]h)}(h1Header and payload in case of a transmit context.h]h1Header and payload in case of a transmit context.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMmhjJubah}(h]h ]h"]h$]h&]uh1hhjJubeh}(h]h ]h"]h$]h&]uh1hhjJhMlhjJubeh}(h]h ]h"]h$]h&]uh1hhj:Jubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjKh]h Description}(hj KhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjKubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMphjThhubh)}(h:c:type:`struct fw_cdev_iso_packet ` is used to describe isochronous packet queues. Use the FW_CDEV_ISO_* macros to fill in **control**. The **header** array is empty in case of receive contexts.h](h)}(h8:c:type:`struct fw_cdev_iso_packet `h]jq)}(hj$Kh]hstruct fw_cdev_iso_packet}(hj&KhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj"Kubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_iso_packetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMnhjKubhX is used to describe isochronous packet queues. Use the FW_CDEV_ISO_* macros to fill in }(hjKhhhNhNubj$)}(h **control**h]hcontrol}(hjFKhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjKubh. The }(hjKhhhNhNubj$)}(h **header**h]hheader}(hjXKhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjKubh, array is empty in case of receive contexts.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjAKhMnhjThhubh)}(h.Context type ``FW_CDEV_ISO_CONTEXT_TRANSMIT``:h](h Context type }(hjpKhhhNhNubjq)}(h ``FW_CDEV_ISO_CONTEXT_TRANSMIT``h]hFW_CDEV_ISO_CONTEXT_TRANSMIT}(hjxKhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjpKubh:}(hjpKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMrhjThhubh)}(h**control.HEADER_LENGTH** must be a multiple of 4. It specifies the numbers of bytes in **header** that will be prepended to the packet's payload. These bytes are copied into the kernel and will not be accessed after the ioctl has returned.h](j$)}(h**control.HEADER_LENGTH**h]hcontrol.HEADER_LENGTH}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjKubh@ must be a multiple of 4. It specifies the numbers of bytes in }(hjKhhhNhNubj$)}(h **header**h]hheader}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjKubh that will be prepended to the packet’s payload. These bytes are copied into the kernel and will not be accessed after the ioctl has returned.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMthjThhubh)}(hThe **control.SY** and TAG fields are copied to the iso packet header. These fields are specified by IEEE 1394a and IEC 61883-1.h](hThe }(hjKhhhNhNubj$)}(h**control.SY**h]h control.SY}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjKubho and TAG fields are copied to the iso packet header. These fields are specified by IEEE 1394a and IEC 61883-1.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMyhjThhubh)}(hThe **control.SKIP** flag specifies that no packet is to be sent in a frame. When using this, all other fields except **control.INTERRUPT** must be zero.h](hThe }(hjKhhhNhNubj$)}(h**control.SKIP**h]h control.SKIP}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjKubhb flag specifies that no packet is to be sent in a frame. When using this, all other fields except }(hjKhhhNhNubj$)}(h**control.INTERRUPT**h]hcontrol.INTERRUPT}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjKubh must be zero.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM|hjThhubh)}(hWhen a packet with the **control.INTERRUPT** flag set has been completed, an :c:type:`fw_cdev_event_iso_interrupt` event will be sent.h](hWhen a packet with the }(hjLhhhNhNubj$)}(h**control.INTERRUPT**h]hcontrol.INTERRUPT}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjLubh! flag set has been completed, an }(hjLhhhNhNubh)}(h%:c:type:`fw_cdev_event_iso_interrupt`h]jq)}(hj0Lh]hfw_cdev_event_iso_interrupt}(hj2LhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj.Lubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjLubh event will be sent.}(hjLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjMLhMhjThhubh)}(h-Context type ``FW_CDEV_ISO_CONTEXT_RECEIVE``:h](h Context type }(hjXLhhhNhNubjq)}(h``FW_CDEV_ISO_CONTEXT_RECEIVE``h]hFW_CDEV_ISO_CONTEXT_RECEIVE}(hj`LhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjXLubh:}(hjXLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(h**control.HEADER_LENGTH** must be a multiple of the context's header_size. If the HEADER_LENGTH is larger than the context's header_size, multiple packets are queued for this entry.h](j$)}(h**control.HEADER_LENGTH**h]hcontrol.HEADER_LENGTH}(hj}LhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjyLubh must be a multiple of the context’s header_size. If the HEADER_LENGTH is larger than the context’s header_size, multiple packets are queued for this entry.}(hjyLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(h.The **control.SY** and TAG fields are ignored.h](hThe }(hjLhhhNhNubj$)}(h**control.SY**h]h control.SY}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjLubh and TAG fields are ignored.}(hjLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hIf the **control.SYNC** flag is set, the context drops all packets until a packet with a sy field is received which matches :c:type:`fw_cdev_start_iso.sync `.h](hIf the }(hjLhhhNhNubj$)}(h**control.SYNC**h]h control.SYNC}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjLubhe flag is set, the context drops all packets until a packet with a sy field is received which matches }(hjLhhhNhNubh)}(h4:c:type:`fw_cdev_start_iso.sync `h]jq)}(hjLh]hfw_cdev_start_iso.sync}(hjLhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjLubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_start_isouh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjLubh.}(hjLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjLhMhjThhubh)}(hXr**control.PAYLOAD_LENGTH** defines how many payload bytes can be received for one packet (in addition to payload quadlets that have been defined as headers and are stripped and returned in the :c:type:`fw_cdev_event_iso_interrupt` structure). If more bytes are received, the additional bytes are dropped. If less bytes are received, the remaining bytes in this part of the payload buffer will not be written to, not even by the next packet. I.e., packets received in consecutive frames will not necessarily be consecutive in memory. If an entry has queued multiple packets, the PAYLOAD_LENGTH is divided equally among them.h](j$)}(h**control.PAYLOAD_LENGTH**h]hcontrol.PAYLOAD_LENGTH}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjLubh defines how many payload bytes can be received for one packet (in addition to payload quadlets that have been defined as headers and are stripped and returned in the }(hjLhhhNhNubh)}(h%:c:type:`fw_cdev_event_iso_interrupt`h]jq)}(hjMh]hfw_cdev_event_iso_interrupt}(hjMhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjMubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjLubhX structure). If more bytes are received, the additional bytes are dropped. If less bytes are received, the remaining bytes in this part of the payload buffer will not be written to, not even by the next packet. I.e., packets received in consecutive frames will not necessarily be consecutive in memory. If an entry has queued multiple packets, the PAYLOAD_LENGTH is divided equally among them.}(hjLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj0MhMhjThhubh)}(hWhen a packet with the **control.INTERRUPT** flag set has been completed, an :c:type:`fw_cdev_event_iso_interrupt` event will be sent. An entry that has queued multiple receive packets is completed when its last packet is completed.h](hWhen a packet with the }(hj;MhhhNhNubj$)}(h**control.INTERRUPT**h]hcontrol.INTERRUPT}(hjCMhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj;Mubh! flag set has been completed, an }(hj;MhhhNhNubh)}(h%:c:type:`fw_cdev_event_iso_interrupt`h]jq)}(hjWMh]hfw_cdev_event_iso_interrupt}(hjYMhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjUMubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj;Mubhw event will be sent. An entry that has queued multiple receive packets is completed when its last packet is completed.}(hj;MhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjtMhMhjThhubh)}(h:Context type ``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``:h](h Context type }(hjMhhhNhNubjq)}(h,``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``h]h(FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjMubh:}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hHere, :c:type:`fw_cdev_iso_packet` would be more aptly named _iso_buffer_chunk since it specifies a chunk of the mmap()'ed buffer, while the number and alignment of packets to be placed into the buffer chunk is not known beforehand.h](hHere, }(hjMhhhNhNubh)}(h:c:type:`fw_cdev_iso_packet`h]jq)}(hjMh]hfw_cdev_iso_packet}(hjMhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjMubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_iso_packetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjMubh would be more aptly named _iso_buffer_chunk since it specifies a chunk of the mmap()’ed buffer, while the number and alignment of packets to be placed into the buffer chunk is not known beforehand.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjMhMhjThhubh)}(h**control.PAYLOAD_LENGTH** is the size of the buffer chunk and specifies room for header, payload, padding, and trailer bytes of one or more packets. It must be a multiple of 4.h](j$)}(h**control.PAYLOAD_LENGTH**h]hcontrol.PAYLOAD_LENGTH}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjMubh is the size of the buffer chunk and specifies room for header, payload, padding, and trailer bytes of one or more packets. It must be a multiple of 4.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hn**control.HEADER_LENGTH**, TAG and SY are ignored. SYNC is treated as described for single-channel reception.h](j$)}(h**control.HEADER_LENGTH**h]hcontrol.HEADER_LENGTH}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjMubhU, TAG and SY are ignored. SYNC is treated as described for single-channel reception.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hWhen a buffer chunk with the **control.INTERRUPT** flag set has been filled entirely, an :c:type:`fw_cdev_event_iso_interrupt_mc` event will be sent.h](hWhen a buffer chunk with the }(hj NhhhNhNubj$)}(h**control.INTERRUPT**h]hcontrol.INTERRUPT}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj Nubh' flag set has been filled entirely, an }(hj NhhhNhNubh)}(h(:c:type:`fw_cdev_event_iso_interrupt_mc`h]jq)}(hj(Nh]hfw_cdev_event_iso_interrupt_mc}(hj*NhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj&Nubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_iso_interrupt_mcuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj Nubh event will be sent.}(hj NhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjENhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_queue_iso (C struct)c.fw_cdev_queue_isohNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_queue_isoh]j)}(hstruct fw_cdev_queue_isoh](j)}(hjh]hstruct}(hjiNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeNhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjwNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeNhhhjvNhMubj)}(hfw_cdev_queue_isoh]j)}(hjcNh]hfw_cdev_queue_iso}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjeNhhhjvNhMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjaNhhhjvNhMubah}(h]j\Nah ](jjeh"]h$]h&]jj)jhuh1jhjvNhMhj^Nhhubj)}(hhh]h)}(h!Queue isochronous packets for I/Oh]h!Queue isochronous packets for I/O}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjNhhubah}(h]h ]h"]h$]h&]uh1jhj^NhhhjvNhMubeh}(h]h ](jstructeh"]h$]h&]jjjjNjjNjjjuh1jhhhjThjhNubj)}(hXi**Definition**:: struct fw_cdev_queue_iso { __u64 packets; __u64 data; __u32 size; __u32 handle; }; **Members** ``packets`` Userspace pointer to an array of :c:type:`fw_cdev_iso_packet` ``data`` Pointer into mmap()'ed payload buffer ``size`` Size of the **packets** array, in bytes ``handle`` Isochronous context handleh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjNubh:}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjNubjf)}(hbstruct fw_cdev_queue_iso { __u64 packets; __u64 data; __u32 size; __u32 handle; };h]hbstruct fw_cdev_queue_iso { __u64 packets; __u64 data; __u32 size; __u32 handle; };}hjNsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjNubh)}(h **Members**h]j$)}(hjNh]hMembers}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjNubh)}(hhh](h)}(hJ``packets`` Userspace pointer to an array of :c:type:`fw_cdev_iso_packet` h](h)}(h ``packets``h]jq)}(hjOh]hpackets}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjOubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjOubh)}(hhh]h)}(h=Userspace pointer to an array of :c:type:`fw_cdev_iso_packet`h](h!Userspace pointer to an array of }(hj1OhhhNhNubh)}(h:c:type:`fw_cdev_iso_packet`h]jq)}(hj;Oh]hfw_cdev_iso_packet}(hj=OhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj9Oubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_iso_packetuh1hhj-OhMhj1Oubeh}(h]h ]h"]h$]h&]uh1hhj-OhMhj.Oubah}(h]h ]h"]h$]h&]uh1hhjOubeh}(h]h ]h"]h$]h&]uh1hhj-OhMhjOubh)}(h/``data`` Pointer into mmap()'ed payload buffer h](h)}(h``data``h]jq)}(hjpOh]hdata}(hjrOhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjnOubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjjOubh)}(hhh]h)}(h%Pointer into mmap()'ed payload bufferh]h'Pointer into mmap()’ed payload buffer}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMhjOubah}(h]h ]h"]h$]h&]uh1hhjjOubeh}(h]h ]h"]h$]h&]uh1hhjOhMhjOubh)}(h1``size`` Size of the **packets** array, in bytes h](h)}(h``size``h]jq)}(hjOh]hsize}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjOubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjOubh)}(hhh]h)}(h'Size of the **packets** array, in bytesh](h Size of the }(hjOhhhNhNubj$)}(h **packets**h]hpackets}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjOubh array, in bytes}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjOhMhjOubah}(h]h ]h"]h$]h&]uh1hhjOubeh}(h]h ]h"]h$]h&]uh1hhjOhMhjOubh)}(h%``handle`` Isochronous context handleh](h)}(h ``handle``h]jq)}(hjOh]hhandle}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjOubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjOubh)}(hhh]h)}(hIsochronous context handleh]hIsochronous context handle}(hj PhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj Pubah}(h]h ]h"]h$]h&]uh1hhjOubeh}(h]h ]h"]h$]h&]uh1hhj PhMhjOubeh}(h]h ]h"]h$]h&]uh1hhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj7Ph]h Description}(hj9PhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj5Pubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hX|Queue a number of isochronous packets for reception or transmission. This ioctl takes a pointer to an array of :c:type:`fw_cdev_iso_packet` structs, which describe how to transmit from or receive into a contiguous region of a mmap()'ed payload buffer. As part of transmit packet descriptors, a series of headers can be supplied, which will be prepended to the payload during DMA.h](hoQueue a number of isochronous packets for reception or transmission. This ioctl takes a pointer to an array of }(hjMPhhhNhNubh)}(h:c:type:`fw_cdev_iso_packet`h]jq)}(hjWPh]hfw_cdev_iso_packet}(hjYPhhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphjUPubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_iso_packetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjMPubh structs, which describe how to transmit from or receive into a contiguous region of a mmap()’ed payload buffer. As part of transmit packet descriptors, a series of headers can be supplied, which will be prepended to the payload during DMA.}(hjMPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjtPhMhjThhubh)}(hThe kernel may or may not queue all packets, but will write back updated values of the **packets**, **data** and **size** fields, so the ioctl can be resubmitted easily.h](hWThe kernel may or may not queue all packets, but will write back updated values of the }(hjPhhhNhNubj$)}(h **packets**h]hpackets}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjPubh, }(hjPhhhNhNubj$)}(h**data**h]hdata}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjPubh and }(hjPhhhNhNubj$)}(h**size**h]hsize}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjPubh0 fields, so the ioctl can be resubmitted easily.}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hiIn case of a multichannel receive context, **data** must be quadlet-aligned relative to the buffer start.h](h+In case of a multichannel receive context, }(hjPhhhNhNubj$)}(h**data**h]hdata}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjPubh6 must be quadlet-aligned relative to the buffer start.}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_start_iso (C struct)c.fw_cdev_start_isohNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_start_isoh]j)}(hstruct fw_cdev_start_isoh](j)}(hjh]hstruct}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPhhhj QhMubj)}(hfw_cdev_start_isoh]j)}(hjPh]hfw_cdev_start_iso}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjPhhhj QhMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjPhhhj QhMubah}(h]jPah ](jjeh"]h$]h&]jj)jhuh1jhj QhMhjPhhubj)}(hhh]h)}(h.Start an isochronous transmission or receptionh]h.Start an isochronous transmission or reception}(hj@QhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj=Qhhubah}(h]h ]h"]h$]h&]uh1jhjPhhhj QhMubeh}(h]h ](jstructeh"]h$]h&]jjjjXQjjXQjjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_start_iso { __s32 cycle; __u32 sync; __u32 tags; __u32 handle; }; **Members** ``cycle`` Cycle in which to start I/O. If **cycle** is greater than or equal to 0, the I/O will start on that cycle. ``sync`` Determines the value to wait for receive packets that have the ``FW_CDEV_ISO_SYNC`` bit set ``tags`` Tag filter bit mask. Only valid for isochronous reception. Determines the tag values for which packets will be accepted. Use FW_CDEV_ISO_CONTEXT_MATCH_* macros to set **tags**. ``handle`` Isochronous context handle within which to transmit or receiveh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjdQhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj`Qubh:}(hj`QhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj\Qubjf)}(h`struct fw_cdev_start_iso { __s32 cycle; __u32 sync; __u32 tags; __u32 handle; };h]h`struct fw_cdev_start_iso { __s32 cycle; __u32 sync; __u32 tags; __u32 handle; };}hj}Qsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj\Qubh)}(h **Members**h]j$)}(hjQh]hMembers}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjQubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj\Qubh)}(hhh](h)}(hv``cycle`` Cycle in which to start I/O. If **cycle** is greater than or equal to 0, the I/O will start on that cycle. h](h)}(h ``cycle``h]jq)}(hjQh]hcycle}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjQubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjQubh)}(hhh]h)}(hkCycle in which to start I/O. If **cycle** is greater than or equal to 0, the I/O will start on that cycle.h](h!Cycle in which to start I/O. If }(hjQhhhNhNubj$)}(h **cycle**h]hcycle}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjQubhA is greater than or equal to 0, the I/O will start on that cycle.}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjQubah}(h]h ]h"]h$]h&]uh1hhjQubeh}(h]h ]h"]h$]h&]uh1hhjQhMhjQubh)}(he``sync`` Determines the value to wait for receive packets that have the ``FW_CDEV_ISO_SYNC`` bit set h](h)}(h``sync``h]jq)}(hjQh]hsync}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjQubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjQubh)}(hhh]h)}(h[Determines the value to wait for receive packets that have the ``FW_CDEV_ISO_SYNC`` bit seth](h?Determines the value to wait for receive packets that have the }(hjRhhhNhNubjq)}(h``FW_CDEV_ISO_SYNC``h]hFW_CDEV_ISO_SYNC}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjRubh bit set}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjRubah}(h]h ]h"]h$]h&]uh1hhjQubeh}(h]h ]h"]h$]h&]uh1hhjRhMhjQubh)}(h``tags`` Tag filter bit mask. Only valid for isochronous reception. Determines the tag values for which packets will be accepted. Use FW_CDEV_ISO_CONTEXT_MATCH_* macros to set **tags**. h](h)}(h``tags``h]jq)}(hjERh]htags}(hjGRhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjCRubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj?Rubh)}(hhh]h)}(hTag filter bit mask. Only valid for isochronous reception. Determines the tag values for which packets will be accepted. Use FW_CDEV_ISO_CONTEXT_MATCH_* macros to set **tags**.h](hTag filter bit mask. Only valid for isochronous reception. Determines the tag values for which packets will be accepted. Use FW_CDEV_ISO_CONTEXT_MATCH_* macros to set }(hj^RhhhNhNubj$)}(h**tags**h]htags}(hjfRhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj^Rubh.}(hj^RhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj[Rubah}(h]h ]h"]h$]h&]uh1hhj?Rubeh}(h]h ]h"]h$]h&]uh1hhjZRhMhjQubh)}(hI``handle`` Isochronous context handle within which to transmit or receiveh](h)}(h ``handle``h]jq)}(hjRh]hhandle}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjRubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjRubh)}(hhh]h)}(h>Isochronous context handle within which to transmit or receiveh]h>Isochronous context handle within which to transmit or receive}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjRubah}(h]h ]h"]h$]h&]uh1hhjRubeh}(h]h ]h"]h$]h&]uh1hhjRhMhjQubeh}(h]h ]h"]h$]h&]uh1hhj\Qubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_stop_iso (C struct)c.fw_cdev_stop_isohNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_stop_isoh]j)}(hstruct fw_cdev_stop_isoh](j)}(hjh]hstruct}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRhhhjRhMubj)}(hfw_cdev_stop_isoh]j)}(hjRh]hfw_cdev_stop_iso}(hj ShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjRhhhjRhMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjRhhhjRhMubah}(h]jRah ](jjeh"]h$]h&]jj)jhuh1jhjRhMhjRhhubj)}(hhh]h)}(h-Stop an isochronous transmission or receptionh]h-Stop an isochronous transmission or reception}(hj-ShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj*Shhubah}(h]h ]h"]h$]h&]uh1jhjRhhhjRhMubeh}(h]h ](jstructeh"]h$]h&]jjjjESjjESjjjuh1jhhhjThjhNubj)}(h**Definition**:: struct fw_cdev_stop_iso { __u32 handle; }; **Members** ``handle`` Handle of isochronous context to stoph](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjQShhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjMSubh:}(hjMShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjISubjf)}(h.struct fw_cdev_stop_iso { __u32 handle; };h]h.struct fw_cdev_stop_iso { __u32 handle; };}hjjSsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjISubh)}(h **Members**h]j$)}(hj{Sh]hMembers}(hj}ShhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjySubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjISubh)}(hhh]h)}(h0``handle`` Handle of isochronous context to stoph](h)}(h ``handle``h]jq)}(hjSh]hhandle}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jphjSubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjSubh)}(hhh]h)}(h%Handle of isochronous context to stoph]h%Handle of isochronous context to stop}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjSubah}(h]h ]h"]h$]h&]uh1hhjSubeh}(h]h ]h"]h$]h&]uh1hhjShMhjSubah}(h]h ]h"]h$]h&]uh1hhjISubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_flush_iso (C struct)c.fw_cdev_flush_isohNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_flush_isoh]j)}(hstruct fw_cdev_flush_isoh](j)}(hjh]hstruct}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhhjThMubj)}(hfw_cdev_flush_isoh]j)}(hjSh]hfw_cdev_flush_iso}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjShhhjThMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjShhhjThMubah}(h]jSah ](jjeh"]h$]h&]jj)jhuh1jhjThMhjShhubj)}(hhh]h)}(hflush completed iso packetsh]hflush completed iso packets}(hj6ThhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj3Thhubah}(h]h ]h"]h$]h&]uh1jhjShhhjThMubeh}(h]h ](jstructeh"]h$]h&]jjjjNTjjNTjjjuh1jhhhjThjhNubj)}(h**Definition**:: struct fw_cdev_flush_iso { __u32 handle; }; **Members** ``handle`` handle of isochronous context to flushh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjZThhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjVTubh:}(hjVThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjRTubjf)}(h/struct fw_cdev_flush_iso { __u32 handle; };h]h/struct fw_cdev_flush_iso { __u32 handle; };}hjsTsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjRTubh)}(h **Members**h]j$)}(hjTh]hMembers}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjTubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjRTubh)}(hhh]h)}(1h1``handle`` handle of isochronous context to flushh](h)}(h ``handle``h]jq)}(hjTh]hhandle}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jphjTubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjTubh)}(hhh]h)}(h&handle of isochronous context to flushh]h&handle of isochronous context to flush}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjTubah}(h]h ]h"]h$]h&]uh1hhjTubeh}(h]h ]h"]h$]h&]uh1hhjThMhjTubah}(h]h ]h"]h$]h&]uh1hhjRTubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjTh]h Description}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjTubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hoFor ``FW_CDEV_ISO_CONTEXT_TRANSMIT`` or ``FW_CDEV_ISO_CONTEXT_RECEIVE`` contexts, report any completed packets.h](hFor }(hjThhhNhNubjq)}(h ``FW_CDEV_ISO_CONTEXT_TRANSMIT``h]hFW_CDEV_ISO_CONTEXT_TRANSMIT}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjTubh or }(hjThhhNhNubjq)}(h``FW_CDEV_ISO_CONTEXT_RECEIVE``h]hFW_CDEV_ISO_CONTEXT_RECEIVE}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjTubh( contexts, report any completed packets.}(hjThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hFor ``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL`` contexts, report the current offset in the receive buffer, if it has changed; this is typically in the middle of some buffer chunk.h](hFor }(hj/UhhhNhNubjq)}(h,``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``h]h(FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL}(hj7UhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj/Uubh contexts, report the current offset in the receive buffer, if it has changed; this is typically in the middle of some buffer chunk.}(hj/UhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hAny ``FW_CDEV_EVENT_ISO_INTERRUPT`` or ``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL`` events generated by this ioctl are sent synchronously, i.e., are available for reading from the file descriptor when this ioctl returns.h](hAny }(hjPUhhhNhNubjq)}(h``FW_CDEV_EVENT_ISO_INTERRUPT``h]hFW_CDEV_EVENT_ISO_INTERRUPT}(hjXUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjPUubh or }(hjPUhhhNhNubjq)}(h,``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL``h]h(FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL}(hjjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjPUubh events generated by this ioctl are sent synchronously, i.e., are available for reading from the file descriptor when this ioctl returns.}(hjPUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j"fw_cdev_get_cycle_timer (C struct)c.fw_cdev_get_cycle_timerhNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_get_cycle_timerh]j)}(hstruct fw_cdev_get_cycle_timerh](j)}(hjh]hstruct}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUhhhjUhMubj)}(hfw_cdev_get_cycle_timerh]j)}(hjUh]hfw_cdev_get_cycle_timer}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjUhhhjUhMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjUhhhjUhMubah}(h]jUah ](jjeh"]h$]h&]jj)jhuh1jhjUhMhjUhhubj)}(hhh]h)}(hread cycle timer registerh]hread cycle timer register}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjUhhubah}(h]h ]h"]h$]h&]uh1jhjUhhhjUhMubeh}(h]h ](jstructeh"]h$]h&]jjjjUjjUjjjuh1jhhhjThjhNubj)}(h**Definition**:: struct fw_cdev_get_cycle_timer { __u64 local_time; __u32 cycle_timer; }; **Members** ``local_time`` system time, in microseconds since the Epoch ``cycle_timer`` Cycle Time register contentsh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjUubh:}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjUubjf)}(hPstruct fw_cdev_get_cycle_timer { __u64 local_time; __u32 cycle_timer; };h]hPstruct fw_cdev_get_cycle_timer { __u64 local_time; __u32 cycle_timer; };}hjVsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjUubh)}(h **Members**h]j$)}(hj,Vh]hMembers}(hj.VhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj*Vubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM hjUubh)}(hhh](h)}(h<``local_time`` system time, in microseconds since the Epoch h](h)}(h``local_time``h]jq)}(hjKVh]h local_time}(hjMVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjIVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjEVubh)}(hhh]h)}(h,system time, in microseconds since the Epochh]h,system time, in microseconds since the Epoch}(hjdVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`VhMhjaVubah}(h]h ]h"]h$]h&]uh1hhjEVubeh}(h]h ]h"]h$]h&]uh1hhj`VhMhjBVubh)}(h,``cycle_timer`` Cycle Time register contentsh](h)}(h``cycle_timer``h]jq)}(hjVh]h cycle_timer}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj~Vubh)}(hhh]h)}(hCycle Time register contentsh]hCycle Time register contents}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjVubah}(h]h ]h"]h$]h&]uh1hhj~Vubeh}(h]h ]h"]h$]h&]uh1hhjVhMhjBVubeh}(h]h ]h"]h$]h&]uh1hhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjVh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(htSame as ``FW_CDEV_IOC_GET_CYCLE_TIMER2``, but fixed to use ``CLOCK_REALTIME`` and only with microseconds resolution.h](hSame as }(hjVhhhNhNubjq)}(h ``FW_CDEV_IOC_GET_CYCLE_TIMER2``h]hFW_CDEV_IOC_GET_CYCLE_TIMER2}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjVubh, but fixed to use }(hjVhhhNhNubjq)}(h``CLOCK_REALTIME``h]hCLOCK_REALTIME}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjVubh' and only with microseconds resolution.}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(h}In version 1 and 2 of the ABI, this ioctl returned unreliable (non- monotonic) **cycle_timer** values on certain controllers.h](hOIn version 1 and 2 of the ABI, this ioctl returned unreliable (non- monotonic) }(hjWhhhNhNubj$)}(h**cycle_timer**h]h cycle_timer}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjWubh values on certain controllers.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j#fw_cdev_get_cycle_timer2 (C struct)c.fw_cdev_get_cycle_timer2hNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_get_cycle_timer2h]j)}(hstruct fw_cdev_get_cycle_timer2h](j)}(hjh]hstruct}(hjJWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFWhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM ubj)}(h h]h }(hjXWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFWhhhjWWhM ubj)}(hfw_cdev_get_cycle_timer2h]j)}(hjDWh]hfw_cdev_get_cycle_timer2}(hjjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfWubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjFWhhhjWWhM ubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjBWhhhjWWhM ubah}(h]j=Wah ](jjeh"]h$]h&]jj)jhuh1jhjWWhM hj?Whhubj)}(hhh]h)}(hread cycle timer registerh]hread cycle timer register}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjWhhubah}(h]h ]h"]h$]h&]uh1jhj?WhhhjWWhM ubeh}(h]h ](jstructeh"]h$]h&]jjjjWjjWjjjuh1jhhhjThjhNubj)}(hXs**Definition**:: struct fw_cdev_get_cycle_timer2 { __s64 tv_sec; __s32 tv_nsec; __s32 clk_id; __u32 cycle_timer; }; **Members** ``tv_sec`` system time, seconds ``tv_nsec`` system time, sub-seconds part in nanoseconds ``clk_id`` input parameter, clock from which to get the system time ``cycle_timer`` Cycle Time register contentsh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjWubh:}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjWubjf)}(hrstruct fw_cdev_get_cycle_timer2 { __s64 tv_sec; __s32 tv_nsec; __s32 clk_id; __u32 cycle_timer; };h]hrstruct fw_cdev_get_cycle_timer2 { __s64 tv_sec; __s32 tv_nsec; __s32 clk_id; __u32 cycle_timer; };}hjWsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjWubh)}(h **Members**h]j$)}(hjWh]hMembers}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjWubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjWubh)}(hhh](h)}(h ``tv_sec`` system time, seconds h](h)}(h ``tv_sec``h]jq)}(hjWh]htv_sec}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjWubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjWubh)}(hhh]h)}(hsystem time, secondsh]hsystem time, seconds}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjXubah}(h]h ]h"]h$]h&]uh1hhjWubeh}(h]h ]h"]h$]h&]uh1hhjXhMhjWubh)}(h9``tv_nsec`` system time, sub-seconds part in nanoseconds h](h)}(h ``tv_nsec``h]jq)}(hj2Xh]htv_nsec}(hj4XhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0Xubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj,Xubh)}(hhh]h)}(h,system time, sub-seconds part in nanosecondsh]h,system time, sub-seconds part in nanoseconds}(hjKXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGXhMhjHXubah}(h]h ]h"]h$]h&]uh1hhj,Xubeh}(h]h ]h"]h$]h&]uh1hhjGXhMhjWubh)}(hD``clk_id`` input parameter, clock from which to get the system time h](h)}(h ``clk_id``h]jq)}(hjkXh]hclk_id}(hjmXhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjiXubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjeXubh)}(hhh]h)}(h8input parameter, clock from which to get the system timeh]h8input parameter, clock from which to get the system time}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjXubah}(h]h ]h"]h$]h&]uh1hhjeXubeh}(h]h ]h"]h$]h&]uh1hhjXhMhjWubh)}(h,``cycle_timer`` Cycle Time register contentsh](h)}(h``cycle_timer``h]jq)}(hjXh]h cycle_timer}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjXubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjXubh)}(hhh]h)}(hCycle Time register contentsh]hCycle Time register contents}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjXubah}(h]h ]h"]h$]h&]uh1hhjXubeh}(h]h ]h"]h$]h&]uh1hhjXhMhjWubeh}(h]h ]h"]h$]h&]uh1hhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjXh]h Description}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjXubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hThe ``FW_CDEV_IOC_GET_CYCLE_TIMER2`` ioctl reads the isochronous cycle timer and also the system clock. This allows to correlate reception time of isochronous packets with system time.h](hThe }(hjXhhhNhNubjq)}(h ``FW_CDEV_IOC_GET_CYCLE_TIMER2``h]hFW_CDEV_IOC_GET_CYCLE_TIMER2}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjXubh ioctl reads the isochronous cycle timer and also the system clock. This allows to correlate reception time of isochronous packets with system time.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(h**clk_id** lets you choose a clock like with POSIX' clock_gettime function. Supported **clk_id** values are POSIX' ``CLOCK_REALTIME`` and ``CLOCK_MONOTONIC`` and Linux' ``CLOCK_MONOTONIC_RAW``.h](j$)}(h **clk_id**h]hclk_id}(hj"YhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjYubhN lets you choose a clock like with POSIX’ clock_gettime function. Supported }(hjYhhhNhNubj$)}(h **clk_id**h]hclk_id}(hj4YhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjYubh values are POSIX’ }(hjYhhhNhNubjq)}(h``CLOCK_REALTIME``h]hCLOCK_REALTIME}(hjFYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYubh and }(hjYhhhNhNubjq)}(h``CLOCK_MONOTONIC``h]hCLOCK_MONOTONIC}(hjXYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYubh and Linux’ }(hjYhhhNhNubjq)}(h``CLOCK_MONOTONIC_RAW``h]hCLOCK_MONOTONIC_RAW}(hjjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYubh.}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(h**cycle_timer** consists of 7 bits cycleSeconds, 13 bits cycleCount, and 12 bits cycleOffset, in host byte order. Cf. the Cycle Time register per IEEE 1394 or Isochronous Cycle Timer register per OHCI-1394.h](j$)}(h**cycle_timer**h]h cycle_timer}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjYubh consists of 7 bits cycleSeconds, 13 bits cycleCount, and 12 bits cycleOffset, in host byte order. Cf. the Cycle Time register per IEEE 1394 or Isochronous Cycle Timer register per OHCI-1394.}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j(fw_cdev_allocate_iso_resource (C struct)c.fw_cdev_allocate_iso_resourcehNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_allocate_iso_resourceh]j)}(h$struct fw_cdev_allocate_iso_resourceh](j)}(hjh]hstruct}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM%ubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYhhhjYhM%ubj)}(hfw_cdev_allocate_iso_resourceh]j)}(hjYh]hfw_cdev_allocate_iso_resource}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjYhhhjYhM%ubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjYhhhjYhM%ubah}(h]jYah ](jjeh"]h$]h&]jj)jhuh1jhjYhM%hjYhhubj)}(hhh]h)}(h#(De)allocate a channel or bandwidthh]h#(De)allocate a channel or bandwidth}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM*hjYhhubah}(h]h ]h"]h$]h&]uh1jhjYhhhjYhM%ubeh}(h]h ](jstructeh"]h$]h&]jjjjZjjZjjjuh1jhhhjThjhNubj)}(hX**Definition**:: struct fw_cdev_allocate_iso_resource { __u64 closure; __u64 channels; __u32 bandwidth; __u32 handle; }; **Members** ``closure`` Passed back to userspace in corresponding iso resource events ``channels`` Isochronous channels of which one is to be (de)allocated ``bandwidth`` Isochronous bandwidth units to be (de)allocated ``handle`` Handle to the allocation, written by the kernel (only valid in case of ``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE`` ioctls)h](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjZubh:}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM.hjZubjf)}(hwstruct fw_cdev_allocate_iso_resource { __u64 closure; __u64 channels; __u32 bandwidth; __u32 handle; };h]hwstruct fw_cdev_allocate_iso_resource { __u64 closure; __u64 channels; __u32 bandwidth; __u32 handle; };}hj8Zsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM0hjZubh)}(h **Members**h]j$)}(hjIZh]hMembers}(hjKZhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjGZubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM7hjZubh)}(hhh](h)}(hJ``closure`` Passed back to userspace in corresponding iso resource events h](h)}(h ``closure``h]jq)}(hjhZh]hclosure}(hjjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjfZubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM,hjbZubh)}(hhh]h)}(h=Passed back to userspace in corresponding iso resource eventsh]h=Passed back to userspace in corresponding iso resource events}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}ZhM,hj~Zubah}(h]h ]h"]h$]h&]uh1hhjbZubeh}(h]h ]h"]h$]h&]uh1hhj}ZhM,hj_Zubh)}(hF``channels`` Isochronous channels of which one is to be (de)allocated h](h)}(h ``channels``h]jq)}(hjZh]hchannels}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjZubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM-hjZubh)}(hhh]h)}(h8Isochronous channels of which one is to be (de)allocatedh]h8Isochronous channels of which one is to be (de)allocated}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhM-hjZubah}(h]h ]h"]h$]h&]uh1hhjZubeh}(h]h ]h"]h$]h&]uh1hhjZhM-hj_Zubh)}(h>``bandwidth`` Isochronous bandwidth units to be (de)allocated h](h)}(h ``bandwidth``h]jq)}(hjZh]h bandwidth}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjZubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM.hjZubh)}(hhh]h)}(h/Isochronous bandwidth units to be (de)allocatedh]h/Isochronous bandwidth units to be (de)allocated}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhM.hjZubah}(h]h ]h"]h$]h&]uh1hhjZubeh}(h]h ]h"]h$]h&]uh1hhjZhM.hj_Zubh)}(h``handle`` Handle to the allocation, written by the kernel (only valid in case of ``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE`` ioctls)h](h)}(h ``handle``h]jq)}(hj[h]hhandle}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj[ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM/hj [ubh)}(hhh]h)}(htHandle to the allocation, written by the kernel (only valid in case of ``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE`` ioctls)h](hGHandle to the allocation, written by the kernel (only valid in case of }(hj,[hhhNhNubjq)}(h%``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE``h]h!FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE}(hj4[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj,[ubh ioctls)}(hj,[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj([hM/hj)[ubah}(h]h ]h"]h$]h&]uh1hhj [ubeh}(h]h ]h"]h$]h&]uh1hhj([hM/hj_Zubeh}(h]h ]h"]h$]h&]uh1hhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjg[h]h Description}(hji[hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hje[ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM3hjThhubh)}(hX{The ``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE`` ioctl initiates allocation of an isochronous channel and/or of isochronous bandwidth at the isochronous resource manager (IRM). Only one of the channels specified in **channels** is allocated. An ``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` is sent after communication with the IRM, indicating success or failure in the event data. The kernel will automatically reallocate the resources after bus resets. Should a reallocation fail, an ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED`` event will be sent. The kernel will also automatically deallocate the resources when the file descriptor is closed.h](hThe }(hj}[hhhNhNubjq)}(h%``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE``h]h!FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj}[ubh ioctl initiates allocation of an isochronous channel and/or of isochronous bandwidth at the isochronous resource manager (IRM). Only one of the channels specified in }(hj}[hhhNhNubj$)}(h **channels**h]hchannels}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj}[ubh is allocated. An }(hj}[hhhNhNubjq)}(h(``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED``h]h$FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj}[ubh is sent after communication with the IRM, indicating success or failure in the event data. The kernel will automatically reallocate the resources after bus resets. Should a reallocation fail, an }(hj}[hhhNhNubjq)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj}[ubhu event will be sent. The kernel will also automatically deallocate the resources when the file descriptor is closed.}(hj}[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM1hjThhubh)}(hThe ``FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE`` ioctl can be used to initiate deallocation of resources which were allocated as described above. An ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED`` event concludes this operation.h](hThe }(hj[hhhNhNubjq)}(h'``FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE``h]h#FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj[ubhe ioctl can be used to initiate deallocation of resources which were allocated as described above. An }(hj[hhhNhNubjq)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj[ubh event concludes this operation.}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM;hjThhubh)}(hThe ``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE`` ioctl is a variant of allocation without automatic re- or deallocation. An ``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` event concludes this operation, indicating success or failure in its data.h](hThe }(hj\hhhNhNubjq)}(h*``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE``h]h&FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\ubhL ioctl is a variant of allocation without automatic re- or deallocation. An }(hj\hhhNhNubjq)}(h(``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED``h]h$FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED}(hj!\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\ubhK event concludes this operation, indicating success or failure in its data.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM?hjThhubh)}(hThe ``FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE`` ioctl works like ``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE`` except that resources are freed instead of allocated. An ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED`` event concludes this operation.h](hThe }(hj:\hhhNhNubjq)}(h,``FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE``h]h(FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE}(hjB\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:\ubh ioctl works like }(hj:\hhhNhNubjq)}(h*``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE``h]h&FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE}(hjT\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:\ubh: except that resources are freed instead of allocated. An }(hj:\hhhNhNubjq)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hjf\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:\ubh event concludes this operation.}(hj:\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMDhjThhubh)}(hTo summarize, ``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE`` allocates iso resources for the lifetime of the fd or **handle**. In contrast, ``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE`` allocates iso resources for the duration of a bus generation.h](hTo summarize, }(hj\hhhNhNubjq)}(h%``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE``h]h!FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\ubh7 allocates iso resources for the lifetime of the fd or }(hj\hhhNhNubj$)}(h **handle**h]hhandle}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj\ubh. In contrast, }(hj\hhhNhNubjq)}(h*``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE``h]h&FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\ubh> allocates iso resources for the duration of a bus generation.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMIhjThhubh)}(h**channels** is a host-endian bitfield with the least significant bit representing channel 0 and the most significant bit representing channel 63: 1ULL << c for each channel c that is a candidate for (de)allocation.h](j$)}(h **channels**h]hchannels}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj\ubh is a host-endian bitfield with the least significant bit representing channel 0 and the most significant bit representing channel 63: 1ULL << c for each channel c that is a candidate for (de)allocation.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMNhjThhubh)}(h**bandwidth** is expressed in bandwidth allocation units, i.e. the time to send one quadlet of data (payload or header data) at speed S1600.h](j$)}(h **bandwidth**h]h bandwidth}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj\ubh is expressed in bandwidth allocation units, i.e. the time to send one quadlet of data (payload or header data) at speed S1600.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMRhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_cdev_send_stream_packet (C struct)c.fw_cdev_send_stream_packethNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_send_stream_packeth]j)}(h!struct fw_cdev_send_stream_packeth](j)}(hjh]hstruct}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMXubj)}(h h]h }(hj%]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]hhhj$]hMXubj)}(hfw_cdev_send_stream_packeth]j)}(hj]h]hfw_cdev_send_stream_packet}(hj7]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3]ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj]hhhj$]hMXubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj]hhhj$]hMXubah}(h]j ]ah ](jjeh"]h$]h&]jj)jhuh1jhj$]hMXhj ]hhubj)}(hhh]h)}(h"send an asynchronous stream packeth]h"send an asynchronous stream packet}(hjY]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM]hjV]hhubah}(h]h ]h"]h$]h&]uh1jhj ]hhhj$]hMXubeh}(h]h ](jstructeh"]h$]h&]jjjjq]jjq]jjjuh1jhhhjThjhNubj)}(hXH**Definition**:: struct fw_cdev_send_stream_packet { __u32 length; __u32 tag; __u32 channel; __u32 sy; __u64 closure; __u64 data; __u32 generation; __u32 speed; }; **Members** ``length`` Length of outgoing payload, in bytes ``tag`` Data format tag ``channel`` Isochronous channel to transmit to ``sy`` Synchronization code ``closure`` Passed back to userspace in the response event ``data`` Userspace pointer to payload ``generation`` The bus generation where packet is valid ``speed`` Speed to transmit ath](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj}]hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjy]ubh:}(hjy]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMahju]ubjf)}(hstruct fw_cdev_send_stream_packet { __u32 length; __u32 tag; __u32 channel; __u32 sy; __u64 closure; __u64 data; __u32 generation; __u32 speed; };h]hstruct fw_cdev_send_stream_packet { __u32 length; __u32 tag; __u32 channel; __u32 sy; __u64 closure; __u64 data; __u32 generation; __u32 speed; };}hj]sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMchju]ubh)}(h **Members**h]j$)}(hj]h]hMembers}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj]ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMnhju]ubh)}(hhh](h)}(h0``length`` Length of outgoing payload, in bytes h](h)}(h ``length``h]jq)}(hj]h]hlength}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj]ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM_hj]ubh)}(hhh]h)}(h$Length of outgoing payload, in bytesh]h$Length of outgoing payload, in bytes}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hM_hj]ubah}(h]h ]h"]h$]h&]uh1hhj]ubeh}(h]h ]h"]h$]h&]uh1hhj]hM_hj]ubh)}(h``tag`` Data format tag h](h)}(h``tag``h]jq)}(hj]h]htag}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj]ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM`hj]ubh)}(hhh]h)}(hData format tagh]hData format tag}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hM`hj^ubah}(h]h ]h"]h$]h&]uh1hhj]ubeh}(h]h ]h"]h$]h&]uh1hhj^hM`hj]ubh)}(h/``channel`` Isochronous channel to transmit to h](h)}(h ``channel``h]jq)}(hj8^h]hchannel}(hj:^hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj6^ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMahj2^ubh)}(hhh]h)}(h"Isochronous channel to transmit toh]h"Isochronous channel to transmit to}(hjQ^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjM^hMahjN^ubah}(h]h ]h"]h$]h&]uh1hhj2^ubeh}(h]h ]h"]h$]h&]uh1hhjM^hMahj]ubh)}(h``sy`` Synchronization code h](h)}(h``sy``h]jq)}(hjq^h]hsy}(hjs^hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjo^ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMbhjk^ubh)}(hhh]h)}(hSynchronization codeh]hSynchronization code}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMbhj^ubah}(h]h ]h"]h$]h&]uh1hhjk^ubeh}(h]h ]h"]h$]h&]uh1hhj^hMbhj]ubh)}(h;``closure`` Passed back to userspace in the response event h](h)}(h ``closure``h]jq)}(hj^h]hclosure}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj^ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMchj^ubh)}(hhh]h)}(h.Passed back to userspace in the response eventh]h.Passed back to userspace in the response event}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMchj^ubah}(h]h ]h"]h$]h&]uh1hhj^ubeh}(h]h ]h"]h$]h&]uh1hhj^hMchj]ubh)}(h&``data`` Userspace pointer to payload h](h)}(h``data``h]jq)}(hj^h]hdata}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj^ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMdhj^ubh)}(hhh]h)}(hUserspace pointer to payloadh]hUserspace pointer to payload}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMdhj^ubah}(h]h ]h"]h$]h&]uh1hhj^ubeh}(h]h ]h"]h$]h&]uh1hhj^hMdhj]ubh)}(h8``generation`` The bus generation where packet is valid h](h)}(h``generation``h]jq)}(hj_h]h generation}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj_ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMehj_ubh)}(hhh]h)}(h(The bus generation where packet is validh]h(The bus generation where packet is valid}(hj5_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1_hMehj2_ubah}(h]h ]h"]h$]h&]uh1hhj_ubeh}(h]h ]h"]h$]h&]uh1hhj1_hMehj]ubh)}(h``speed`` Speed to transmit ath](h)}(h ``speed``h]jq)}(hjU_h]hspeed}(hjW_hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjS_ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMehjO_ubh)}(hhh]h)}(hSpeed to transmit ath]hSpeed to transmit at}(hjn_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhjk_ubah}(h]h ]h"]h$]h&]uh1hhjO_ubeh}(h]h ]h"]h$]h&]uh1hhjj_hMehj]ubeh}(h]h ]h"]h$]h&]uh1hhju]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hj_h]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj_ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMihjThhubh)}(hX0The ``FW_CDEV_IOC_SEND_STREAM_PACKET`` ioctl sends an asynchronous stream packet to every device which is listening to the specified channel. The kernel writes either :c:type:`fw_cdev_event_response` event or :c:type:`fw_cdev_event_response2` event which indicates success or failure of the transmission.h](hThe }(hj_hhhNhNubjq)}(h"``FW_CDEV_IOC_SEND_STREAM_PACKET``h]hFW_CDEV_IOC_SEND_STREAM_PACKET}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj_ubh ioctl sends an asynchronous stream packet to every device which is listening to the specified channel. The kernel writes either }(hj_hhhNhNubh)}(h :c:type:`fw_cdev_event_response`h]jq)}(hj_h]hfw_cdev_event_response}(hj_hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj_ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_responseuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMghj_ubh event or }(hj_hhhNhNubh)}(h!:c:type:`fw_cdev_event_response2`h]jq)}(hj_h]hfw_cdev_event_response2}(hj_hhhNhNubah}(h]h ](jMjc-typeeh"]h$]h&]uh1jphj_ubah}(h]h ]h"]h$]h&]refdocjY refdomainjreftypetype refexplicitrefwarnj_jcjgfw_cdev_event_response2uh1hhj_hMghj_ubh> event which indicates success or failure of the transmission.}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj_hMghjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j"fw_cdev_send_phy_packet (C struct)c.fw_cdev_send_phy_packethNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_send_phy_packeth]j)}(hstruct fw_cdev_send_phy_packeth](j)}(hjh]hstruct}(hj.`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*`hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMnubj)}(h h]h }(hj<`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*`hhhj;`hMnubj)}(hfw_cdev_send_phy_packeth]j)}(hj(`h]hfw_cdev_send_phy_packet}(hjN`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJ`ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj*`hhhj;`hMnubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj&`hhhj;`hMnubah}(h]j!`ah ](jjeh"]h$]h&]jj)jhuh1jhj;`hMnhj#`hhubj)}(hhh]h)}(hsend a PHY packeth]hsend a PHY packet}(hjp`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMwhjm`hhubah}(h]h ]h"]h$]h&]uh1jhj#`hhhj;`hMnubeh}(h]h ](jstructeh"]h$]h&]jjjj`jj`jjjuh1jhhhjThjhNubj)}(hX?**Definition**:: struct fw_cdev_send_phy_packet { __u64 closure; __u32 data[2]; __u32 generation; }; **Members** ``closure`` Passed back to userspace in the PHY-packet-sent event ``data`` First and second quadlet of the PHY packet ``generation`` The bus generation where packet is validh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj`ubh:}(hj`hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM{hj`ubjf)}(h_struct fw_cdev_send_phy_packet { __u64 closure; __u32 data[2]; __u32 generation; };h]h_struct fw_cdev_send_phy_packet { __u64 closure; __u32 data[2]; __u32 generation; };}hj`sbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM}hj`ubh)}(h **Members**h]j$)}(hj`h]hMembers}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj`ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj`ubh)}(hhh](h)}(hB``closure`` Passed back to userspace in the PHY-packet-sent event h](h)}(h ``closure``h]jq)}(hj`h]hclosure}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj`ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMyhj`ubh)}(hhh]h)}(h5Passed back to userspace in the PHY-packet-sent eventh]h5Passed back to userspace in the PHY-packet-sent event}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMyhj`ubah}(h]h ]h"]h$]h&]uh1hhj`ubeh}(h]h ]h"]h$]h&]uh1hhj`hMyhj`ubh)}(h4``data`` First and second quadlet of the PHY packet h](h)}(h``data``h]jq)}(hjah]hdata}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jphjaubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMzhjaubh)}(hhh]h)}(h*First and second quadlet of the PHY packeth]h*First and second quadlet of the PHY packet}(hj/ahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ahMzhj,aubah}(h]h ]h"]h$]h&]uh1hhjaubeh}(h]h ]h"]h$]h&]uh1hhj+ahMzhj`ubh)}(h7``generation`` The bus generation where packet is validh](h)}(h``generation``h]jq)}(hjOah]h generation}(hjQahhhNhNubah}(h]h ]h"]h$]h&]uh1jphjMaubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMzhjIaubh)}(hhh]h)}(h(The bus generation where packet is validh]h(The bus generation where packet is valid}(hjhahhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM{hjeaubah}(h]h ]h"]h$]h&]uh1hhjIaubeh}(h]h ]h"]h$]h&]uh1hhjdahMzhj`ubeh}(h]h ]h"]h$]h&]uh1hhj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjah]h Description}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjaubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM~hjThhubh)}(hThe ``FW_CDEV_IOC_SEND_PHY_PACKET`` ioctl sends a PHY packet to all nodes on the same card as this device. After transmission, either ``FW_CDEV_EVENT_PHY_PACKET_SENT`` event or ``FW_CDEV_EVENT_PHY_PACKET_SENT`` event is generated.h](hThe }(hjahhhNhNubjq)}(h``FW_CDEV_IOC_SEND_PHY_PACKET``h]hFW_CDEV_IOC_SEND_PHY_PACKET}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jphjaubhd ioctl sends a PHY packet to all nodes on the same card as this device. After transmission, either }(hjahhhNhNubjq)}(h!``FW_CDEV_EVENT_PHY_PACKET_SENT``h]hFW_CDEV_EVENT_PHY_PACKET_SENT}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jphjaubh event or }(hjahhhNhNubjq)}(h!``FW_CDEV_EVENT_PHY_PACKET_SENT``h]hFW_CDEV_EVENT_PHY_PACKET_SENT}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jphjaubh event is generated.}(hjahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM|hjThhubh)}(hThe payload **data**\[\] shall be specified in host byte order. Usually, **data**\[1\] needs to be the bitwise inverse of **data**\[0\]. VersaPHY packets are an exception to this rule.h](h The payload }(hjahhhNhNubj$)}(h**data**h]hdata}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjaubh6[] shall be specified in host byte order. Usually, }(hjahhhNhNubj$)}(h**data**h]hdata}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjaubh)[1] needs to be the bitwise inverse of }(hjahhhNhNubj$)}(h**data**h]hdata}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjaubh7[0]. VersaPHY packets are an exception to this rule.}(hjahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hIThe ioctl is only permitted on device files which represent a local node.h]hIThe ioctl is only permitted on device files which represent a local node.}(hj2bhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j&fw_cdev_receive_phy_packets (C struct)c.fw_cdev_receive_phy_packetshNtauh1jyhjThhhjhNubj)}(hhh](j)}(hfw_cdev_receive_phy_packetsh]j)}(h"struct fw_cdev_receive_phy_packetsh](j)}(hjh]hstruct}(hjZbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVbhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjhbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVbhhhjgbhMubj)}(hfw_cdev_receive_phy_packetsh]j)}(hjTbh]hfw_cdev_receive_phy_packets}(hjzbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvbubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjVbhhhjgbhMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjRbhhhjgbhMubah}(h]jMbah ](jjeh"]h$]h&]jj)jhuh1jhjgbhMhjObhhubj)}(hhh]h)}(hstart reception of PHY packetsh]hstart reception of PHY packets}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjbhhubah}(h]h ]h"]h$]h&]uh1jhjObhhhjgbhMubeh}(h]h ](jstructeh"]h$]h&]jjjjbjjbjjjuh1jhhhjThjhNubj)}(h**Definition**:: struct fw_cdev_receive_phy_packets { __u64 closure; }; **Members** ``closure`` Passed back to userspace in phy packet eventsh](h)}(h**Definition**::h](j$)}(h**Definition**h]h Definition}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjbubh:}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjbubjf)}(h:struct fw_cdev_receive_phy_packets { __u64 closure; };h]h:struct fw_cdev_receive_phy_packets { __u64 closure; };}hjbsbah}(h]h ]h"]h$]h&]jwjxuh1jehf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjbubh)}(h **Members**h]j$)}(hjbh]hMembers}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjbubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjbubh)}(hhh]h)}(h9``closure`` Passed back to userspace in phy packet eventsh](h)}(h ``closure``h]jq)}(hj ch]hclosure}(hj chhhNhNubah}(h]h ]h"]h$]h&]uh1jphjcubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjcubh)}(hhh]h)}(h-Passed back to userspace in phy packet eventsh]h-Passed back to userspace in phy packet events}(hj"chhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjcubah}(h]h ]h"]h$]h&]uh1hhjcubeh}(h]h ]h"]h$]h&]uh1hhjchMhjcubah}(h]h ]h"]h$]h&]uh1hhjbubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhjhNubh)}(h**Description**h]j$)}(hjLch]h Description}(hjNchhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjJcubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hThis ioctl activates issuing of either ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED`` or ``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2`` due to incoming PHY packets from any node on the same bus as the device.h](h'This ioctl activates issuing of either }(hjbchhhNhNubjq)}(h%``FW_CDEV_EVENT_PHY_PACKET_RECEIVED``h]h!FW_CDEV_EVENT_PHY_PACKET_RECEIVED}(hjjchhhNhNubah}(h]h ]h"]h$]h&]uh1jphjbcubh or }(hjbchhhNhNubjq)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hj|chhhNhNubah}(h]h ]h"]h$]h&]uh1jphjbcubhI due to incoming PHY packets from any node on the same bus as the device.}(hjbchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubh)}(hIThe ioctl is only permitted on device files which represent a local node.h]hIThe ioctl is only permitted on device files which represent a local node.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjThhubeh}(h]$firewire-char-device-data-structuresah ]h"]$firewire char device data structuresah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h,Firewire device probing and sysfs interfacesh]h,Firewire device probing and sysfs interfaces}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchhhhhKubjf)}(hXWhat: /sys/bus/firewire/devices/fw[0-9]+/ Date: May 2007 KernelVersion: 2.6.22 Contact: linux1394-devel@lists.sourceforge.net Description: IEEE 1394 node device attributes. Read-only. Mutable during the node device's lifetime. See IEEE 1212 for semantic definitions. config_rom Contents of the Configuration ROM register. Binary attribute; an array of host-endian u32. guid The node's EUI-64 in the bus information block of Configuration ROM. Hexadecimal string representation of an u64. What: /sys/bus/firewire/devices/fw[0-9]+/units Date: June 2009 KernelVersion: 2.6.31 Contact: linux1394-devel@lists.sourceforge.net Description: IEEE 1394 node device attribute. Read-only. Mutable during the node device's lifetime. See IEEE 1212 for semantic definitions. units Summary of all units present in an IEEE 1394 node. Contains space-separated tuples of specifier_id and version of each unit present in the node. Specifier_id and version are hexadecimal string representations of u24 of the respective unit directory entries. Specifier_id and version within each tuple are separated by a colon. Users: udev rules to set ownership and access permissions or ACLs of /dev/fw[0-9]+ character device files What: /sys/bus/firewire/devices/fw[0-9]+/is_local Date: July 2012 KernelVersion: 3.6 Contact: linux1394-devel@lists.sourceforge.net Description: IEEE 1394 node device attribute. Read-only and immutable. Values: 1: The sysfs entry represents a local node (a controller card). 0: The sysfs entry represents a remote node. What: /sys/bus/firewire/devices/fw[0-9]+[.][0-9]+/ Date: May 2007 KernelVersion: 2.6.22 Contact: linux1394-devel@lists.sourceforge.net Description: IEEE 1394 unit device attributes. Read-only. Immutable during the unit device's lifetime. See IEEE 1212 for semantic definitions. modalias Same as MODALIAS in the uevent at device creation. rom_index Offset of the unit directory within the parent device's (node device's) Configuration ROM, in quadlets. Decimal string representation. What: /sys/bus/firewire/devices/*/ Date: May 2007 KernelVersion: 2.6.22 Contact: linux1394-devel@lists.sourceforge.net Description: Attributes common to IEEE 1394 node devices and unit devices. Read-only. Mutable during the node device's lifetime. Immutable during the unit device's lifetime. See IEEE 1212 for semantic definitions. These attributes are only created if the root directory of an IEEE 1394 node or the unit directory of an IEEE 1394 unit actually contains according entries. hardware_version Hexadecimal string representation of an u24. hardware_version_name Contents of a respective textual descriptor leaf. model Hexadecimal string representation of an u24. model_name Contents of a respective textual descriptor leaf. specifier_id Hexadecimal string representation of an u24. Mandatory in unit directories according to IEEE 1212. vendor Hexadecimal string representation of an u24. Mandatory in the root directory according to IEEE 1212. vendor_name Contents of a respective textual descriptor leaf. version Hexadecimal string representation of an u24. Mandatory in unit directories according to IEEE 1212. What: /sys/bus/firewire/drivers/sbp2/fw*/host*/target*/*:*:*:*/ieee1394_id formerly /sys/bus/ieee1394/drivers/sbp2/fw*/host*/target*/*:*:*:*/ieee1394_id Date: Feb 2004 KernelVersion: 2.6.4 Contact: linux1394-devel@lists.sourceforge.net Description: SCSI target port identifier and logical unit identifier of a logical unit of an SBP-2 target. The identifiers are specified in SAM-2...SAM-4 annex A. They are persistent and world-wide unique properties the SBP-2 attached target. Read-only attribute, immutable during the target's lifetime. Format, as exposed by firewire-sbp2 since 2.6.22, May 2007: Colon-separated hexadecimal string representations of u64 EUI-64 : u24 directory_ID : u16 LUN without 0x prefixes, without whitespace. The former sbp2 driver (removed in 2.6.37 after being superseded by firewire-sbp2) used a somewhat shorter format which was not as close to SAM. Users: udev rules to create /dev/disk/by-id/ symlinks h]hX5What: /sys/bus/firewire/devices/fw[0-9]+/ Date: May 2007 KernelVersion: 2.6.22 Contact: linux1394-devel@lists.sourceforge.net Description: IEEE 1394 node device attributes. Read-only. Mutable during the node device's lifetime. See IEEE 1212 for semantic definitions. config_rom Contents of the Configuration ROM register. Binary attribute; an array of host-endian u32. guid The node's EUI-64 in the bus information block of Configuration ROM. Hexadecimal string representation of an u64. What: /sys/bus/firewire/devices/fw[0-9]+/units Date: June 2009 KernelVersion: 2.6.31 Contact: linux1394-devel@lists.sourceforge.net Description: IEEE 1394 node device attribute. Read-only. Mutable during the node device's lifetime. See IEEE 1212 for semantic definitions. units Summary of all units present in an IEEE 1394 node. Contains space-separated tuples of specifier_id and version of each unit present in the node. Specifier_id and version are hexadecimal string representations of u24 of the respective unit directory entries. Specifier_id and version within each tuple are separated by a colon. Users: udev rules to set ownership and access permissions or ACLs of /dev/fw[0-9]+ character device files What: /sys/bus/firewire/devices/fw[0-9]+/is_local Date: July 2012 KernelVersion: 3.6 Contact: linux1394-devel@lists.sourceforge.net Description: IEEE 1394 node device attribute. Read-only and immutable. Values: 1: The sysfs entry represents a local node (a controller card). 0: The sysfs entry represents a remote node. What: /sys/bus/firewire/devices/fw[0-9]+[.][0-9]+/ Date: May 2007 KernelVersion: 2.6.22 Contact: linux1394-devel@lists.sourceforge.net Description: IEEE 1394 unit device attributes. Read-only. Immutable during the unit device's lifetime. See IEEE 1212 for semantic definitions. modalias Same as MODALIAS in the uevent at device creation. rom_index Offset of the unit directory within the parent device's (node device's) Configuration ROM, in quadlets. Decimal string representation. What: /sys/bus/firewire/devices/*/ Date: May 2007 KernelVersion: 2.6.22 Contact: linux1394-devel@lists.sourceforge.net Description: Attributes common to IEEE 1394 node devices and unit devices. Read-only. Mutable during the node device's lifetime. Immutable during the unit device's lifetime. See IEEE 1212 for semantic definitions. These attributes are only created if the root directory of an IEEE 1394 node or the unit directory of an IEEE 1394 unit actually contains according entries. hardware_version Hexadecimal string representation of an u24. hardware_version_name Contents of a respective textual descriptor leaf. model Hexadecimal string representation of an u24. model_name Contents of a respective textual descriptor leaf. specifier_id Hexadecimal string representation of an u24. Mandatory in unit directories according to IEEE 1212. vendor Hexadecimal string representation of an u24. Mandatory in the root directory according to IEEE 1212. vendor_name Contents of a respective textual descriptor leaf. version Hexadecimal string representation of an u24. Mandatory in unit directories according to IEEE 1212. What: /sys/bus/firewire/drivers/sbp2/fw*/host*/target*/*:*:*:*/ieee1394_id formerly /sys/bus/ieee1394/drivers/sbp2/fw*/host*/target*/*:*:*:*/ieee1394_id Date: Feb 2004 KernelVersion: 2.6.4 Contact: linux1394-devel@lists.sourceforge.net Description: SCSI target port identifier and logical unit identifier of a logical unit of an SBP-2 target. The identifiers are specified in SAM-2...SAM-4 annex A. They are persistent and world-wide unique properties the SBP-2 attached target. Read-only attribute, immutable during the target's lifetime. Format, as exposed by firewire-sbp2 since 2.6.22, May 2007: Colon-separated hexadecimal string representations of u64 EUI-64 : u24 directory_ID : u16 LUN without 0x prefixes, without whitespace. The former sbp2 driver (removed in 2.6.37 after being superseded by firewire-sbp2) used a somewhat shorter format which was not as close to SAM. Users: udev rules to create /dev/disk/by-id/ symlinks }hjcsbah}(h]h ]h"]h$]h&]source+Documentation/ABI/stable/sysfs-bus-firewirejwjxuh1jehKhjchhhhubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_csr_string (C function)c.fw_csr_stringhNtauh1jyhjchhhNhNubj)}(hhh](j)}(hIint fw_csr_string (const u32 *directory, int key, char *buf, size_t size)h]j)}(hHint fw_csr_string(const u32 *directory, int key, char *buf, size_t size)h](hdesc_sig_keyword_type)}(hinth]hint}(hjchhhNhNubah}(h]h ]ktah"]h$]h&]uh1jchjchhhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chK~ubj)}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjchhhjchK~ubj)}(h fw_csr_stringh]j)}(h fw_csr_stringh]h fw_csr_string}(hj dhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjchhhjchK~ubhdesc_parameterlist)}(h7(const u32 *directory, int key, char *buf, size_t size)h](hdesc_parameter)}(hconst u32 *directoryh](j)}(hconsth]hconst}(hj*dhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&dubj)}(h h]h }(hj8dhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&dubh)}(hhh]j)}(hu32h]hu32}(hjIdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjKdmodnameN classnameNj_jb)}je]j )}j j dsbc.fw_csr_stringasbuh1hhj&dubj)}(h h]h }(hjidhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&dubhdesc_sig_punctuation)}(h*h]h*}(hjydhhhNhNubah}(h]h ]pah"]h$]h&]uh1jwdhj&dubj)}(h directoryh]h directory}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&dubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj dubj%d)}(hint keyh](jc)}(hinth]hint}(hjdhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjdubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubj)}(hkeyh]hkey}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj dubj%d)}(h char *bufh](jc)}(hcharh]hchar}(hjdhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjdubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjxd)}(hj{dh]h*}(hjdhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhjdubj)}(hbufh]hbuf}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj dubj%d)}(h size_t sizeh](h)}(hhh]j)}(hsize_th]hsize_t}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjemodnameN classnameNj_jb)}je]jedc.fw_csr_stringasbuh1hhjeubj)}(h h]h }(hj9ehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(hsizeh]hsize}(hjGehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj dubeh}(h]h ]h"]h$]h&]jwjxuh1jdhjchhhjchK~ubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjchhhjchK~ubah}(h]jcah ](jjeh"]h$]h&]jj)jhuh1jhjchK~hjchhubj)}(hhh]h)}(h)reads a string from the configuration ROMh]h)reads a string from the configuration ROM}(hjqehhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKrhjnehhubah}(h]h ]h"]h$]h&]uh1jhjchhhjchK~ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjejjejjjuh1jhhhjchNhNubj)}(hX**Parameters** ``const u32 *directory`` e.g. root directory or unit directory ``int key`` the key of the preceding directory entry ``char *buf`` where to put the string ``size_t size`` size of **buf**, in bytes **Description** The string is taken from a minimal ASCII text descriptor leaf just after the entry with the **key**. The string is zero-terminated. An overlong string is silently truncated such that it and the zero byte fit into **size**. Returns strlen(buf) or a negative error code.h](h)}(h**Parameters**h]j$)}(hjeh]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjeubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKvhjeubh)}(hhh](h)}(h?``const u32 *directory`` e.g. root directory or unit directory h](h)}(h``const u32 *directory``h]jq)}(hjeh]hconst u32 *directory}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jphjeubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKshjeubh)}(hhh]h)}(h%e.g. root directory or unit directoryh]h%e.g. root directory or unit directory}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehKshjeubah}(h]h ]h"]h$]h&]uh1hhjeubeh}(h]h ]h"]h$]h&]uh1hhjehKshjeubh)}(h5``int key`` the key of the preceding directory entry h](h)}(h ``int key``h]jq)}(hjeh]hint key}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jphjeubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKthjeubh)}(hhh]h)}(h(the key of the preceding directory entryh]h(the key of the preceding directory entry}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKthjfubah}(h]h ]h"]h$]h&]uh1hhjeubeh}(h]h ]h"]h$]h&]uh1hhjfhKthjeubh)}(h&``char *buf`` where to put the string h](h)}(h ``char *buf``h]jq)}(hj$fh]h char *buf}(hj&fhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj"fubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKuhjfubh)}(hhh]h)}(hwhere to put the stringh]hwhere to put the string}(hj=fhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9fhKuhj:fubah}(h]h ]h"]h$]h&]uh1hhjfubeh}(h]h ]h"]h$]h&]uh1hhj9fhKuhjeubh)}(h*``size_t size`` size of **buf**, in bytes h](h)}(h``size_t size``h]jq)}(hj]fh]h size_t size}(hj_fhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj[fubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKvhjWfubh)}(hhh]h)}(hsize of **buf**, in bytesh](hsize of }(hjvfhhhNhNubj$)}(h**buf**h]hbuf}(hj~fhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjvfubh , in bytes}(hjvfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjrfhKvhjsfubah}(h]h ]h"]h$]h&]uh1hhjWfubeh}(h]h ]h"]h$]h&]uh1hhjrfhKvhjeubeh}(h]h ]h"]h$]h&]uh1hhjeubh)}(h**Description**h]j$)}(hjfh]h Description}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjfubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKxhjeubh)}(hThe string is taken from a minimal ASCII text descriptor leaf just after the entry with the **key**. The string is zero-terminated. An overlong string is silently truncated such that it and the zero byte fit into **size**.h](h\The string is taken from a minimal ASCII text descriptor leaf just after the entry with the }(hjfhhhNhNubj$)}(h**key**h]hkey}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjfubhr. The string is zero-terminated. An overlong string is silently truncated such that it and the zero byte fit into }(hjfhhhNhNubj$)}(h**size**h]hsize}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjfubh.}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKxhjeubh)}(h-Returns strlen(buf) or a negative error code.h]h-Returns strlen(buf) or a negative error code.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chK|hjeubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjchhhNhNubeh}(h],firewire-device-probing-and-sysfs-interfacesah ]h"],firewire device probing and sysfs interfacesah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h$Firewire core transaction interfacesh]h$Firewire core transaction interfaces}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghhhhhK&ubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j__fw_send_request (C function)c.__fw_send_requesthNtauh1jyhjghhhNhNubj)}(hhh](j)}(hX void __fw_send_request (struct fw_card *card, struct fw_transaction *t, int tcode, int destination_id, int generation, int speed, unsigned long long offset, void *payload, size_t length, union fw_transaction_callback callback, bool with_tstamp, void *callback_data)h]j)}(hXvoid __fw_send_request(struct fw_card *card, struct fw_transaction *t, int tcode, int destination_id, int generation, int speed, unsigned long long offset, void *payload, size_t length, union fw_transaction_callback callback, bool with_tstamp, void *callback_data)h](jc)}(hvoidh]hvoid}(hj;ghhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchj7ghhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMIubj)}(h h]h }(hjJghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ghhhjIghMIubj)}(h__fw_send_requesth]j)}(h__fw_send_requesth]h__fw_send_request}(hj\ghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXgubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj7ghhhjIghMIubjd)}(h(struct fw_card *card, struct fw_transaction *t, int tcode, int destination_id, int generation, int speed, unsigned long long offset, void *payload, size_t length, union fw_transaction_callback callback, bool with_tstamp, void *callback_data)h](j%d)}(hstruct fw_card *cardh](j)}(hjh]hstruct}(hjxghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtgubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtgubh)}(hhh]j)}(hfw_cardh]hfw_card}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjgmodnameN classnameNj_jb)}je]j )}j j^gsbc.__fw_send_requestasbuh1hhjtgubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtgubjxd)}(hj{dh]h*}(hjghhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhjtgubj)}(hcardh]hcard}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtgubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjpgubj%d)}(hstruct fw_transaction *th](j)}(hjh]hstruct}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubh)}(hhh]j)}(hfw_transactionh]hfw_transaction}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj hmodnameN classnameNj_jb)}je]jgc.__fw_send_requestasbuh1hhjgubj)}(h h]h }(hj&hhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjxd)}(hj{dh]h*}(hj4hhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhjgubj)}(hth]ht}(hjAhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjpgubj%d)}(h int tcodeh](jc)}(hinth]hint}(hjZhhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjVhubj)}(h h]h }(hjhhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhubj)}(htcodeh]htcode}(hjvhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjpgubj%d)}(hint destination_idh](jc)}(hinth]hint}(hjhhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjhubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(hdestination_idh]hdestination_id}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjpgubj%d)}(hint generationh](jc)}(hinth]hint}(hjhhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjhubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(h generationh]h generation}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjpgubj%d)}(h int speedh](jc)}(hinth]hint}(hjhhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjhubj)}(h h]h }(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(hspeedh]hspeed}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjpgubj%d)}(hunsigned long long offseth](jc)}(hunsignedh]hunsigned}(hj.ihhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchj*iubj)}(h h]h }(hj= 8 bytes but not to inbound response payloads.h](h)}(h**Parameters**h]j$)}(hjrh]h Parameters}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjrubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjrubh)}(hhh](h)}(h9``struct fw_card *card`` card interface for this request h](h)}(h``struct fw_card *card``h]jq)}(hjrh]hstruct fw_card *card}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjrubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjrubh)}(hhh]h)}(hcard interface for this requesth]hcard interface for this request}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1hhjrubeh}(h]h ]h"]h$]h&]uh1hhjrhMhjrubh)}(h``int tcode`` transaction code h](h)}(h ``int tcode``h]jq)}(hjsh]h int tcode}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jphjsubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjsubh)}(hhh]h)}(htransaction codeh]htransaction code}(hj4shhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0shMhj1subah}(h]h ]h"]h$]h&]uh1hhjsubeh}(h]h ]h"]h$]h&]uh1hhj0shMhjrubh)}(hL``int destination_id`` destination node ID, consisting of bus_ID and phy_ID h](h)}(h``int destination_id``h]jq)}(hjTsh]hint destination_id}(hjVshhhNhNubah}(h]h ]h"]h$]h&]uh1jphjRsubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjNsubh)}(hhh]h)}(h4destination node ID, consisting of bus_ID and phy_IDh]h4destination node ID, consisting of bus_ID and phy_ID}(hjmshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjishMhjjsubah}(h]h ]h"]h$]h&]uh1hhjNsubeh}(h]h ]h"]h$]h&]uh1hhjishMhjrubh)}(hJ``int generation`` bus generation in which request and response are valid h](h)}(h``int generation``h]jq)}(hjsh]hint generation}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jphjsubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjsubh)}(hhh]h)}(h6bus generation in which request and response are validh]h6bus generation in which request and response are valid}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1hhjsubeh}(h]h ]h"]h$]h&]uh1hhjshMhjrubh)}(h!``int speed`` transmission speed h](h)}(h ``int speed``h]jq)}(hjsh]h int speed}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jphjsubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjsubh)}(hhh]h)}(htransmission speedh]htransmission speed}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1hhjsubeh}(h]h ]h"]h$]h&]uh1hhjshMhjrubh)}(hQ``unsigned long long offset`` 48bit wide offset into destination's address space h](h)}(h``unsigned long long offset``h]jq)}(hjsh]hunsigned long long offset}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jphjsubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjsubh)}(hhh]h)}(h248bit wide offset into destination's address spaceh]h448bit wide offset into destination’s address space}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthMhjtubah}(h]h ]h"]h$]h&]uh1hhjsubeh}(h]h ]h"]h$]h&]uh1hhjthMhjrubh)}(h9``void *payload`` data payload for the request subaction h](h)}(h``void *payload``h]jq)}(hj8th]h void *payload}(hj:thhhNhNubah}(h]h ]h"]h$]h&]uh1jphj6tubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhj2tubh)}(hhh]h)}(h&data payload for the request subactionh]h&data payload for the request subaction}(hjQthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMthMhjNtubah}(h]h ]h"]h$]h&]uh1hhj2tubeh}(h]h ]h"]h$]h&]uh1hhjMthMhjrubh)}(h2``size_t length`` length of the payload, in bytes h](h)}(h``size_t length``h]jq)}(hjqth]h size_t length}(hjsthhhNhNubah}(h]h ]h"]h$]h&]uh1jphjotubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjktubh)}(hhh]h)}(hlength of the payload, in bytesh]hlength of the payload, in bytes}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthMhjtubah}(h]h ]h"]h$]h&]uh1hhjktubeh}(h]h ]h"]h$]h&]uh1hhjthMhjrubeh}(h]h ]h"]h$]h&]uh1hhjrubh)}(h**Description**h]j$)}(hjth]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjtubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjrubh)}(hX&Returns the RCODE. See fw_send_request() for parameter documentation. Unlike fw_send_request(), **data** points to the payload of the request or/and to the payload of the response. DMA mapping restrictions apply to outbound request payloads of >= 8 bytes but not to inbound response payloads.h](haReturns the RCODE. See fw_send_request() for parameter documentation. Unlike fw_send_request(), }(hjthhhNhNubj$)}(h**data**h]hdata}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjtubh points to the payload of the request or/and to the payload of the response. DMA mapping restrictions apply to outbound request payloads of >= 8 bytes but not to inbound response payloads.}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjrubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjghhhNhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j(fw_core_add_address_handler (C function)c.fw_core_add_address_handlerhNtauh1jyhjghhhNhNubj)}(hhh](j)}(hlint fw_core_add_address_handler (struct fw_address_handler *handler, const struct fw_address_region *region)h]j)}(hkint fw_core_add_address_handler(struct fw_address_handler *handler, const struct fw_address_region *region)h](jc)}(hinth]hint}(hjuhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjthhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM<ubj)}(h h]h }(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjthhhjuhM<ubj)}(hfw_core_add_address_handlerh]j)}(hfw_core_add_address_handlerh]hfw_core_add_address_handler}(hj$uhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj uubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjthhhjuhM<ubjd)}(hL(struct fw_address_handler *handler, const struct fw_address_region *region)h](j%d)}(h"struct fw_address_handler *handlerh](j)}(hjh]hstruct}(hj@uhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjstart, ->end, and handler->length have to be quadlet-aligned. When a request is received that falls within the specified address range, the specified callback is invoked. The parameters passed to the callback give the details of the particular request. To be called in process context. Return value: 0 on success, non-zero otherwise. The start offset of the handler's address region is determined by fw_core_add_address_handler() and is returned in handler->offset. Address allocations are exclusive, except for the FCP registers.h](h)}(h**Parameters**h]j$)}(hjpvh]h Parameters}(hjrvhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjnvubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM.hjjvubh)}(hhh](h)}(h0``struct fw_address_handler *handler`` callback h](h)}(h&``struct fw_address_handler *handler``h]jq)}(hjvh]h"struct fw_address_handler *handler}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjvubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM+hjvubh)}(hhh]h)}(hcallbackh]hcallback}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhM+hjvubah}(h]h ]h"]h$]h&]uh1hhjvubeh}(h]h ]h"]h$]h&]uh1hhjvhM+hjvubh)}(h\``const struct fw_address_region *region`` region in the IEEE 1212 node space address range h](h)}(h*``const struct fw_address_region *region``h]jq)}(hjvh]h&const struct fw_address_region *region}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjvubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM,hjvubh)}(hhh]h)}(h0region in the IEEE 1212 node space address rangeh]h0region in the IEEE 1212 node space address range}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhM,hjvubah}(h]h ]h"]h$]h&]uh1hhjvubeh}(h]h ]h"]h$]h&]uh1hhjvhM,hjvubeh}(h]h ]h"]h$]h&]uh1hhjjvubh)}(h**Description**h]j$)}(hjwh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjwubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM.hjjvubh)}(hEregion->start, ->end, and handler->length have to be quadlet-aligned.h]hEregion->start, ->end, and handler->length have to be quadlet-aligned.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM.hjjvubh)}(hWhen a request is received that falls within the specified address range, the specified callback is invoked. The parameters passed to the callback give the details of the particular request.h]hWhen a request is received that falls within the specified address range, the specified callback is invoked. The parameters passed to the callback give the details of the particular request.}(hj(whhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM0hjjvubh)}(hQTo be called in process context. Return value: 0 on success, non-zero otherwise.h]hQTo be called in process context. Return value: 0 on success, non-zero otherwise.}(hj7whhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM4hjjvubh)}(hThe start offset of the handler's address region is determined by fw_core_add_address_handler() and is returned in handler->offset.h]hThe start offset of the handler’s address region is determined by fw_core_add_address_handler() and is returned in handler->offset.}(hjFwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM7hjjvubh)}(h@Address allocations are exclusive, except for the FCP registers.h]h@Address allocations are exclusive, except for the FCP registers.}(hjUwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM:hjjvubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjghhhNhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j+fw_core_remove_address_handler (C function) c.fw_core_remove_address_handlerhNtauh1jyhjghhhNhNubj)}(hhh](j)}(hHvoid fw_core_remove_address_handler (struct fw_address_handler *handler)h]j)}(hGvoid fw_core_remove_address_handler(struct fw_address_handler *handler)h](jc)}(hvoidh]hvoid}(hjwhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjwhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMiubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwhhhjwhMiubj)}(hfw_core_remove_address_handlerh]j)}(hfw_core_remove_address_handlerh]hfw_core_remove_address_handler}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjwhhhjwhMiubjd)}(h$(struct fw_address_handler *handler)h]j%d)}(h"struct fw_address_handler *handlerh](j)}(hjh]hstruct}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubh)}(hhh]j)}(hfw_address_handlerh]hfw_address_handler}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwmodnameN classnameNj_jb)}je]j )}j jwsb c.fw_core_remove_address_handlerasbuh1hhjwubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubjxd)}(hj{dh]h*}(hj xhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhjwubj)}(hhandlerh]hhandler}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjwubah}(h]h ]h"]h$]h&]jwjxuh1jdhjwhhhjwhMiubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj|whhhjwhMiubah}(h]jwwah ](jjeh"]h$]h&]jj)jhuh1jhjwhMihjywhhubj)}(hhh]h)}(hunregister an address handlerh]hunregister an address handler}(hjDxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMahjAxhhubah}(h]h ]h"]h$]h&]uh1jhjywhhhjwhMiubeh}(h]h ](jfunctioneh"]h$]h&]jjjj\xjj\xjjjuh1jhhhjghNhNubj)}(h**Parameters** ``struct fw_address_handler *handler`` callback **Description** To be called in process context. When fw_core_remove_address_handler() returns, **handler->callback\(\)** is guaranteed to not run on any CPU anymore.h](h)}(h**Parameters**h]j$)}(hjfxh]h Parameters}(hjhxhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjdxubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMehj`xubh)}(hhh]h)}(h0``struct fw_address_handler *handler`` callback h](h)}(h&``struct fw_address_handler *handler``h]jq)}(hjxh]h"struct fw_address_handler *handler}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjxubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMbhjxubh)}(hhh]h)}(hcallbackh]hcallback}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMbhjxubah}(h]h ]h"]h$]h&]uh1hhjxubeh}(h]h ]h"]h$]h&]uh1hhjxhMbhj|xubah}(h]h ]h"]h$]h&]uh1hhj`xubh)}(h**Description**h]j$)}(hjxh]h Description}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjxubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMdhj`xubh)}(h To be called in process context.h]h To be called in process context.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMdhj`xubh)}(huWhen fw_core_remove_address_handler() returns, **handler->callback\(\)** is guaranteed to not run on any CPU anymore.h](h/When fw_core_remove_address_handler() returns, }(hjxhhhNhNubj$)}(h**handler->callback\(\)**h]hhandler->callback()}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjxubh- is guaranteed to not run on any CPU anymore.}(hjxhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMfhj`xubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjghhhNhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_send_response (C function)c.fw_send_responsehNtauh1jyhjghhhNhNubj)}(hhh](j)}(hSvoid fw_send_response (struct fw_card *card, struct fw_request *request, int rcode)h]j)}(hRvoid fw_send_response(struct fw_card *card, struct fw_request *request, int rcode)h](jc)}(hvoidh]hvoid}(hj&yhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchj"yhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMHubj)}(h h]h }(hj5yhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"yhhhj4yhMHubj)}(hfw_send_responseh]j)}(hfw_send_responseh]hfw_send_response}(hjGyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCyubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj"yhhhj4yhMHubjd)}(h=(struct fw_card *card, struct fw_request *request, int rcode)h](j%d)}(hstruct fw_card *cardh](j)}(hjh]hstruct}(hjcyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_yubj)}(h h]h }(hjpyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_yubh)}(hhh]j)}(hfw_cardh]hfw_card}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~yubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjymodnameN classnameNj_jb)}je]j )}j jIysbc.fw_send_responseasbuh1hhj_yubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_yubjxd)}(hj{dh]h*}(hjyhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhj_yubj)}(hcardh]hcard}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_yubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj[yubj%d)}(hstruct fw_request *requesth](j)}(hjh]hstruct}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubh)}(hhh]j)}(h fw_requesth]h fw_request}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjymodnameN classnameNj_jb)}je]jyc.fw_send_responseasbuh1hhjyubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubjxd)}(hj{dh]h*}(hjzhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhjyubj)}(hrequesth]hrequest}(hj,zhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj[yubj%d)}(h int rcodeh](jc)}(hinth]hint}(hjEzhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjAzubj)}(h h]h }(hjSzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAzubj)}(hrcodeh]hrcode}(hjazhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAzubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj[yubeh}(h]h ]h"]h$]h&]jwjxuh1jdhj"yhhhj4yhMHubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjyhhhj4yhMHubah}(h]jyah ](jjeh"]h$]h&]jj)jhuh1jhj4yhMHhjyhhubj)}(hhh]j ")}(hhh]j")}(h2send response packet for asynchronous transaction.h]h)}(hjzh]h2send response packet for asynchronous transaction.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM@hjzubah}(h]h ]h"]h$]h&]uh1j"hjzhhhjzhNubah}(h]h ]h"]h$]h&]j"j"uh1j "hjzhM@hjzhhubah}(h]h ]h"]h$]h&]uh1jhjyhhhj4yhMHubeh}(h]h ](jfunctioneh"]h$]h&]jjjjzjjzjjjuh1jhhhjghNhNubj)}(hX{**Parameters** ``struct fw_card *card`` interface to send the response at. ``struct fw_request *request`` firewire request data for the transaction. ``int rcode`` response code to send. **Description** Submit a response packet into the asynchronous response transmission queue. The **request** is going to be released when the transmission successfully finishes later.h](h)}(h**Parameters**h]j$)}(hjzh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjzubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMDhjzubh)}(hhh](h)}(h<``struct fw_card *card`` interface to send the response at. h](h)}(h``struct fw_card *card``h]jq)}(hjzh]hstruct fw_card *card}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjzubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMAhjzubh)}(hhh]h)}(h"interface to send the response at.h]h"interface to send the response at.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhMAhjzubah}(h]h ]h"]h$]h&]uh1hhjzubeh}(h]h ]h"]h$]h&]uh1hhjzhMAhjzubh)}(hJ``struct fw_request *request`` firewire request data for the transaction. h](h)}(h``struct fw_request *request``h]jq)}(hj{h]hstruct fw_request *request}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj{ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMBhj{ubh)}(hhh]h)}(h*firewire request data for the transaction.h]h*firewire request data for the transaction.}(hj0{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,{hMBhj-{ubah}(h]h ]h"]h$]h&]uh1hhj{ubeh}(h]h ]h"]h$]h&]uh1hhj,{hMBhjzubh)}(h%``int rcode`` response code to send. h](h)}(h ``int rcode``h]jq)}(hjP{h]h int rcode}(hjR{hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjN{ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMChjJ{ubh)}(hhh]h)}(hresponse code to send.h]hresponse code to send.}(hji{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje{hMChjf{ubah}(h]h ]h"]h$]h&]uh1hhjJ{ubeh}(h]h ]h"]h$]h&]uh1hhje{hMChjzubeh}(h]h ]h"]h$]h&]uh1hhjzubh)}(h**Description**h]j$)}(hj{h]h Description}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj{ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMEhjzubh)}(hSubmit a response packet into the asynchronous response transmission queue. The **request** is going to be released when the transmission successfully finishes later.h](hPSubmit a response packet into the asynchronous response transmission queue. The }(hj{hhhNhNubj$)}(h **request**h]hrequest}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj{ubhK is going to be released when the transmission successfully finishes later.}(hj{hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMEhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjghhhNhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j!fw_get_request_speed (C function)c.fw_get_request_speedhNtauh1jyhjghhhNhNubj)}(hhh](j)}(h5int fw_get_request_speed (struct fw_request *request)h]j)}(h4int fw_get_request_speed(struct fw_request *request)h](jc)}(hinth]hint}(hj{hhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchj{hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMlubj)}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{hhhj{hMlubj)}(hfw_get_request_speedh]j)}(hfw_get_request_speedh]hfw_get_request_speed}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj{hhhj{hMlubjd)}(h(struct fw_request *request)h]j%d)}(hstruct fw_request *requesth](j)}(hjh]hstruct}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(h h]h }(hj,|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubh)}(hhh]j)}(h fw_requesth]h fw_request}(hj=|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?|modnameN classnameNj_jb)}je]j )}j j|sbc.fw_get_request_speedasbuh1hhj|ubj)}(h h]h }(hj]|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubjxd)}(hj{dh]h*}(hjk|hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhj|ubj)}(hrequesth]hrequest}(hjx|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj|ubah}(h]h ]h"]h$]h&]jwjxuh1jdhj{hhhj{hMlubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj{hhhj{hMlubah}(h]j{ah ](jjeh"]h$]h&]jj)jhuh1jhj{hMlhj{hhubj)}(hhh]h)}(h3returns speed at which the **request** was receivedh](hreturns speed at which the }(hj|hhhNhNubj$)}(h **request**h]hrequest}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj|ubh was received}(hj|hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMihj|hhubah}(h]h ]h"]h$]h&]uh1jhj{hhhj{hMlubeh}(h]h ](jfunctioneh"]h$]h&]jjjj|jj|jjjuh1jhhhjghNhNubj)}(hF**Parameters** ``struct fw_request *request`` firewire request datah](h)}(h**Parameters**h]j$)}(hj|h]h Parameters}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj|ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMmhj|ubh)}(hhh]h)}(h4``struct fw_request *request`` firewire request datah](h)}(h``struct fw_request *request``h]jq)}(hj|h]hstruct fw_request *request}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj|ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMohj|ubh)}(hhh]h)}(hfirewire request datah]hfirewire request data}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMjhj }ubah}(h]h ]h"]h$]h&]uh1hhj|ubeh}(h]h ]h"]h$]h&]uh1hhj }hMohj|ubah}(h]h ]h"]h$]h&]uh1hhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjghhhNhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_request_get_timestamp (C function)c.fw_request_get_timestamphNtauh1jyhjghhhNhNubj)}(hhh](j)}(h?u32 fw_request_get_timestamp (const struct fw_request *request)h]j)}(h>u32 fw_request_get_timestamp(const struct fw_request *request)h](h)}(hhh]j)}(hu32h]hu32}(hjR}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjT}modnameN classnameNj_jb)}je]j )}j fw_request_get_timestampsbc.fw_request_get_timestampasbuh1hhjK}hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM|ubj)}(h h]h }(hjt}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjK}hhhjs}hM|ubj)}(hfw_request_get_timestamph]j)}(hjp}h]hfw_request_get_timestamp}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjK}hhhjs}hM|ubjd)}(h"(const struct fw_request *request)h]j%d)}(h const struct fw_request *requesth](j)}(hj,dh]hconst}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(hjh]hstruct}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubh)}(hhh]j)}(h fw_requesth]h fw_request}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNj_jb)}je]jn}c.fw_request_get_timestampasbuh1hhj}ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjxd)}(hj{dh]h*}(hj~hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhj}ubj)}(hrequesth]hrequest}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj}ubah}(h]h ]h"]h$]h&]jwjxuh1jdhjK}hhhjs}hM|ubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjG}hhhjs}hM|ubah}(h]jB}ah ](jjeh"]h$]h&]jj)jhuh1jhjs}hM|hjD}hhubj)}(hhh]h)}(hGet timestamp of the request.h]hGet timestamp of the request.}(hj=~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMshj:~hhubah}(h]h ]h"]h$]h&]uh1jhjD}hhhjs}hM|ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjU~jjU~jjjuh1jhhhjghNhNubj)}(hXt**Parameters** ``const struct fw_request *request`` The opaque pointer to request structure. **Description** Get timestamp when 1394 OHCI controller receives the asynchronous request subaction. The timestamp consists of the low order 3 bits of second field and the full 13 bits of count field of isochronous cycle time register. **Return** timestamp of the request.h](h)}(h**Parameters**h]j$)}(hj_~h]h Parameters}(hja~hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj]~ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMwhjY~ubh)}(hhh]h)}(hN``const struct fw_request *request`` The opaque pointer to request structure. h](h)}(h$``const struct fw_request *request``h]jq)}(hj~~h]h const struct fw_request *request}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj|~ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMthjx~ubh)}(hhh]h)}(h(The opaque pointer to request structure.h]h(The opaque pointer to request structure.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hMthj~ubah}(h]h ]h"]h$]h&]uh1hhjx~ubeh}(h]h ]h"]h$]h&]uh1hhj~hMthju~ubah}(h]h ]h"]h$]h&]uh1hhjY~ubh)}(h**Description**h]j$)}(hj~h]h Description}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj~ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMvhjY~ubh)}(hGet timestamp when 1394 OHCI controller receives the asynchronous request subaction. The timestamp consists of the low order 3 bits of second field and the full 13 bits of count field of isochronous cycle time register.h]hGet timestamp when 1394 OHCI controller receives the asynchronous request subaction. The timestamp consists of the low order 3 bits of second field and the full 13 bits of count field of isochronous cycle time register.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMvhjY~ubh)}(h **Return**h]j$)}(hj~h]hReturn}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj~ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMzhjY~ubh)}(htimestamp of the request.h]htimestamp of the request.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMzhjY~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjghhhNhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_rcode_string (C function)c.fw_rcode_stringhNtauh1jyhjghhhNhNubj)}(hhh](j)}(h(const char * fw_rcode_string (int rcode)h]j)}(h&const char *fw_rcode_string(int rcode)h](j)}(hj,dh]hconst}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM;ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhj2hM;ubjc)}(hcharh]hchar}(hjAhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchj!hhhj2hM;ubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhj2hM;ubjxd)}(hj{dh]h*}(hj]hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhj!hhhj2hM;ubj)}(hfw_rcode_stringh]j)}(hfw_rcode_stringh]hfw_rcode_string}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj!hhhj2hM;ubjd)}(h (int rcode)h]j%d)}(h int rcodeh](jc)}(hinth]hint}(hjhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hrcodeh]hrcode}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjubah}(h]h ]h"]h$]h&]jwjxuh1jdhj!hhhj2hM;ubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhjhhhj2hM;ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj2hM;hjhhubj)}(hhh]h)}(h6convert a firewire result code to an error descriptionh]h6convert a firewire result code to an error description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM8hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj2hM;ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjghNhNubj)}(h/**Parameters** ``int rcode`` the result codeh](h)}(h**Parameters**h]j$)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM<hjubh)}(hhh]h)}(h``int rcode`` the result codeh](h)}(h ``int rcode``h]jq)}(hjh]h int rcode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM>hj ubh)}(hhh]h)}(hthe result codeh]hthe result code}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM9hj'ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj&hM>hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjghhhNhNubeh}(h]$firewire-core-transaction-interfacesah ]h"]$firewire core transaction interfacesah$]h&]uh1hhhhhhhhK&ubh)}(hhh](h)}(h#Firewire Isochronous I/O interfacesh]h#Firewire Isochronous I/O interfaces}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhhhhhK,ubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j6fw_iso_context_schedule_flush_completions (C function)+c.fw_iso_context_schedule_flush_completionshNtauh1jyhjZhhhNhNubj)}(hhh](j)}(hKvoid fw_iso_context_schedule_flush_completions (struct fw_iso_context *ctx)h]j)}(hJvoid fw_iso_context_schedule_flush_completions(struct fw_iso_context *ctx)h](jc)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhM$ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM$ubj)}(h)fw_iso_context_schedule_flush_completionsh]j)}(h)fw_iso_context_schedule_flush_completionsh]h)fw_iso_context_schedule_flush_completions}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjhhhjhM$ubjd)}(h(struct fw_iso_context *ctx)h]j%d)}(hstruct fw_iso_context *ctxh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj΀hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hfw_iso_contexth]hfw_iso_context}(hj߀hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj܀ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj_jb)}je]j )}j jsb+c.fw_iso_context_schedule_flush_completionsasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjxd)}(hj{dh]h*}(hj hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhjubj)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjubah}(h]h ]h"]h$]h&]jwjxuh1jdhjhhhjhM$ubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj|hhhjhM$ubah}(h]jwah ](jjeh"]h$]h&]jj)jhuh1jhjhM$hjyhhubj)}(hhh]h)}(h2schedule work item to process isochronous context.h]h2schedule work item to process isochronous context.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMhjAhhubah}(h]h ]h"]h$]h&]uh1jhjyhhhjhM$ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj\jj\jjjuh1jhhhjZhNhNubj)}(hX^**Parameters** ``struct fw_iso_context *ctx`` the isochronous context **Description** Schedule a work item on workqueue to process the isochronous context. The registered callback function is called by the worker when a queued packet buffer with the interrupt flag is completed, either after transmission in the IT context or after being filled in the IR context. The callback function is also called when the header buffer in the context becomes full, If it is required to process the context in the current context, fw_iso_context_flush_completions() is available instead. **Context** Any context.h](h)}(h**Parameters**h]j$)}(hjfh]h Parameters}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjdubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMhj`ubh)}(hhh]h)}(h7``struct fw_iso_context *ctx`` the isochronous context h](h)}(h``struct fw_iso_context *ctx``h]jq)}(hjh]hstruct fw_iso_context *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMhjubh)}(hhh]h)}(hthe isochronous contexth]hthe isochronous context}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj|ubah}(h]h ]h"]h$]h&]uh1hhj`ubh)}(h**Description**h]j$)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMhj`ubh)}(hXSchedule a work item on workqueue to process the isochronous context. The registered callback function is called by the worker when a queued packet buffer with the interrupt flag is completed, either after transmission in the IT context or after being filled in the IR context. The callback function is also called when the header buffer in the context becomes full, If it is required to process the context in the current context, fw_iso_context_flush_completions() is available instead.h]hXSchedule a work item on workqueue to process the isochronous context. The registered callback function is called by the worker when a queued packet buffer with the interrupt flag is completed, either after transmission in the IT context or after being filled in the IR context. The callback function is also called when the header buffer in the context becomes full, If it is required to process the context in the current context, fw_iso_context_flush_completions() is available instead.}(hjցhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMhj`ubh)}(h **Context**h]j$)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhM"hj`ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhM"hj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZhhhNhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j-fw_iso_context_flush_completions (C function)"c.fw_iso_context_flush_completionshNtauh1jyhjZhhhNhNubj)}(hhh](j)}(hAint fw_iso_context_flush_completions (struct fw_iso_context *ctx)h]j)}(h@int fw_iso_context_flush_completions(struct fw_iso_context *ctx)h](jc)}(hinth]hint}(hj,hhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchj(hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKubj)}(h h]h }(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhhj:hKubj)}(h fw_iso_context_flush_completionsh]j)}(h fw_iso_context_flush_completionsh]h fw_iso_context_flush_completions}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhj(hhhj:hKubjd)}(h(struct fw_iso_context *ctx)h]j%d)}(hstruct fw_iso_context *ctxh](j)}(hjh]hstruct}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(h h]h }(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubh)}(hhh]j)}(hfw_iso_contexth]hfw_iso_context}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj_jb)}je]j )}j jOsb"c.fw_iso_context_flush_completionsasbuh1hhjeubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubjxd)}(hj{dh]h*}(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhjeubj)}(hctxh]hctx}(hj‚hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhjaubah}(h]h ]h"]h$]h&]jwjxuh1jdhj(hhhj:hKubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj$hhhj:hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj:hKhj!hhubj)}(hhh]h)}(h7process isochronous context in current process context.h]h7process isochronous context in current process context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhj!hhhj:hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjZhNhNubj)}(hX**Parameters** ``struct fw_iso_context *ctx`` the isochronous context **Description** Process the isochronous context in the current process context. The registered callback function is called when a queued packet buffer with the interrupt flag is completed, either after transmission in the IT context or after being filled in the IR context. Additionally, the callback function is also called for the packet buffer completed at last. Furthermore, the callback function is called as well when the header buffer in the context becomes full. If it is required to process the context asynchronously, fw_iso_context_schedule_flush_completions() is available instead. **Context** Process context. May sleep due to disable_work_sync().h](h)}(h**Parameters**h]j$)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhjubh)}(hhh]h)}(h7``struct fw_iso_context *ctx`` the isochronous context h](h)}(h``struct fw_iso_context *ctx``h]jq)}(hj-h]hstruct fw_iso_context *ctx}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj+ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhj'ubh)}(hhh]h)}(hthe isochronous contexth]hthe isochronous context}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjCubah}(h]h ]h"]h$]h&]uh1hhj'ubeh}(h]h ]h"]h$]h&]uh1hhjBhKhj$ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]j$)}(hjhh]h Description}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjfubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhjubh)}(hXAProcess the isochronous context in the current process context. The registered callback function is called when a queued packet buffer with the interrupt flag is completed, either after transmission in the IT context or after being filled in the IR context. Additionally, the callback function is also called for the packet buffer completed at last. Furthermore, the callback function is called as well when the header buffer in the context becomes full. If it is required to process the context asynchronously, fw_iso_context_schedule_flush_completions() is available instead.h]hXAProcess the isochronous context in the current process context. The registered callback function is called when a queued packet buffer with the interrupt flag is completed, either after transmission in the IT context or after being filled in the IR context. Additionally, the callback function is also called for the packet buffer completed at last. Furthermore, the callback function is called as well when the header buffer in the context becomes full. If it is required to process the context asynchronously, fw_iso_context_schedule_flush_completions() is available instead.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhjubh)}(h **Context**h]j$)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhjubh)}(h6Process context. May sleep due to disable_work_sync().h]h6Process context. May sleep due to disable_work_sync().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZhhhNhNubjz)}(hhh]h}(h]h ]h"]h$]h&]entries](j#fw_iso_resource_manage (C function)c.fw_iso_resource_managehNtauh1jyhjZhhhNhNubj)}(hhh](j)}(hvoid fw_iso_resource_manage (struct fw_card *card, int generation, u64 channels_mask, int *channel, int *bandwidth, bool allocate)h]j)}(hvoid fw_iso_resource_manage(struct fw_card *card, int generation, u64 channels_mask, int *channel, int *bandwidth, bool allocate)h](jc)}(hvoidh]hvoid}(hjԃhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjЃhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjЃhhhjhMubj)}(hfw_iso_resource_manageh]j)}(hfw_iso_resource_manageh]hfw_iso_resource_manage}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jwjxuh1jhjЃhhhjhMubjd)}(hf(struct fw_card *card, int generation, u64 channels_mask, int *channel, int *bandwidth, bool allocate)h](j%d)}(hstruct fw_card *cardh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(hfw_cardh]hfw_card}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNj_jb)}je]j )}j jsbc.fw_iso_resource_manageasbuh1hhj ubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjxd)}(hj{dh]h*}(hj]hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhj ubj)}(hcardh]hcard}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj ubj%d)}(hint generationh](jc)}(hinth]hint}(hjhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h generationh]h generation}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj ubj%d)}(hu64 channels_maskh](h)}(hhh]j)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj_jb)}je]jKc.fw_iso_resource_manageasbuh1hhjubj)}(h h]h }(hjلhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h channels_maskh]h channels_mask}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj ubj%d)}(h int *channelh](jc)}(hinth]hint}(hjhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjxd)}(hj{dh]h*}(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhjubj)}(hchannelh]hchannel}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj ubj%d)}(hint *bandwidthh](jc)}(hinth]hint}(hjBhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchj>ubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjxd)}(hj{dh]h*}(hj^hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jwdhj>ubj)}(h bandwidthh]h bandwidth}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj ubj%d)}(h bool allocateh](jc)}(hjjh]hbool}(hjhhhNhNubah}(h]h ]jcah"]h$]h&]uh1jchjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hallocateh]hallocate}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjwjxuh1j$dhj ubeh}(h]h ]h"]h$]h&]jwjxuh1jdhjЃhhhjhMubeh}(h]h ]h"]h$]h&]jwjxjuh1jjjhj̃hhhjhMubah}(h]jǃah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjɃhhubj)}(hhh]h)}(h1Allocate or deallocate a channel and/or bandwidthh]h1Allocate or deallocate a channel and/or bandwidth}(hjɅhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chM|hjƅhhubah}(h]h ]h"]h$]h&]uh1jhjɃhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjZhNhNubj)}(hX?**Parameters** ``struct fw_card *card`` card interface for this action ``int generation`` bus generation ``u64 channels_mask`` bitmask for channel allocation ``int *channel`` pointer for returning channel allocation result ``int *bandwidth`` pointer for returning bandwidth allocation result ``bool allocate`` whether to allocate (true) or deallocate (false) **Description** In parameters: card, generation, channels_mask, bandwidth, allocate Out parameters: channel, bandwidth This function blocks (sleeps) during communication with the IRM. Allocates or deallocates at most one channel out of channels_mask. channels_mask is a bitfield with MSB for channel 63 and LSB for channel 0. (Note, the IRM's CHANNELS_AVAILABLE is a big-endian bitfield with MSB for channel 0 and LSB for channel 63.) Allocates or deallocates as many bandwidth allocation units as specified. Returns channel < 0 if no channel was allocated or deallocated. Returns bandwidth = 0 if no bandwidth was allocated or deallocated. If generation is stale, deallocations succeed but allocations fail with channel = -EAGAIN. If channel allocation fails, no bandwidth will be allocated either. If bandwidth allocation fails, no channel will be allocated either. But deallocations of channel and bandwidth are tried independently of each other's success.h](h)}(h**Parameters**h]j$)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(hhh](h)}(h8``struct fw_card *card`` card interface for this action h](h)}(h``struct fw_card *card``h]jq)}(hj h]hstruct fw_card *card}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chM}hjubh)}(hhh]h)}(hcard interface for this actionh]hcard interface for this action}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM}hj ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhM}hjubh)}(h"``int generation`` bus generation h](h)}(h``int generation``h]jq)}(hjCh]hint generation}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chM~hj=ubh)}(hhh]h)}(hbus generationh]hbus generation}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhM~hjYubah}(h]h ]h"]h$]h&]uh1hhj=ubeh}(h]h ]h"]h$]h&]uh1hhjXhM~hjubh)}(h5``u64 channels_mask`` bitmask for channel allocation h](h)}(h``u64 channels_mask``h]jq)}(hj|h]hu64 channels_mask}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjzubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjvubh)}(hhh]h)}(hbitmask for channel allocationh]hbitmask for channel allocation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1hhjvubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(hA``int *channel`` pointer for returning channel allocation result h](h)}(h``int *channel``h]jq)}(hjh]h int *channel}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(hhh]h)}(h/pointer for returning channel allocation resulth]h/pointer for returning channel allocation result}(hjΆhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjʆhMhjˆubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjʆhMhjubh)}(hE``int *bandwidth`` pointer for returning bandwidth allocation result h](h)}(h``int *bandwidth``h]jq)}(hjh]hint *bandwidth}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(hhh]h)}(h1pointer for returning bandwidth allocation resulth]h1pointer for returning bandwidth allocation result}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(hC``bool allocate`` whether to allocate (true) or deallocate (false) h](h)}(h``bool allocate``h]jq)}(hj'h]h bool allocate}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj%ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhj!ubh)}(hhh]h)}(h0whether to allocate (true) or deallocate (false)h]h0whether to allocate (true) or deallocate (false)}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hMhj=ubah}(h]h ]h"]h$]h&]uh1hhj!ubeh}(h]h ]h"]h$]h&]uh1hhj<hMhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]j$)}(hjbh]h Description}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj`ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(hfIn parameters: card, generation, channels_mask, bandwidth, allocate Out parameters: channel, bandwidthh]hfIn parameters: card, generation, channels_mask, bandwidth, allocate Out parameters: channel, bandwidth}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(h@This function blocks (sleeps) during communication with the IRM.h]h@This function blocks (sleeps) during communication with the IRM.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(hXDAllocates or deallocates at most one channel out of channels_mask. channels_mask is a bitfield with MSB for channel 63 and LSB for channel 0. (Note, the IRM's CHANNELS_AVAILABLE is a big-endian bitfield with MSB for channel 0 and LSB for channel 63.) Allocates or deallocates as many bandwidth allocation units as specified.h]hXFAllocates or deallocates at most one channel out of channels_mask. channels_mask is a bitfield with MSB for channel 63 and LSB for channel 0. (Note, the IRM’s CHANNELS_AVAILABLE is a big-endian bitfield with MSB for channel 0 and LSB for channel 63.) Allocates or deallocates as many bandwidth allocation units as specified.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(hReturns channel < 0 if no channel was allocated or deallocated. Returns bandwidth = 0 if no bandwidth was allocated or deallocated.h]hReturns channel < 0 if no channel was allocated or deallocated. Returns bandwidth = 0 if no bandwidth was allocated or deallocated.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(hZIf generation is stale, deallocations succeed but allocations fail with channel = -EAGAIN.h]hZIf generation is stale, deallocations succeed but allocations fail with channel = -EAGAIN.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(hIf channel allocation fails, no bandwidth will be allocated either. If bandwidth allocation fails, no channel will be allocated either. But deallocations of channel and bandwidth are tried independently of each other's success.h]hIf channel allocation fails, no bandwidth will be allocated either. If bandwidth allocation fails, no channel will be allocated either. But deallocations of channel and bandwidth are tried independently of each other’s success.}(hjÇhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZhhhNhNubeh}(h]#firewire-isochronous-i-o-interfacesah ]h"]#firewire isochronous i/o interfacesah$]h&]uh1hhhhhhhhK,ubeh}(h])firewire-ieee-1394-driver-interface-guideah ]h"]+firewire (ieee 1394) driver interface guideah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjQjNjcjcjgj gjWjTjއjۇu nametypes}(jjQjcjgjWjއuh}(jhjNhjcjTjjjbjgjjj j j j jjjjj<jAjjj#j#j%j%j(j(j-j"-jY2j^2jk5jp5j"8j'8j@:jE:j=j=j>j>jc@jh@j`CjeCjDjDjHjHjIjIj\NjaNjPjPjRjRjSjSjUjUj=WjBWjYjYj ]j]j!`j&`jMbjRbj gjcjcjcjTjgj.gj3gj pjpjtjtjwwj|wjyjyj{j{jB}jG}jjjۇjZjwj|jj$jǃj̃u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.