Commit 7355ba34 authored by Peter Hurley's avatar Peter Hurley Committed by Greg Kroah-Hartman
Browse files

staging: fwserial: Add TTY-over-Firewire serial driver



This patch provides the kernel driver for high-speed TTY
communication over the IEEE 1394 bus.

Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
Acked-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent fd985e1d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -146,4 +146,6 @@ source "drivers/staging/dgrp/Kconfig"

source "drivers/staging/sb105x/Kconfig"

source "drivers/staging/fwserial/Kconfig"

endif # STAGING
+1 −0
Original line number Diff line number Diff line
@@ -65,3 +65,4 @@ obj-$(CONFIG_CED1401) += ced1401/
obj-$(CONFIG_DRM_IMX)		+= imx-drm/
obj-$(CONFIG_DGRP)		+= dgrp/
obj-$(CONFIG_SB105X)		+= sb105x/
obj-$(CONFIG_FIREWIRE_SERIAL)	+= fwserial/
+9 −0
Original line number Diff line number Diff line
config FIREWIRE_SERIAL
       tristate "TTY over Firewire"
       depends on FIREWIRE
       help
          This enables TTY over IEEE 1394, providing high-speed serial
	  connectivity to cabled peers.

	  To compile this driver as a module, say M here:  the module will
	  be called firewire-serial.
+2 −0
Original line number Diff line number Diff line
obj-$(CONFIG_FIREWIRE_SERIAL) += firewire-serial.o
firewire-serial-objs := fwserial.o dma_fifo.o
+37 −0
Original line number Diff line number Diff line
TODOs
-----
1. Implement retries for RCODE_BUSY, RCODE_NO_ACK and RCODE_SEND_ERROR
   - I/O is handled asynchronously which presents some issues when error
     conditions occur.
2. Implement _robust_ console on top of this. The existing prototype console
   driver is not ready for the big leagues yet.
3. Expose means of controlling attach/detach of peers via sysfs. Include
   GUID-to-port matching/whitelist/blacklist.

-- Issues with firewire stack --
1. This driver uses the same unregistered vendor id that the firewire core does
     (0xd00d1e). Perhaps this could be exposed as a define in
     firewire-constants.h?
2. MAX_ASYNC_PAYLOAD needs to be publicly exposed by core/ohci
   - otherwise how will this driver know the max size of address window to
     open for one packet write?
3. Maybe device_max_receive() and link_speed_to_max_payload() should be
     taken up by the firewire core?
4. To avoid dropping rx data while still limiting the maximum buffering,
     the size of the AR context must be known. How to expose this to drivers?
5. Explore if bigger AR context will reduce RCODE_BUSY responses
   (or auto-grow to certain max size -- but this would require major surgery
    as the current AR is contiguously mapped)

-- Issues with TTY core --
  1. Hack for alternate device name scheme
     - because udev no longer allows device renaming, devices should have
       their proper names on creation. This is an issue for creating the
       fwloop<n> device with the fwtty<n> devices because although duplicating
       roughly the same operations as tty_port_register_device() isn't difficult,
       access to the tty_class & tty_fops is restricted in scope.

       This is currently being worked around in create_loop_device() by
       extracting the tty_class ptr and tty_fops ptr from the previously created
       tty devices. Perhaps an add'l api can be added -- eg.,
       tty_{port_}register_named_device().
Loading