docs: ABI: stable: make files ReST compatible
[linux-2.6-microblaze.git] / Documentation / ABI / stable / firewire-cdev
1 What:           /dev/fw[0-9]+
2 Date:           May 2007
3 KernelVersion:  2.6.22
4 Contact:        linux1394-devel@lists.sourceforge.net
5 Description:
6                 The character device files /dev/fw* are the interface between
7                 firewire-core and IEEE 1394 device drivers implemented in
8                 userspace.  The ioctl(2)- and read(2)-based ABI is defined and
9                 documented in <linux/firewire-cdev.h>.
10
11                 This ABI offers most of the features which firewire-core also
12                 exposes to kernelspace IEEE 1394 drivers.
13
14                 Each /dev/fw* is associated with one IEEE 1394 node, which can
15                 be remote or local nodes.  Operations on a /dev/fw* file have
16                 different scope:
17
18                   - The 1394 node which is associated with the file:
19                           - Asynchronous request transmission
20                           - Get the Configuration ROM
21                           - Query node ID
22                           - Query maximum speed of the path between this node
23                             and local node
24
25                   - The 1394 bus (i.e. "card") to which the node is attached to:
26                           - Isochronous stream transmission and reception
27                           - Asynchronous stream transmission and reception
28                           - Asynchronous broadcast request transmission
29                           - PHY packet transmission and reception
30                           - Allocate, reallocate, deallocate isochronous
31                             resources (channels, bandwidth) at the bus's IRM
32                           - Query node IDs of local node, root node, IRM, bus
33                             manager
34                           - Query cycle time
35                           - Bus reset initiation, bus reset event reception
36
37                   - All 1394 buses:
38                           - Allocation of IEEE 1212 address ranges on the local
39                             link layers, reception of inbound requests to such
40                             an address range, asynchronous response transmission
41                             to inbound requests
42                           - Addition of descriptors or directories to the local
43                             nodes' Configuration ROM
44
45                 Due to the different scope of operations and in order to let
46                 userland implement different access permission models, some
47                 operations are restricted to /dev/fw* files that are associated
48                 with a local node:
49
50                           - Addition of descriptors or directories to the local
51                             nodes' Configuration ROM
52                           - PHY packet transmission and reception
53
54                 A /dev/fw* file remains associated with one particular node
55                 during its entire life time.  Bus topology changes, and hence
56                 node ID changes, are tracked by firewire-core.  ABI users do not
57                 need to be aware of topology.
58
59                 The following file operations are supported:
60
61                 open(2)
62                 Currently the only useful flags are O_RDWR.
63
64                 ioctl(2)
65                 Initiate various actions.  Some take immediate effect, others
66                 are performed asynchronously while or after the ioctl returns.
67                 See the inline documentation in <linux/firewire-cdev.h> for
68                 descriptions of all ioctls.
69
70                 poll(2), select(2), epoll_wait(2) etc.
71                 Watch for events to become available to be read.
72
73                 read(2)
74                 Receive various events.  There are solicited events like
75                 outbound asynchronous transaction completion or isochronous
76                 buffer completion, and unsolicited events such as bus resets,
77                 request reception, or PHY packet reception.  Always use a read
78                 buffer which is large enough to receive the largest event that
79                 could ever arrive.  See <linux/firewire-cdev.h> for descriptions
80                 of all event types and for which ioctls affect reception of
81                 events.
82
83                 mmap(2)
84                 Allocate a DMA buffer for isochronous reception or transmission
85                 and map it into the process address space.  The arguments should
86                 be used as follows:  addr = NULL, length = the desired buffer
87                 size, i.e. number of packets times size of largest packet,
88                 prot = at least PROT_READ for reception and at least PROT_WRITE
89                 for transmission, flags = MAP_SHARED, fd = the handle to the
90                 /dev/fw*, offset = 0.
91
92                 Isochronous reception works in packet-per-buffer fashion except
93                 for multichannel reception which works in buffer-fill mode.
94
95                 munmap(2)
96                 Unmap the isochronous I/O buffer from the process address space.
97
98                 close(2)
99                 Besides stopping and freeing I/O contexts that were associated
100                 with the file descriptor, back out any changes to the local
101                 nodes' Configuration ROM.  Deallocate isochronous channels and
102                 bandwidth at the IRM that were marked for kernel-assisted
103                 re- and deallocation.
104
105 Users:          libraw1394
106                 libdc1394
107                 libhinawa
108                 tools like linux-firewire-utils, fwhack, ...