include: replace linux/module.h with "struct module" wherever possible
[linux-2.6/next.git] / drivers / staging / frontier / README
blobcd07af22406a1841314bd7469f8920ff5b8df353
1 This directory contains the Linux USB Tranzport and Alphatrack Kernel drivers.
3 See http://www.frontierdesign.com for details on these devices.
5 Userspace test code is available from
7 git://toutatis.isc.org/home/d/src/git/frontier.git
9 At present the tranzport does reads/writes of 8 byte cmds to
10 /dev/tranzport0 to control the lights, screen, and wheel.
12 At present the alphatrack accepts reads/writes of 12 byte cmds to
13 /dev/tranzport0 to control the lights, screen, fader and touchpad.
15 The tranzport driver provides a rudimentary sysfs interface for the status of
16 the device and a writable parameter for turning wheel compression on and off.
18 The API is nothing more than the USB commands issued to the device. Why?
20 The control wheel/fader can generate events far too quickly for
21 a typical userspace application to keep up with them via libusb. Input
22 needs to be 100% accurate and fast in order for the alphatrack or tranzport
23 to be useful.
25 UIO would be useful except that usb disconnect events need
26 to be handled correctly.
28 A sysfs interface is perfect for simple userspace apps to do fun things with
29 the lights and screen. But it's fairly lousy for handling input events and
30 very lousy for watching the state of the shuttle wheel.
32 A linux input events interface is great for the input events and shuttle wheel.
33 * It's theoretically OK on LEDs.
34 * A fader can be mapped to an absolute mouse device.
35 * But there is no LCD support at all, or fader feedback support in that API
37 So, thus, these stubby drivers exist.
39 In the end this could be driven by a midi layer, which handles all those
40 cases via a well defined API, but - among other things - is slow, doesn't do
41 flow control, and is a LOT of extra work, none of which is required at
42 the kernel level (probably). Frankly, I'd like to keep the
43 core driver simple because the only realtime work really required is
44 the bottom half interrupt handler and the output overlapping.
46 Exposing some sort of clean api to userspace would be perfect. What that
47 API looks like? Gah. beats me.