summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2004-12-08 20:35:50 -0800
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-12-08 20:35:50 -0800
commitd3e8ea419c137eff86517cefe086549600800449 (patch)
tree8729c4ecc0fb97546f213641e090b3d2424a8030 /include/linux
parentf977cda1319bc928933e6d8dd21aa289f1ab4916 (diff)
[PATCH] USB: sl811-hcd driver, replaces hc_sl811
This patch provides a new "sl811-hcd" driver, which should replace the older one from Cypress (which has been broken for ages, even on SA-1100). Key features of this new driver: - Small, relatively tight code; - Uses the 2.6 platform_device and usbcore HCD infrastructures; - Compiles (x86, ARM) and works (ARM/PXA255); - Passed a day's worth of "usbtest" stress testing (on 2.6.9). I've enumerated over a dozen different devices with it, and actually tested mice, hubs, keyboards, and usb-storage. There's a hardware erratum that prevents this chip from working with certain external hubs. There's scope yet for some performance work here; and some IRQ quirks linger. This PIO-only driver should serve as a model for some other non-DMA USB host controllers (like isp1161, isp1362, td243) used in embedded Linuxes ... in particular, showing how to maintain async and periodic schedules without pointless emulation of OHCI DMA queues and/or registers. The driver should handle ISO, but since it doesn't implement the special urb->iso_frame_desc[] "pseudo-queue" model (and since Linux can't guarantee low enough IRQ latencies!), ISO is disabled. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/usb_sl811.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/include/linux/usb_sl811.h b/include/linux/usb_sl811.h
new file mode 100644
index 000000000000..4f2d012d7309
--- /dev/null
+++ b/include/linux/usb_sl811.h
@@ -0,0 +1,26 @@
+
+/*
+ * board initialization should put one of these into dev->platform_data
+ * and place the sl811hs onto platform_bus named "sl811-hcd".
+ */
+
+struct sl811_platform_data {
+ unsigned can_wakeup:1;
+
+ /* given port_power, msec/2 after power on till power good */
+ u8 potpg;
+
+ /* mA/2 power supplied on this port (max = default = 250) */
+ u8 power;
+
+ /* sl811 relies on an external source of VBUS current */
+ void (*port_power)(struct device *dev, int is_on);
+
+ /* pulse sl811 nRST (probably with a GPIO) */
+ void (*reset)(struct device *dev);
+
+ // some boards need something like these:
+ // int (*check_overcurrent)(struct device *dev);
+ // void (*clock_enable)(struct device *dev, int is_on);
+};
+