What:		/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 <linux/firewire-cdev.h>.

		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 <linux/firewire-cdev.h> 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 <linux/firewire-cdev.h> 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
		tools like jujuutils, fwhack, ...
