112 lines · plain
1What: /dev/fw[0-9]+2Date: May 20073KernelVersion: 2.6.224Contact: linux1394-devel@lists.sourceforge.net5Description:6 The character device files /dev/fw* are the interface between7 firewire-core and IEEE 1394 device drivers implemented in8 userspace. The ioctl(2)- and read(2)-based ABI is defined and9 documented in <linux/firewire-cdev.h>.10 11 This ABI offers most of the features which firewire-core also12 exposes to kernelspace IEEE 1394 drivers.13 14 Each /dev/fw* is associated with one IEEE 1394 node, which can15 be remote or local nodes. Operations on a /dev/fw* file have16 different scope:17 18 - The 1394 node which is associated with the file:19 20 - Asynchronous request transmission21 - Get the Configuration ROM22 - Query node ID23 - Query maximum speed of the path between this node24 and local node25 26 - The 1394 bus (i.e. "card") to which the node is attached to:27 28 - Isochronous stream transmission and reception29 - Asynchronous stream transmission and reception30 - Asynchronous broadcast request transmission31 - PHY packet transmission and reception32 - Allocate, reallocate, deallocate isochronous33 resources (channels, bandwidth) at the bus's IRM34 - Query node IDs of local node, root node, IRM, bus35 manager36 - Query cycle time37 - Bus reset initiation, bus reset event reception38 39 - All 1394 buses:40 41 - Allocation of IEEE 1212 address ranges on the local42 link layers, reception of inbound requests to such43 an address range, asynchronous response transmission44 to inbound requests45 - Addition of descriptors or directories to the local46 nodes' Configuration ROM47 48 Due to the different scope of operations and in order to let49 userland implement different access permission models, some50 operations are restricted to /dev/fw* files that are associated51 with a local node:52 53 - Addition of descriptors or directories to the local54 nodes' Configuration ROM55 - PHY packet transmission and reception56 57 A /dev/fw* file remains associated with one particular node58 during its entire life time. Bus topology changes, and hence59 node ID changes, are tracked by firewire-core. ABI users do not60 need to be aware of topology.61 62 The following file operations are supported:63 64 open(2)65 Currently the only useful flags are O_RDWR.66 67 ioctl(2)68 Initiate various actions. Some take immediate effect, others69 are performed asynchronously while or after the ioctl returns.70 See the inline documentation in <linux/firewire-cdev.h> for71 descriptions of all ioctls.72 73 poll(2), select(2), epoll_wait(2) etc.74 Watch for events to become available to be read.75 76 read(2)77 Receive various events. There are solicited events like78 outbound asynchronous transaction completion or isochronous79 buffer completion, and unsolicited events such as bus resets,80 request reception, or PHY packet reception. Always use a read81 buffer which is large enough to receive the largest event that82 could ever arrive. See <linux/firewire-cdev.h> for descriptions83 of all event types and for which ioctls affect reception of84 events.85 86 mmap(2)87 Allocate a DMA buffer for isochronous reception or transmission88 and map it into the process address space. The arguments should89 be used as follows: addr = NULL, length = the desired buffer90 size, i.e. number of packets times size of largest packet,91 prot = at least PROT_READ for reception and at least PROT_WRITE92 for transmission, flags = MAP_SHARED, fd = the handle to the93 /dev/fw*, offset = 0.94 95 Isochronous reception works in packet-per-buffer fashion except96 for multichannel reception which works in buffer-fill mode.97 98 munmap(2)99 Unmap the isochronous I/O buffer from the process address space.100 101 close(2)102 Besides stopping and freeing I/O contexts that were associated103 with the file descriptor, back out any changes to the local104 nodes' Configuration ROM. Deallocate isochronous channels and105 bandwidth at the IRM that were marked for kernel-assisted106 re- and deallocation.107 108Users: libraw1394;109 libdc1394;110 libhinawa;111 tools like linux-firewire-utils, fwhack, ...112