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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/pt_BR/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.}(hjhhhNhNubah}(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 }(hj,hhhNhNubhtitle_reference)}(h`firewire character devices`h]hfirewire character devices}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j4hj,ubhB. A set of kernel interfaces is available via exported symbols in }(hj,hhhNhNubj5)}(h`firewire-core`h]h firewire-core}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j4hj,ubh module.}(hj,hhhNhNubeh}(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}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhhKubh 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, ... }hj{sbah}(h]h ]h"]h$]h&]source&Documentation/ABI/stable/firewire-cdev xml:spacepreserveuh1jyhKhjhhhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlefw_cdev_event_common (C struct)c.fw_cdev_event_commonhNtauh1jhjhhhhf/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&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jj 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}(hj hhhNhNubah}(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&]domainj"objtypej#desctypej#noindex noindexentrynocontentsentryuh1jhhhjhhjhNubh 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}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj3ubh:}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj/ubh)}(h **Members**h]j8)}(hjch]hMembers}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjaubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKChj/ubh)}(hhh](h)}(h+``closure`` For arbitrary use by userspace h](h)}(h ``closure``h]hliteral)}(hjh]hclosure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK:hj|ubh)}(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&]uh1hhj|ubeh}(h]h ]h"]h$]h&]uh1hhjhK:hjyubh)}(h0``type`` Discriminates the fw_cdev_event_* typesh](h)}(h``type``h]j)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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:hjyubeh}(h]h ]h"]h$]h&]uh1hhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK>hjhhhubh)}(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.hhK;hjhhhubh)}(hData passed in the **closure** field for a request will be returned in the corresponding event. It is big enough to hold a pointer on all platforms. The ioctl used to set **closure** depends on the **type** of event.h](hData passed in the }(hj%hhhNhNubj8)}(h **closure**h]hclosure}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj%ubh field for a request will be returned in the corresponding event. It is big enough to hold a pointer on all platforms. The ioctl used to set }(hj%hhhNhNubj8)}(h **closure**h]hclosure}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj%ubh depends on the }(hj%hhhNhNubj8)}(h**type**h]htype}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj%ubh of event.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK>hjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"fw_cdev_event_bus_reset (C struct)c.fw_cdev_event_bus_resethNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_event_bus_reseth]j)}(hstruct fw_cdev_event_bus_reseth](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.hhKEubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKEubj)}(hfw_cdev_event_bus_reseth]j)}(hj}h]hfw_cdev_event_bus_reset}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKEubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj{hhhjhKEubah}(h]jvah ](jjeh"]h$]h&]jj)jhuh1jhjhKEhjxhhubj)}(hhh]h)}(hSent when a bus reset occurredh]hSent when a bus reset occurred}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKIhjhhubah}(h]h ]h"]h$]h&]uh1jhjxhhhjhKEubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jj)jj*j+j,uh1jhhhjhhjhNubj.)}(hX**Definition**:: struct fw_cdev_event_bus_reset { __u64 closure; __u32 type; __u32 node_id; __u32 local_node_id; __u32 bm_node_id; __u32 irm_node_id; __u32 root_node_id; __u32 generation; }; **Members** ``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_GET_INFO`` ioctl ``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_BUS_RESET`` ``node_id`` New node ID of this node ``local_node_id`` Node ID of the local node, i.e. of the controller ``bm_node_id`` Node ID of the bus manager ``irm_node_id`` Node ID of the iso resource manager ``root_node_id`` Node ID of the root node ``generation`` New bus generationh](h)}(h**Definition**::h](j8)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKMhjubjz)}(hstruct fw_cdev_event_bus_reset { __u64 closure; __u32 type; __u32 node_id; __u32 local_node_id; __u32 bm_node_id; __u32 irm_node_id; __u32 root_node_id; __u32 generation; };h]hstruct fw_cdev_event_bus_reset { __u64 closure; __u32 type; __u32 node_id; __u32 local_node_id; __u32 bm_node_id; __u32 irm_node_id; __u32 root_node_id; __u32 generation; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKOhjubh)}(h **Members**h]j8)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKZhjubh)}(hhh](h)}(hV``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_GET_INFO`` ioctl h](h)}(h ``closure``h]j)}(hj2h]hclosure}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKKhj,ubh)}(hhh]h)}(hISee :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_GET_INFO`` ioctlh](hSee }(hjKhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]j)}(hjUh]hfw_cdev_event_common}(hjWhhhNhNubah}(h]h ](xrefj"c-typeeh"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]refdocdriver-api/firewire refdomainj"reftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sb reftargetfw_cdev_event_commonuh1hhjGhKKhjKubh ; set by }(hjKhhhNhNubj)}(h``FW_CDEV_IOC_GET_INFO``h]hFW_CDEV_IOC_GET_INFO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubh ioctl}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjGhKKhjHubah}(h]h ]h"]h$]h&]uh1hhj,ubeh}(h]h ]h"]h$]h&]uh1hhjGhKKhj)ubh)}(hP``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_BUS_RESET`` h](h)}(h``type``h]j)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKLhjubh)}(hhh]h)}(hFSee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_BUS_RESET``h](hSee }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]j)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhjhKLhjubh ; always }(hjhhhNhNubj)}(h``FW_CDEV_EVENT_BUS_RESET``h]hFW_CDEV_EVENT_BUS_RESET}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKLhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKLhj)ubh)}(h%``node_id`` New node ID of this node h](h)}(h ``node_id``h]j)}(hjh]hnode_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKMhjubh)}(hhh]h)}(hNew node ID of this nodeh]hNew node ID of this node}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKMhj+ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj*hKMhj)ubh)}(hD``local_node_id`` Node ID of the local node, i.e. of the controller h](h)}(h``local_node_id``h]j)}(hjNh]h local_node_id}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKNhjHubh)}(hhh]h)}(h1Node ID of the local node, i.e. of the controllerh]h1Node ID of the local node, i.e. of the controller}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchKNhjdubah}(h]h ]h"]h$]h&]uh1hhjHubeh}(h]h ]h"]h$]h&]uh1hhjchKNhj)ubh)}(h*``bm_node_id`` Node ID of the bus manager h](h)}(h``bm_node_id``h]j)}(hjh]h bm_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKOhjubh)}(hhh]h)}(hNode ID of the bus managerh]hNode ID of the bus manager}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKOhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKOhj)ubh)}(h4``irm_node_id`` Node ID of the iso resource manager h](h)}(h``irm_node_id``h]j)}(hjh]h irm_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKPhjubh)}(hhh]h)}(h#Node ID of the iso resource managerh]h#Node ID of the iso resource manager}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKPhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKPhj)ubh)}(h*``root_node_id`` Node ID of the root node h](h)}(h``root_node_id``h]j)}(hjh]h root_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKQhjubh)}(hhh]h)}(hNode ID of the root nodeh]hNode ID of the root node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKQhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKQhj)ubh)}(h!``generation`` New bus generationh](h)}(h``generation``h]j)}(hj2h]h generation}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKQhj,ubh)}(hhh]h)}(hNew bus generationh]hNew bus generation}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKRhjHubah}(h]h ]h"]h$]h&]uh1hhj,ubeh}(h]h ]h"]h$]h&]uh1hhjGhKQhj)ubeh}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjuh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjsubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKUhjhhhubh)}(hThis event is sent when the bus the device belongs to goes through a bus reset. It provides information about the new bus configuration, such as new node ID for this device, new root ID, and others.h]hThis event is sent when the bus the device belongs to goes through a bus reset. It provides information about the new bus configuration, such as new node ID for this device, new root ID, and others.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKRhjhhhubh)}(hIf **bm_node_id** is 0xffff right after bus reset it can be reread by an ``FW_CDEV_IOC_GET_INFO`` ioctl after bus manager selection was finished. Kernels with ABI version < 4 do not set **bm_node_id**.h](hIf }(hjhhhNhNubj8)}(h**bm_node_id**h]h bm_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubh8 is 0xffff right after bus reset it can be reread by an }(hjhhhNhNubj)}(h``FW_CDEV_IOC_GET_INFO``h]hFW_CDEV_IOC_GET_INFO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhY ioctl after bus manager selection was finished. Kernels with ABI version < 4 do not set }(hjhhhNhNubj8)}(h**bm_node_id**h]h bm_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKVhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!fw_cdev_event_response (C struct)c.fw_cdev_event_responsehNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_event_responseh]j)}(hstruct fw_cdev_event_responseh](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.hhK]ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK]ubj)}(hfw_cdev_event_responseh]j)}(hjh]hfw_cdev_event_response}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhK]ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhK]ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhK]hjhhubj)}(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.hhKghj7hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK]ubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jRj)jRj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjZubh:}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKkhjVubjz)}(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[]; };}hjwsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKmhjVubh)}(h **Members**h]j8)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKuhjVubh)}(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]j)}(hjh]hclosure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKihjubh ; set by }(hjhhhNhNubj)}(h``FW_CDEV_IOC_SEND_REQUEST``h]hFW_CDEV_IOC_SEND_REQUEST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(hjhhhNhNubj)}(h&``FW_CDEV_IOC_SEND_BROADCAST_REQUEST``h]h"FW_CDEV_IOC_SEND_BROADCAST_REQUEST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }hjsbj)}(h"``FW_CDEV_IOC_SEND_STREAM_PACKET``h]hFW_CDEV_IOC_SEND_STREAM_PACKET}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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]j)}(hj:h]htype}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKlhj4ubh)}(hhh]h)}(hESee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_RESPONSE``h](hSee }(hjShhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]j)}(hj]h]hfw_cdev_event_common}(hj_hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhjOhKlhjSubh ; always }(hjShhhNhNubj)}(h``FW_CDEV_EVENT_RESPONSE``h]hFW_CDEV_EVENT_RESPONSE}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1hhjOhKlhjPubah}(h]h ]h"]h$]h&]uh1hhj4ubeh}(h]h ]h"]h$]h&]uh1hhjOhKlhjubh)}(h4``rcode`` Response code returned by the remote node h](h)}(h ``rcode``h]j)}(hjh]hrcode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hlength}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hj h]hdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKnhj 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.hhKohj, ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj+ hKnhjubeh}(h]h ]h"]h$]h&]uh1hhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjY h]h Description}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjW ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKrhjhhhubh)}(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 }(hjo hhhNhNubh)}(h :c:type:`fw_cdev_event_response`h]j)}(hjy h]hfw_cdev_event_response}(hj{ hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjw ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_responseuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKohjo ubhk if the kernel or the client implements ABI version <= 5. It has the lack of time stamp field comparing to }(hjo hhhNhNubh)}(h!:c:type:`fw_cdev_event_response2`h]j)}(hj h]hfw_cdev_event_response2}(hj hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_response2uh1hhj hKohjo ubh.}(hjo hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKohjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"fw_cdev_event_response2 (C struct)c.fw_cdev_event_response2hNtauh1jhjhhhhjhNubj)}(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.hhKuubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKuubj)}(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&]jjuh1jhj hhhj hKuubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj hhhj hKuubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hKuhj 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 hKuubeh}(h]h ](j"structeh"]h$]h&]j'j"j(j7 j)j7 j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj? 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; ubjz)}(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[]; };}hj\ sbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj; ubh)}(h **Members**h]j8)}(hjm h]hMembers}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjk 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]j)}(hj h]hclosure}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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)}(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]j)}(hj h]hfw_cdev_event_common}(hj hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhK~hj ubh ; set by }(hj hhhNhNubj)}(h``FW_CDEV_IOC_SEND_REQUEST``h]hFW_CDEV_IOC_SEND_REQUEST}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh or }(hj hhhNhNubj)}(h&``FW_CDEV_IOC_SEND_BROADCAST_REQUEST``h]h"FW_CDEV_IOC_SEND_BROADCAST_REQUEST}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh or }hj sbj)}(h"``FW_CDEV_IOC_SEND_STREAM_PACKET``h]hFW_CDEV_IOC_SEND_STREAM_PACKET}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh ioctl}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK~hj ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubh)}(hO``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_RESPONSE`` h](h)}(h``type``h]j)}(hj h]htype}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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 }(hj8 hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]j)}(hjB h]hfw_cdev_event_common}(hjD hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj@ ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhj4 hKhj8 ubh ; always }(hj8 hhhNhNubj)}(h``FW_CDEV_EVENT_RESPONSE``h]hFW_CDEV_EVENT_RESPONSE}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8 ubeh}(h]h ]h"]h$]h&]uh1hhj4 hKhj5 ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj4 hKhj ubh)}(h4``rcode`` Response code returned by the remote node h](h)}(h ``rcode``h]j)}(hj h]hrcode}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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)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&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubh)}(hB``length`` Data length, i.e. the response's payload size in bytes h](h)}(h ``length``h]j)}(hj h]hlength}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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 hKhj ubh)}(hV``request_tstamp`` The time stamp of isochronous cycle at which the request was sent. h](h)}(h``request_tstamp``h]j)}(hj h]hrequest_tstamp}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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 hKhj ubh)}(hX``response_tstamp`` The time stamp of isochronous cycle at which the response was sent. h](h)}(h``response_tstamp``h]j)}(hj4 h]hresponse_tstamp}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2 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.}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI hKhjJ ubah}(h]h ]h"]h$]h&]uh1hhj. ubeh}(h]h ]h"]h$]h&]uh1hhjI hKhj 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]j)}(hjm h]hpadding}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjg 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.}(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&]uh1hhjg ubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubh)}(h``data`` Payload data, if anyh](h)}(h``data``h]j)}(hj h]hdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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 hKhj ubeh}(h]h ]h"]h$]h&]uh1hhj; ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjhhhubh)}(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 hhhNhNubj)}(h``FW_CDEV_IOC_SEND_REQUEST``h]hFW_CDEV_IOC_SEND_REQUEST}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh ioctl. The payload data for responses carrying data (read and lock responses) follows immediately and can be accessed through the }(hj hhhNhNubj8)}(h**data**h]hdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj 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.hhKhjhhhubh)}(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. }(hj3 hhhNhNubj8)}(h **rcode**h]hrcode}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj3 ubh4 indicates success or failure of such transmissions.}(hj3 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjhhhubh)}(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 }(hjT hhhNhNubj8)}(h**request_tstamp**h]hrequest_tstamp}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjT ubhi expresses the isochronous cycle at which the request was sent to initiate the transaction. The value of }(hjT hhhNhNubj8)}(h**response_tstamp**h]hresponse_tstamp}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjT 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.}(hjT hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j fw_cdev_event_request (C struct)c.fw_cdev_event_requesthNtauh1jhjhhhhjhNubj)}(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&]jjuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj 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]j)}(hj h]hfw_cdev_event_request2}(hj hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjv)}jy]jt ASTIdentifier)} identifierj sbc.fw_cdev_event_requestasbj{fw_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 ](j"structeh"]h$]h&]j'j"j(j$j)j$j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj,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(ubjz)}(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[]; };}hjIsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj(ubh)}(h **Members**h]j8)}(hjZh]hMembers}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjXubah}(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)}(hV``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctl h](h)}(h ``closure``h]j)}(hjyh]hclosure}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjsubh)}(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]j)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhjhKhjubh ; set by }(hjhhhNhNubj)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh ioctl}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjsubeh}(h]h ]h"]h$]h&]uh1hhjhKhjpubh)}(hN``type`` See :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST`` h](h)}(h``type``h]j)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hj h]hfw_cdev_event_common}(hj hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhjhKhjubh ; always }(hjhhhNhNubj)}(h``FW_CDEV_EVENT_REQUEST``h]hFW_CDEV_EVENT_REQUEST}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjpubh)}(h3``tcode`` Transaction code of the incoming request h](h)}(h ``tcode``h]j)}(hjQh]htcode}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjKubh)}(hhh]h)}(h(Transaction code of the incoming requesth]h(Transaction code of the incoming request}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhjgubah}(h]h ]h"]h$]h&]uh1hhjKubeh}(h]h ]h"]h$]h&]uh1hhjfhKhjpubh)}(h=``offset`` The offset into the 48-bit per-node address space h](h)}(h ``offset``h]j)}(hjh]hoffset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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&]uh1hhjhKhjpubh)}(h8``handle`` Reference to the kernel-side pending request h](h)}(h ``handle``h]j)}(hjh]hhandle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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&]uh1hhjhKhjpubh)}(hA``length`` Data length, i.e. the request's payload size in bytes h](h)}(h ``length``h]j)}(hjh]hlength}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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&]uh1hhjhKhjpubh)}(h``data`` Incoming data, if anyh](h)}(h``data``h]j)}(hj5h]hdata}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(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)}(hIncoming data, if anyh]hIncoming data, if any}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjKubah}(h]h ]h"]h$]h&]uh1hhj/ubeh}(h]h ]h"]h$]h&]uh1hhjJhKhjpubeh}(h]h ]h"]h$]h&]uh1hhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjxh]h Description}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjvubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjhhhubh)}(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 }(hjhhhNhNubh)}(h :c:type:`fw_cdev_event_request2`h]j)}(hjh]hfw_cdev_event_request2}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_request2uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh; if the kernel or the client implements ABI version <= 3. }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_request`h]j)}(hjh]hfw_cdev_event_request}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_requestuh1hhjhKhjubh" lacks essential information; use }(hjhhhNhNubh)}(h :c:type:`fw_cdev_event_request2`h]j)}(hjh]hfw_cdev_event_request2}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_request2uh1hhjhKhjubh instead.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!fw_cdev_event_request2 (C struct)c.fw_cdev_event_request2hNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_event_request2h]j)}(hstruct fw_cdev_event_request2h](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.hhKubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj,hKubj)}(hfw_cdev_event_request2h]j)}(hjh]hfw_cdev_event_request2}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj,hKubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhj,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}(hjahhhNhNubah}(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 ](j"structeh"]h$]h&]j'j"j(jyj)jyj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj}ubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj}ubh)}(h **Members**h]j8)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(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)}(hV``closure`` See :c:type:`fw_cdev_event_common`; set by ``FW_CDEV_IOC_ALLOCATE`` ioctl h](h)}(h ``closure``h]j)}(hjh]hclosure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhjhKhjubh ; set by }(hjhhhNhNubj)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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]j)}(hj<h]htype}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj6ubh)}(hhh]h)}(hESee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST2``h](hSee }(hjUhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]j)}(hj_h]hfw_cdev_event_common}(hjahhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhjQhKhjUubh ; always }(hjUhhhNhNubj)}(h``FW_CDEV_EVENT_REQUEST2``h]hFW_CDEV_EVENT_REQUEST2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1hhjQhKhjRubah}(h]h ]h"]h$]h&]uh1hhj6ubeh}(h]h ]h"]h$]h&]uh1hhjQhKhjubh)}(h3``tcode`` Transaction code of the incoming request h](h)}(h ``tcode``h]j)}(hjh]htcode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hoffset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hsource_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hKhj.ubah}(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]j)}(hjQh]hdestination_node_id}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjKubh)}(hhh]h)}(hDestination node IDh]hDestination node ID}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhjgubah}(h]h ]h"]h$]h&]uh1hhjKubeh}(h]h ]h"]h$]h&]uh1hhjfhKhjubh)}(h;``card`` The index of the card from which the request came h](h)}(h``card``h]j)}(hjh]hcard}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]h generation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hhandle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hj5h]hlength}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(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)}(h5Data length, i.e. the request's payload size in bytesh]h7Data length, i.e. the request’s payload size in bytes}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKhjKubah}(h]h ]h"]h$]h&]uh1hhj/ubeh}(h]h ]h"]h$]h&]uh1hhjJhKhjubh)}(h``data`` Incoming data, if anyh](h)}(h``data``h]j)}(hjnh]hdata}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjhubh)}(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&]uh1hhjhubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1hhj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjhhhubh)}(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]j)}(hjh]hfw_cdev_event_request3}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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]j)}(hjh]hfw_cdev_event_request3}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_request3uh1hhjhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!fw_cdev_event_request3 (C struct)c.fw_cdev_event_request3hNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_event_request3h]j)}(hstruct fw_cdev_event_request3h](j)}(hjh]hstruct}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKubj)}(h h]h }(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhjBhKubj)}(hfw_cdev_event_request3h]j)}(hj/h]hfw_cdev_event_request3}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubah}(h]h ](jjeh"]h$]h&]jjuh1jhj1hhhjBhKubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj-hhhjBhKubah}(h]j(ah ](jjeh"]h$]h&]jj)jhuh1jhjBhKhj*hhubj)}(hhh]h)}(h-Sent on incoming request to an address regionh]h-Sent on incoming request to an address region}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjthhubah}(h]h ]h"]h$]h&]uh1jhj*hhhjBhKubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jj)jj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh)}(h **Members**h]j8)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(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]j)}(hjh]hclosure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hfw_cdev_event_common}(hj hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhjhKhjubh ; set by }(hjhhhNhNubj)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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]j)}(hjRh]htype}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjLubh)}(hhh]h)}(hESee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_REQUEST2``h](hSee }(hjkhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]j)}(hjuh]hfw_cdev_event_common}(hjwhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhjghKhjkubh ; always }(hjkhhhNhNubj)}(h``FW_CDEV_EVENT_REQUEST2``h]hFW_CDEV_EVENT_REQUEST2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1hhjghKhjhubah}(h]h ]h"]h$]h&]uh1hhjLubeh}(h]h ]h"]h$]h&]uh1hhjghKhjubh)}(h3``tcode`` Transaction code of the incoming request h](h)}(h ``tcode``h]j)}(hjh]htcode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hoffset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj hKhjubh)}(h"``source_node_id`` Sender node ID h](h)}(h``source_node_id``h]j)}(hj.h]hsource_node_id}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,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)}(hSender node IDh]hSender node ID}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChKhjDubah}(h]h ]h"]h$]h&]uh1hhj(ubeh}(h]h ]h"]h$]h&]uh1hhjChKhjubh)}(h,``destination_node_id`` Destination node ID h](h)}(h``destination_node_id``h]j)}(hjgh]hdestination_node_id}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjaubh)}(hhh]h)}(hDestination node IDh]hDestination node ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hKhj}ubah}(h]h ]h"]h$]h&]uh1hhjaubeh}(h]h ]h"]h$]h&]uh1hhj|hKhjubh)}(h;``card`` The index of the card from which the request came h](h)}(h``card``h]j)}(hjh]hcard}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]h generation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hhandle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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,Reference to the kernel-side pending requesth]h,Reference to the kernel-side pending request}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hKhj(ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj'hKhjubh)}(hA``length`` Data length, i.e. the request's payload size in bytes h](h)}(h ``length``h]j)}(hjKh]hlength}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjEubh)}(hhh]h)}(h5Data length, i.e. the request's payload size in bytesh]h7Data length, i.e. the request’s payload size in bytes}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hKhjaubah}(h]h ]h"]h$]h&]uh1hhjEubeh}(h]h ]h"]h$]h&]uh1hhj`hKhjubh)}(hM``tstamp`` The time stamp of isochronous cycle at which the request arrived. h](h)}(h ``tstamp``h]j)}(hjh]htstamp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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)}(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&]uh1hhj~ubeh}(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]j)}(hjh]hpadding}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]hdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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.hhKhj ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj hKhjubeh}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj:h]h Description}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjhhhubh)}(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 }(hjPhhhNhNubj)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubh ioctl. The request is guaranteed to be completely contained in the specified region. Userspace is responsible for sending the response by }(hjPhhhNhNubj)}(h``FW_CDEV_IOC_SEND_RESPONSE``h]hFW_CDEV_IOC_SEND_RESPONSE}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubh ioctl, using the same }(hjPhhhNhNubj8)}(h **handle**h]hhandle}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjPubh.}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjhhhubh)}(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 }(hjhhhNhNubj8)}(h**data**h]hdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubh field.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjhhhubh)}(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]j)}(hjh]hfw_cdev_event_request}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_requestuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhjubh, }(hjhhhNhNubj8)}(h **tcode**h]htcode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubh7 of lock requests is one of the firewire-core specific }(hjhhhNhNubj)}(h``TCODE_LOCK_MASK_SWAP``h]hTCODE_LOCK_MASK_SWAP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhO...``TCODE_LOCK_VENDOR_DEPENDENT``, i.e. encodes the extended transaction code.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhhubh)}(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](j8)}(h**card**h]hcard}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj ubh may differ from }(hj hhhNhNubh)}(h2:c:type:`fw_cdev_get_info.card `h]j)}(hj$h]hfw_cdev_get_info.card}(hj&hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_get_infouh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhKhj ubhB because requests are received from all cards of the Linux host. }(hj hhhNhNubj8)}(h**source_node_id**h]hsource_node_id}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj ubh, }(hj hhhNhNubj8)}(h**destination_node_id**h]hdestination_node_id}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj ubh, and }(hj hhhNhNubj8)}(h**generation**h]h generation}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj ubh~ pertain to that card. Destination node ID and bus generation may therefore differ from the corresponding fields of the last }(hj hhhNhNubh)}(h!:c:type:`fw_cdev_event_bus_reset`h]j)}(hj~h]hfw_cdev_event_bus_reset}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_bus_resetuh1hhjAhKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjAhKhjhhhubh)}(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](j8)}(h**destination_node_id**h]hdestination_node_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubh 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 }(hjhhhNhNubj)}(h``FW_CDEV_IOC_SEND_RESPONSE``h]hFW_CDEV_IOC_SEND_RESPONSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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.hhMhjhhhubh)}(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 }(hjhhhNhNubj)}(h``FW_CDEV_IOC_SEND_RESPONSE``h]hFW_CDEV_IOC_SEND_RESPONSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh[ 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.hhMhjhhhubh)}(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]j)}(hjh]hfw_cdev_event_request3}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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 hjhhhubh)}(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](j8)}(h **tstamp**h]htstamp}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj'ubh 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.}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&fw_cdev_event_iso_interrupt (C struct)c.fw_cdev_event_iso_interrupthNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_event_iso_interrupth]j)}(h"struct fw_cdev_event_iso_interrupth](j)}(hjh]hstruct}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYhhhjjhMubj)}(hfw_cdev_event_iso_interrupth]j)}(hjWh]hfw_cdev_event_iso_interrupt}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubah}(h]h ](jjeh"]h$]h&]jjuh1jhjYhhhjjhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjUhhhjjhMubah}(h]jPah ](jjeh"]h$]h&]jj)jhuh1jhjjhMhjRhhubj)}(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&]uh1jhjRhhhjjhMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jj)jj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM*hjubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM,hjubh)}(h **Members**h]j8)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(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]j)}(hj h]hclosure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(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 }(hj%hhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]j)}(hj/h]hfw_cdev_event_common}(hj1hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM(hj%ubh ; set by }(hj%hhhNhNubj)}(h``FW_CDEV_CREATE_ISO_CONTEXT``h]hFW_CDEV_CREATE_ISO_CONTEXT}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh ioctl}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjLhM(hj"ubah}(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]j)}(hj{h]htype}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(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)}(hJSee :c:type:`fw_cdev_event_common`; always ``FW_CDEV_EVENT_ISO_INTERRUPT``h](hSee }(hjhhhNhNubh)}(h:c:type:`fw_cdev_event_common`h]j)}(hjh]hfw_cdev_event_common}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhjhM*hjubh ; always }(hjhhhNhNubj)}(h``FW_CDEV_EVENT_ISO_INTERRUPT``h]hFW_CDEV_EVENT_ISO_INTERRUPT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM*hjubah}(h]h ]h"]h$]h&]uh1hhjuubeh}(h]h ]h"]h$]h&]uh1hhjhM*hjubh)}(h5``cycle`` Cycle counter of the last completed packet h](h)}(h ``cycle``h]j)}(hjh]hcycle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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]j)}(hjh]h header_length}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hM,hj4ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj3hM,hjubh)}(h#``header`` Stripped headers, if anyh](h)}(h ``header``h]j)}(hjWh]hheader}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM,hjQubh)}(hhh]h)}(hStripped headers, if anyh]hStripped headers, if any}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM-hjmubah}(h]h ]h"]h$]h&]uh1hhjQubeh}(h]h ]h"]h$]h&]uh1hhjlhM,hjubeh}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM0hjhhhubh)}(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]j)}(hjh]hfw_cdev_iso_packet}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_iso_packetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM-hjubh with the }(hjhhhNhNubj)}(h``FW_CDEV_ISO_INTERRUPT``h]hFW_CDEV_ISO_INTERRUPT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh) bit set, when explicitly requested with }(hjhhhNhNubj)}(h``FW_CDEV_IOC_FLUSH_ISO``h]hFW_CDEV_IOC_FLUSH_ISO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhz, or when there have been so many completed packets without the interrupt bit set that the kernel’s internal buffer for }(hjhhhNhNubj8)}(h **header**h]hheader}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubhn 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-hjhhhubh)}(hLIsochronous transmit events (context type ``FW_CDEV_ISO_CONTEXT_TRANSMIT``):h](h*Isochronous transmit events (context type }(hjhhhNhNubj)}(h ``FW_CDEV_ISO_CONTEXT_TRANSMIT``h]hFW_CDEV_ISO_CONTEXT_TRANSMIT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh):}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM4hjhhhubh)}(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, }(hj9hhhNhNubh)}(h:c:type:`header_length`h]j)}(hjCh]h header_length}(hjEhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{ header_lengthuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM6hj9ubh is a multiple of 4 and }(hj9hhhNhNubh)}(h:c:type:`header`h]j)}(hjgh]hheader}(hjihhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{headeruh1hhj`hM6hj9ubh 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, }(hj9hhhNhNubh)}(h:c:type:`header_length`h]j)}(hjh]h header_length}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{ header_lengthuh1hhj`hM6hj9ubh was 0.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj`hM6hjhhhubh)}(hJIsochronous receive events (context type ``FW_CDEV_ISO_CONTEXT_RECEIVE``):h](h)Isochronous receive events (context type }(hjhhhNhNubj)}(h``FW_CDEV_ISO_CONTEXT_RECEIVE``h]hFW_CDEV_ISO_CONTEXT_RECEIVE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh):}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM;hjhhhubh)}(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 }(hjhhhNhNubj8)}(h **header**h]hheader}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubhY 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]j)}(hjh]h&fw_cdev_create_iso_context.header_size}(hjhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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&]uh1hhj hM=hjhhhubh)}(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]j)}(hj h]hfw_cdev_queue_iso}(hj"hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_queue_isouh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMBhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj=hMBhjhhhubh)}(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 }(hjHhhhNhNubh)}(hM:c:type:`fw_cdev_create_iso_context.header_size `h]j)}(hjRh]h&fw_cdev_create_iso_context.header_size}(hjThhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_create_iso_contextuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMGhjHubh6 > 4, followed by quadlets from the packet payload if }(hjHhhhNhNubh)}(hM:c:type:`fw_cdev_create_iso_context.header_size `h]j)}(hjvh]h&fw_cdev_create_iso_context.header_size}(hjxhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_create_iso_contextuh1hhjohMGhjHubh > 8.}(hjHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjohMGhjhhhubh)}(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.hhMLhjhhhubh)}(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.hhMQhjhhhubh)}(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.hhMThjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j)fw_cdev_event_iso_interrupt_mc (C struct) c.fw_cdev_event_iso_interrupt_mchNtauh1jhjhhhhjhNubj)}(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}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhM[ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhM[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 ](j"structeh"]h$]h&]j'j"j(j= j)j= j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjI hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjE ubh:}(hjE hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhjA ubjz)}(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; };}hjb sbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhhjA ubh)}(h **Members**h]j8)}(hjs h]hMembers}(hju hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjq ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMnhjA 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]j)}(hj h]hclosure}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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)}(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]j)}(hj h]hfw_cdev_event_common}(hj hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMdhj ubh ; set by }(hj hhhNhNubj)}(h``FW_CDEV_CREATE_ISO_CONTEXT``h]hFW_CDEV_CREATE_ISO_CONTEXT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh ioctl}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMdhj ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj hMehj ubh)}(h6``type`` ``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL`` h](h)}(h``type``h]j)}(hj!h]htype}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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]j)}(hj!h]h(FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL}(hj!hhhNhNubah}(h]h ]h"]h$f]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhj!hMfhj!ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj!hMfhj ubh)}(hN``completed`` Offset into the receive buffer; data before this offset is validh](h)}(h ``completed``h]j)}(hjC!h]h completed}(hjE!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA!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}(hj\!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMghjY!ubah}(h]h ]h"]h$]h&]uh1hhj=!ubeh}(h]h ]h"]h$]h&]uh1hhjX!hMfhj ubeh}(h]h ]h"]h$]h&]uh1hhjA ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj!h]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj!ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMjhjhhhubh)}(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!hhhNhNubj)}(h,``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``h]h(FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubh) for }(hj!hhhNhNubh)}(h:c:type:`fw_cdev_iso_packet`h]j)}(hj!h]hfw_cdev_iso_packet}(hj!hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_iso_packetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMghj!ubhB buffer chunks that have been completely filled and that have the }(hj!hhhNhNubj)}(h``FW_CDEV_ISO_INTERRUPT``h]hFW_CDEV_ISO_INTERRUPT}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubh, bit set, or when explicitly requested with }(hj!hhhNhNubj)}(h``FW_CDEV_IOC_FLUSH_ISO``h]hFW_CDEV_IOC_FLUSH_ISO}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubh.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj!hMghjhhhubh)}(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.hhMthj"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]j)}(hj2"h]hfw_cdev_event_iso_interrupt}(hj4"hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj0"ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMnhj("ubh", but in little endian byte order,}(hj("hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjO"hMnhj$"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,}(hjd"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMphj`"ubah}(h]h ]h"]h$]h&]uh1j""hj"ubj#")}(hE0...3 padding bytes as needed to align the following trailer quadlet,h]h)}(hj{"h]hE0...3 padding bytes as needed to align the following trailer quadlet,}(hj}"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMrhjy"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]j)}(hj"h]hfw_cdev_event_iso_interrupt}(hj"hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMshj"ubh", but in little endian byte order.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj"hMshj"ubah}(h]h ]h"]h$]h&]uh1j""hj"ubeh}(h]h ]h"]h$]h&]bullet-uh1j"hjO"hMnhj"ubah}(h]h ]h"]h$]h&]uh1hhj"ubeh}(h]h ]h"]h$]h&]uh1hhj"hMthj"ubah}(h]h ]h"]h$]h&]uh1hhjhhhhjhNubh)}(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"hhhNhNubj8)}(h **completed**h]h completed}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj"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.hhMvhjhhhubh)}(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.hhMzhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_cdev_event_iso_resource (C struct)c.fw_cdev_event_iso_resourcehNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_event_iso_resourceh]j)}(h!struct fw_cdev_event_iso_resourceh](j)}(hjh]hstruct}(hj0#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}(hjP#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL#ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj,#hhhj=#hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj(#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}(hjr#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjo#hhubah}(h]h ]h"]h$]h&]uh1jhj%#hhhj=#hMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(j#j)j#j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj#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#ubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj#ubh)}(h **Members**h]j8)}(hj#h]hMembers}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj#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)}(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]j)}(hj#h]hclosure}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#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]j)}(hj$h]hfw_cdev_event_common}(hj$hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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]j)}(hj<$h]htype}(hj>$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:$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)}(hV``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED`` or ``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h](j)}(h(``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED``h]h$FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED}(hjY$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjU$ubh or }(hjU$hhhNhNubj)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hjk$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjU$ubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjR$ubah}(h]h ]h"]h$]h&]uh1hhj6$ubeh}(h]h ]h"]h$]h&]uh1hhjQ$hMhj#ubh)}(hG``handle`` Reference by which an allocated resource can be deallocated h](h)}(h ``handle``h]j)}(hj$h]hhandle}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$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;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&]uh1hhj$ubeh}(h]h ]h"]h$]h&]uh1hhj$hMhj#ubh)}(h@``channel`` Isochronous channel which was (de)allocated, if any h](h)}(h ``channel``h]j)}(hj$h]hchannel}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$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]j)}(hj%h]h bandwidth}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%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&]uh1hhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjG%h]h Description}(hjI%hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjE%ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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 }(hj]%hhhNhNubj)}(h(``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED``h]h$FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED}(hje%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]%ubh` event is sent after an isochronous resource was allocated at the IRM. The client has to check }(hj]%hhhNhNubj8)}(h **channel**h]hchannel}(hjw%hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj]%ubh and }(hj]%hhhNhNubj8)}(h **bandwidth**h]h bandwidth}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj]%ubh/ for whether the allocation actually succeeded.}(hj]%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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%hhhNhNubj)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%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.hhMhjhhhubh)}(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](j8)}(h **channel**h]hchannel}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj%ubhB is <0 if no channel was (de)allocated or if reallocation failed. }(hj%hhhNhNubj8)}(h **bandwidth**h]h bandwidth}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj%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.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#fw_cdev_event_phy_packet (C struct)c.fw_cdev_event_phy_packethNtauh1jhjhhhhjhNubj)}(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&]jjuh1jhj&hhhj&hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj&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}(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&hhhj&hMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(je&j)je&j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjq&hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjm&ubh:}(hjm&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhji&ubjz)}(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[]; };}hj&sbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhji&ubh)}(h **Members**h]j8)}(hj&h]hMembers}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj&ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhji&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]j)}(hj&h]hclosure}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&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]j)}(hj&h]hfw_cdev_event_common}(hj&hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj&ubh ; set by }(hj&hhhNhNubj)}(h``FW_CDEV_IOC_SEND_PHY_PACKET``h]hFW_CDEV_IOC_SEND_PHY_PACKET}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubh or }(hj&hhhNhNubj)}(h#``FW_CDEV_IOC_RECEIVE_PHY_PACKETS``h]hFW_CDEV_IOC_RECEIVE_PHY_PACKETS}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&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]j)}(hj;'h]htype}(hj='hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9'ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj5'ubh)}(hhh]h)}(h2``FW_CDEV_EVENT_PHY_PACKET_SENT`` or %..._RECEIVEDh](j)}(h!``FW_CDEV_EVENT_PHY_PACKET_SENT``h]hFW_CDEV_EVENT_PHY_PACKET_SENT}(hjX'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT'ubh or %..._RECEIVED}(hjT'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjP'hMhjQ'ubah}(h]h ]h"]h$]h&]uh1hhj5'ubeh}(h]h ]h"]h$]h&]uh1hhjP'hMhj&ubh)}(hF``rcode`` ``RCODE_``..., indicates success or failure of transmission h](h)}(h ``rcode``h]j)}(hj'h]hrcode}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'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;``RCODE_``..., indicates success or failure of transmissionh](j)}(h ``RCODE_``h]hRCODE_}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubh1..., indicates success or failure of transmission}(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 ``length`` Data length in bytes h](h)}(h ``length``h]j)}(hj'h]hlength}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'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]j)}(hj(h]hdata}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(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(hhhNhNubj)}(h#``FW_CDEV_IOC_RECEIVE_PHY_PACKETS``h]hFW_CDEV_IOC_RECEIVE_PHY_PACKETS}(hj#(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubh. For }(hj(hhhNhNubj)}(h``FW_CDEV_IOC_SEND_PHY_PACKET``h]hFW_CDEV_IOC_SEND_PHY_PACKET}(hj5(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(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&]uh1hhji&ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjh(h]h Description}(hjj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjf(ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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 }(hj~(hhhNhNubh)}(h#:c:type:`fw_cdev_event_phy_packet2`h]j)}(hj(h]hfw_cdev_event_phy_packet2}(hj(hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_phy_packet2uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj~(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_phy_packet2`h]j)}(hj(h]hfw_cdev_event_phy_packet2}(hj(hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_phy_packet2uh1hhj(hMhj~(ubh.}(hj~(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj(hMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$fw_cdev_event_phy_packet2 (C struct)c.fw_cdev_event_phy_packet2hNtauh1jhjhhhhjhNubj)}(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&]jjuh1jhj(hhhj(hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj(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 ](j"structeh"]h$]h&]j'j"j(jF)j)jF)j*j+j,uh1jhhhjhhjhNubj.)}(hX{**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. ``data`` Incoming datah](h)}(h**Definition**::h](j8)}(h**Definition**h]h Definition}(hjR)hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjN)ubh:}(hjN)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjJ)ubjz)}(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[]; };}hjk)sbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjJ)ubh)}(h **Members**h]j8)}(hj|)h]hMembers}(hj~)hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjz)ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjJ)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]j)}(hj)h]hclosure}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)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]j)}(hj)h]hfw_cdev_event_common}(hj)hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_commonuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj)ubh ; set by }(hj)hhhNhNubj)}(h``FW_CDEV_IOC_SEND_PHY_PACKET``h]hFW_CDEV_IOC_SEND_PHY_PACKET}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubh or }(hj)hhhNhNubj)}(h#``FW_CDEV_IOC_RECEIVE_PHY_PACKETS``h]hFW_CDEV_IOC_RECEIVE_PHY_PACKETS}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)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]j)}(hj*h]htype}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*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](j)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj9*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5*ubh or }(hj5*hhhNhNubj)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hjK*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5*ubeh}(h]h ]h"]h$]h&]uh1hhj1*hMhj2*ubah}(h]h ]h"]h$]h&]uh1hhj*ubeh}(h]h ]h"]h$]h&]uh1hhj1*hMhj)ubh)}(hF``rcode`` ``RCODE_``..., indicates success or failure of transmission h](h)}(h ``rcode``h]j)}(hjq*h]hrcode}(hjs*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjo*ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjk*ubh)}(hhh]h)}(h;``RCODE_``..., indicates success or failure of transmissionh](j)}(h ``RCODE_``h]hRCODE_}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubh1..., indicates success or failure of transmission}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1hhjk*ubeh}(h]h ]h"]h$]h&]uh1hhj*hMhj)ubh)}(h ``length`` Data length in bytes h](h)}(h ``length``h]j)}(hj*h]hlength}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*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)}(hXL``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. h](h)}(h ``tstamp``h]j)}(hj*h]htstamp}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*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 +hhhNhNubj)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj +ubhG, the time stamp of isochronous cycle at which the packet arrived. For }(hj +hhhNhNubj)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj$+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj +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+ubah}(h]h ]h"]h$]h&]uh1hhj*ubeh}(h]h ]h"]h$]h&]uh1hhj+hMhj)ubh)}(h``data`` Incoming datah](h)}(h``data``h]j)}(hjO+h]hdata}(hjQ+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM+ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjI+ubh)}(hhh]h)}(h Incoming datah]h Incoming data}(hjh+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhje+ubah}(h]h ]h"]h$]h&]uh1hhjI+ubeh}(h]h ]h"]h$]h&]uh1hhjd+hMhj)ubeh}(h]h ]h"]h$]h&]uh1hhjJ)ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj+h]h Description}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj+ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh block_quote)}(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]h)}(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+hhhNhNubj)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubh or the request arrived for }(hj+hhhNhNubj)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+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+ubah}(h]h ]h"]h$]h&]uh1j+hj+hMhjhhhubh)}(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+hhhNhNubj8)}(h**type**h]htype}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj+ubh is }(hj+hhhNhNubj)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubh, }(hj+hhhNhNubj8)}(h **length**h]hlength}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj+ubh is 8 and }(hj+hhhNhNubj8)}(h**data**h]hdata}(hj%,hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj+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.hhMhjhhhubh)}(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>,hhhNhNubj8)}(h**type**h]htype}(hjF,hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj>,ubh is }(hj>,hhhNhNubj)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hjX,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>,ubh, }(hj>,hhhNhNubj8)}(h **length**h]hlength}(hjj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj>,ubh is 8 and }(hj>,hhhNhNubj8)}(h**data**h]hdata}(hj|,hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj>,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.hhMhjhhhubh)}(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 }(hj,hhhNhNubj)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubh, the }(hj,hhhNhNubj8)}(h **tstamp**h]htstamp}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj,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.}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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,hhhNhNubj)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubh, the }(hj,hhhNhNubj8)}(h **tstamp**h]htstamp}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj,ubh` has different meanings whether to sent the packet for ping or not. If it’s not for ping, the }(hj,hhhNhNubj8)}(h **tstamp**h]htstamp}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj,ubh_ is the isochronous cycle at which the packet was sent, and use the same format as the case of }(hj,hhhNhNubj)}(h"``FW_CDEV_EVENT_PHY_PACKET_SENT2``h]hFW_CDEV_EVENT_PHY_PACKET_SENT2}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubh. If it’s for ping, the }(hj,hhhNhNubj8)}(h **tstamp**h]htstamp}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj,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.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_event (C union)c.fw_cdev_eventhNtauh1jhjhhhhjhNubj)}(hhh](j)}(h fw_cdev_eventh]j)}(hunion fw_cdev_eventh](j)}(hunionh]hunion}(hjJ-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF-hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjY-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF-hhhjX-hMubj)}(h fw_cdev_eventh]j)}(hjD-h]h fw_cdev_event}(hjk-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjg-ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjF-hhhjX-hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjB-hhhjX-hMubah}(h]j=-ah ](jjeh"]h$]h&]jj)jhuh1jhjX-hMhj?-hhubj)}(hhh]h)}(h*Convenience union of fw_cdev_event_* typesh]h*Convenience union of fw_cdev_event_* types}(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?-hhhjX-hMubeh}(h]h ](j"unioneh"]h$]h&]j'j"j(j-j)j-j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj-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-ubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj-ubh)}(h **Members**h]j8)}(hj-h]hMembers}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj-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]j)}(hj-h]hcommon}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-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]j)}(hj3.h]h bus_reset}(hj5.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1.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 }(hjL.hhhNhNubj8)}(h**common.type**h]h common.type}(hjT.hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjL.ubh == }(hjL.hhhNhNubj)}(h``FW_CDEV_EVENT_BUS_RESET``h]hFW_CDEV_EVENT_BUS_RESET}(hjf.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL.ubeh}(h]h ]h"]h$]h&]uh1hhjH.hMhjI.ubah}(h]h ]h"]h$]h&]uh1hhj-.ubeh}(h]h ]h"]h$]h&]uh1hhjH.hMhj-ubh)}(hD``response`` Valid if **common.type** == ``FW_CDEV_EVENT_RESPONSE`` h](h)}(h ``response``h]j)}(hj.h]hresponse}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.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_RESPONSE``h](h Valid if }(hj.hhhNhNubj8)}(h**common.type**h]h common.type}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj.ubh == }(hj.hhhNhNubj)}(h``FW_CDEV_EVENT_RESPONSE``h]hFW_CDEV_EVENT_RESPONSE}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1hhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1hhj.ubeh}(h]h ]h"]h$]h&]uh1hhj.hMhj-ubh)}(hB``request`` Valid if **common.type** == ``FW_CDEV_EVENT_REQUEST`` h](h)}(h ``request``h]j)}(hj.h]hrequest}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.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.hhhNhNubj8)}(h**common.type**h]h common.type}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj.ubh == }(hj.hhhNhNubj)}(h``FW_CDEV_EVENT_REQUEST``h]hFW_CDEV_EVENT_REQUEST}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.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]j)}(hj>/h]hrequest2}(hj@/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj` 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](j8)}(h**Definition**h]h Definition}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj2ubh:}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMZhj2ubjz)}(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; };}hj3sbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM\hj2ubh)}(h **Members**h]j8)}(hj3h]hMembers}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj3ubah}(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]j)}(hj53h]hversion}(hj73hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj33ubah}(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)}(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 }(hjN3hhhNhNubj8)}(h **version**h]hversion}(hjV3hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjN3ubhT for which the client was implemented. This is necessary for forward compatibility.}(hjN3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMXhjK3ubah}(h]h ]h"]h$]h&]uh1hhj/3ubeh}(h]h ]h"]h$]h&]uh1hhjJ3hM\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]j)}(hj3h]h rom_length}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(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 }(hj3hhhNhNubj8)}(h**rom**h]hrom}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj3ubh is non-zero, up to }(hj3hhhNhNubj8)}(h**rom_length**h]h rom_length}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj3ubhZ bytes of Configuration ROM will be copied into that user space address. In either case, }(hj3hhhNhNubj8)}(h**rom_length**h]h rom_length}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj3ubh< is updated with the actual length of the Configuration ROM.}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM]hj3ubah}(h]h ]h"]h$]h&]uh1hhj{3ubeh}(h]h ]h"]h$]h&]uh1hhj3hM`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]j)}(hj3h]hrom}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(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}(hj 4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMahj4ubah}(h]h ]h"]h$]h&]uh1hhj3ubeh}(h]h ]h"]h$]h&]uh1hhj4hMbhj,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]j)}(hj+4h]h bus_reset}(hj-4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMehj%4ubh)}(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 }(hjD4hhhNhNubh)}(hB:c:type:`struct fw_cdev_event_bus_reset `h]j)}(hjN4h]hstruct fw_cdev_event_bus_reset}(hjP4hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjL4ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_bus_resetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMchjD4ubhO with the current state of the bus. This does not cause a bus reset to happen.}(hjD4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjk4hMchjA4ubah}(h]h ]h"]h$]h&]uh1hhj%4ubeh}(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]j)}(hj4h]hbus_reset_closure}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhj4ubh)}(hhh]h)}(hBValue of :c:type:`closure` in this and subsequent bus reset eventsh](h Value of }(hj4hhhNhNubh)}(h:c:type:`closure`h]j)}(hj4h]hclosure}(hj4hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{closureuh1hhj4hMfhj4ubh( in this and subsequent bus reset events}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj4hMfhj4ubah}(h]h ]h"]h$]h&]uh1hhj4ubeh}(h]h ]h"]h$]h&]uh1hhj4hMfhj,3ubh)}(h5``card`` The index of the card this device belongs toh](h)}(h``card``h]j)}(hj4h]hcard}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(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&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj'5h]h Description}(hj)5hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj%5ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMjhjhhhubh)}(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 }(hj=5hhhNhNubj)}(h``FW_CDEV_IOC_GET_INFO``h]hFW_CDEV_IOC_GET_INFO}(hjE5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=5ubhc ioctl is usually the very first one which a client performs right after it opened a /dev/fw* file.}(hj=5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMghjhhhubh)}(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^5hhhNhNubj)}(h``FW_CDEV_EVENT_BUS_RESET``h]hFW_CDEV_EVENT_BUS_RESET}(hjf5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^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.hhMjhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_send_request (C struct)c.fw_cdev_send_requesthNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_send_requesth]j)}(hstruct fw_cdev_send_requesth](j)}(hjh]hstruct}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMpubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhj5hMpubj)}(hfw_cdev_send_requesth]j)}(hj5h]hfw_cdev_send_request}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj5hhhj5hMpubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj5hhhj5hMpubah}(h]j5ah ](jjeh"]h$]h&]jj)jhuh1jhj5hMphj5hhubj)}(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&]uh1jhj5hhhj5hMpubeh}(h]h ](j"structeh"]h$]h&]j'j"j(j5j)j5j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj5ubh:}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM|hj5ubjz)}(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; };}hj6sbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM~hj5ubh)}(h **Members**h]j8)}(hj(6h]hMembers}(hj*6hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj&6ubah}(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]j)}(hjG6h]htcode}(hjI6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE6ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMzhjA6ubh)}(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&]uh1hhjA6ubeh}(h]h ]h"]h$]h&]uh1hhj\6hMzhj>6ubh)}(h0``length`` Length of outgoing payload, in bytes h](h)}(h ``length``h]j)}(hj6h]hlength}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~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}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hM{hj6ubah}(h]h ]h"]h$]h&]uh1hhjz6ubeh}(h]h ]h"]h$]h&]uh1hhj6hM{hj>6ubh)}(h-``offset`` 48-bit offset at destination node h](h)}(h ``offset``h]j)}(hj6h]hoffset}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(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|hj>6ubh)}(h;``closure`` Passed back to userspace in the response event h](h)}(h ``closure``h]j)}(hj6h]hclosure}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(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}(hj 7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hM}hj7ubah}(h]h ]h"]h$]h&]uh1hhj6ubeh}(h]h ]h"]h$]h&]uh1hhj7hM}hj>6ubh)}(h&``data`` Userspace pointer to payload h](h)}(h``data``h]j)}(hj+7h]hdata}(hj-7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)7ubah}(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)}(hUserspace pointer to payloadh]hUserspace pointer to payload}(hjD7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@7hM~hjA7ubah}(h]h ]h"]h$]h&]uh1hhj%7ubeh}(h]h ]h"]h$]h&]uh1hhj@7hM~hj>6ubh)}(h7``generation`` The bus generation where packet is validh](h)}(h``generation``h]j)}(hjd7h]h generation}(hjf7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb7ubah}(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~hj>6ubeh}(h]h ]h"]h$]h&]uh1hhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj7h]h Description}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj7ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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 }(hj7hhhNhNubj8)}(h**data**h]hdata}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj7ubhA field. Once the transaction completes, the kernel writes either }(hj7hhhNhNubh)}(h :c:type:`fw_cdev_event_response`h]j)}(hj7h]hfw_cdev_event_response}(hj7hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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]j)}(hj7h]hfw_cdev_event_response}(hj7hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_responseuh1hhj7hMhj7ubh event back. The }(hj7hhhNhNubj8)}(h **closure**h]hclosure}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj7ubh: field is passed back to user space in the response event.}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj7hMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j fw_cdev_send_response (C struct)c.fw_cdev_send_responsehNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_send_responseh]j)}(hstruct fw_cdev_send_responseh](j)}(hjh]hstruct}(hjO8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjK8hhhf/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&]uh1jhjK8hhhj\8hMubj)}(hfw_cdev_send_responseh]j)}(hjI8h]hfw_cdev_send_response}(hjo8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjk8ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjK8hhhj\8hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjG8hhhj\8hMubah}(h]jB8ah ](jjeh"]h$]h&]jj)jhuh1jhj\8hMhjD8hhubj)}(hhh]h)}(h$Send an asynchronous response packeth]h$Send an asynchronous response packet}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj8hhubah}(h]h ]h"]h$]h&]uh1jhjD8hhhj\8hMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(j8j)j8j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj8ubh:}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj8ubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj8ubh)}(h **Members**h]j8)}(hj8h]hMembers}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj8ubah}(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]j)}(hj8h]hrcode}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(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}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1hhj8ubeh}(h]h ]h"]h$]h&]uh1hhj9hMhj8ubh)}(h0``length`` Length of outgoing payload, in bytes h](h)}(h ``length``h]j)}(hj79h]hlength}(hj99hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj59ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj19ubh)}(hhh]h)}(h$Length of outgoing payload, in bytesh]h$Length of outgoing payload, in bytes}(hjP9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjL9hMhjM9ubah}(h]h ]h"]h$]h&]uh1hhj19ubeh}(h]h ]h"]h$]h&]uh1hhjL9hMhj8ubh)}(h&``data`` Userspace pointer to payload h](h)}(h``data``h]j)}(hjp9h]hdata}(hjr9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn9ubah}(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}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1hhjj9ubeh}(h]h ]h"]h$]h&]uh1hhj9hMhj8ubh)}(h>``handle`` The handle from the :c:type:`fw_cdev_event_request`h](h)}(h ``handle``h]j)}(hj9h]hhandle}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(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]j)}(hj9h]hfw_cdev_event_request}(hj9hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj :h]h Description}(hj :hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj :ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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!:hhhNhNubj)}(h``FW_CDEV_IOC_ALLOCATE``h]hFW_CDEV_IOC_ALLOCATE}(hj):hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!:ubhZ ioctl, userspace can listen for incoming requests. An incoming request will generate an }(hj!:hhhNhNubj)}(h``FW_CDEV_EVENT_REQUEST``h]hFW_CDEV_EVENT_REQUEST}(hj;:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!: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.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_allocate (C struct)c.fw_cdev_allocatehNtauh1jhjhhhhjhNubj)}(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}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubah}(h]h ](jjeh"]h$]h&]jjuh1jhji:hhhjz:hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhje: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 ](j"structeh"]h$]h&]j'j"j(j:j)j:j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj: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:ubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj:ubh)}(h **Members**h]j8)}(hj:h]hMembers}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj: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]j)}(hj;h]hoffset}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;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}(hj5;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1;hMhj2;ubah}(h]h ]h"]h$]h&]uh1hhj;ubeh}(h]h ]h"]h$]h&]uh1hhj1;hMhj;ubh)}(h=``closure`` To be passed back to userspace in request events h](h)}(h ``closure``h]j)}(hjU;h]hclosure}(hjW;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS;ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjO;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&]uh1hhjO;ubeh}(h]h ]h"]h$]h&]uh1hhjj;hMhj;ubh)}(h'``length`` Length of the CSR, in bytes h](h)}(h ``length``h]j)}(hj;h]hlength}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;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)}(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&]uh1hhj;ubeh}(h]h ]h"]h$]h&]uh1hhj;hMhj;ubh)}(h;``handle`` Handle to the allocation, written by the kernel h](h)}(h ``handle``h]j)}(hj;h]hhandle}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;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]j)}(hj<h]h region_end}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;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&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjC<h]h Description}(hjE<hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjA<ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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 }(hjY<hhhNhNubh)}(h :c:type:`fw_cdev_event_request2`h]j)}(hjc<h]hfw_cdev_event_request2}(hje<hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhja<ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_request2uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjY<ubhU event will be emitted. (If the kernel or the client implements ABI version <= 3, an }(hjY<hhhNhNubh)}(h:c:type:`fw_cdev_event_request`h]j)}(hj<h]hfw_cdev_event_request}(hj<hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_requestuh1hhj<hMhjY<ubh will be generated instead.)}(hjY<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj<hMhjhhhubh)}(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<hhhNhNubj8)}(h **closure**h]hclosure}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj<ubh@ field is passed back to userspace in these request events. The }(hj<hhhNhNubj8)}(h **handle**h]hhandle}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj<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.hhMhjhhhubh)}(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<hhhNhNubj)}(h ``EBUSY``h]hEBUSY}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubh.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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=hhhNhNubj8)}(h **length**h]hlength}(hj =hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=ubh inside [}(hj=hhhNhNubj8)}(h **offset**h]hoffset}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=ubhQ..**region_end**) and, if found, writes the start address of the new CSR back in }(hj=hhhNhNubj8)}(h **offset**h]hoffset}(hj.=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=ubh. I.e. }(hj=hhhNhNubj8)}(h **offset**h]hoffset}(hj@=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=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=hhhNhNubj8)}(h**region_end**h]h region_end}(hjR=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=ubh = }(hj=hhhNhNubj8)}(h **offset**h]hoffset}(hjd=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=ubh + }(hj=hhhNhNubj8)}(h **length**h]hlength}(hjv=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=ubh.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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, }(hj=hhhNhNubj8)}(h**region_end**h]h region_end}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=ubh* is ignored and effectively assumed to be }(hj=hhhNhNubj8)}(h **offset**h]hoffset}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=ubh + }(hj=hhhNhNubj8)}(h **length**h]hlength}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=ubh.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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](j8)}(h**region_end**h]h region_end}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj=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.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_deallocate (C struct)c.fw_cdev_deallocatehNtauh1jhjhhhhjhNubj)}(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&]jjuh1jhj>hhhj>hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj>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}(hjL>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjI>hhubah}(h]h ]h"]h$]h&]uh1jhj=hhhj>hMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jd>j)jd>j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjp>hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjl>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>ubjz)}(h0struct fw_cdev_deallocate { __u32 handle; };h]h0struct fw_cdev_deallocate { __u32 handle; };}hj>sbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjh>ubh)}(h **Members**h]j8)}(hj>h]hMembers}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj>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]j)}(hj>h]hhandle}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>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&]uh1j-hjhhhhjhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_cdev_initiate_bus_reset (C struct)c.fw_cdev_initiate_bus_resethNtauh1jhjhhhhjhNubj)}(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}(hj2?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.?ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj?hhhj?hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj ?hhhj?hMubah}(h]j?ah ](jjeh"]h$]h&]jj)jhuh1jhj?hMhj?hhubj)}(hhh]h)}(hInitiate a bus reseth]hInitiate a bus reset}(hjT?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjQ?hhubah}(h]h ]h"]h$]h&]uh1jhj?hhhj?hMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jl?j)jl?j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjx?hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjt?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?ubjz)}(h6struct fw_cdev_initiate_bus_reset { __u32 type; };h]h6struct fw_cdev_initiate_bus_reset { __u32 type; };}hj?sbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjp?ubh)}(h **Members**h]j8)}(hj?h]hMembers}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj?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]j)}(hj?h]htype}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?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](j)}(h``FW_CDEV_SHORT_RESET``h]hFW_CDEV_SHORT_RESET}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubh or }(hj?hhhNhNubj)}(h``FW_CDEV_LONG_RESET``h]hFW_CDEV_LONG_RESET}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?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&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj @h]h Description}(hj"@hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj@ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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.}(hj6@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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 }(hjE@hhhNhNubh)}(h!:c:type:`fw_cdev_event_bus_reset`h]j)}(hjO@h]hfw_cdev_event_bus_reset}(hjQ@hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjM@ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_bus_resetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjE@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.}(hjE@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjl@hMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!fw_cdev_add_descriptor (C struct)c.fw_cdev_add_descriptorhNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_add_descriptorh]j)}(hstruct fw_cdev_add_descriptorh](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_add_descriptorh]j)}(hj@h]hfw_cdev_add_descriptor}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj@hhhj@hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj@hhhj@hMubah}(h]j@ah ](jjeh"]h$]h&]jj)jhuh1jhj@hMhj@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&]uh1jhj@hhhj@hMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(j@j)j@j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj@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@ubjz)}(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; };}hjAsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj@ubh)}(h **Members**h]j8)}(hj Ah]hMembers}(hj"AhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjAubah}(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]j)}(hj?Ah]h immediate}(hjAAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=Aubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj9Aubh)}(hhh]h)}(h3If non-zero, immediate key to insert before pointerh]h3If non-zero, immediate key to insert before pointer}(hjXAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjTAhMhjUAubah}(h]h ]h"]h$]h&]uh1hhj9Aubeh}(h]h ]h"]h$]h&]uh1hhjTAhMhj6Aubh)}(h/``key`` Upper 8 bits of root directory pointer h](h)}(h``key``h]j)}(hjxAh]hkey}(hjzAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvAubah}(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}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjAubah}(h]h ]h"]h$]h&]uh1hhjrAubeh}(h]h ]h"]h$]h&]uh1hhjAhMhj6Aubh)}(h;``data`` Userspace pointer to contents of descriptor block h](h)}(h``data``h]j)}(hjAh]hdata}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(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&]uh1hhjAhMhj6Aubh)}(h8``length`` Length of descriptor block data, in quadlets h](h)}(h ``length``h]j)}(hjAh]hlength}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(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}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjBubah}(h]h ]h"]h$]h&]uh1hhjAubeh}(h]h ]h"]h$]h&]uh1hhjAhMhj6Aubh)}(h:``handle`` Handle to the descriptor, written by the kernelh](h)}(h ``handle``h]j)}(hj#Bh]hhandle}(hj%BhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!Bubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjBubh)}(hhh]h)}(h/Handle to the descriptor, written by the kernelh]h/Handle to the descriptor, written by the kernel}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:Dubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj6Dubh)}(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}(hjUDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQDhMhjRDubah}(h]h ]h"]h$]h&]uh1hhj6Dubeh}(h]h ]h"]h$]h&]uh1hhjQDhMhj3Dubah}(h]h ]h"]h$]h&]uh1hhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj~Dh]h Description}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj|Dubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_cdev_create_iso_context (C struct)c.fw_cdev_create_iso_contexthNtauh1jhjhhhhjhNubj)}(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&]jjuh1jhjDhhhjDhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjDhhhjDhMubah}(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 ](j"structeh"]h$]h&]j'j"j(jEj)jEj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj"EhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjEubh:}(hjEhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM(hjEubjz)}(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; };}hj;Esbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM*hjEubh)}(h **Members**h]j8)}(hjLEh]hMembers}(hjNEhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjJEubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM3hjEubh)}(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]j)}(hjkEh]htype}(hjmEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiEubah}(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](j)}(h ``FW_CDEV_ISO_CONTEXT_TRANSMIT``h]hFW_CDEV_ISO_CONTEXT_TRANSMIT}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubh or }(hjEhhhNhNubj)}(h``FW_CDEV_ISO_CONTEXT_RECEIVE``h]hFW_CDEV_ISO_CONTEXT_RECEIVE}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubh or }(hjEhhhNhNubj)}(h,``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``h]h(FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM&hjEubah}(h]h ]h"]h$]h&]uh1hhjeEubeh}(h]h ]h"]h$]h&]uh1hhjEhM'hjbEubh)}(hA``header_size`` Header size to strip in single-channel reception h](h)}(h``header_size``h]j)}(hjEh]h header_size}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(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]j)}(hj Fh]hchannel}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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)}(h>Channel to bind to in single-channel reception or transmissionh]h>Channel to bind to in single-channel reception or transmission}(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)}(h``speed`` Transmission speed h](h)}(h ``speed``h]j)}(hjEFh]hspeed}(hjGFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCFubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM*hj?Fubh)}(hhh]h)}(hTransmission speedh]hTransmission speed}(hj^FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZFhM*hj[Fubah}(h]h ]h"]h$]h&]uh1hhj?Fubeh}(h]h ]h"]h$]h&]uh1hhjZFhM*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]j)}(hj~Fh]hclosure}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|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 }(hjFhhhNhNubh)}(h%:c:type:`fw_cdev_event_iso_interrupt`h]j)}(hjFh]hfw_cdev_event_iso_interrupt}(hjFhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM+hjFubh or }(hjFhhhNhNubh)}(h2:c:type:`fw_cdev_event_iso_interrupt_multichannel`h]j)}(hjFh]h(fw_cdev_event_iso_interrupt_multichannel}(hjFhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{(fw_cdev_event_iso_interrupt_multichanneluh1hhjFhM+hjFubeh}(h]h ]h"]h$]h&]uh1hhjFhM+hjFubah}(h]h ]h"]h$]h&]uh1hhjxFubeh}(h]h ]h"]h$]h&]uh1hhjFhM,hjbEubh)}(h4``handle`` Handle to context, written back by kernelh](h)}(h ``handle``h]j)}(hjFh]hhandle}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(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}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM-hjGubah}(h]h ]h"]h$]h&]uh1hhjFubeh}(h]h ]h"]h$]h&]uh1hhjGhM,hjbEubeh}(h]h ]h"]h$]h&]uh1hhjEubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj=Gh]h Description}(hj?GhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj;Gubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM0hjhhhubh)}(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 }(hjSGhhhNhNubj8)}(h **channel**h]hchannel}(hj[GhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjSGubh.}(hjSGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM-hjhhhubh)}(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, }(hjtGhhhNhNubj8)}(h**header_size**h]h header_size}(hj|GhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjtGubh and }(hjtGhhhNhNubj8)}(h **channel**h]hchannel}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjtGubh. are ignored and the channels are selected by }(hjtGhhhNhNubj)}(h ``FW_CDEV_IOC_SET_ISO_CHANNELS``h]hFW_CDEV_IOC_SET_ISO_CHANNELS}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtGubh.}(hjtGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM3hjhhhubh)}(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 }(hjGhhhNhNubj)}(h``FW_CDEV_ISO_CONTEXT_RECEIVE``h]hFW_CDEV_ISO_CONTEXT_RECEIVE}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubh contexts, }(hjGhhhNhNubj8)}(h**header_size**h]h header_size}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjGubhW 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.hhM6hjhhhubh)}(h.**speed** is ignored in receive context types.h](j8)}(h **speed**h]hspeed}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjGubh% 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.hhM9hjhhhubh)}(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.}(hj HhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM;hjhhhubh)}(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.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM>hjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#fw_cdev_set_iso_channels (C struct)c.fw_cdev_set_iso_channelshNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_set_iso_channelsh]j)}(hstruct fw_cdev_set_iso_channelsh](j)}(hjh]hstruct}(hj@HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhj"Iubeh}(h]h ]h"]h$]h&]uh1hhj=IhMQhjHubeh}(h]h ]h"]h$]h&]uh1hhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjkIh]h Description}(hjmIhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjiIubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMUhjhhhubh)}(hL**channels** is the bitwise or of 1ULL << n for each channel n to listen to.h](j8)}(h **channels**h]hchannels}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjIubh@ is the bitwise or of 1ULL << n for each channel n to listen to.}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMRhjhhhubh)}(hThe ioctl fails with errno ``EBUSY`` if there is already another receive context on a channel in **channels**. In that case, the bitmask of all unoccupied channels is returned in **channels**.h](hThe ioctl fails with errno }(hjIhhhNhNubj)}(h ``EBUSY``h]hEBUSY}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubh= if there is already another receive context on a channel in }(hjIhhhNhNubj8)}(h **channels**h]hchannels}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjIubhG. In that case, the bitmask of all unoccupied channels is returned in }(hjIhhhNhNubj8)}(h **channels**h]hchannels}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjIubh.}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMThjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_iso_packet (C struct)c.fw_cdev_iso_packethNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_iso_packeth]j)}(hstruct fw_cdev_iso_packeth](j)}(hjh]hstruct}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM[ubj)}(h h]h }(hj JhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIhhhj JhM[ubj)}(hfw_cdev_iso_packeth]j)}(hjIh]hfw_cdev_iso_packet}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubah}(h]h ](jjeh"]h$]h&]jjuh1jhjIhhhj JhM[ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjIhhhj JhM[ubah}(h]jIah ](jjeh"]h$]h&]jj)jhuh1jhj JhM[hjIhhubj)}(hhh]h)}(hIsochronous packeth]hIsochronous packet}(hj>JhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMghj;Jhhubah}(h]h ]h"]h$]h&]uh1jhjIhhhj JhM[ubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jVJj)jVJj*j+j,uh1jhhhjhhjhNubj.)}(hX**Definition**:: struct fw_cdev_iso_packet { __u32 control; __u32 header[]; }; **Members** ``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) ``header`` Header and payload in case of a transmit context.h](h)}(h**Definition**::h](j8)}(h**Definition**h]h Definition}(hjbJhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj^Jubh:}(hj^JhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMkhjZJubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMmhjZJubh)}(h **Members**h]j8)}(hjJh]hMembers}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjJubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMrhjZJubh)}(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]j)}(hjJh]hcontrol}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(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]j)}(hjJh]hheader}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(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&]uh1hhjZJubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj(Kh]h Description}(hj*KhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj&Kubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMphjhhhubh)}(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]j)}(hjDKh]hstruct fw_cdev_iso_packet}(hjFKhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjBKubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_iso_packetuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMmhj>KubhX is used to describe isochronous packet queues. Use the FW_CDEV_ISO_* macros to fill in }(hj>KhhhNhNubj8)}(h **control**h]hcontrol}(hjfKhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj>Kubh. The }(hj>KhhhNhNubj8)}(h **header**h]hheader}(hjxKhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj>Kubh, array is empty in case of receive contexts.}(hj>KhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjaKhMmhjhhhubh)}(h.Context type ``FW_CDEV_ISO_CONTEXT_TRANSMIT``:h](h Context type }(hjKhhhNhNubj)}(h ``FW_CDEV_ISO_CONTEXT_TRANSMIT``h]hFW_CDEV_ISO_CONTEXT_TRANSMIT}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubh:}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMqhjhhhubh)}(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](j8)}(h**control.HEADER_LENGTH**h]hcontrol.HEADER_LENGTH}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjKubh@ must be a multiple of 4. It specifies the numbers of bytes in }(hjKhhhNhNubj8)}(h **header**h]hheader}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjKubh 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.hhMshjhhhubh)}(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 }(hjKhhhNhNubj8)}(h**control.SY**h]h control.SY}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjKubho 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.hhMxhjhhhubh)}(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 }(hjLhhhNhNubj8)}(h**control.SKIP**h]h control.SKIP}(hj LhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjLubhb flag specifies that no packet is to be sent in a frame. When using this, all other fields except }(hjLhhhNhNubj8)}(h**control.INTERRUPT**h]hcontrol.INTERRUPT}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjLubh must be zero.}(hjLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM{hjhhhubh)}(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 }(hj4LhhhNhNubj8)}(h**control.INTERRUPT**h]hcontrol.INTERRUPT}(hj`.h](hIf the }(hjLhhhNhNubj8)}(h**control.SYNC**h]h control.SYNC}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjLubhe 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]j)}(hjLh]hfw_cdev_start_iso.sync}(hjLhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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&]uh1hhjMhMhjhhhubh)}(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](j8)}(h**control.PAYLOAD_LENGTH**h]hcontrol.PAYLOAD_LENGTH}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjMubh 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 }(hjMhhhNhNubh)}(h%:c:type:`fw_cdev_event_iso_interrupt`h]j)}(hj3Mh]hfw_cdev_event_iso_interrupt}(hj5MhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj1Mubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_iso_interruptuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjMubhX 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.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjPMhMhjhhhubh)}(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[MhhhNhNubj8)}(h**control.INTERRUPT**h]hcontrol.INTERRUPT}(hjcMhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj[Mubh! flag set has been completed, an }(hj[MhhhNhNubh)}(h%:c:type:`fw_cdev_event_iso_interrupt`h]j)}(hjwMh]hfw_cdev_event_iso_interrupt}(hjyMhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjuMubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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&]uh1hhjMhMhjhhhubh)}(h:Context type ``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``:h](h Context type }(hjMhhhNhNubj)}(h,``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``h]h(FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubh:}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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]j)}(hjMh]hfw_cdev_iso_packet}(hjMhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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&]uh1hhjMhMhjhhhubh)}(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](j8)}(h**control.PAYLOAD_LENGTH**h]hcontrol.PAYLOAD_LENGTH}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjMubh 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.hhMhjhhhubh)}(hn**control.HEADER_LENGTH**, TAG and SY are ignored. SYNC is treated as described for single-channel reception.h](j8)}(h**control.HEADER_LENGTH**h]hcontrol.HEADER_LENGTH}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjNubhU, TAG and SY are ignored. SYNC is treated as described for single-channel reception.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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,NhhhNhNubj8)}(h**control.INTERRUPT**h]hcontrol.INTERRUPT}(hj4NhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj,Nubh' flag set has been filled entirely, an }(hj,NhhhNhNubh)}(h(:c:type:`fw_cdev_event_iso_interrupt_mc`h]j)}(hjHNh]hfw_cdev_event_iso_interrupt_mc}(hjJNhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjFNubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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&]uh1hhjeNhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_queue_iso (C struct)c.fw_cdev_queue_isohNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_queue_isoh]j)}(hstruct fw_cdev_queue_isoh](j)}(hjh]hstruct}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNhhhjNhMubj)}(hfw_cdev_queue_isoh]j)}(hjNh]hfw_cdev_queue_iso}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubah}(h]h ](jjeh"]h$]h&]jjuh1jhjNhhhjNhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjNhhhjNhMubah}(h]j|Nah ](jjeh"]h$]h&]jj)jhuh1jhjNhMhj~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~NhhhjNhMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jNj)jNj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjNubh:}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjNubjz)}(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; };}hjOsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjNubh)}(h **Members**h]j8)}(hjOh]hMembers}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjOubah}(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]j)}(hj8Oh]hpackets}(hj:OhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6Oubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj2Oubh)}(hhh]h)}(h=Userspace pointer to an array of :c:type:`fw_cdev_iso_packet`h](h!Userspace pointer to an array of }(hjQOhhhNhNubh)}(h:c:type:`fw_cdev_iso_packet`h]j)}(hj[Oh]hfw_cdev_iso_packet}(hj]OhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjYOubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_iso_packetuh1hhjMOhMhjQOubeh}(h]h ]h"]h$]h&]uh1hhjMOhMhjNOubah}(h]h ]h"]h$]h&]uh1hhj2Oubeh}(h]h ]h"]h$]h&]uh1hhjMOhMhj/Oubh)}(h/``data`` Pointer into mmap()'ed payload buffer h](h)}(h``data``h]j)}(hjOh]hdata}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(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%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&]uh1hhjOubeh}(h]h ]h"]h$]h&]uh1hhjOhMhj/Oubh)}(h1``size`` Size of the **packets** array, in bytes h](h)}(h``size``h]j)}(hjOh]hsize}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(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 }(hjOhhhNhNubj8)}(h **packets**h]hpackets}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjOubh array, in bytes}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjOhMhjOubah}(h]h ]h"]h$]h&]uh1hhjOubeh}(h]h ]h"]h$]h&]uh1hhjOhMhj/Oubh)}(h%``handle`` Isochronous context handleh](h)}(h ``handle``h]j)}(hjPh]hhandle}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjPubh)}(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&]uh1hhjPubeh}(h]h ]h"]h$]h&]uh1hhj)PhMhj/Oubeh}(h]h ]h"]h$]h&]uh1hhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjWPh]h Description}(hjYPhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjUPubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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]j)}(hjwPh]hfw_cdev_iso_packet}(hjyPhhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhjuPubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_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&]uh1hhjPhMhjhhhubh)}(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 }(hjPhhhNhNubj8)}(h **packets**h]hpackets}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjPubh, }(hjPhhhNhNubj8)}(h**data**h]hdata}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjPubh and }(hjPhhhNhNubj8)}(h**size**h]hsize}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjPubh0 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.hhMhjhhhubh)}(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, }(hjPhhhNhNubj8)}(h**data**h]hdata}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjPubh6 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.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_start_iso (C struct)c.fw_cdev_start_isohNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_start_isoh]j)}(hstruct fw_cdev_start_isoh](j)}(hjh]hstruct}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQhhhf/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&]uh1jhjQhhhj+QhMubj)}(hfw_cdev_start_isoh]j)}(hjQh]hfw_cdev_start_iso}(hj>QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:Qubah}(h]h ](jjeh"]h$]h&]jjuh1jhjQhhhj+QhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjQhhhj+QhMubah}(h]jQah ](jjeh"]h$]h&]jj)jhuh1jhj+QhMhjQhhubj)}(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&]uh1jhjQhhhj+QhMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jxQj)jxQj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjQubh:}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj|Qubjz)}(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; };}hjQsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj|Qubh)}(h **Members**h]j8)}(hjQh]hMembers}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjQubah}(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]j)}(hjQh]hcycle}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(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 }(hjQhhhNhNubj8)}(h **cycle**h]hcycle}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjQubhA 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]j)}(hjRh]hsync}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(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[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 }(hj2RhhhNhNubj)}(h``FW_CDEV_ISO_SYNC``h]hFW_CDEV_ISO_SYNC}(hj:RhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2Rubh bit set}(hj2RhhhNhNubeh}(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&]uh1hhjRubeh}(h]h ]h"]h$]h&]uh1hhj.RhMhjQubh)}(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]j)}(hjeRh]htags}(hjgRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcRubah}(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~RhhhNhNubj8)}(h**tags**h]htags}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj~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]j)}(hjRh]hhandle}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(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&]uh1j-hjhhhhjhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_stop_iso (C struct)c.fw_cdev_stop_isohNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_stop_isoh]j)}(hstruct fw_cdev_stop_isoh](j)}(hjh]hstruct}(hj ShhhNhNubah}(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 }(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhhjShMubj)}(hfw_cdev_stop_isoh]j)}(hjSh]hfw_cdev_stop_iso}(hj+ShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'Subah}(h]h ](jjeh"]h$]h&]jjuh1jhjShhhjShMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjShhhjShMubah}(h]jRah ](jjeh"]h$]h&]jj)jhuh1jhjShMhjShhubj)}(hhh]h)}(h-Stop an isochronous transmission or receptionh]h-Stop an isochronous transmission or reception}(hjMShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjJShhubah}(h]h ]h"]h$]h&]uh1jhjShhhjShMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jeSj)jeSj*j+j,uh1jhhhjhhjhNubj.)}(h**Definition**:: struct fw_cdev_stop_iso { __u32 handle; }; **Members** ``handle`` Handle of isochronous context to stoph](h)}(h**Definition**::h](j8)}(h**Definition**h]h Definition}(hjqShhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjmSubh:}(hjmShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjiSubjz)}(h.struct fw_cdev_stop_iso { __u32 handle; };h]h.struct fw_cdev_stop_iso { __u32 handle; };}hjSsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjiSubh)}(h **Members**h]j8)}(hjSh]hMembers}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjSubah}(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]j)}(hjSh]hhandle}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(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&]uh1j-hjhhhhjhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_cdev_flush_iso (C struct)c.fw_cdev_flush_isohNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_flush_isoh]j)}(hstruct fw_cdev_flush_isoh](j)}(hjh]hstruct}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjThhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMubj)}(h h]h }(hj"ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjThhhj!ThMubj)}(hfw_cdev_flush_isoh]j)}(hjTh]hfw_cdev_flush_iso}(hj4ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Tubah}(h]h ](jjeh"]h$]h&]jjuh1jhjThhhj!ThMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj Thhhj!ThMubah}(h]jTah ](jjeh"]h$]h&]jj)jhuh1jhj!ThMhj Thhubj)}(hhh]h)}(hflush completed iso packetsh]hflush completed iso packets}(hjVThhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjSThhubah}(h]h ]h"]h$]h&]uh1jhj Thhhj!ThMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jnTj)jnTj*j+j,uh1jhhhjhhjhNubj.)}(h**Definition**:: struct fw_cdev_flush_iso { __u32 handle; }; **Members** ``handle`` handle of isochronous context to flushh](h)}(h**Definition**::h](j8)}(h**Definition**h]h Definition}(hjzThhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjvTubh:}(hjvThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjrTubjz)}(h/struct fw_cdev_flush_iso { __u32 handle; };h]h/struct fw_cdev_flush_iso { __u32 handle; };}hjTsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjrTubh)}(h **Members**h]j8)}(hjTh]hMembers}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjTubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjrTubh)}(hhh]h)}(h1``handle`` handle of isochronous context to flushh](h)}(h ``handle``h]j)}(hjTh]hhandle}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(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&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjUh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjUubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(hoFor ``FW_CDEV_ISO_CONTEXT_TRANSMIT`` or ``FW_CDEV_ISO_CONTEXT_RECEIVE`` contexts, report any completed packets.h](hFor }(hjUhhhNhNubj)}(h ``FW_CDEV_ISO_CONTEXT_TRANSMIT``h]hFW_CDEV_ISO_CONTEXT_TRANSMIT}(hj$UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh or }(hjUhhhNhNubj)}(h``FW_CDEV_ISO_CONTEXT_RECEIVE``h]hFW_CDEV_ISO_CONTEXT_RECEIVE}(hj6UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh( contexts, report any completed packets.}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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 }(hjOUhhhNhNubj)}(h,``FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL``h]h(FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL}(hjWUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOUubh contexts, report the current offset in the receive buffer, if it has changed; this is typically in the middle of some buffer chunk.}(hjOUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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 }(hjpUhhhNhNubj)}(h``FW_CDEV_EVENT_ISO_INTERRUPT``h]hFW_CDEV_EVENT_ISO_INTERRUPT}(hjxUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpUubh or }(hjpUhhhNhNubj)}(h,``FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL``h]h(FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpUubh 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.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"fw_cdev_get_cycle_timer (C struct)c.fw_cdev_get_cycle_timerhNtauh1jhjhhhhjhNubj)}(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&]jjuh1jhjUhhhjUhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjUhhhjUhMubah}(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 ](j"structeh"]h$]h&]j'j"j(jVj)jVj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj"VhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjVubh:}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjVubjz)}(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; };}hj;Vsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjVubh)}(h **Members**h]j8)}(hjLVh]hMembers}(hjNVhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjJVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM hjVubh)}(hhh](h)}(h<``local_time`` system time, in microseconds since the Epoch h](h)}(h``local_time``h]j)}(hjkVh]h local_time}(hjmVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiVubah}(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}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMhjVubah}(h]h ]h"]h$]h&]uh1hhjeVubeh}(h]h ]h"]h$]h&]uh1hhjVhMhjbVubh)}(h,``cycle_timer`` Cycle Time register contentsh](h)}(h``cycle_timer``h]j)}(hjVh]h cycle_timer}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjVubh)}(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&]uh1hhjVubeh}(h]h ]h"]h$]h&]uh1hhjVhMhjbVubeh}(h]h ]h"]h$]h&]uh1hhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjVh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(htSame as ``FW_CDEV_IOC_GET_CYCLE_TIMER2``, but fixed to use ``CLOCK_REALTIME`` and only with microseconds resolution.h](hSame as }(hjVhhhNhNubj)}(h ``FW_CDEV_IOC_GET_CYCLE_TIMER2``h]hFW_CDEV_IOC_GET_CYCLE_TIMER2}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh, but fixed to use }(hjVhhhNhNubj)}(h``CLOCK_REALTIME``h]hCLOCK_REALTIME}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh' 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.hhMhjhhhubh)}(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) }(hj0WhhhNhNubj8)}(h**cycle_timer**h]h cycle_timer}(hj8WhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj0Wubh values on certain controllers.}(hj0WhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#fw_cdev_get_cycle_timer2 (C struct)c.fw_cdev_get_cycle_timer2hNtauh1jhjhhhhjhNubj)}(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}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ](jjeh"]h$]h&]jjuh1jhjfWhhhjwWhM ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjbWhhhjwWhM 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 ](j"structeh"]h$]h&]j'j"j(jWj)jWj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjWubh:}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjWubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjWubh)}(h **Members**h]j8)}(hjWh]hMembers}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjWubah}(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]j)}(hjXh]htv_sec}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjXubh)}(hhh]h)}(hsystem time, secondsh]hsystem time, seconds}(hj2XhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.XhMhj/Xubah}(h]h ]h"]h$]h&]uh1hhjXubeh}(h]h ]h"]h$]h&]uh1hhj.XhMhjXubh)}(h9``tv_nsec`` system time, sub-seconds part in nanoseconds h](h)}(h ``tv_nsec``h]j)}(hjRXh]htv_nsec}(hjTXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPXubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjLXubh)}(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&]uh1hhjLXubeh}(h]h ]h"]h$]h&]uh1hhjgXhMhjXubh)}(hD``clk_id`` input parameter, clock from which to get the system time h](h)}(h ``clk_id``h]j)}(hjXh]hclk_id}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjXubh)}(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&]uh1hhjXubeh}(h]h ]h"]h$]h&]uh1hhjXhMhjXubh)}(h,``cycle_timer`` Cycle Time register contentsh](h)}(h``cycle_timer``h]j)}(hjXh]h cycle_timer}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(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&]uh1hhjXhMhjXubeh}(h]h ]h"]h$]h&]uh1hhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjYh]h Description}(hj YhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjYubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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 }(hjYhhhNhNubj)}(h ``FW_CDEV_IOC_GET_CYCLE_TIMER2``h]hFW_CDEV_IOC_GET_CYCLE_TIMER2}(hj%YhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubh ioctl reads the isochronous cycle timer and also the system clock. This allows to correlate reception time of isochronous packets with system time.}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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](j8)}(h **clk_id**h]hclk_id}(hjBYhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj>YubhN lets you choose a clock like with POSIX’ clock_gettime function. Supported }(hj>YhhhNhNubj8)}(h **clk_id**h]hclk_id}(hjTYhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj>Yubh values are POSIX’ }(hj>YhhhNhNubj)}(h``CLOCK_REALTIME``h]hCLOCK_REALTIME}(hjfYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>Yubh and }(hj>YhhhNhNubj)}(h``CLOCK_MONOTONIC``h]hCLOCK_MONOTONIC}(hjxYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>Yubh and Linux’ }(hj>YhhhNhNubj)}(h``CLOCK_MONOTONIC_RAW``h]hCLOCK_MONOTONIC_RAW}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>Yubh.}(hj>YhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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](j8)}(h**cycle_timer**h]h cycle_timer}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjYubh 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.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(fw_cdev_allocate_iso_resource (C struct)c.fw_cdev_allocate_iso_resourcehNtauh1jhjhhhhjhNubj)}(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&]jjuh1jhjYhhhjYhM$ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjYhhhjYhM$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}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM*hjZhhubah}(h]h ]h"]h$]h&]uh1jhjYhhhjYhM$ubeh}(h]h ](j"structeh"]h$]h&]j'j"j(j3Zj)j3Zj*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj?ZhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj;Zubh:}(hj;ZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM.hj7Zubjz)}(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; };}hjXZsbah}(h]h ]h"]h$]h&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM0hj7Zubh)}(h **Members**h]j8)}(hjiZh]hMembers}(hjkZhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjgZubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM7hj7Zubh)}(hhh](h)}(hJ``closure`` Passed back to userspace in corresponding iso resource events h](h)}(h ``closure``h]j)}(hjZh]hclosure}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(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=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&]uh1hhjZhM,hjZubah}(h]h ]h"]h$]h&]uh1hhjZubeh}(h]h ]h"]h$]h&]uh1hhjZhM,hjZubh)}(hF``channels`` Isochronous channels of which one is to be (de)allocated h](h)}(h ``channels``h]j)}(hjZh]hchannels}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(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-hjZubh)}(h>``bandwidth`` Isochronous bandwidth units to be (de)allocated h](h)}(h ``bandwidth``h]j)}(hjZh]h bandwidth}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(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}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hM.hj[ubah}(h]h ]h"]h$]h&]uh1hhjZubeh}(h]h ]h"]h$]h&]uh1hhj[hM.hjZubh)}(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]j)}(hj3[h]hhandle}(hj5[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1[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 }(hjL[hhhNhNubj)}(h%``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE``h]h!FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE}(hjT[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL[ubh ioctls)}(hjL[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjH[hM/hjI[ubah}(h]h ]h"]h$]h&]uh1hhj-[ubeh}(h]h ]h"]h$]h&]uh1hhjH[hM/hjZubeh}(h]h ]h"]h$]h&]uh1hhj7Zubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj[h]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj[ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM3hjhhhubh)}(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[hhhNhNubj)}(h%``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE``h]h!FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[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[hhhNhNubj8)}(h **channels**h]hchannels}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj[ubh is allocated. An }(hj[hhhNhNubj)}(h(``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED``h]h$FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[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[hhhNhNubj)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[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.hhM0hjhhhubh)}(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[hhhNhNubj)}(h'``FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE``h]h#FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubhe ioctl can be used to initiate deallocation of resources which were allocated as described above. An }(hj[hhhNhNubj)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[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:hjhhhubh)}(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'\hhhNhNubj)}(h*``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE``h]h&FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE}(hj/\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'\ubhL ioctl is a variant of allocation without automatic re- or deallocation. An }(hj'\hhhNhNubj)}(h(``FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED``h]h$FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED}(hjA\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'\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>hjhhhubh)}(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 }(hjZ\hhhNhNubj)}(h,``FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE``h]h(FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE}(hjb\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ\ubh ioctl works like }(hjZ\hhhNhNubj)}(h*``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE``h]h&FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE}(hjt\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ\ubh: except that resources are freed instead of allocated. An }(hjZ\hhhNhNubj)}(h*``FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED``h]h&FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ\ubh event concludes this operation.}(hjZ\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMChjhhhubh)}(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\hhhNhNubj)}(h%``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE``h]h!FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubh7 allocates iso resources for the lifetime of the fd or }(hj\hhhNhNubj8)}(h **handle**h]hhandle}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj\ubh. In contrast, }(hj\hhhNhNubj)}(h*``FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE``h]h&FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\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.hhMHhjhhhubh)}(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](j8)}(h **channels**h]hchannels}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj\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.hhMMhjhhhubh)}(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](j8)}(h **bandwidth**h]h bandwidth}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj]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.hhMQhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_cdev_send_stream_packet (C struct)c.fw_cdev_send_stream_packethNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_send_stream_packeth]j)}(h!struct fw_cdev_send_stream_packeth](j)}(hjh]hstruct}(hj7]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3]hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMWubj)}(h h]h }(hjE]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3]hhhjD]hMWubj)}(hfw_cdev_send_stream_packeth]j)}(hj1]h]hfw_cdev_send_stream_packet}(hjW]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS]ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj3]hhhjD]hMWubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj/]hhhjD]hMWubah}(h]j*]ah ](jjeh"]h$]h&]jj)jhuh1jhjD]hMWhj,]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,]hhhjD]hMWubeh}(h]h ](j"structeh"]h$]h&]j'j"j(j]j)j]j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj]ubh:}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMahj]ubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMchj]ubh)}(h **Members**h]j8)}(hj]h]hMembers}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj]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)}(h0``length`` Length of outgoing payload, in bytes h](h)}(h ``length``h]j)}(hj]h]hlength}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]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]j)}(hj^h]htag}(hj!^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^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}(hj8^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4^hM`hj5^ubah}(h]h ]h"]h$]h&]uh1hhj^ubeh}(h]h ]h"]h$]h&]uh1hhj4^hM`hj]ubh)}(h/``channel`` Isochronous channel to transmit to h](h)}(h ``channel``h]j)}(hjX^h]hchannel}(hjZ^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjV^ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMahjR^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&]uh1hhjR^ubeh}(h]h ]h"]h$]h&]uh1hhjm^hMahj]ubh)}(h``sy`` Synchronization code h](h)}(h``sy``h]j)}(hj^h]hsy}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMbhj^ubh)}(hhh]h)}(hSynchronization codeh]hSynchronization code}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMbhj^ubah}(h]h ]h"]h$]h&]uh1hhj^ubeh}(h]h ]h"]h$]h&]uh1hhj^hMbhj]ubh)}(h;``closure`` Passed back to userspace in the response event h](h)}(h ``closure``h]j)}(hj^h]hclosure}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^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]j)}(hj_h]hdata}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_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]j)}(hj<_h]h generation}(hj>_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:_ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMehj6_ubh)}(hhh]h)}(h(The bus generation where packet is validh]h(The bus generation where packet is valid}(hjU_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ_hMehjR_ubah}(h]h ]h"]h$]h&]uh1hhj6_ubeh}(h]h ]h"]h$]h&]uh1hhjQ_hMehj]ubh)}(h``speed`` Speed to transmit ath](h)}(h ``speed``h]j)}(hju_h]hspeed}(hjw_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs_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}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhj_ubah}(h]h ]h"]h$]h&]uh1hhjo_ubeh}(h]h ]h"]h$]h&]uh1hhj_hMehj]ubeh}(h]h ]h"]h$]h&]uh1hhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hj_h]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj_ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMihjhhhubh)}(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_hhhNhNubj)}(h"``FW_CDEV_IOC_SEND_STREAM_PACKET``h]hFW_CDEV_IOC_SEND_STREAM_PACKET}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_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]j)}(hj_h]hfw_cdev_event_response}(hj_hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_responseuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMfhj_ubh event or }(hj_hhhNhNubh)}(h!:c:type:`fw_cdev_event_response2`h]j)}(hj`h]hfw_cdev_event_response2}(hj`hhhNhNubah}(h]h ](jaj"c-typeeh"]h$]h&]uh1jhj `ubah}(h]h ]h"]h$]h&]refdocjm refdomainj"reftypetype refexplicitrefwarnjsjwj{fw_cdev_event_response2uh1hhj`hMfhj_ubh> event which indicates success or failure of the transmission.}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj`hMfhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"fw_cdev_send_phy_packet (C struct)c.fw_cdev_send_phy_packethNtauh1jhjhhhhjhNubj)}(hhh](j)}(hfw_cdev_send_phy_packeth]j)}(hstruct fw_cdev_send_phy_packeth](j)}(hjh]hstruct}(hjN`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJ`hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMmubj)}(h h]h }(hj\`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJ`hhhj[`hMmubj)}(hfw_cdev_send_phy_packeth]j)}(hjH`h]hfw_cdev_send_phy_packet}(hjn`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjj`ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjJ`hhhj[`hMmubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjF`hhhj[`hMmubah}(h]jA`ah ](jjeh"]h$]h&]jj)jhuh1jhj[`hMmhjC`hhubj)}(hhh]h)}(hsend a PHY packeth]hsend a PHY packet}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMwhj`hhubah}(h]h ]h"]h$]h&]uh1jhjC`hhhj[`hMmubeh}(h]h ](j"structeh"]h$]h&]j'j"j(j`j)j`j*j+j,uh1jhhhjhhjhNubj.)}(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](j8)}(h**Definition**h]h Definition}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj`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`ubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM}hj`ubh)}(h **Members**h]j8)}(hj`h]hMembers}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj`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]j)}(hj`h]hclosure}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`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}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahMyhjaubah}(h]h ]h"]h$]h&]uh1hhj`ubeh}(h]h ]h"]h$]h&]uh1hhjahMyhj`ubh)}(h4``data`` First and second quadlet of the PHY packet h](h)}(h``data``h]j)}(hj6ah]hdata}(hj8ahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4aubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMzhj0aubh)}(hhh]h)}(h*First and second quadlet of the PHY packeth]h*First and second quadlet of the PHY packet}(hjOahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKahMzhjLaubah}(h]h ]h"]h$]h&]uh1hhj0aubeh}(h]h ]h"]h$]h&]uh1hhjKahMzhj`ubh)}(h7``generation`` The bus generation where packet is validh](h)}(h``generation``h]j)}(hjoah]h generation}(hjqahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmaubah}(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}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM{hjaubah}(h]h ]h"]h$]h&]uh1hhjiaubeh}(h]h ]h"]h$]h&]uh1hhjahMzhj`ubeh}(h]h ]h"]h$]h&]uh1hhj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjah]h Description}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjaubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhM~hjhhhubh)}(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 }(hjahhhNhNubj)}(h``FW_CDEV_IOC_SEND_PHY_PACKET``h]hFW_CDEV_IOC_SEND_PHY_PACKET}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubhd ioctl sends a PHY packet to all nodes on the same card as this device. After transmission, either }(hjahhhNhNubj)}(h!``FW_CDEV_EVENT_PHY_PACKET_SENT``h]hFW_CDEV_EVENT_PHY_PACKET_SENT}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubh event or }(hjahhhNhNubj)}(h!``FW_CDEV_EVENT_PHY_PACKET_SENT``h]hFW_CDEV_EVENT_PHY_PACKET_SENT}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubh 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{hjhhhubh)}(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 }(hj bhhhNhNubj8)}(h**data**h]hdata}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj bubh6[] shall be specified in host byte order. Usually, }(hj bhhhNhNubj8)}(h**data**h]hdata}(hj'bhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj bubh)[1] needs to be the bitwise inverse of }(hj bhhhNhNubj8)}(h**data**h]hdata}(hj9bhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj bubh7[0]. VersaPHY packets are an exception to this rule.}(hj bhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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.}(hjRbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&fw_cdev_receive_phy_packets (C struct)c.fw_cdev_receive_phy_packetshNtauh1jhjhhhhjhNubj)}(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 }(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvbhhhjbhMubj)}(hfw_cdev_receive_phy_packetsh]j)}(hjtbh]hfw_cdev_receive_phy_packets}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubah}(h]h ](jjeh"]h$]h&]jjuh1jhjvbhhhjbhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjrbhhhjbhMubah}(h]jmbah ](jjeh"]h$]h&]jj)jhuh1jhjbhMhjobhhubj)}(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&]uh1jhjobhhhjbhMubeh}(h]h ](j"structeh"]h$]h&]j'j"j(jbj)jbj*j+j,uh1jhhhjhhjhNubj.)}(h**Definition**:: struct fw_cdev_receive_phy_packets { __u64 closure; }; **Members** ``closure`` Passed back to userspace in phy packet eventsh](h)}(h**Definition**::h](j8)}(h**Definition**h]h Definition}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjbubh:}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjbubjz)}(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&]jjuh1jyhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjbubh)}(h **Members**h]j8)}(hj ch]hMembers}(hj chhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjcubah}(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]j)}(hj)ch]hclosure}(hj+chhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'cubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj#cubh)}(hhh]h)}(h-Passed back to userspace in phy packet eventsh]h-Passed back to userspace in phy packet events}(hjBchhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhj?cubah}(h]h ]h"]h$]h&]uh1hhj#cubeh}(h]h ]h"]h$]h&]uh1hhj>chMhj cubah}(h]h ]h"]h$]h&]uh1hhjbubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjhhhhjhNubh)}(h**Description**h]j8)}(hjlch]h Description}(hjnchhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjjcubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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 }(hjchhhNhNubj)}(h%``FW_CDEV_EVENT_PHY_PACKET_RECEIVED``h]h!FW_CDEV_EVENT_PHY_PACKET_RECEIVED}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubh or }(hjchhhNhNubj)}(h&``FW_CDEV_EVENT_PHY_PACKET_RECEIVED2``h]h"FW_CDEV_EVENT_PHY_PACKET_RECEIVED2}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubhI due to incoming PHY packets from any node on the same bus as the device.}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:25: ./include/uapi/linux/firewire-cdev.hhMhjhhhubh)}(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.hhMhjhhhubeh}(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&]uh1hhjchhhhhKubjz)}(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-firewirejjuh1jyhKhjchhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_csr_string (C function)c.fw_csr_stringhNtauh1jhjchhhNhNubj)}(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}(hjdhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jdhjdhhhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKrubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdhhhjdhKrubj)}(h fw_csr_stringh]j)}(h fw_csr_stringh]h fw_csr_string}(hj*dhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&dubah}(h]h ](jjeh"]h$]h&]jjuh1jhjdhhhjdhKrubhdesc_parameterlist)}(h7(const u32 *directory, int key, char *buf, size_t size)h](hdesc_parameter)}(hconst u32 *directoryh](j)}(hconsth]hconst}(hjJdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFdubj)}(h h]h }(hjXdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFdubh)}(hhh]j)}(hu32h]hu32}(hjidhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfdubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjkdmodnameN classnameNjsjv)}jy]j )}jj,dsbc.fw_csr_stringasbuh1hhjFdubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFdubhdesc_sig_punctuation)}(h*h]h*}(hjdhhhNhNubah}(h]h ]pah"]h$]h&]uh1jdhjFdubj)}(h directoryh]h directory}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFdubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj@dubjEd)}(hint keyh](jd)}(hinth]hint}(hjdhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjdubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubj)}(hkeyh]hkey}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj@dubjEd)}(h char *bufh](jd)}(hcharh]hchar}(hjdhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjdubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjd)}(hjdh]h*}(hjehhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjdubj)}(hbufh]hbuf}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj@dubjEd)}(h size_t sizeh](h)}(hhh]j)}(hsize_th]hsize_t}(hj;ehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8eubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetj=emodnameN classnameNjsjv)}jy]jdc.fw_csr_stringasbuh1hhj4eubj)}(h h]h }(hjYehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4eubj)}(hsizeh]hsize}(hjgehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4eubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj@dubeh}(h]h ]h"]h$]h&]jjuh1j>dhjdhhhjdhKrubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjchhhjdhKrubah}(h]jcah ](jjeh"]h$]h&]jj)jhuh1jhjdhKrhjchhubj)}(hhh]h)}(h)reads a string from the configuration ROMh]h)reads a string from the configuration ROM}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKrhjehhubah}(h]h ]h"]h$]h&]uh1jhjchhhjdhKrubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(jej)jej*j+j,uh1jhhhjchNhNubj.)}(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]j8)}(hjeh]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjeubah}(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]j)}(hjeh]hconst u32 *directory}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(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]j)}(hj fh]hint key}(hj fhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj fubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKthjfubh)}(hhh]h)}(h(the key of the preceding directory entryh]h(the key of the preceding directory entry}(hj$fhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj fhKthj!fubah}(h]h ]h"]h$]h&]uh1hhjfubeh}(h]h ]h"]h$]h&]uh1hhj fhKthjeubh)}(h&``char *buf`` where to put the string h](h)}(h ``char *buf``h]j)}(hjDfh]h char *buf}(hjFfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBfubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKuhj>fubh)}(hhh]h)}(hwhere to put the stringh]hwhere to put the string}(hj]fhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYfhKuhjZfubah}(h]h ]h"]h$]h&]uh1hhj>fubeh}(h]h ]h"]h$]h&]uh1hhjYfhKuhjeubh)}(h*``size_t size`` size of **buf**, in bytes h](h)}(h``size_t size``h]j)}(hj}fh]h size_t size}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{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 }(hjfhhhNhNubj8)}(h**buf**h]hbuf}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjfubh , in bytes}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhKvhjfubah}(h]h ]h"]h$]h&]uh1hhjwfubeh}(h]h ]h"]h$]h&]uh1hhjfhKvhjeubeh}(h]h ]h"]h$]h&]uh1hhjeubh)}(h**Description**h]j8)}(hjfh]h Description}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjfubah}(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 }(hjfhhhNhNubj8)}(h**key**h]hkey}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjfubhr. The string is zero-terminated. An overlong string is silently truncated such that it and the zero byte fit into }(hjfhhhNhNubj8)}(h**size**h]hsize}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjfubh.}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:34: ./drivers/firewire/core-device.chKwhjeubh)}(h-Returns strlen(buf) or a negative error code.h]h-Returns strlen(buf) or a negative error code.}(hjghhhNhNubah}(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&]uh1j-hjchhhNhNubeh}(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}(hj4ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1ghhhhhK&ubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j__fw_send_request (C function)c.__fw_send_requesthNtauh1jhj1ghhhNhNubj)}(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](jd)}(hvoidh]hvoid}(hj[ghhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjWghhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMLubj)}(h h]h }(hjjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWghhhjighMLubj)}(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&]jjuh1jhjWghhhjighMLubj?d)}(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](jEd)}(hstruct fw_card *cardh](j)}(hjh]hstruct}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubh)}(hhh]j)}(hfw_cardh]hfw_card}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjgmodnameN classnameNjsjv)}jy]j )}jj~gsbc.__fw_send_requestasbuh1hhjgubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjd)}(hjdh]h*}(hjghhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjgubj)}(hcardh]hcard}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(hstruct fw_transaction *th](j)}(hjh]hstruct}(hj hhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubh)}(hhh]j)}(hfw_transactionh]hfw_transaction}(hj(hhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetj*hmodnameN classnameNjsjv)}jy]jgc.__fw_send_requestasbuh1hhjhubj)}(h h]h }(hjFhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubjd)}(hjdh]h*}(hjThhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjhubj)}(hth]ht}(hjahhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(h int tcodeh](jd)}(hinth]hint}(hjzhhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjvhubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvhubj)}(htcodeh]htcode}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvhubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(hint destination_idh](jd)}(hinth]hint}(hjhhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjhubj)}(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&]noemphjjuh1jDdhjgubjEd)}(hint generationh](jd)}(hinth]hint}(hjhhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjhubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(h generationh]h generation}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(h int speedh](jd)}(hinth]hint}(hjihhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjiubj)}(h h]h }(hj'ihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubj)}(hspeedh]hspeed}(hj5ihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(hunsigned long long offseth](jd)}(hunsignedh]hunsigned}(hjNihhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjJiubj)}(h h]h }(hj\ihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJiubjd)}(hlongh]hlong}(hjjihhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjJiubj)}(h h]h }(hjxihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJiubjd)}(hlongh]hlong}(hjihhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjJiubj)}(h h]h }(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJiubj)}(hoffseth]hoffset}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJiubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(h void *payloadh](jd)}(hvoidh]hvoid}(hjihhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjiubj)}(h h]h }(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubjd)}(hjdh]h*}(hjihhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjiubj)}(hpayloadh]hpayload}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(h size_t lengthh](h)}(hhh]j)}(hsize_th]hsize_t}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjjmodnameN classnameNjsjv)}jy]jgc.__fw_send_requestasbuh1hhjiubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubj)}(hlengthh]hlength}(hj,jhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(h&union fw_transaction_callback callbackh](j)}(hjL-h]hunion}(hjEjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAjubj)}(h h]h }(hjRjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAjubh)}(hhh]j)}(hfw_transaction_callbackh]hfw_transaction_callback}(hjcjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`jubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjejmodnameN classnameNjsjv)}jy]jgc.__fw_send_requestasbuh1hhjAjubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAjubj)}(hcallbackh]hcallback}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAjubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(hbool with_tstamph](jd)}(hboolh]hbool}(hjjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjjubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj)}(h with_tstamph]h with_tstamp}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubjEd)}(hvoid *callback_datah](jd)}(hvoidh]hvoid}(hjjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjjubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubjd)}(hjdh]h*}(hjjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjjubj)}(h callback_datah]h callback_data}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjgubeh}(h]h ]h"]h$]h&]jjuh1j>dhjWghhhjighMLubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjSghhhjighMLubah}(h]jNgah ](jjeh"]h$]h&]jj)jhuh1jhjighMLhjPghhubj)}(hhh]h)}(hpsubmit a request packet for transmission to generate callback for response subaction with or without time stamp.h]hpsubmit a request packet for transmission to generate callback for response subaction with or without time stamp.}(hj0khhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMLhj-khhubah}(h]h ]h"]h$]h&]uh1jhjPghhhjighMLubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(jHkj)jHkj*j+j,uh1jhhhj1ghNhNubj.)}(hX **Parameters** ``struct fw_card *card`` interface to send the request at ``struct fw_transaction *t`` transaction instance to which the request belongs ``int tcode`` transaction code ``int destination_id`` destination node ID, consisting of bus_ID and phy_ID ``int generation`` bus generation in which request and response are valid ``int speed`` transmission speed ``unsigned long long offset`` 48bit wide offset into destination's address space ``void *payload`` data payload for the request subaction ``size_t length`` length of the payload, in bytes ``union fw_transaction_callback callback`` union of two functions whether to receive time stamp or not for response subaction. ``bool with_tstamp`` Whether to receive time stamp or not for response subaction. ``void *callback_data`` data to be passed to the transaction completion callback **Description** Submit a request packet into the asynchronous request transmission queue. Can be called from atomic context. If you prefer a blocking API, use fw_run_transaction() in a context that can sleep. In case of lock requests, specify one of the firewire-core specific ``TCODE_`` constants instead of ``TCODE_LOCK_REQUEST`` in **tcode**. Make sure that the value in **destination_id** is not older than the one in **generation**. Otherwise the request is in danger to be sent to a wrong node. In case of asynchronous stream packets i.e. ``TCODE_STREAM_DATA``, the caller needs to synthesize **destination_id** with fw_stream_packet_destination_id(). It will contain tag, channel, and sy data instead of a node ID then. The payload buffer at **data** is going to be DMA-mapped except in case of **length** <= 8 or of local (loopback) requests. Hence make sure that the buffer complies with the restrictions of the streaming DMA mapping API. **payload** must not be freed before the **callback** is called. In case of request types without payload, **data** is NULL and **length** is 0. After the transaction is completed successfully or unsuccessfully, the **callback** will be called. Among its parameters is the response code which is either one of the rcodes per IEEE 1394 or, in case of internal errors, the firewire-core specific ``RCODE_SEND_ERROR``. The other firewire-core specific rcodes (``RCODE_CANCELLED``, ``RCODE_BUSY``, ``RCODE_GENERATION``, ``RCODE_NO_ACK``) denote transaction timeout, busy responder, stale request generation, or missing ACK respectively. Note some timing corner cases: fw_send_request() may complete much earlier than when the request packet actually hits the wire. On the other hand, transaction completion and hence execution of **callback** may happen even before fw_send_request() returns.h](h)}(h**Parameters**h]j8)}(hjRkh]h Parameters}(hjTkhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjPkubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMPhjLkubh)}(hhh](h)}(h:``struct fw_card *card`` interface to send the request at h](h)}(h``struct fw_card *card``h]j)}(hjqkh]hstruct fw_card *card}(hjskhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjokubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMNhjkkubh)}(hhh]h)}(h interface to send the request ath]h interface to send the request at}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMNhjkubah}(h]h ]h"]h$]h&]uh1hhjkkubeh}(h]h ]h"]h$]h&]uh1hhjkhMNhjhkubh)}(hO``struct fw_transaction *t`` transaction instance to which the request belongs h](h)}(h``struct fw_transaction *t``h]j)}(hjkh]hstruct fw_transaction *t}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMOhjkubh)}(hhh]h)}(h1transaction instance to which the request belongsh]h1transaction instance to which the request belongs}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMOhjkubah}(h]h ]h"]h$]h&]uh1hhjkubeh}(h]h ]h"]h$]h&]uh1hhjkhMOhjhkubh)}(h``int tcode`` transaction code h](h)}(h ``int tcode``h]j)}(hjkh]h int tcode}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMPhjkubh)}(hhh]h)}(htransaction codeh]htransaction code}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMPhjkubah}(h]h ]h"]h$]h&]uh1hhjkubeh}(h]h ]h"]h$]h&]uh1hhjkhMPhjhkubh)}(hL``int destination_id`` destination node ID, consisting of bus_ID and phy_ID h](h)}(h``int destination_id``h]j)}(hjlh]hint destination_id}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMQhjlubh)}(hhh]h)}(h4destination node ID, consisting of bus_ID and phy_IDh]h4destination node ID, consisting of bus_ID and phy_ID}(hj5lhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1lhMQhj2lubah}(h]h ]h"]h$]h&]uh1hhjlubeh}(h]h ]h"]h$]h&]uh1hhj1lhMQhjhkubh)}(hJ``int generation`` bus generation in which request and response are valid h](h)}(h``int generation``h]j)}(hjUlh]hint generation}(hjWlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSlubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMRhjOlubh)}(hhh]h)}(h6bus generation in which request and response are validh]h6bus generation in which request and response are valid}(hjnlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjlhMRhjklubah}(h]h ]h"]h$]h&]uh1hhjOlubeh}(h]h ]h"]h$]h&]uh1hhjjlhMRhjhkubh)}(h!``int speed`` transmission speed h](h)}(h ``int speed``h]j)}(hjlh]h int speed}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMShjlubh)}(hhh]h)}(htransmission speedh]htransmission speed}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMShjlubah}(h]h ]h"]h$]h&]uh1hhjlubeh}(h]h ]h"]h$]h&]uh1hhjlhMShjhkubh)}(hQ``unsigned long long offset`` 48bit wide offset into destination's address space h](h)}(h``unsigned long long offset``h]j)}(hjlh]hunsigned long long offset}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMThjlubh)}(hhh]h)}(h248bit wide offset into destination's address spaceh]h448bit wide offset into destination’s address space}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMThjlubah}(h]h ]h"]h$]h&]uh1hhjlubeh}(h]h ]h"]h$]h&]uh1hhjlhMThjhkubh)}(h9``void *payload`` data payload for the request subaction h](h)}(h``void *payload``h]j)}(hjmh]h void *payload}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMUhjlubh)}(hhh]h)}(h&data payload for the request subactionh]h&data payload for the request subaction}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMUhjmubah}(h]h ]h"]h$]h&]uh1hhjlubeh}(h]h ]h"]h$]h&]uh1hhjmhMUhjhkubh)}(h2``size_t length`` length of the payload, in bytes h](h)}(h``size_t length``h]j)}(hj9mh]h size_t length}(hj;mhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7mubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMVhj3mubh)}(hhh]h)}(hlength of the payload, in bytesh]hlength of the payload, in bytes}(hjRmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNmhMVhjOmubah}(h]h ]h"]h$]h&]uh1hhj3mubeh}(h]h ]h"]h$]h&]uh1hhjNmhMVhjhkubh)}(h``union fw_transaction_callback callback`` union of two functions whether to receive time stamp or not for response subaction. h](h)}(h*``union fw_transaction_callback callback``h]j)}(hjrmh]h&union fw_transaction_callback callback}(hjtmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpmubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMXhjlmubh)}(hhh]h)}(hSunion of two functions whether to receive time stamp or not for response subaction.h]hSunion of two functions whether to receive time stamp or not for response subaction.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMWhjmubah}(h]h ]h"]h$]h&]uh1hhjlmubeh}(h]h ]h"]h$]h&]uh1hhjmhMXhjhkubh)}(hR``bool with_tstamp`` Whether to receive time stamp or not for response subaction. h](h)}(h``bool with_tstamp``h]j)}(hjmh]hbool with_tstamp}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMYhjmubh)}(hhh]h)}(hdhj2phhhjDphMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj.phhhjDphMubah}(h]j)pah ](jjeh"]h$]h&]jj)jhuh1jhjDphMhj+phhubj)}(hhh]h)}(h5send request and sleep until transaction is completedh]h5send request and sleep until transaction is completed}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjrhhubah}(h]h ]h"]h$]h&]uh1jhj+phhhjDphMubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(jrj)jrj*j+j,uh1jhhhj1ghNhNubj.)}(hX***Parameters** ``struct fw_card *card`` card interface for this request ``int tcode`` transaction code ``int destination_id`` destination node ID, consisting of bus_ID and phy_ID ``int generation`` bus generation in which request and response are valid ``int speed`` transmission speed ``unsigned long long offset`` 48bit wide offset into destination's address space ``void *payload`` data payload for the request subaction ``size_t length`` length of the payload, in bytes **Description** 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](h)}(h**Parameters**h]j8)}(hjrh]h Parameters}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjrubah}(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]j)}(hjsh]hstruct fw_card *card}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(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}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1hhjrubeh}(h]h ]h"]h$]h&]uh1hhjshMhjrubh)}(h``int tcode`` transaction code h](h)}(h ``int tcode``h]j)}(hj;sh]h int tcode}(hj=shhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9subah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhj5subh)}(hhh]h)}(htransaction codeh]htransaction code}(hjTshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPshMhjQsubah}(h]h ]h"]h$]h&]uh1hhj5subeh}(h]h ]h"]h$]h&]uh1hhjPshMhjrubh)}(hL``int destination_id`` destination node ID, consisting of bus_ID and phy_ID h](h)}(h``int destination_id``h]j)}(hjtsh]hint destination_id}(hjvshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrsubah}(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}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1hhjnsubeh}(h]h ]h"]h$]h&]uh1hhjshMhjrubh)}(hJ``int generation`` bus generation in which request and response are valid h](h)}(h``int generation``h]j)}(hjsh]hint generation}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(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]j)}(hjsh]h int speed}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(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]j)}(hjth]hunsigned long long offset}(hj!thhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjtubh)}(hhh]h)}(h248bit wide offset into destination's address spaceh]h448bit wide offset into destination’s address space}(hj8thhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4thMhj5tubah}(h]h ]h"]h$]h&]uh1hhjtubeh}(h]h ]h"]h$]h&]uh1hhj4thMhjrubh)}(h9``void *payload`` data payload for the request subaction h](h)}(h``void *payload``h]j)}(hjXth]h void *payload}(hjZthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVtubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjRtubh)}(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&]uh1hhjRtubeh}(h]h ]h"]h$]h&]uh1hhjmthMhjrubh)}(h2``size_t length`` length of the payload, in bytes h](h)}(h``size_t length``h]j)}(hjth]h size_t length}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjtubh)}(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&]uh1hhjtubeh}(h]h ]h"]h$]h&]uh1hhjthMhjrubeh}(h]h ]h"]h$]h&]uh1hhjrubh)}(h**Description**h]j8)}(hjth]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjtubah}(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(), }(hjthhhNhNubj8)}(h**data**h]hdata}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjtubh 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&]uh1j-hj1ghhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(fw_core_add_address_handler (C function)c.fw_core_add_address_handlerhNtauh1jhj1ghhhNhNubj)}(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](jd)}(hinth]hint}(hj#uhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjuhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMvubj)}(h h]h }(hj2uhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuhhhj1uhMvubj)}(hfw_core_add_address_handlerh]j)}(hfw_core_add_address_handlerh]hfw_core_add_address_handler}(hjDuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@uubah}(h]h ](jjeh"]h$]h&]jjuh1jhjuhhhj1uhMvubj?d)}(hL(struct fw_address_handler *handler, const struct fw_address_region *region)h](jEd)}(h"struct fw_address_handler *handlerh](j)}(hjh]hstruct}(hj`uhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\uubj)}(h h]h }(hjmuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\uubh)}(hhh]j)}(hfw_address_handlerh]hfw_address_handler}(hj~uhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{uubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjumodnameN classnameNjsjv)}jy]j )}jjFusbc.fw_core_add_address_handlerasbuh1hhj\uubj)}(h h]h }(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\uubjd)}(hjdh]h*}(hjuhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhj\uubj)}(hhandlerh]hhandler}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\uubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjXuubjEd)}(h&const struct fw_address_region *regionh](j)}(hjLdh]hconst}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj)}(h h]h }(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj)}(hjh]hstruct}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj)}(h h]h }(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubh)}(hhh]j)}(hfw_address_regionh]hfw_address_region}(hj vhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetj vmodnameN classnameNjsjv)}jy]juc.fw_core_add_address_handlerasbuh1hhjuubj)}(h h]h }(hj)vhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubjd)}(hjdh]h*}(hj7vhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjuubj)}(hregionh]hregion}(hjDvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjXuubeh}(h]h ]h"]h$]h&]jjuh1j>dhjuhhhj1uhMvubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjuhhhj1uhMvubah}(h]juah ](jjeh"]h$]h&]jj)jhuh1jhj1uhMvhjuhhubj)}(hhh]h)}(hregister for incoming requestsh]hregister for incoming requests}(hjnvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMvhjkvhhubah}(h]h ]h"]h$]h&]uh1jhjuhhhj1uhMvubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(jvj)jvj*j+j,uh1jhhhj1ghNhNubj.)}(hX**Parameters** ``struct fw_address_handler *handler`` callback ``const struct fw_address_region *region`` region in the IEEE 1212 node space address range **Description** region->start, ->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. The callback is invoked in the workqueue context in most cases. However, if the request is initiated by the local node, the callback is invoked in the initiator's context. 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]j8)}(hjvh]h Parameters}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjvubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMzhjvubh)}(hhh](h)}(h0``struct fw_address_handler *handler`` callback h](h)}(h&``struct fw_address_handler *handler``h]j)}(hjvh]h"struct fw_address_handler *handler}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMwhjvubh)}(hhh]h)}(hcallbackh]hcallback}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMwhjvubah}(h]h ]h"]h$]h&]uh1hhjvubeh}(h]h ]h"]h$]h&]uh1hhjvhMwhjvubh)}(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]j)}(hjvh]h&const struct fw_address_region *region}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMxhjvubh)}(hhh]h)}(h0region in the IEEE 1212 node space address rangeh]h0region in the IEEE 1212 node space address range}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMxhjvubah}(h]h ]h"]h$]h&]uh1hhjvubeh}(h]h ]h"]h$]h&]uh1hhjvhMxhjvubeh}(h]h ]h"]h$]h&]uh1hhjvubh)}(h**Description**h]j8)}(hj#wh]h Description}(hj%whhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj!wubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMzhjvubh)}(hEregion->start, ->end, and handler->length have to be quadlet-aligned.h]hEregion->start, ->end, and handler->length have to be quadlet-aligned.}(hj9whhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMyhjvubh)}(hXkWhen 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. The callback is invoked in the workqueue context in most cases. However, if the request is initiated by the local node, the callback is invoked in the initiator's context.h]hXmWhen 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. The callback is invoked in the workqueue context in most cases. However, if the request is initiated by the local node, the callback is invoked in the initiator’s context.}(hjHwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chM{hjvubh)}(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.}(hjWwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjvubh)}(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.chMhjvubh)}(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.chMhjvubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hj1ghhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j+fw_core_remove_address_handler (C function) c.fw_core_remove_address_handlerhNtauh1jhj1ghhhNhNubj)}(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](jd)}(hvoidh]hvoid}(hjwhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjwhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwhhhjwhMubj)}(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&]jjuh1jhjwhhhjwhMubj?d)}(h$(struct fw_address_handler *handler)h]jEd)}(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&] refdomainj"reftypej reftargetjxmodnameN classnameNjsjv)}jy]j )}jjwsb c.fw_core_remove_address_handlerasbuh1hhjwubj)}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubjd)}(hjdh]h*}(hj-xhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjwubj)}(hhandlerh]hhandler}(hj:xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjwubah}(h]h ]h"]h$]h&]jjuh1j>dhjwhhhjwhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjwhhhjwhMubah}(h]jwah ](jjeh"]h$]h&]jj)jhuh1jhjwhMhjwhhubj)}(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.chMhjaxhhubah}(h]h ]h"]h$]h&]uh1jhjwhhhjwhMubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(j|xj)j|xj*j+j,uh1jhhhj1ghNhNubj.)}(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]j8)}(hjxh]h Parameters}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjxubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjxubh)}(hhh]h)}(h0``struct fw_address_handler *handler`` callback h](h)}(h&``struct fw_address_handler *handler``h]j)}(hjxh]h"struct fw_address_handler *handler}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjxubh)}(hhh]h)}(hcallbackh]hcallback}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMhjxubah}(h]h ]h"]h$]h&]uh1hhjxubeh}(h]h ]h"]h$]h&]uh1hhjxhMhjxubah}(h]h ]h"]h$]h&]uh1hhjxubh)}(h**Description**h]j8)}(hjxh]h Description}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjxubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjxubh)}(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.chMhjxubh)}(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, }(hjyhhhNhNubj8)}(h**handler->callback\(\)**h]hhandler->callback()}(hj yhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjyubh- is guaranteed to not run on any CPU anymore.}(hjyhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjxubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hj1ghhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_send_response (C function)c.fw_send_responsehNtauh1jhj1ghhhNhNubj)}(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](jd)}(hvoidh]hvoid}(hjFyhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjByhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMubj)}(h h]h }(hjUyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjByhhhjTyhMubj)}(hfw_send_responseh]j)}(hfw_send_responseh]hfw_send_response}(hjgyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcyubah}(h]h ](jjeh"]h$]h&]jjuh1jhjByhhhjTyhMubj?d)}(h=(struct fw_card *card, struct fw_request *request, int rcode)h](jEd)}(hstruct fw_card *cardh](j)}(hjh]hstruct}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubh)}(hhh]j)}(hfw_cardh]hfw_card}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjymodnameN classnameNjsjv)}jy]j )}jjiysbc.fw_send_responseasbuh1hhjyubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubjd)}(hjdh]h*}(hjyhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjyubj)}(hcardh]hcard}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj{yubjEd)}(hstruct fw_request *requesth](j)}(hjh]hstruct}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubh)}(hhh]j)}(h fw_requesth]h fw_request}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjzmodnameN classnameNjsjv)}jy]jyc.fw_send_responseasbuh1hhjyubj)}(h h]h }(hj1zhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubjd)}(hjdh]h*}(hj?zhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjyubj)}(hrequesth]hrequest}(hjLzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj{yubjEd)}(h int rcodeh](jd)}(hinth]hint}(hjezhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjazubj)}(h h]h }(hjszhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjazubj)}(hrcodeh]hrcode}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjazubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj{yubeh}(h]h ]h"]h$]h&]jjuh1j>dhjByhhhjTyhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj>yhhhjTyhMubah}(h]j9yah ](jjeh"]h$]h&]jj)jhuh1jhjTyhMhj;yhhubj)}(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.chMhjzubah}(h]h ]h"]h$]h&]uh1j""hjzhhhjzhNubah}(h]h ]h"]h$]h&]j"j"uh1j"hjzhMhjzhhubah}(h]h ]h"]h$]h&]uh1jhj;yhhhjTyhMubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(jzj)jzj*j+j,uh1jhhhj1ghNhNubj.)}(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]j8)}(hjzh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjzubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjzubh)}(hhh](h)}(h<``struct fw_card *card`` interface to send the response at. h](h)}(h``struct fw_card *card``h]j)}(hjzh]hstruct fw_card *card}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjzubh)}(hhh]h)}(h"interface to send the response at.h]h"interface to send the response at.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj{ubah}(h]h ]h"]h$]h&]uh1hhjzubeh}(h]h ]h"]h$]h&]uh1hhj{hMhjzubh)}(hJ``struct fw_request *request`` firewire request data for the transaction. h](h)}(h``struct fw_request *request``h]j)}(hj7{h]hstruct fw_request *request}(hj9{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5{ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhj1{ubh)}(hhh]h)}(h*firewire request data for the transaction.h]h*firewire request data for the transaction.}(hjP{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjL{hMhjM{ubah}(h]h ]h"]h$]h&]uh1hhj1{ubeh}(h]h ]h"]h$]h&]uh1hhjL{hMhjzubh)}(h%``int rcode`` response code to send. h](h)}(h ``int rcode``h]j)}(hjp{h]h int rcode}(hjr{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn{ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjj{ubh)}(hhh]h)}(hresponse code to send.h]hresponse code to send.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj{ubah}(h]h ]h"]h$]h&]uh1hhjj{ubeh}(h]h ]h"]h$]h&]uh1hhj{hMhjzubeh}(h]h ]h"]h$]h&]uh1hhjzubh)}(h**Description**h]j8)}(hj{h]h Description}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj{ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjzubh)}(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{hhhNhNubj8)}(h **request**h]hrequest}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj{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.chMhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hj1ghhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!fw_get_request_speed (C function)c.fw_get_request_speedhNtauh1jhj1ghhhNhNubj)}(hhh](j)}(h5int fw_get_request_speed (struct fw_request *request)h]j)}(h4int fw_get_request_speed(struct fw_request *request)h](jd)}(hinth]hint}(hj|hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhj{hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMubj)}(h h]h }(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{hhhj|hMubj)}(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&]jjuh1jhj{hhhj|hMubj?d)}(h(struct fw_request *request)h]jEd)}(hstruct fw_request *requesth](j)}(hjh]hstruct}(hj?|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;|ubj)}(h h]h }(hjL|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;|ubh)}(hhh]j)}(h fw_requesth]h fw_request}(hj]|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ|ubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetj_|modnameN classnameNjsjv)}jy]j )}jj%|sbc.fw_get_request_speedasbuh1hhj;|ubj)}(h h]h }(hj}|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;|ubjd)}(hjdh]h*}(hj|hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhj;|ubj)}(hrequesth]hrequest}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;|ubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj7|ubah}(h]h ]h"]h$]h&]jjuh1j>dhj{hhhj|hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj{hhhj|hMubah}(h]j{ah ](jjeh"]h$]h&]jj)jhuh1jhj|hMhj{hhubj)}(hhh]h)}(h3returns speed at which the **request** was receivedh](hreturns speed at which the }(hj|hhhNhNubj8)}(h **request**h]hrequest}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj|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.chMhj|hhubah}(h]h ]h"]h$]h&]uh1jhj{hhhj|hMubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(j|j)j|j*j+j,uh1jhhhj1ghNhNubj.)}(hF**Parameters** ``struct fw_request *request`` firewire request datah](h)}(h**Parameters**h]j8)}(hj|h]h Parameters}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj|ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhj|ubh)}(hhh]h)}(h4``struct fw_request *request`` firewire request datah](h)}(h``struct fw_request *request``h]j)}(hj}h]hstruct fw_request *request}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhj}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.chMhj+}ubah}(h]h ]h"]h$]h&]uh1hhj}ubeh}(h]h ]h"]h$]h&]uh1hhj*}hMhj }ubah}(h]h ]h"]h$]h&]uh1hhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hj1ghhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%fw_request_get_timestamp (C function)c.fw_request_get_timestamphNtauh1jhj1ghhhNhNubj)}(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&] refdomainj"reftypej reftargetjt}modnameN classnameNjsjv)}jy]j )}jfw_request_get_timestampsbc.fw_request_get_timestampasbuh1hhjk}hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjk}hhhj}hMubj)}(hfw_request_get_timestamph]j)}(hj}h]hfw_request_get_timestamp}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjk}hhhj}hMubj?d)}(h"(const struct fw_request *request)h]jEd)}(h const struct fw_request *requesth](j)}(hjLdh]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&] refdomainj"reftypej reftargetj}modnameN classnameNjsjv)}jy]j}c.fw_request_get_timestampasbuh1hhj}ubj)}(h h]h }(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjd)}(hjdh]h*}(hj&~hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhj}ubj)}(hrequesth]hrequest}(hj3~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj}ubah}(h]h ]h"]h$]h&]jjuh1j>dhjk}hhhj}hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjg}hhhj}hMubah}(h]jb}ah ](jjeh"]h$]h&]jj)jhuh1jhj}hMhjd}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.chMhjZ~hhubah}(h]h ]h"]h$]h&]uh1jhjd}hhhj}hMubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(ju~j)ju~j*j+j,uh1jhhhj1ghNhNubj.)}(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]j8)}(hj~h]h Parameters}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj}~ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjy~ubh)}(hhh]h)}(hN``const struct fw_request *request`` The opaque pointer to request structure. h](h)}(h$``const struct fw_request *request``h]j)}(hj~h]h const struct fw_request *request}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhj~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~hMhj~ubah}(h]h ]h"]h$]h&]uh1hhj~ubeh}(h]h ]h"]h$]h&]uh1hhj~hMhj~ubah}(h]h ]h"]h$]h&]uh1hhjy~ubh)}(h**Description**h]j8)}(hj~h]h Description}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj~ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjy~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.chMhjy~ubh)}(h **Return**h]j8)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj~ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjy~ubh)}(htimestamp of the request.h]htimestamp of the request.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjy~ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hj1ghhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jfw_rcode_string (C function)c.fw_rcode_stringhNtauh1jhj1ghhhNhNubj)}(hhh](j)}(h(const char * fw_rcode_string (int rcode)h]j)}(h&const char *fw_rcode_string(int rcode)h](j)}(hjLdh]hconst}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMubj)}(h h]h }(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhjRhMubjd)}(hcharh]hchar}(hjahhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjAhhhjRhMubj)}(h h]h }(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhjRhMubjd)}(hjdh]h*}(hj}hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjAhhhjRhMubj)}(hfw_rcode_stringh]j)}(hfw_rcode_stringh]hfw_rcode_string}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjAhhhjRhMubj?d)}(h (int rcode)h]jEd)}(h int rcodeh](jd)}(hinth]hint}(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hrcodeh]hrcode}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjubah}(h]h ]h"]h$]h&]jjuh1j>dhjAhhhjRhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj=hhhjRhMubah}(h]j8ah ](jjeh"]h$]h&]jj)jhuh1jhjRhMhj:hhubj)}(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.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj:hhhjRhMubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(jj)jj*j+j,uh1jhhhj1ghNhNubj.)}(h/**Parameters** ``int rcode`` the result codeh](h)}(h**Parameters**h]j8)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhj ubh)}(hhh]h)}(h``int rcode`` the result codeh](h)}(h ``int rcode``h]j)}(hj1h]h int rcode}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhj+ubh)}(hhh]h)}(hthe result codeh]hthe result code}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:40: ./drivers/firewire/core-transaction.chMhjGubah}(h]h ]h"]h$]h&]uh1hhj+ubeh}(h]h ]h"]h$]h&]uh1hhjFhMhj(ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hj1ghhhNhNubeh}(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,ubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j6fw_iso_context_schedule_flush_completions (C function)+c.fw_iso_context_schedule_flush_completionshNtauh1jhjzhhhNhNubj)}(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](jd)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMVubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMVubj)}(h)fw_iso_context_schedule_flush_completionsh]j)}(h)fw_iso_context_schedule_flush_completionsh]h)fw_iso_context_schedule_flush_completions}(hjŀhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMVubj?d)}(h(struct fw_iso_context *ctx)h]jEd)}(hstruct fw_iso_context *ctxh](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_iso_contexth]hfw_iso_context}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjmodnameN classnameNjsjv)}jy]j )}jjǀsb+c.fw_iso_context_schedule_flush_completionsasbuh1hhj݀ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj݀ubjd)}(hjdh]h*}(hj-hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhj݀ubj)}(hctxh]hctx}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj݀ubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjـubah}(h]h ]h"]h$]h&]jjuh1j>dhjhhhjhMVubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhMVubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMVhjhhubj)}(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.hhMVhjahhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMVubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(j|j)j|j*j+j,uh1jhhhjzhNhNubj.)}(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]j8)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMZhjubh)}(hhh]h)}(h7``struct fw_iso_context *ctx`` the isochronous context h](h)}(h``struct fw_iso_context *ctx``h]j)}(hjh]hstruct fw_iso_context *ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMWhjubh)}(hhh]h)}(hthe isochronous contexth]hthe isochronous context}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMWhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhMWhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]j8)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjށubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMYhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhMXhjubh)}(h **Context**h]j8)}(hjh]hContext}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:46: ./include/linux/firewire.hhM_hjubh)}(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`hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjzhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j-fw_iso_context_flush_completions (C function)"c.fw_iso_context_flush_completionshNtauh1jhjzhhhNhNubj)}(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](jd)}(hinth]hint}(hjLhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjHhhh_/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&]uh1jhjHhhhjZhKubj)}(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&]jjuh1jhjHhhhjZhKubj?d)}(h(struct fw_iso_context *ctx)h]jEd)}(hstruct fw_iso_context *ctxh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hfw_iso_contexth]hfw_iso_context}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjmodnameN classnameNjsjv)}jy]j )}jjosb"c.fw_iso_context_flush_completionsasbuh1hhjubj)}(h h]h }(hjǂhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjd)}(hjdh]h*}(hjՂhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjubj)}(hctxh]hctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhjubah}(h]h ]h"]h$]h&]jjuh1j>dhjHhhhjZhKubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjDhhhjZhKubah}(h]j?ah ](jjeh"]h$]h&]jj)jhuh1jhjZhKhjAhhubj)}(hhh]h)}(h7process isochronous context in current process context.h]h7process isochronous context in current process context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhj hhubah}(h]h ]h"]h$]h&]uh1jhjAhhhjZhKubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(j$j)j$j*j+j,uh1jhhhjzhNhNubj.)}(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]j8)}(hj.h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj,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)}(h7``struct fw_iso_context *ctx`` the isochronous context h](h)}(h``struct fw_iso_context *ctx``h]j)}(hjMh]hstruct fw_iso_context *ctx}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhjGubh)}(hhh]h)}(hthe isochronous contexth]hthe isochronous context}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhKhjcubah}(h]h ]h"]h$]h&]uh1hhjGubeh}(h]h ]h"]h$]h&]uh1hhjbhKhjDubah}(h]h ]h"]h$]h&]uh1hhj(ubh)}(h**Description**h]j8)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhj(ubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhj(ubh)}(h **Context**h]j8)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhj(ubh)}(h6Process context. May sleep due to disable_work_sync().h]h6Process context. May sleep due to disable_work_sync().}(hjŃhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chKhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1j-hjzhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#fw_iso_resource_manage (C function)c.fw_iso_resource_managehNtauh1jhjzhhhNhNubj)}(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](jd)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(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&]jjuh1jhjhhhjhMubj?d)}(hf(struct fw_card *card, int generation, u64 channels_mask, int *channel, int *bandwidth, bool allocate)h](jEd)}(hstruct fw_card *cardh](j)}(hjh]hstruct}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj)}(h h]h }(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubh)}(hhh]j)}(hfw_cardh]hfw_card}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetjQmodnameN classnameNjsjv)}jy]j )}jjsbc.fw_iso_resource_manageasbuh1hhj-ubj)}(h h]h }(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjd)}(hjdh]h*}(hj}hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhj-ubj)}(hcardh]hcard}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj)ubjEd)}(hint generationh](jd)}(hinth]hint}(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjubj)}(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&]noemphjjuh1jDdhj)ubjEd)}(hu64 channels_maskh](h)}(hhh]j)}(hu64h]hu64}(hjۄhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj؄ubah}(h]h ]h"]h$]h&] refdomainj"reftypej reftargetj݄modnameN classnameNjsjv)}jy]jkc.fw_iso_resource_manageasbuh1hhjԄubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjԄubj)}(h channels_maskh]h channels_mask}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjԄubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj)ubjEd)}(h int *channelh](jd)}(hinth]hint}(hj hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjubj)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjd)}(hjdh]h*}(hj<hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjubj)}(hchannelh]hchannel}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj)ubjEd)}(hint *bandwidthh](jd)}(hinth]hint}(hjbhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhj^ubj)}(h h]h }(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubjd)}(hjdh]h*}(hj~hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhj^ubj)}(h bandwidthh]h bandwidth}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj)ubjEd)}(h bool allocateh](jd)}(hjjh]hbool}(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jdhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hallocateh]hallocate}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jDdhj)ubeh}(h]h ]h"]h$]h&]jjuh1j>dhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjhhubj)}(hhh]h)}(h1Allocate or deallocate a channel and/or bandwidthh]h1Allocate or deallocate a channel and/or bandwidth}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](j"functioneh"]h$]h&]j'j"j(jj)jj*j+j,uh1jhhhjzhNhNubj.)}(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]j8)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj ubah}(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]j)}(hj*h]hstruct fw_card *card}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(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)}(hcard interface for this actionh]hcard interface for this action}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj@ubah}(h]h ]h"]h$]h&]uh1hhj$ubeh}(h]h ]h"]h$]h&]uh1hhj?hMhj!ubh)}(h"``int generation`` bus generation h](h)}(h``int generation``h]j)}(hjch]hint generation}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhj]ubh)}(hhh]h)}(hbus generationh]hbus generation}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMhjyubah}(h]h ]h"]h$]h&]uh1hhj]ubeh}(h]h ]h"]h$]h&]uh1hhjxhMhj!ubh)}(h5``u64 channels_mask`` bitmask for channel allocation h](h)}(h``u64 channels_mask``h]j)}(hjh]hu64 channels_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjubh)}(hhh]h)}(hbitmask for channel allocationh]hbitmask for channel allocation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj!ubh)}(hA``int *channel`` pointer for returning channel allocation result h](h)}(h``int *channel``h]j)}(hjՆh]h int *channel}(hj׆hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjӆ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)}(h/pointer for returning channel allocation resulth]h/pointer for returning channel allocation result}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1hhjφubeh}(h]h ]h"]h$]h&]uh1hhjhMhj!ubh)}(hE``int *bandwidth`` pointer for returning bandwidth allocation result h](h)}(h``int *bandwidth``h]j)}(hjh]hint *bandwidth}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(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}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMhj$ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhj#hMhj!ubh)}(hC``bool allocate`` whether to allocate (true) or deallocate (false) h](h)}(h``bool allocate``h]j)}(hjGh]h bool allocate}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/firewire:48: ./drivers/firewire/core-iso.chMhjAubh)}(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&]uh1hhjAubeh}(h]h ]h"]h$]h&]uh1hhj\hMhj!ubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]j8)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjubah}(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}(hjhhhNhNubah}(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.}(hjŇhhhNhNubah}(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.}(hjԇhhhNhNubah}(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.}(hjhhhNhNubah}(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&]uh1j-hjzhhhNhNubeh}(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}(jjjejbjcjcj.gj+gjwjtjju nametypes}(jjejcj.gjwjuh}(jhjbhjcjhjjjvj{jjj j j j jjj(j-jPjUjjj##j(#j%j&j(j(j=-jB-jy2j~2j5j5jB8jG8j`:je:j=j>j?j ?j@j@jCjCjDjDj3Hj8HjIjIj|NjNjQjQjRjSjTj TjUjUj]WjbWjYjYj*]j/]jA`jF`jmbjrbj+gjcjcjcjtj1gjNgjSgj)pj.pjujujwjwj9yj>yj{j{jb}jg}j8j=jjzjjj?jDjju 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.