diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-04-17 14:18:47 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-04-17 14:18:47 -0700 |
commit | cc207335e8f292cfa2c5a07dc061d70cf9e208e4 (patch) | |
tree | f1d9985ed81818c2c05ab5a2e7e9886bd6e4d0da /usb | |
parent | 6e557362c302c4f46abdd9d35f3177ff295be9ba (diff) | |
download | patches-cc207335e8f292cfa2c5a07dc061d70cf9e208e4.tar.gz |
removed usb patches now in 2.6.17-rc1-git12
Diffstat (limited to 'usb')
38 files changed, 0 insertions, 5091 deletions
diff --git a/usb/hid-core.c-fix-input-irq-status-32-received-for-silvercrest-usb-keyboard.patch b/usb/hid-core.c-fix-input-irq-status-32-received-for-silvercrest-usb-keyboard.patch deleted file mode 100644 index e2839212c47e5..0000000000000 --- a/usb/hid-core.c-fix-input-irq-status-32-received-for-silvercrest-usb-keyboard.patch +++ /dev/null @@ -1,47 +0,0 @@ -From akpm@osdl.org Tue Mar 28 15:22:02 2006 -Message-Id: <200603282321.k2SNLg5T000638@shell0.pdx.osdl.net> -Subject: [patch 1/1] hid-core.c: fix "input irq status -32 received" for Silvercrest USB Keyboard -To: greg@kroah.com -Cc: akpm@osdl.org, jeffrey@wirehead.be, david-b@pacbell.net, stern@rowland.harvard.edu -From: akpm@osdl.org -Date: Tue, 28 Mar 2006 15:21:36 -0800 - - -From: Jeffrey Vandenbroucke sign <jeffrey@wirehead.be> - -When not using this patch, the kernel will continuously return "input irq -status -32 received", while making the keyboard unusable. This can be -easely resolved using HID_QUIRK_NOGET. Vendor-ID and Device-ID should be -applied to hid-core.c, and making an entry to make use of it. - -Signed-off-by: Jeffrey Vandenbroucke <jeffrey@wirehead.be> -Cc: Alan Stern <stern@rowland.harvard.edu> -Cc: Greg KH <greg@kroah.com> -Cc: David Brownell <david-b@pacbell.net> -Signed-off-by: Andrew Morton <akpm@osdl.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/input/hid-core.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/input/hid-core.c -+++ gregkh-2.6/drivers/usb/input/hid-core.c -@@ -1374,6 +1374,9 @@ void hid_close(struct hid_device *hid) - - #define USB_VENDOR_ID_PANJIT 0x134c - -+#define USB_VENDOR_ID_SILVERCREST 0x062a -+#define USB_DEVICE_ID_SILVERCREST_KB 0x0201 -+ - /* - * Initialize all reports - */ -@@ -1680,6 +1683,7 @@ static const struct hid_blacklist { - { USB_VENDOR_ID_HP, USB_DEVICE_ID_HP_USBHUB_KB, HID_QUIRK_NOGET }, - { USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET }, - { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_DUAL_USB_JOYPAD, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, -+ { USB_VENDOR_ID_SILVERCREST, USB_DEVICE_ID_SILVERCREST_KB, HID_QUIRK_NOGET }, - - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_POWERMOUSE, HID_QUIRK_2WHEEL_POWERMOUSE }, - { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 }, diff --git a/usb/usb-add-new-wacom-devices-to-usb-hid-core-list.patch b/usb/usb-add-new-wacom-devices-to-usb-hid-core-list.patch deleted file mode 100644 index 1fce219e1fa81..0000000000000 --- a/usb/usb-add-new-wacom-devices-to-usb-hid-core-list.patch +++ /dev/null @@ -1,37 +0,0 @@ -From pingc@wacom.com Wed Mar 29 16:34:19 2006 -Subject: [patch 2/2] USB: add new wacom devices to usb hid-core list -Date: Wed, 29 Mar 2006 16:34:16 -0800 -Message-ID: <6753EB6004AFF34FAA275742C104F9520174D1@wacom-nt10.wacom.com> -From: "Ping Cheng" <pingc@wacom.com> -To: <akpm@osdl.org>, "Greg Kroah-Hartman" <gregkh@suse.de>, - <vojtech@suse.cz>, <dtor_core@ameritech.net> - - -This patch adds support for DTF 521, Intuos3 12x12 and 12x19 - - - -Signed-off-by: Ping Cheng <pingc@wacom.com> -Acked-by: Vojtech Pavlik <vojtech@suse.cz> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - - ---- - drivers/usb/input/hid-core.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/input/hid-core.c -+++ gregkh-2.6/drivers/usb/input/hid-core.c -@@ -1657,9 +1657,12 @@ static const struct hid_blacklist { - { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3, HID_QUIRK_IGNORE }, - { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 1, HID_QUIRK_IGNORE }, - { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 2, HID_QUIRK_IGNORE }, -+ { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 3, HID_QUIRK_IGNORE }, -+ { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 4, HID_QUIRK_IGNORE }, - { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 5, HID_QUIRK_IGNORE }, - { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_CINTIQ, HID_QUIRK_IGNORE }, - { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_DTF, HID_QUIRK_IGNORE }, -+ { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_DTF + 3, HID_QUIRK_IGNORE }, - { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, - { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, - diff --git a/usb/usb-add-support-for-papouch-tmu.patch b/usb/usb-add-support-for-papouch-tmu.patch deleted file mode 100644 index 48cc7ea267e7b..0000000000000 --- a/usb/usb-add-support-for-papouch-tmu.patch +++ /dev/null @@ -1,64 +0,0 @@ -From kalin@thinrope.net Tue Mar 28 03:41:52 2006 -Message-ID: <442920E6.3020603@thinrope.net> -Date: Tue, 28 Mar 2006 20:41:26 +0900 -From: Kalin KOZHUHAROV <kalin@thinrope.net> -Cc: Greg KH <greg@kroah.com>, Folkert van Heusden <folkert@vanheusden.com> -Subject: USB: add support for Papouch TMU (USB thermometer) - -From: Folkert van Heusden <folkert@vanheusden.com> - -This patch adds support for new vendor (papouch) and one of their -devices - TMU (a USB thermometer). - -More information: -vendor homepage: - http://www.papouch.com/en/ -product homepage (Polish): - http://www.papouch.com/shop/scripts/_detail.asp?katcislo=0188 - -This patch is based on the submission from Folkert van Heusden [1]. -Then reviseted by Kalin KOZHUHAROV [2] and retested by Folkert. - -[1] http://article.gmane.org/gmane.linux.kernel/392970 -[2] http://article.gmane.org/gmane.linux.kernel/393386 - - - -Signed-off-by: Folkert van Heusden <folkert@vanheusden.com> -Signed-off-by: Kalin KOZHUHAROV <kalin@thinrope.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - - ---- - drivers/usb/serial/ftdi_sio.c | 1 + - drivers/usb/serial/ftdi_sio.h | 9 +++++++++ - 2 files changed, 10 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/serial/ftdi_sio.c -+++ gregkh-2.6/drivers/usb/serial/ftdi_sio.c -@@ -494,6 +494,7 @@ static struct usb_device_id id_table_com - { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_8900F_PID) }, - { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) }, - { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) }, -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) }, - { }, /* Optional parameter entry */ - { } /* Terminating entry */ - }; ---- gregkh-2.6.orig/drivers/usb/serial/ftdi_sio.h -+++ gregkh-2.6/drivers/usb/serial/ftdi_sio.h -@@ -405,6 +405,15 @@ - */ - #define FTDI_ECLO_COM_1WIRE_PID 0xEA90 /* COM to 1-Wire USB adaptor */ - -+/* -+ * Papouch products (http://www.papouch.com/) -+ * Submitted by Folkert van Heusden -+ */ -+ -+#define PAPOUCH_VID 0x5050 /* Vendor ID */ -+#define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */ -+ -+ - /* Commands */ - #define FTDI_SIO_RESET 0 /* Reset the port */ - #define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */ diff --git a/usb/usb-at91-usb-driver-supend-resume-fixes.patch b/usb/usb-at91-usb-driver-supend-resume-fixes.patch deleted file mode 100644 index 6816b2f43c8e9..0000000000000 --- a/usb/usb-at91-usb-driver-supend-resume-fixes.patch +++ /dev/null @@ -1,137 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 21:26:26 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: at91 usb driver supend/resume fixes -Date: Sun, 2 Apr 2006 20:26:21 -0800 -Cc: Greg KH <greg@kroah.com> -Message-Id: <200604022126.21844.david-b@pacbell.net> - -AT91: the two USB drivers (OHCI, UDC) got out of sync with various -usbcore and driver model PM updates; fix. - -Also minor fixes to ohci: whitespace/style, MODULE_ALIAS so coldplug works -using /sys/.../modalias, and turn off _both_ clocks during suspend. - -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - - ---- - drivers/usb/gadget/at91_udc.c | 4 ++-- - drivers/usb/host/ohci-at91.c | 35 +++++++++++++++++------------------ - 2 files changed, 19 insertions(+), 20 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/gadget/at91_udc.c -+++ gregkh-2.6/drivers/usb/gadget/at91_udc.c -@@ -1709,7 +1709,7 @@ static int __devexit at91udc_remove(stru - } - - #ifdef CONFIG_PM --static int at91udc_suspend(struct platform_device *dev, u32 state, u32 level) -+static int at91udc_suspend(struct platform_device *dev, pm_message_t mesg) - { - struct at91_udc *udc = platform_get_drvdata(dev); - -@@ -1731,7 +1731,7 @@ static int at91udc_suspend(struct platfo - return 0; - } - --static int at91udc_resume(struct platform_device *dev, u32 level) -+static int at91udc_resume(struct platform_device *dev) - { - struct at91_udc *udc = platform_get_drvdata(dev); - ---- gregkh-2.6.orig/drivers/usb/host/ohci-at91.c -+++ gregkh-2.6/drivers/usb/host/ohci-at91.c -@@ -20,7 +20,7 @@ - #include <asm/arch/board.h> - - #ifndef CONFIG_ARCH_AT91RM9200 --#error "This file is AT91RM9200 bus glue. CONFIG_ARCH_AT91RM9200 must be defined." -+#error "CONFIG_ARCH_AT91RM9200 must be defined." - #endif - - /* interface and function clocks */ -@@ -84,8 +84,6 @@ static int usb_hcd_at91_remove (struct u - * Allocates basic resources for this USB host controller, and - * then invokes the start() method for the HCD associated with it - * through the hotplug entry's driver_data. -- * -- * Store this function in the HCD's struct pci_driver as probe(). - */ - int usb_hcd_at91_probe (const struct hc_driver *driver, struct platform_device *pdev) - { -@@ -148,7 +146,6 @@ int usb_hcd_at91_probe (const struct hc_ - } - - --/* may be called without controller electrically present */ - /* may be called with controller, bus, and devices active */ - - /** -@@ -166,11 +163,11 @@ static int usb_hcd_at91_remove (struct u - usb_remove_hcd(hcd); - at91_stop_hc(pdev); - iounmap(hcd->regs); -- release_mem_region(hcd->rsrc_start, hcd->rsrc_len); -+ release_mem_region(hcd->rsrc_start, hcd->rsrc_len); - -- clk_put(fclk); -- clk_put(iclk); -- fclk = iclk = NULL; -+ clk_put(fclk); -+ clk_put(iclk); -+ fclk = iclk = NULL; - - dev_set_drvdata(&pdev->dev, NULL); - return 0; -@@ -235,8 +232,8 @@ static const struct hc_driver ohci_at91_ - .hub_control = ohci_hub_control, - - #ifdef CONFIG_PM -- .hub_suspend = ohci_hub_suspend, -- .hub_resume = ohci_hub_resume, -+ .bus_suspend = ohci_bus_suspend, -+ .bus_resume = ohci_bus_resume, - #endif - .start_port_reset = ohci_start_port_reset, - }; -@@ -254,21 +251,21 @@ static int ohci_hcd_at91_drv_remove(stru - } - - #ifdef CONFIG_PM --static int ohci_hcd_at91_drv_suspend(struct platform_device *dev, u32 state, u32 level) --{ -- printk("%s(%s:%d): not implemented yet\n", -- __func__, __FILE__, __LINE__); - -+/* REVISIT suspend/resume look "too" simple here */ -+ -+static int -+ohci_hcd_at91_drv_suspend(struct platform_device *dev, pm_message_t mesg) -+{ - clk_disable(fclk); -+ clk_disable(iclk); - - return 0; - } - --static int ohci_hcd_at91_drv_resume(struct platform_device *dev, u32 state) -+static int ohci_hcd_at91_drv_resume(struct platform_device *dev) - { -- printk("%s(%s:%d): not implemented yet\n", -- __func__, __FILE__, __LINE__); -- -+ clk_enable(iclk); - clk_enable(fclk); - - return 0; -@@ -278,6 +275,8 @@ static int ohci_hcd_at91_drv_resume(stru - #define ohci_hcd_at91_drv_resume NULL - #endif - -+MODULE_ALIAS("at91rm9200-ohci"); -+ - static struct platform_driver ohci_hcd_at91_driver = { - .probe = ohci_hcd_at91_drv_probe, - .remove = ohci_hcd_at91_drv_remove, diff --git a/usb/usb-cleanups-for-ohci-s3c2410.c.patch b/usb/usb-cleanups-for-ohci-s3c2410.c.patch deleted file mode 100644 index 5a98e0fe55be2..0000000000000 --- a/usb/usb-cleanups-for-ohci-s3c2410.c.patch +++ /dev/null @@ -1,51 +0,0 @@ -From ben@fluff.org.uk Tue Mar 21 14:56:19 2006 -Date: Tue, 21 Mar 2006 22:54:47 +0000 -From: Ben Dooks <ben-linux-usb@fluff.org> -To: linux-usb-devel@lists.sourceforge.net, greg@kroah.com -Subject: USB: cleanups for ohci-s3c2410.c -Message-ID: <20060321225447.GA6198@home.fluff.org> -Content-Disposition: inline - - -Fix compile errors due to functions not being -defined static - -Signed-off-by: Ben Dooks <ben-linux@fluff.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/host/ohci-s3c2410.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/host/ohci-s3c2410.c -+++ gregkh-2.6/drivers/usb/host/ohci-s3c2410.c -@@ -37,7 +37,7 @@ static void s3c2410_hcd_oc(struct s3c241 - - /* conversion functions */ - --struct s3c2410_hcd_info *to_s3c2410_info(struct usb_hcd *hcd) -+static struct s3c2410_hcd_info *to_s3c2410_info(struct usb_hcd *hcd) - { - return hcd->self.controller->platform_data; - } -@@ -316,7 +316,8 @@ static void s3c2410_hcd_oc(struct s3c241 - * - */ - --void usb_hcd_s3c2410_remove (struct usb_hcd *hcd, struct platform_device *dev) -+static void -+usb_hcd_s3c2410_remove (struct usb_hcd *hcd, struct platform_device *dev) - { - usb_remove_hcd(hcd); - s3c2410_stop_hc(dev); -@@ -334,8 +335,8 @@ void usb_hcd_s3c2410_remove (struct usb_ - * through the hotplug entry's driver_data. - * - */ --int usb_hcd_s3c2410_probe (const struct hc_driver *driver, -- struct platform_device *dev) -+static int usb_hcd_s3c2410_probe (const struct hc_driver *driver, -+ struct platform_device *dev) - { - struct usb_hcd *hcd = NULL; - int retval; diff --git a/usb/usb-drivers-usb-core-remove-unused-exports.patch b/usb/usb-drivers-usb-core-remove-unused-exports.patch deleted file mode 100644 index 48830b4604ff8..0000000000000 --- a/usb/usb-drivers-usb-core-remove-unused-exports.patch +++ /dev/null @@ -1,50 +0,0 @@ -From bunk@stusta.de Tue Apr 4 00:56:30 2006 -Date: Tue, 4 Apr 2006 09:56:04 +0200 -From: Adrian Bunk <bunk@stusta.de> -To: gregkh@suse.de -Cc: linux-usb-devel@lists.sourceforge.net -Subject: USB: drivers/usb/core/: remove unused exports -Message-ID: <20060404075604.GE6529@stusta.de> -Content-Disposition: inline - -This patch removes the following unused EXPORT_SYMBOL's: -- hub.c: usb_set_device_state -- usb.c: usb_alloc_dev -- usb.c: usb_disconnect - -Signed-off-by: Adrian Bunk <bunk@stusta.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/core/hub.c | 1 - - drivers/usb/core/usb.c | 2 -- - 2 files changed, 3 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/core/hub.c -+++ gregkh-2.6/drivers/usb/core/hub.c -@@ -1022,7 +1022,6 @@ void usb_set_device_state(struct usb_dev - recursively_mark_NOTATTACHED(udev); - spin_unlock_irqrestore(&device_state_lock, flags); - } --EXPORT_SYMBOL(usb_set_device_state); - - - #ifdef CONFIG_PM ---- gregkh-2.6.orig/drivers/usb/core/usb.c -+++ gregkh-2.6/drivers/usb/core/usb.c -@@ -1194,7 +1194,6 @@ EXPORT_SYMBOL(usb_disabled); - EXPORT_SYMBOL_GPL(usb_get_intf); - EXPORT_SYMBOL_GPL(usb_put_intf); - --EXPORT_SYMBOL(usb_alloc_dev); - EXPORT_SYMBOL(usb_put_dev); - EXPORT_SYMBOL(usb_get_dev); - EXPORT_SYMBOL(usb_hub_tt_clear_buffer); -@@ -1208,7 +1207,6 @@ EXPORT_SYMBOL(usb_ifnum_to_if); - EXPORT_SYMBOL(usb_altnum_to_altsetting); - - EXPORT_SYMBOL(usb_reset_device); --EXPORT_SYMBOL(usb_disconnect); - - EXPORT_SYMBOL(__usb_get_extra_descriptor); - diff --git a/usb/usb-fix-gadget_is_musbhdrc.patch b/usb/usb-fix-gadget_is_musbhdrc.patch deleted file mode 100644 index 8f8c91547d4ea..0000000000000 --- a/usb/usb-fix-gadget_is_musbhdrc.patch +++ /dev/null @@ -1,34 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 11:38:12 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: fix gadget_is_musbhdrc() -Date: Sun, 2 Apr 2006 10:18:34 -0800 -Cc: Greg KH <greg@kroah.com> -Message-Id: <200604021118.34657.david-b@pacbell.net> - -I submitted the wrong version of the patch teaching about the driver -for Mentor's Highspeed Dual Role Controller (HDRC), whoops! This -uses the right name for that driver. - -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/gadget/gadget_chips.h | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/gadget/gadget_chips.h -+++ gregkh-2.6/drivers/usb/gadget/gadget_chips.h -@@ -100,9 +100,9 @@ - #define gadget_is_musbhsfc(g) 0 - #endif - --/* Mentor high speed "dual role" controller, peripheral mode */ --#ifdef CONFIG_USB_GADGET_MUSBHDRC --#define gadget_is_musbhdrc(g) !strcmp("musbhdrc_udc", (g)->name) -+/* Mentor high speed "dual role" controller, in peripheral role */ -+#ifdef CONFIG_USB_GADGET_MUSB_HDRC -+#define gadget_is_musbhdrc(g) !strcmp("musb_hdrc", (g)->name) - #else - #define gadget_is_musbhdrc(g) 0 - #endif diff --git a/usb/usb-ftdi_sio-add-support-for-eclo-com-to-1-wire-usb-adapter.patch b/usb/usb-ftdi_sio-add-support-for-eclo-com-to-1-wire-usb-adapter.patch deleted file mode 100644 index 4606d44b1863f..0000000000000 --- a/usb/usb-ftdi_sio-add-support-for-eclo-com-to-1-wire-usb-adapter.patch +++ /dev/null @@ -1,46 +0,0 @@ -From ian.abbott@mev.co.uk Tue Mar 21 06:55:57 2006 -Message-ID: <442013D8.40902@mev.co.uk> -Date: Tue, 21 Mar 2006 14:55:20 +0000 -From: Ian Abbott <abbotti@mev.co.uk> -Cc: Greg KH <greg@kroah.com>, Martin Grill <m.grill@lancaster.ac.uk> -Subject: USB: ftdi_sio: add support for Eclo COM to 1-Wire USB adapter - -This patch adds support for the Eclo COM to 1-Wire USB adapter -<http://www.eclo.pt/products_ibutton_adapters_usb01_en.asp> to the -ftdi_sio driver's device ID table. Details were provided by Martin -Grill on the ftdi-sio-usb-devel mailing list and I (Ian Abbott) -confirmed it matched the INF file in the Eclo's Windows driver package. - -Signed-off-by: Ian Abbott <abbotti@mev.co.uk> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/serial/ftdi_sio.c | 1 + - drivers/usb/serial/ftdi_sio.h | 6 ++++++ - 2 files changed, 7 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/serial/ftdi_sio.c -+++ gregkh-2.6/drivers/usb/serial/ftdi_sio.c -@@ -489,6 +489,7 @@ static struct usb_device_id id_table_com - { USB_DEVICE(KOBIL_VID, KOBIL_CONV_KAAN_PID) }, - { USB_DEVICE(POSIFLEX_VID, POSIFLEX_PP7000_PID) }, - { USB_DEVICE(FTDI_VID, FTDI_TTUSB_PID) }, -+ { USB_DEVICE(FTDI_VID, FTDI_ECLO_COM_1WIRE_PID) }, - { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_777_PID) }, - { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_8900F_PID) }, - { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) }, ---- gregkh-2.6.orig/drivers/usb/serial/ftdi_sio.h -+++ gregkh-2.6/drivers/usb/serial/ftdi_sio.h -@@ -399,6 +399,12 @@ - #define FTDI_WESTREX_MODEL_777_PID 0xDC00 /* Model 777 */ - #define FTDI_WESTREX_MODEL_8900F_PID 0xDC01 /* Model 8900F */ - -+/* -+ * Eclo (http://www.eclo.pt/) product IDs. -+ * PID 0xEA90 submitted by Martin Grill. -+ */ -+#define FTDI_ECLO_COM_1WIRE_PID 0xEA90 /* COM to 1-Wire USB adaptor */ -+ - /* Commands */ - #define FTDI_SIO_RESET 0 /* Reset the port */ - #define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */ diff --git a/usb/usb-funsoft.patch b/usb/usb-funsoft.patch deleted file mode 100644 index 70c3f81d6b26e..0000000000000 --- a/usb/usb-funsoft.patch +++ /dev/null @@ -1,108 +0,0 @@ -From: Greg Kroah-Hartman <gregkh@suse.de> -Subject: USB: add driver for funsoft usb serial device - -Cc: David Clare <david@funsoft.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/serial/Kconfig | 9 +++++ - drivers/usb/serial/Makefile | 1 - drivers/usb/serial/funsoft.c | 65 +++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 75 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/serial/Kconfig -+++ gregkh-2.6/drivers/usb/serial/Kconfig -@@ -158,6 +158,15 @@ config USB_SERIAL_FTDI_SIO - To compile this driver as a module, choose M here: the - module will be called ftdi_sio. - -+config USB_SERIAL_FUNSOFT -+ tristate "USB Fundamental Software Dongle Driver" -+ depends on USB_SERIAL -+ ---help--- -+ Say Y here if you want to use the Fundamental Software dongle. -+ -+ To compile this driver as a module, choose M here: the -+ module will be called funsoft. -+ - config USB_SERIAL_VISOR - tristate "USB Handspring Visor / Palm m50x / Sony Clie Driver" - depends on USB_SERIAL ---- gregkh-2.6.orig/drivers/usb/serial/Makefile -+++ gregkh-2.6/drivers/usb/serial/Makefile -@@ -22,6 +22,7 @@ obj-$(CONFIG_USB_SERIAL_EDGEPORT) += io - obj-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += io_ti.o - obj-$(CONFIG_USB_SERIAL_EMPEG) += empeg.o - obj-$(CONFIG_USB_SERIAL_FTDI_SIO) += ftdi_sio.o -+obj-$(CONFIG_USB_SERIAL_FUNSOFT) += funsoft.o - obj-$(CONFIG_USB_SERIAL_GARMIN) += garmin_gps.o - obj-$(CONFIG_USB_SERIAL_HP4X) += hp4x.o - obj-$(CONFIG_USB_SERIAL_IPAQ) += ipaq.o ---- /dev/null -+++ gregkh-2.6/drivers/usb/serial/funsoft.c -@@ -0,0 +1,65 @@ -+/* -+ * Funsoft Serial USB driver -+ * -+ * Copyright (C) 2006 Greg Kroah-Hartman <gregkh@suse.de> -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License version -+ * 2 as published by the Free Software Foundation. -+ */ -+ -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/tty.h> -+#include <linux/module.h> -+#include <linux/usb.h> -+#include "usb-serial.h" -+ -+static struct usb_device_id id_table [] = { -+ { USB_DEVICE(0x1404, 0xcddc) }, -+ { }, -+}; -+MODULE_DEVICE_TABLE(usb, id_table); -+ -+static struct usb_driver funsoft_driver = { -+ .name = "funsoft", -+ .probe = usb_serial_probe, -+ .disconnect = usb_serial_disconnect, -+ .id_table = id_table, -+ .no_dynamic_id = 1, -+}; -+ -+static struct usb_serial_driver funsoft_device = { -+ .driver = { -+ .owner = THIS_MODULE, -+ .name = "funsoft", -+ }, -+ .id_table = id_table, -+ .num_interrupt_in = NUM_DONT_CARE, -+ .num_bulk_in = NUM_DONT_CARE, -+ .num_bulk_out = NUM_DONT_CARE, -+ .num_ports = 1, -+}; -+ -+static int __init funsoft_init(void) -+{ -+ int retval; -+ -+ retval = usb_serial_register(&funsoft_device); -+ if (retval) -+ return retval; -+ retval = usb_register(&funsoft_driver); -+ if (retval) -+ usb_serial_deregister(&funsoft_device); -+ return retval; -+} -+ -+static void __exit funsoft_exit(void) -+{ -+ usb_deregister(&funsoft_driver); -+ usb_serial_deregister(&funsoft_device); -+} -+ -+module_init(funsoft_init); -+module_exit(funsoft_exit); -+MODULE_LICENSE("GPL"); diff --git a/usb/usb-g_ether-highspeed-conformance-fix.patch b/usb/usb-g_ether-highspeed-conformance-fix.patch deleted file mode 100644 index 079f846535336..0000000000000 --- a/usb/usb-g_ether-highspeed-conformance-fix.patch +++ /dev/null @@ -1,42 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 11:38:18 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: g_ether, highspeed conformance fix -Date: Sun, 2 Apr 2006 10:20:43 -0800 -Cc: Greg KH <greg@kroah.com> -Content-Disposition: inline -Message-Id: <200604021120.43627.david-b@pacbell.net> - -Be sure to record the peripheral's ep0 maxpacket size BEFORE using -that to initialize the (high speed) device qualifier; that helps a -lot with USBCV testing. - -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/gadget/ether.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/gadget/ether.c -+++ gregkh-2.6/drivers/usb/gadget/ether.c -@@ -2338,6 +2338,9 @@ autoconf_fail: - hs_subset_descriptors(); - } - -+ device_desc.bMaxPacketSize0 = gadget->ep0->maxpacket; -+ usb_gadget_set_selfpowered (gadget); -+ - /* For now RNDIS is always a second config */ - if (rndis) - device_desc.bNumConfigurations = 2; -@@ -2361,9 +2364,6 @@ autoconf_fail: - #endif - #endif /* DUALSPEED */ - -- device_desc.bMaxPacketSize0 = gadget->ep0->maxpacket; -- usb_gadget_set_selfpowered (gadget); -- - if (gadget->is_otg) { - otg_descriptor.bmAttributes |= USB_OTG_HNP, - eth_config.bmAttributes |= USB_CONFIG_ATT_WAKEUP; diff --git a/usb/usb-g_file_storage-add-comment-about-buffer-allocation.patch b/usb/usb-g_file_storage-add-comment-about-buffer-allocation.patch deleted file mode 100644 index ac272b253b515..0000000000000 --- a/usb/usb-g_file_storage-add-comment-about-buffer-allocation.patch +++ /dev/null @@ -1,44 +0,0 @@ -From stern@rowland.harvard.edu Thu Mar 23 12:07:29 2006 -Date: Thu, 23 Mar 2006 15:07:25 -0500 (EST) -From: Alan Stern <stern@rowland.harvard.edu> -To: Greg KH <greg@kroah.com> -Subject: USB: g_file_storage: add comment about buffer allocation -Message-ID: <Pine.LNX.4.44L0.0603231505170.4830-100000@iolanthe.rowland.org> - -This patch (as664) adds a comment to file_storage.c, noting that the -driver is slightly non-portable because it assumes that a buffer -allocated for a bulk-in endpoint will also be useable for a bulk-out -endpoint. - -Signed-off-by: Alan Stern <stern@rowland.harvard.edu> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/gadget/file_storage.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/gadget/file_storage.c -+++ gregkh-2.6/drivers/usb/gadget/file_storage.c -@@ -71,6 +71,12 @@ - * requirement amounts to two 16K buffers, size configurable by a parameter. - * Support is included for both full-speed and high-speed operation. - * -+ * Note that the driver is slightly non-portable in that it assumes a -+ * single memory/DMA buffer will be useable for bulk-in, bulk-out, and -+ * interrupt-in endpoints. With most device controllers this isn't an -+ * issue, but there may be some with hardware restrictions that prevent -+ * a buffer from being used by more than one endpoint. -+ * - * Module options: - * - * file=filename[,filename...] -@@ -3956,6 +3962,9 @@ static int __init fsg_bind(struct usb_ga - for (i = 0; i < NUM_BUFFERS; ++i) { - struct fsg_buffhd *bh = &fsg->buffhds[i]; - -+ /* Allocate for the bulk-in endpoint. We assume that -+ * the buffer will also work with the bulk-out (and -+ * interrupt-in) endpoint. */ - bh->buf = usb_ep_alloc_buffer(fsg->bulk_in, mod_data.buflen, - &bh->dma, GFP_KERNEL); - if (!bh->buf) diff --git a/usb/usb-g_file_storage-set-short_not_ok-for-bulk-out-transfers.patch b/usb/usb-g_file_storage-set-short_not_ok-for-bulk-out-transfers.patch deleted file mode 100644 index 530b3c9006ead..0000000000000 --- a/usb/usb-g_file_storage-set-short_not_ok-for-bulk-out-transfers.patch +++ /dev/null @@ -1,46 +0,0 @@ -From stern@rowland.harvard.edu Thu Mar 23 12:05:19 2006 -Date: Thu, 23 Mar 2006 15:05:16 -0500 (EST) -From: Alan Stern <stern@rowland.harvard.edu> -To: Greg KH <greg@kroah.com> -Subject: USB: g_file_storage: Set short_not_ok for bulk-out transfers -Message-ID: <Pine.LNX.4.44L0.0603231500350.4830-100000@iolanthe.rowland.org> - -I'm told that some UDC hardware may work better if it knows that -receiving a short packet should always cause an error. Accordingly, -this patch (as663) sets the short_not_ok flag for bulk-out transfers in -g_file_storage. Oddly enough, there are no circumstances where that -driver can legally receive a shorter-than-expected bulk-out packet. - -Signed-off-by: Alan Stern <stern@rowland.harvard.edu> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/gadget/file_storage.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/gadget/file_storage.c -+++ gregkh-2.6/drivers/usb/gadget/file_storage.c -@@ -1795,6 +1795,7 @@ static int do_write(struct fsg_dev *fsg) - * the bulk-out maxpacket size */ - bh->outreq->length = bh->bulk_out_intended_length = - amount; -+ bh->outreq->short_not_ok = 1; - start_transfer(fsg, fsg->bulk_out, bh->outreq, - &bh->outreq_busy, &bh->state); - fsg->next_buffhd_to_fill = bh->next; -@@ -2398,6 +2399,7 @@ static int throw_away_data(struct fsg_de - * the bulk-out maxpacket size */ - bh->outreq->length = bh->bulk_out_intended_length = - amount; -+ bh->outreq->short_not_ok = 1; - start_transfer(fsg, fsg->bulk_out, bh->outreq, - &bh->outreq_busy, &bh->state); - fsg->next_buffhd_to_fill = bh->next; -@@ -3029,6 +3031,7 @@ static int get_next_command(struct fsg_d - - /* Queue a request to read a Bulk-only CBW */ - set_bulk_out_req_length(fsg, bh, USB_BULK_CB_WRAP_LEN); -+ bh->outreq->short_not_ok = 1; - start_transfer(fsg, fsg->bulk_out, bh->outreq, - &bh->outreq_busy, &bh->state); - diff --git a/usb/usb-g_file_storage-use-module_param_array_named-macro.patch b/usb/usb-g_file_storage-use-module_param_array_named-macro.patch deleted file mode 100644 index 3d63bf72c9107..0000000000000 --- a/usb/usb-g_file_storage-use-module_param_array_named-macro.patch +++ /dev/null @@ -1,86 +0,0 @@ -From stern@rowland.harvard.edu Fri Mar 31 08:46:55 2006 -Date: Fri, 31 Mar 2006 11:46:43 -0500 (EST) -From: Alan Stern <stern@rowland.harvard.edu> -To: Greg KH <greg@kroah.com> -cc: Pat LaVarre <p.lavarre@ieee.org> -Subject: USB: g_file_storage: use module_param_array_named macro -Message-ID: <Pine.LNX.4.44L0.0603311141240.5091-100000@iolanthe.rowland.org> - -Randy Dunlap pointed out that there now is a module_param_array_named -macro available. This patch (as666) updates g_file_storage to make use of -it. It also adds a comment listing the specifications documents used in -the design of the driver's SCSI operation (at Pat LaVarre's request). - -Signed-off-by: Alan Stern <stern@rowland.harvard.edu> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/gadget/file_storage.c | 26 +++++++++++++++++--------- - 1 file changed, 17 insertions(+), 9 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/gadget/file_storage.c -+++ gregkh-2.6/drivers/usb/gadget/file_storage.c -@@ -114,6 +114,14 @@ - * setting are not allowed when the medium is loaded. - * - * This gadget driver is heavily based on "Gadget Zero" by David Brownell. -+ * The driver's SCSI command interface was based on the "Information -+ * technology - Small Computer System Interface - 2" document from -+ * X3T9.2 Project 375D, Revision 10L, 7-SEP-93, available at -+ * <http://www.t10.org/ftp/t10/drafts/s2/s2-r10l.pdf>. The single exception -+ * is opcode 0x23 (READ FORMAT CAPACITIES), which was based on the -+ * "Universal Serial Bus Mass Storage Class UFI Command Specification" -+ * document, Revision 1.0, December 14, 1998, available at -+ * <http://www.usb.org/developers/devclass_docs/usbmass-ufi10.pdf>. - */ - - -@@ -340,11 +348,9 @@ MODULE_LICENSE("Dual BSD/GPL"); - - #define MAX_LUNS 8 - -- /* Arggh! There should be a module_param_array_named macro! */ --static char *file[MAX_LUNS]; --static int ro[MAX_LUNS]; -- - static struct { -+ char *file[MAX_LUNS]; -+ int ro[MAX_LUNS]; - int num_filenames; - int num_ros; - unsigned int nluns; -@@ -376,10 +382,11 @@ static struct { - }; - - --module_param_array(file, charp, &mod_data.num_filenames, S_IRUGO); -+module_param_array_named(file, mod_data.file, charp, &mod_data.num_filenames, -+ S_IRUGO); - MODULE_PARM_DESC(file, "names of backing files or devices"); - --module_param_array(ro, bool, &mod_data.num_ros, S_IRUGO); -+module_param_array_named(ro, mod_data.ro, bool, &mod_data.num_ros, S_IRUGO); - MODULE_PARM_DESC(ro, "true to force read-only"); - - module_param_named(luns, mod_data.nluns, uint, S_IRUGO); -@@ -3868,7 +3875,7 @@ static int __init fsg_bind(struct usb_ga - - for (i = 0; i < fsg->nluns; ++i) { - curlun = &fsg->luns[i]; -- curlun->ro = ro[i]; -+ curlun->ro = mod_data.ro[i]; - curlun->dev.parent = &gadget->dev; - curlun->dev.driver = &fsg_driver.driver; - dev_set_drvdata(&curlun->dev, fsg); -@@ -3885,8 +3892,9 @@ static int __init fsg_bind(struct usb_ga - kref_get(&fsg->ref); - } - -- if (file[i] && *file[i]) { -- if ((rc = open_backing_file(curlun, file[i])) != 0) -+ if (mod_data.file[i] && *mod_data.file[i]) { -+ if ((rc = open_backing_file(curlun, -+ mod_data.file[i])) != 0) - goto out; - } else if (!mod_data.removable) { - ERROR(fsg, "no file given for LUN%d\n", i); diff --git a/usb/usb-gadget-zero-poisons-out-buffers.patch b/usb/usb-gadget-zero-poisons-out-buffers.patch deleted file mode 100644 index f0deee8ecd3f5..0000000000000 --- a/usb/usb-gadget-zero-poisons-out-buffers.patch +++ /dev/null @@ -1,42 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 11:38:18 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: gadget zero poisons OUT buffers -Date: Sun, 2 Apr 2006 10:19:43 -0800 -Cc: Greg KH <greg@kroah.com> -Message-Id: <200604021119.43576.david-b@pacbell.net> - -Fill OUT buffers with 0x55 before RX, so that controller driver -bugs that mangle data can be more readily detected during testing. - -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/gadget/zero.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/gadget/zero.c -+++ gregkh-2.6/drivers/usb/gadget/zero.c -@@ -572,9 +572,10 @@ static void source_sink_complete (struct - switch (status) { - - case 0: /* normal completion? */ -- if (ep == dev->out_ep) -+ if (ep == dev->out_ep) { - check_read_data (dev, ep, req); -- else -+ memset (req->buf, 0x55, req->length); -+ } else - reinit_write_data (dev, ep, req); - break; - -@@ -626,6 +627,8 @@ source_sink_start_ep (struct usb_ep *ep, - - if (strcmp (ep->name, EP_IN_NAME) == 0) - reinit_write_data (ep->driver_data, ep, req); -+ else -+ memset (req->buf, 0x55, req->length); - - status = usb_ep_queue (ep, req, gfp_flags); - if (status) { diff --git a/usb/usb-gadgetfs-highspeed-bugfix.patch b/usb/usb-gadgetfs-highspeed-bugfix.patch deleted file mode 100644 index 89319362baaec..0000000000000 --- a/usb/usb-gadgetfs-highspeed-bugfix.patch +++ /dev/null @@ -1,122 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 11:38:18 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: gadgetfs highspeed bugfix -Date: Sun, 2 Apr 2006 10:19:23 -0800 -Cc: Greg KH <greg@kroah.com> -Message-Id: <200604021119.24169.david-b@pacbell.net> - -This catches up to a change in the Kconfig support for highspeed modes; -the change predated 2.6.10, and anyone using gadgetfs on a highspeed -device would see the kernel wrongly reject the alternate descriptors. - -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/gadget/inode.c | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/gadget/inode.c -+++ gregkh-2.6/drivers/usb/gadget/inode.c -@@ -810,7 +810,7 @@ ep_config (struct file *fd, const char _ - if (value == 0) - data->state = STATE_EP_ENABLED; - break; --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - case USB_SPEED_HIGH: - /* fails if caller didn't provide that descriptor... */ - value = usb_ep_enable (ep, &data->hs_desc); -@@ -982,7 +982,7 @@ ep0_read (struct file *fd, char __user * - /* assume that was SET_CONFIGURATION */ - if (dev->current_config) { - unsigned power; --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - if (dev->gadget->speed == USB_SPEED_HIGH) - power = dev->hs_config->bMaxPower; - else -@@ -1262,7 +1262,7 @@ static struct file_operations ep0_io_ope - * Unrecognized ep0 requests may be handled in user space. - */ - --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - static void make_qualifier (struct dev_data *dev) - { - struct usb_qualifier_descriptor qual; -@@ -1291,7 +1291,7 @@ static int - config_buf (struct dev_data *dev, u8 type, unsigned index) - { - int len; --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - int hs; - #endif - -@@ -1299,7 +1299,7 @@ config_buf (struct dev_data *dev, u8 typ - if (index > 0) - return -EINVAL; - --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - hs = (dev->gadget->speed == USB_SPEED_HIGH); - if (type == USB_DT_OTHER_SPEED_CONFIG) - hs = !hs; -@@ -1335,12 +1335,12 @@ gadgetfs_setup (struct usb_gadget *gadge - dev->state = STATE_CONNECTED; - dev->dev->bMaxPacketSize0 = gadget->ep0->maxpacket; - --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - if (gadget->speed == USB_SPEED_HIGH && dev->hs_config == 0) { - ERROR (dev, "no high speed config??\n"); - return -EINVAL; - } --#endif /* HIGHSPEED */ -+#endif /* CONFIG_USB_GADGET_DUALSPEED */ - - INFO (dev, "connected\n"); - event = next_event (dev, GADGETFS_CONNECT); -@@ -1352,11 +1352,11 @@ gadgetfs_setup (struct usb_gadget *gadge - /* ... down_trylock (&data->lock) ... */ - if (data->state != STATE_EP_DEFER_ENABLE) - continue; --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - if (gadget->speed == USB_SPEED_HIGH) - value = usb_ep_enable (ep, &data->hs_desc); - else --#endif /* HIGHSPEED */ -+#endif /* CONFIG_USB_GADGET_DUALSPEED */ - value = usb_ep_enable (ep, &data->desc); - if (value) { - ERROR (dev, "deferred %s enable --> %d\n", -@@ -1391,7 +1391,7 @@ gadgetfs_setup (struct usb_gadget *gadge - value = min (w_length, (u16) sizeof *dev->dev); - req->buf = dev->dev; - break; --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - case USB_DT_DEVICE_QUALIFIER: - if (!dev->hs_config) - break; -@@ -1428,7 +1428,7 @@ gadgetfs_setup (struct usb_gadget *gadge - // user mode expected to disable endpoints - } else { - u8 config, power; --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - if (gadget->speed == USB_SPEED_HIGH) { - config = dev->hs_config->bConfigurationValue; - power = dev->hs_config->bMaxPower; -@@ -1728,7 +1728,7 @@ gadgetfs_suspend (struct usb_gadget *gad - } - - static struct usb_gadget_driver gadgetfs_driver = { --#ifdef HIGHSPEED -+#ifdef CONFIG_USB_GADGET_DUALSPEED - .speed = USB_SPEED_HIGH, - #else - .speed = USB_SPEED_FULL, diff --git a/usb/usb-input-proper-prototypes.patch b/usb/usb-input-proper-prototypes.patch deleted file mode 100644 index 5e70b12e46b0e..0000000000000 --- a/usb/usb-input-proper-prototypes.patch +++ /dev/null @@ -1,45 +0,0 @@ -From bunk@stusta.de Sat Mar 25 09:03:43 2006 -Date: Sat, 25 Mar 2006 18:03:38 +0100 -From: Adrian Bunk <bunk@stusta.de> -To: gregkh@suse.de -Subject: USB: input/: proper prototypes -Message-ID: <20060325170338.GF4053@stusta.de> -Content-Disposition: inline - -This patch adds proper prototypes in a header file for some global -functions. - -Signed-off-by: Adrian Bunk <bunk@stusta.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/input/hid-ff.c | 6 ------ - drivers/usb/input/hid.h | 5 +++++ - 2 files changed, 5 insertions(+), 6 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/input/hid-ff.c -+++ gregkh-2.6/drivers/usb/input/hid-ff.c -@@ -34,12 +34,6 @@ - - #include "hid.h" - --/* Drivers' initializing functions */ --extern int hid_lgff_init(struct hid_device* hid); --extern int hid_lg3d_init(struct hid_device* hid); --extern int hid_pid_init(struct hid_device* hid); --extern int hid_tmff_init(struct hid_device* hid); -- - /* - * This table contains pointers to initializers. To add support for new - * devices, you need to add the USB vendor and product ids here. ---- gregkh-2.6.orig/drivers/usb/input/hid.h -+++ gregkh-2.6/drivers/usb/input/hid.h -@@ -533,3 +533,8 @@ static inline int hid_ff_event(struct hi - return hid->ff_event(hid, input, type, code, value); - return -ENOSYS; - } -+ -+int hid_lgff_init(struct hid_device* hid); -+int hid_tmff_init(struct hid_device* hid); -+int hid_pid_init(struct hid_device* hid); -+ diff --git a/usb/usb-input-remove-kconfig-entries-of-old-touchscreen-drivers-in-favour-of-usbtouchscreen.patch b/usb/usb-input-remove-kconfig-entries-of-old-touchscreen-drivers-in-favour-of-usbtouchscreen.patch deleted file mode 100644 index bdd363345744f..0000000000000 --- a/usb/usb-input-remove-kconfig-entries-of-old-touchscreen-drivers-in-favour-of-usbtouchscreen.patch +++ /dev/null @@ -1,64 +0,0 @@ -From daniel.ritz-ml@swissonline.ch Sat Apr 1 08:18:57 2006 -From: Daniel Ritz <daniel.ritz-ml@swissonline.ch> -To: Greg KH <greg@kroah.com> -Subject: usb/input: remove Kconfig entries of old touchscreen drivers in favour of usbtouchscreen -Date: Sat, 1 Apr 2006 18:19:28 +0200 -Cc: <dtor_core@ameritech.net> -Message-Id: <200604011819.29439.daniel.ritz-ml@swissonline.ch> - -Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/input/Kconfig | 40 ---------------------------------------- - 1 file changed, 40 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/input/Kconfig -+++ gregkh-2.6/drivers/usb/input/Kconfig -@@ -236,46 +236,6 @@ config USB_TOUCHSCREEN_ITM - bool "ITM device support" if EMBEDDED - depends on USB_TOUCHSCREEN - --config USB_MTOUCH -- tristate "MicroTouch USB Touchscreen Driver" -- depends on USB && INPUT && !USB_TOUCHSCREEN_3M -- ---help--- -- Say Y here if you want to use a MicroTouch (Now 3M) USB -- Touchscreen controller. -- -- See <file:Documentation/usb/mtouch.txt> for additional information. -- -- To compile this driver as a module, choose M here: the -- module will be called mtouchusb. -- --config USB_ITMTOUCH -- tristate "ITM Touch USB Touchscreen Driver" -- depends on USB && INPUT && !USB_TOUCHSCREEN_ITM -- ---help--- -- Say Y here if you want to use a ITM Touch USB -- Touchscreen controller. -- -- This touchscreen is used in LG 1510SF monitors. -- -- To compile this driver as a module, choose M here: the -- module will be called itmtouch. -- --config USB_EGALAX -- tristate "eGalax TouchKit USB Touchscreen Driver" -- depends on USB && INPUT && !USB_TOUCHSCREEN_EGALAX -- ---help--- -- Say Y here if you want to use a eGalax TouchKit USB -- Touchscreen controller. -- -- The driver has been tested on a Xenarc 700TSV monitor -- with eGalax touchscreen. -- -- Have a look at <http://linux.chapter7.ch/touchkit/> for -- a usage description and the required user-space stuff. -- -- To compile this driver as a module, choose M here: the -- module will be called touchkitusb. -- - config USB_YEALINK - tristate "Yealink usb-p1k voip phone" - depends on USB && INPUT && EXPERIMENTAL diff --git a/usb/usb-keyspan-remote-bugfix.patch b/usb/usb-keyspan-remote-bugfix.patch deleted file mode 100644 index d1db90b2e5056..0000000000000 --- a/usb/usb-keyspan-remote-bugfix.patch +++ /dev/null @@ -1,27 +0,0 @@ -From downey@zymeta.com Mon Apr 3 07:58:14 2006 -Message-ID: <443137FF.4050803@zymeta.com> -Date: Mon, 03 Apr 2006 08:58:07 -0600 -From: Michael Downey <downey@zymeta.com> -To: Greg KH <greg@kroah.com> -CC: Adrian Bunk <bunk@stusta.de>, -Subject: USB: keyspan-remote bugfix - - -Signed-off-by: Michael Downey <downey@zymeta.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/input/keyspan_remote.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/input/keyspan_remote.c -+++ gregkh-2.6/drivers/usb/input/keyspan_remote.c -@@ -297,6 +297,8 @@ static void keyspan_check_data(struct us - remote->data.bits_left -= 6; - } else { - err("%s - Error in message, invalid toggle.\n", __FUNCTION__); -+ remote->stage = 0; -+ return; - } - - keyspan_load_tester(remote, 5); diff --git a/usb/usb-linux-usb-net2280.h-common-definitions.patch b/usb/usb-linux-usb-net2280.h-common-definitions.patch deleted file mode 100644 index 0d8073a6af4cf..0000000000000 --- a/usb/usb-linux-usb-net2280.h-common-definitions.patch +++ /dev/null @@ -1,895 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 11:38:22 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: linux/usb/net2280.h common definitions -Date: Sun, 2 Apr 2006 10:21:26 -0800 -Cc: Greg KH <greg@kroah.com>, Pete Zaitcev <zaitcev@redhat.com> -Message-Id: <200604021121.26835.david-b@pacbell.net> - -From: Pete Zaitcev <zaitcev@redhat.com> - -Move common definitions for NET2280 to <linux/usb/net2280.h>, so that I can -use them in prism54usb (it is not merged yet, but I plan to do it soon). - -Signed-off-by: Pete Zaitcev <zaitcev@redhat.com> -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/gadget/net2280.h | 417 ---------------------------------------- - include/linux/usb/net2280.h | 444 +++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 445 insertions(+), 416 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/gadget/net2280.h -+++ gregkh-2.6/drivers/usb/gadget/net2280.h -@@ -22,422 +22,7 @@ - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - --/*-------------------------------------------------------------------------*/ -- --/* NET2280 MEMORY MAPPED REGISTERS -- * -- * The register layout came from the chip documentation, and the bit -- * number definitions were extracted from chip specification. -- * -- * Use the shift operator ('<<') to build bit masks, with readl/writel -- * to access the registers through PCI. -- */ -- --/* main registers, BAR0 + 0x0000 */ --struct net2280_regs { -- // offset 0x0000 -- u32 devinit; --#define LOCAL_CLOCK_FREQUENCY 8 --#define FORCE_PCI_RESET 7 --#define PCI_ID 6 --#define PCI_ENABLE 5 --#define FIFO_SOFT_RESET 4 --#define CFG_SOFT_RESET 3 --#define PCI_SOFT_RESET 2 --#define USB_SOFT_RESET 1 --#define M8051_RESET 0 -- u32 eectl; --#define EEPROM_ADDRESS_WIDTH 23 --#define EEPROM_CHIP_SELECT_ACTIVE 22 --#define EEPROM_PRESENT 21 --#define EEPROM_VALID 20 --#define EEPROM_BUSY 19 --#define EEPROM_CHIP_SELECT_ENABLE 18 --#define EEPROM_BYTE_READ_START 17 --#define EEPROM_BYTE_WRITE_START 16 --#define EEPROM_READ_DATA 8 --#define EEPROM_WRITE_DATA 0 -- u32 eeclkfreq; -- u32 _unused0; -- // offset 0x0010 -- -- u32 pciirqenb0; /* interrupt PCI master ... */ --#define SETUP_PACKET_INTERRUPT_ENABLE 7 --#define ENDPOINT_F_INTERRUPT_ENABLE 6 --#define ENDPOINT_E_INTERRUPT_ENABLE 5 --#define ENDPOINT_D_INTERRUPT_ENABLE 4 --#define ENDPOINT_C_INTERRUPT_ENABLE 3 --#define ENDPOINT_B_INTERRUPT_ENABLE 2 --#define ENDPOINT_A_INTERRUPT_ENABLE 1 --#define ENDPOINT_0_INTERRUPT_ENABLE 0 -- u32 pciirqenb1; --#define PCI_INTERRUPT_ENABLE 31 --#define POWER_STATE_CHANGE_INTERRUPT_ENABLE 27 --#define PCI_ARBITER_TIMEOUT_INTERRUPT_ENABLE 26 --#define PCI_PARITY_ERROR_INTERRUPT_ENABLE 25 --#define PCI_MASTER_ABORT_RECEIVED_INTERRUPT_ENABLE 20 --#define PCI_TARGET_ABORT_RECEIVED_INTERRUPT_ENABLE 19 --#define PCI_TARGET_ABORT_ASSERTED_INTERRUPT_ENABLE 18 --#define PCI_RETRY_ABORT_INTERRUPT_ENABLE 17 --#define PCI_MASTER_CYCLE_DONE_INTERRUPT_ENABLE 16 --#define GPIO_INTERRUPT_ENABLE 13 --#define DMA_D_INTERRUPT_ENABLE 12 --#define DMA_C_INTERRUPT_ENABLE 11 --#define DMA_B_INTERRUPT_ENABLE 10 --#define DMA_A_INTERRUPT_ENABLE 9 --#define EEPROM_DONE_INTERRUPT_ENABLE 8 --#define VBUS_INTERRUPT_ENABLE 7 --#define CONTROL_STATUS_INTERRUPT_ENABLE 6 --#define ROOT_PORT_RESET_INTERRUPT_ENABLE 4 --#define SUSPEND_REQUEST_INTERRUPT_ENABLE 3 --#define SUSPEND_REQUEST_CHANGE_INTERRUPT_ENABLE 2 --#define RESUME_INTERRUPT_ENABLE 1 --#define SOF_INTERRUPT_ENABLE 0 -- u32 cpu_irqenb0; /* ... or onboard 8051 */ --#define SETUP_PACKET_INTERRUPT_ENABLE 7 --#define ENDPOINT_F_INTERRUPT_ENABLE 6 --#define ENDPOINT_E_INTERRUPT_ENABLE 5 --#define ENDPOINT_D_INTERRUPT_ENABLE 4 --#define ENDPOINT_C_INTERRUPT_ENABLE 3 --#define ENDPOINT_B_INTERRUPT_ENABLE 2 --#define ENDPOINT_A_INTERRUPT_ENABLE 1 --#define ENDPOINT_0_INTERRUPT_ENABLE 0 -- u32 cpu_irqenb1; --#define CPU_INTERRUPT_ENABLE 31 --#define POWER_STATE_CHANGE_INTERRUPT_ENABLE 27 --#define PCI_ARBITER_TIMEOUT_INTERRUPT_ENABLE 26 --#define PCI_PARITY_ERROR_INTERRUPT_ENABLE 25 --#define PCI_INTA_INTERRUPT_ENABLE 24 --#define PCI_PME_INTERRUPT_ENABLE 23 --#define PCI_SERR_INTERRUPT_ENABLE 22 --#define PCI_PERR_INTERRUPT_ENABLE 21 --#define PCI_MASTER_ABORT_RECEIVED_INTERRUPT_ENABLE 20 --#define PCI_TARGET_ABORT_RECEIVED_INTERRUPT_ENABLE 19 --#define PCI_RETRY_ABORT_INTERRUPT_ENABLE 17 --#define PCI_MASTER_CYCLE_DONE_INTERRUPT_ENABLE 16 --#define GPIO_INTERRUPT_ENABLE 13 --#define DMA_D_INTERRUPT_ENABLE 12 --#define DMA_C_INTERRUPT_ENABLE 11 --#define DMA_B_INTERRUPT_ENABLE 10 --#define DMA_A_INTERRUPT_ENABLE 9 --#define EEPROM_DONE_INTERRUPT_ENABLE 8 --#define VBUS_INTERRUPT_ENABLE 7 --#define CONTROL_STATUS_INTERRUPT_ENABLE 6 --#define ROOT_PORT_RESET_INTERRUPT_ENABLE 4 --#define SUSPEND_REQUEST_INTERRUPT_ENABLE 3 --#define SUSPEND_REQUEST_CHANGE_INTERRUPT_ENABLE 2 --#define RESUME_INTERRUPT_ENABLE 1 --#define SOF_INTERRUPT_ENABLE 0 -- -- // offset 0x0020 -- u32 _unused1; -- u32 usbirqenb1; --#define USB_INTERRUPT_ENABLE 31 --#define POWER_STATE_CHANGE_INTERRUPT_ENABLE 27 --#define PCI_ARBITER_TIMEOUT_INTERRUPT_ENABLE 26 --#define PCI_PARITY_ERROR_INTERRUPT_ENABLE 25 --#define PCI_INTA_INTERRUPT_ENABLE 24 --#define PCI_PME_INTERRUPT_ENABLE 23 --#define PCI_SERR_INTERRUPT_ENABLE 22 --#define PCI_PERR_INTERRUPT_ENABLE 21 --#define PCI_MASTER_ABORT_RECEIVED_INTERRUPT_ENABLE 20 --#define PCI_TARGET_ABORT_RECEIVED_INTERRUPT_ENABLE 19 --#define PCI_RETRY_ABORT_INTERRUPT_ENABLE 17 --#define PCI_MASTER_CYCLE_DONE_INTERRUPT_ENABLE 16 --#define GPIO_INTERRUPT_ENABLE 13 --#define DMA_D_INTERRUPT_ENABLE 12 --#define DMA_C_INTERRUPT_ENABLE 11 --#define DMA_B_INTERRUPT_ENABLE 10 --#define DMA_A_INTERRUPT_ENABLE 9 --#define EEPROM_DONE_INTERRUPT_ENABLE 8 --#define VBUS_INTERRUPT_ENABLE 7 --#define CONTROL_STATUS_INTERRUPT_ENABLE 6 --#define ROOT_PORT_RESET_INTERRUPT_ENABLE 4 --#define SUSPEND_REQUEST_INTERRUPT_ENABLE 3 --#define SUSPEND_REQUEST_CHANGE_INTERRUPT_ENABLE 2 --#define RESUME_INTERRUPT_ENABLE 1 --#define SOF_INTERRUPT_ENABLE 0 -- u32 irqstat0; --#define INTA_ASSERTED 12 --#define SETUP_PACKET_INTERRUPT 7 --#define ENDPOINT_F_INTERRUPT 6 --#define ENDPOINT_E_INTERRUPT 5 --#define ENDPOINT_D_INTERRUPT 4 --#define ENDPOINT_C_INTERRUPT 3 --#define ENDPOINT_B_INTERRUPT 2 --#define ENDPOINT_A_INTERRUPT 1 --#define ENDPOINT_0_INTERRUPT 0 -- u32 irqstat1; --#define POWER_STATE_CHANGE_INTERRUPT 27 --#define PCI_ARBITER_TIMEOUT_INTERRUPT 26 --#define PCI_PARITY_ERROR_INTERRUPT 25 --#define PCI_INTA_INTERRUPT 24 --#define PCI_PME_INTERRUPT 23 --#define PCI_SERR_INTERRUPT 22 --#define PCI_PERR_INTERRUPT 21 --#define PCI_MASTER_ABORT_RECEIVED_INTERRUPT 20 --#define PCI_TARGET_ABORT_RECEIVED_INTERRUPT 19 --#define PCI_RETRY_ABORT_INTERRUPT 17 --#define PCI_MASTER_CYCLE_DONE_INTERRUPT 16 --#define SOF_DOWN_INTERRUPT 14 --#define GPIO_INTERRUPT 13 --#define DMA_D_INTERRUPT 12 --#define DMA_C_INTERRUPT 11 --#define DMA_B_INTERRUPT 10 --#define DMA_A_INTERRUPT 9 --#define EEPROM_DONE_INTERRUPT 8 --#define VBUS_INTERRUPT 7 --#define CONTROL_STATUS_INTERRUPT 6 --#define ROOT_PORT_RESET_INTERRUPT 4 --#define SUSPEND_REQUEST_INTERRUPT 3 --#define SUSPEND_REQUEST_CHANGE_INTERRUPT 2 --#define RESUME_INTERRUPT 1 --#define SOF_INTERRUPT 0 -- // offset 0x0030 -- u32 idxaddr; -- u32 idxdata; -- u32 fifoctl; --#define PCI_BASE2_RANGE 16 --#define IGNORE_FIFO_AVAILABILITY 3 --#define PCI_BASE2_SELECT 2 --#define FIFO_CONFIGURATION_SELECT 0 -- u32 _unused2; -- // offset 0x0040 -- u32 memaddr; --#define START 28 --#define DIRECTION 27 --#define FIFO_DIAGNOSTIC_SELECT 24 --#define MEMORY_ADDRESS 0 -- u32 memdata0; -- u32 memdata1; -- u32 _unused3; -- // offset 0x0050 -- u32 gpioctl; --#define GPIO3_LED_SELECT 12 --#define GPIO3_INTERRUPT_ENABLE 11 --#define GPIO2_INTERRUPT_ENABLE 10 --#define GPIO1_INTERRUPT_ENABLE 9 --#define GPIO0_INTERRUPT_ENABLE 8 --#define GPIO3_OUTPUT_ENABLE 7 --#define GPIO2_OUTPUT_ENABLE 6 --#define GPIO1_OUTPUT_ENABLE 5 --#define GPIO0_OUTPUT_ENABLE 4 --#define GPIO3_DATA 3 --#define GPIO2_DATA 2 --#define GPIO1_DATA 1 --#define GPIO0_DATA 0 -- u32 gpiostat; --#define GPIO3_INTERRUPT 3 --#define GPIO2_INTERRUPT 2 --#define GPIO1_INTERRUPT 1 --#define GPIO0_INTERRUPT 0 --} __attribute__ ((packed)); -- --/* usb control, BAR0 + 0x0080 */ --struct net2280_usb_regs { -- // offset 0x0080 -- u32 stdrsp; --#define STALL_UNSUPPORTED_REQUESTS 31 --#define SET_TEST_MODE 16 --#define GET_OTHER_SPEED_CONFIGURATION 15 --#define GET_DEVICE_QUALIFIER 14 --#define SET_ADDRESS 13 --#define ENDPOINT_SET_CLEAR_HALT 12 --#define DEVICE_SET_CLEAR_DEVICE_REMOTE_WAKEUP 11 --#define GET_STRING_DESCRIPTOR_2 10 --#define GET_STRING_DESCRIPTOR_1 9 --#define GET_STRING_DESCRIPTOR_0 8 --#define GET_SET_INTERFACE 6 --#define GET_SET_CONFIGURATION 5 --#define GET_CONFIGURATION_DESCRIPTOR 4 --#define GET_DEVICE_DESCRIPTOR 3 --#define GET_ENDPOINT_STATUS 2 --#define GET_INTERFACE_STATUS 1 --#define GET_DEVICE_STATUS 0 -- u32 prodvendid; --#define PRODUCT_ID 16 --#define VENDOR_ID 0 -- u32 relnum; -- u32 usbctl; --#define SERIAL_NUMBER_INDEX 16 --#define PRODUCT_ID_STRING_ENABLE 13 --#define VENDOR_ID_STRING_ENABLE 12 --#define USB_ROOT_PORT_WAKEUP_ENABLE 11 --#define VBUS_PIN 10 --#define TIMED_DISCONNECT 9 --#define SUSPEND_IMMEDIATELY 7 --#define SELF_POWERED_USB_DEVICE 6 --#define REMOTE_WAKEUP_SUPPORT 5 --#define PME_POLARITY 4 --#define USB_DETECT_ENABLE 3 --#define PME_WAKEUP_ENABLE 2 --#define DEVICE_REMOTE_WAKEUP_ENABLE 1 --#define SELF_POWERED_STATUS 0 -- // offset 0x0090 -- u32 usbstat; --#define HIGH_SPEED 7 --#define FULL_SPEED 6 --#define GENERATE_RESUME 5 --#define GENERATE_DEVICE_REMOTE_WAKEUP 4 -- u32 xcvrdiag; --#define FORCE_HIGH_SPEED_MODE 31 --#define FORCE_FULL_SPEED_MODE 30 --#define USB_TEST_MODE 24 --#define LINE_STATE 16 --#define TRANSCEIVER_OPERATION_MODE 2 --#define TRANSCEIVER_SELECT 1 --#define TERMINATION_SELECT 0 -- u32 setup0123; -- u32 setup4567; -- // offset 0x0090 -- u32 _unused0; -- u32 ouraddr; --#define FORCE_IMMEDIATE 7 --#define OUR_USB_ADDRESS 0 -- u32 ourconfig; --} __attribute__ ((packed)); -- --/* pci control, BAR0 + 0x0100 */ --struct net2280_pci_regs { -- // offset 0x0100 -- u32 pcimstctl; --#define PCI_ARBITER_PARK_SELECT 13 --#define PCI_MULTI LEVEL_ARBITER 12 --#define PCI_RETRY_ABORT_ENABLE 11 --#define DMA_MEMORY_WRITE_AND_INVALIDATE_ENABLE 10 --#define DMA_READ_MULTIPLE_ENABLE 9 --#define DMA_READ_LINE_ENABLE 8 --#define PCI_MASTER_COMMAND_SELECT 6 --#define MEM_READ_OR_WRITE 0 --#define IO_READ_OR_WRITE 1 --#define CFG_READ_OR_WRITE 2 --#define PCI_MASTER_START 5 --#define PCI_MASTER_READ_WRITE 4 --#define PCI_MASTER_WRITE 0 --#define PCI_MASTER_READ 1 --#define PCI_MASTER_BYTE_WRITE_ENABLES 0 -- u32 pcimstaddr; -- u32 pcimstdata; -- u32 pcimststat; --#define PCI_ARBITER_CLEAR 2 --#define PCI_EXTERNAL_ARBITER 1 --#define PCI_HOST_MODE 0 --} __attribute__ ((packed)); -- --/* dma control, BAR0 + 0x0180 ... array of four structs like this, -- * for channels 0..3. see also struct net2280_dma: descriptor -- * that can be loaded into some of these registers. -- */ --struct net2280_dma_regs { /* [11.7] */ -- // offset 0x0180, 0x01a0, 0x01c0, 0x01e0, -- u32 dmactl; --#define DMA_SCATTER_GATHER_DONE_INTERRUPT_ENABLE 25 --#define DMA_CLEAR_COUNT_ENABLE 21 --#define DESCRIPTOR_POLLING_RATE 19 --#define POLL_CONTINUOUS 0 --#define POLL_1_USEC 1 --#define POLL_100_USEC 2 --#define POLL_1_MSEC 3 --#define DMA_VALID_BIT_POLLING_ENABLE 18 --#define DMA_VALID_BIT_ENABLE 17 --#define DMA_SCATTER_GATHER_ENABLE 16 --#define DMA_OUT_AUTO_START_ENABLE 4 --#define DMA_PREEMPT_ENABLE 3 --#define DMA_FIFO_VALIDATE 2 --#define DMA_ENABLE 1 --#define DMA_ADDRESS_HOLD 0 -- u32 dmastat; --#define DMA_ABORT_DONE_INTERRUPT 27 --#define DMA_SCATTER_GATHER_DONE_INTERRUPT 25 --#define DMA_TRANSACTION_DONE_INTERRUPT 24 --#define DMA_ABORT 1 --#define DMA_START 0 -- u32 _unused0 [2]; -- // offset 0x0190, 0x01b0, 0x01d0, 0x01f0, -- u32 dmacount; --#define VALID_BIT 31 --#define DMA_DIRECTION 30 --#define DMA_DONE_INTERRUPT_ENABLE 29 --#define END_OF_CHAIN 28 --#define DMA_BYTE_COUNT_MASK ((1<<24)-1) --#define DMA_BYTE_COUNT 0 -- u32 dmaaddr; -- u32 dmadesc; -- u32 _unused1; --} __attribute__ ((packed)); -- --/* dedicated endpoint registers, BAR0 + 0x0200 */ -- --struct net2280_dep_regs { /* [11.8] */ -- // offset 0x0200, 0x0210, 0x220, 0x230, 0x240 -- u32 dep_cfg; -- // offset 0x0204, 0x0214, 0x224, 0x234, 0x244 -- u32 dep_rsp; -- u32 _unused [2]; --} __attribute__ ((packed)); -- --/* configurable endpoint registers, BAR0 + 0x0300 ... array of seven structs -- * like this, for ep0 then the configurable endpoints A..F -- * ep0 reserved for control; E and F have only 64 bytes of fifo -- */ --struct net2280_ep_regs { /* [11.9] */ -- // offset 0x0300, 0x0320, 0x0340, 0x0360, 0x0380, 0x03a0, 0x03c0 -- u32 ep_cfg; --#define ENDPOINT_BYTE_COUNT 16 --#define ENDPOINT_ENABLE 10 --#define ENDPOINT_TYPE 8 --#define ENDPOINT_DIRECTION 7 --#define ENDPOINT_NUMBER 0 -- u32 ep_rsp; --#define SET_NAK_OUT_PACKETS 15 --#define SET_EP_HIDE_STATUS_PHASE 14 --#define SET_EP_FORCE_CRC_ERROR 13 --#define SET_INTERRUPT_MODE 12 --#define SET_CONTROL_STATUS_PHASE_HANDSHAKE 11 --#define SET_NAK_OUT_PACKETS_MODE 10 --#define SET_ENDPOINT_TOGGLE 9 --#define SET_ENDPOINT_HALT 8 --#define CLEAR_NAK_OUT_PACKETS 7 --#define CLEAR_EP_HIDE_STATUS_PHASE 6 --#define CLEAR_EP_FORCE_CRC_ERROR 5 --#define CLEAR_INTERRUPT_MODE 4 --#define CLEAR_CONTROL_STATUS_PHASE_HANDSHAKE 3 --#define CLEAR_NAK_OUT_PACKETS_MODE 2 --#define CLEAR_ENDPOINT_TOGGLE 1 --#define CLEAR_ENDPOINT_HALT 0 -- u32 ep_irqenb; --#define SHORT_PACKET_OUT_DONE_INTERRUPT_ENABLE 6 --#define SHORT_PACKET_TRANSFERRED_INTERRUPT_ENABLE 5 --#define DATA_PACKET_RECEIVED_INTERRUPT_ENABLE 3 --#define DATA_PACKET_TRANSMITTED_INTERRUPT_ENABLE 2 --#define DATA_OUT_PING_TOKEN_INTERRUPT_ENABLE 1 --#define DATA_IN_TOKEN_INTERRUPT_ENABLE 0 -- u32 ep_stat; --#define FIFO_VALID_COUNT 24 --#define HIGH_BANDWIDTH_OUT_TRANSACTION_PID 22 --#define TIMEOUT 21 --#define USB_STALL_SENT 20 --#define USB_IN_NAK_SENT 19 --#define USB_IN_ACK_RCVD 18 --#define USB_OUT_PING_NAK_SENT 17 --#define USB_OUT_ACK_SENT 16 --#define FIFO_OVERFLOW 13 --#define FIFO_UNDERFLOW 12 --#define FIFO_FULL 11 --#define FIFO_EMPTY 10 --#define FIFO_FLUSH 9 --#define SHORT_PACKET_OUT_DONE_INTERRUPT 6 --#define SHORT_PACKET_TRANSFERRED_INTERRUPT 5 --#define NAK_OUT_PACKETS 4 --#define DATA_PACKET_RECEIVED_INTERRUPT 3 --#define DATA_PACKET_TRANSMITTED_INTERRUPT 2 --#define DATA_OUT_PING_TOKEN_INTERRUPT 1 --#define DATA_IN_TOKEN_INTERRUPT 0 -- // offset 0x0310, 0x0330, 0x0350, 0x0370, 0x0390, 0x03b0, 0x03d0 -- u32 ep_avail; -- u32 ep_data; -- u32 _unused0 [2]; --} __attribute__ ((packed)); -+#include <linux/usb/net2280.h> - - /*-------------------------------------------------------------------------*/ - ---- /dev/null -+++ gregkh-2.6/include/linux/usb/net2280.h -@@ -0,0 +1,444 @@ -+/* -+ * NetChip 2280 high/full speed USB device controller. -+ * Unlike many such controllers, this one talks PCI. -+ */ -+#ifndef __LINUX_USB_NET2280_H -+#define __LINUX_USB_NET2280_H -+ -+/* -+ * Copyright (C) 2002 NetChip Technology, Inc. (http://www.netchip.com) -+ * Copyright (C) 2003 David Brownell -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ */ -+ -+/*-------------------------------------------------------------------------*/ -+ -+/* NET2280 MEMORY MAPPED REGISTERS -+ * -+ * The register layout came from the chip documentation, and the bit -+ * number definitions were extracted from chip specification. -+ * -+ * Use the shift operator ('<<') to build bit masks, with readl/writel -+ * to access the registers through PCI. -+ */ -+ -+/* main registers, BAR0 + 0x0000 */ -+struct net2280_regs { -+ // offset 0x0000 -+ u32 devinit; -+#define LOCAL_CLOCK_FREQUENCY 8 -+#define FORCE_PCI_RESET 7 -+#define PCI_ID 6 -+#define PCI_ENABLE 5 -+#define FIFO_SOFT_RESET 4 -+#define CFG_SOFT_RESET 3 -+#define PCI_SOFT_RESET 2 -+#define USB_SOFT_RESET 1 -+#define M8051_RESET 0 -+ u32 eectl; -+#define EEPROM_ADDRESS_WIDTH 23 -+#define EEPROM_CHIP_SELECT_ACTIVE 22 -+#define EEPROM_PRESENT 21 -+#define EEPROM_VALID 20 -+#define EEPROM_BUSY 19 -+#define EEPROM_CHIP_SELECT_ENABLE 18 -+#define EEPROM_BYTE_READ_START 17 -+#define EEPROM_BYTE_WRITE_START 16 -+#define EEPROM_READ_DATA 8 -+#define EEPROM_WRITE_DATA 0 -+ u32 eeclkfreq; -+ u32 _unused0; -+ // offset 0x0010 -+ -+ u32 pciirqenb0; /* interrupt PCI master ... */ -+#define SETUP_PACKET_INTERRUPT_ENABLE 7 -+#define ENDPOINT_F_INTERRUPT_ENABLE 6 -+#define ENDPOINT_E_INTERRUPT_ENABLE 5 -+#define ENDPOINT_D_INTERRUPT_ENABLE 4 -+#define ENDPOINT_C_INTERRUPT_ENABLE 3 -+#define ENDPOINT_B_INTERRUPT_ENABLE 2 -+#define ENDPOINT_A_INTERRUPT_ENABLE 1 -+#define ENDPOINT_0_INTERRUPT_ENABLE 0 -+ u32 pciirqenb1; -+#define PCI_INTERRUPT_ENABLE 31 -+#define POWER_STATE_CHANGE_INTERRUPT_ENABLE 27 -+#define PCI_ARBITER_TIMEOUT_INTERRUPT_ENABLE 26 -+#define PCI_PARITY_ERROR_INTERRUPT_ENABLE 25 -+#define PCI_MASTER_ABORT_RECEIVED_INTERRUPT_ENABLE 20 -+#define PCI_TARGET_ABORT_RECEIVED_INTERRUPT_ENABLE 19 -+#define PCI_TARGET_ABORT_ASSERTED_INTERRUPT_ENABLE 18 -+#define PCI_RETRY_ABORT_INTERRUPT_ENABLE 17 -+#define PCI_MASTER_CYCLE_DONE_INTERRUPT_ENABLE 16 -+#define GPIO_INTERRUPT_ENABLE 13 -+#define DMA_D_INTERRUPT_ENABLE 12 -+#define DMA_C_INTERRUPT_ENABLE 11 -+#define DMA_B_INTERRUPT_ENABLE 10 -+#define DMA_A_INTERRUPT_ENABLE 9 -+#define EEPROM_DONE_INTERRUPT_ENABLE 8 -+#define VBUS_INTERRUPT_ENABLE 7 -+#define CONTROL_STATUS_INTERRUPT_ENABLE 6 -+#define ROOT_PORT_RESET_INTERRUPT_ENABLE 4 -+#define SUSPEND_REQUEST_INTERRUPT_ENABLE 3 -+#define SUSPEND_REQUEST_CHANGE_INTERRUPT_ENABLE 2 -+#define RESUME_INTERRUPT_ENABLE 1 -+#define SOF_INTERRUPT_ENABLE 0 -+ u32 cpu_irqenb0; /* ... or onboard 8051 */ -+#define SETUP_PACKET_INTERRUPT_ENABLE 7 -+#define ENDPOINT_F_INTERRUPT_ENABLE 6 -+#define ENDPOINT_E_INTERRUPT_ENABLE 5 -+#define ENDPOINT_D_INTERRUPT_ENABLE 4 -+#define ENDPOINT_C_INTERRUPT_ENABLE 3 -+#define ENDPOINT_B_INTERRUPT_ENABLE 2 -+#define ENDPOINT_A_INTERRUPT_ENABLE 1 -+#define ENDPOINT_0_INTERRUPT_ENABLE 0 -+ u32 cpu_irqenb1; -+#define CPU_INTERRUPT_ENABLE 31 -+#define POWER_STATE_CHANGE_INTERRUPT_ENABLE 27 -+#define PCI_ARBITER_TIMEOUT_INTERRUPT_ENABLE 26 -+#define PCI_PARITY_ERROR_INTERRUPT_ENABLE 25 -+#define PCI_INTA_INTERRUPT_ENABLE 24 -+#define PCI_PME_INTERRUPT_ENABLE 23 -+#define PCI_SERR_INTERRUPT_ENABLE 22 -+#define PCI_PERR_INTERRUPT_ENABLE 21 -+#define PCI_MASTER_ABORT_RECEIVED_INTERRUPT_ENABLE 20 -+#define PCI_TARGET_ABORT_RECEIVED_INTERRUPT_ENABLE 19 -+#define PCI_RETRY_ABORT_INTERRUPT_ENABLE 17 -+#define PCI_MASTER_CYCLE_DONE_INTERRUPT_ENABLE 16 -+#define GPIO_INTERRUPT_ENABLE 13 -+#define DMA_D_INTERRUPT_ENABLE 12 -+#define DMA_C_INTERRUPT_ENABLE 11 -+#define DMA_B_INTERRUPT_ENABLE 10 -+#define DMA_A_INTERRUPT_ENABLE 9 -+#define EEPROM_DONE_INTERRUPT_ENABLE 8 -+#define VBUS_INTERRUPT_ENABLE 7 -+#define CONTROL_STATUS_INTERRUPT_ENABLE 6 -+#define ROOT_PORT_RESET_INTERRUPT_ENABLE 4 -+#define SUSPEND_REQUEST_INTERRUPT_ENABLE 3 -+#define SUSPEND_REQUEST_CHANGE_INTERRUPT_ENABLE 2 -+#define RESUME_INTERRUPT_ENABLE 1 -+#define SOF_INTERRUPT_ENABLE 0 -+ -+ // offset 0x0020 -+ u32 _unused1; -+ u32 usbirqenb1; -+#define USB_INTERRUPT_ENABLE 31 -+#define POWER_STATE_CHANGE_INTERRUPT_ENABLE 27 -+#define PCI_ARBITER_TIMEOUT_INTERRUPT_ENABLE 26 -+#define PCI_PARITY_ERROR_INTERRUPT_ENABLE 25 -+#define PCI_INTA_INTERRUPT_ENABLE 24 -+#define PCI_PME_INTERRUPT_ENABLE 23 -+#define PCI_SERR_INTERRUPT_ENABLE 22 -+#define PCI_PERR_INTERRUPT_ENABLE 21 -+#define PCI_MASTER_ABORT_RECEIVED_INTERRUPT_ENABLE 20 -+#define PCI_TARGET_ABORT_RECEIVED_INTERRUPT_ENABLE 19 -+#define PCI_RETRY_ABORT_INTERRUPT_ENABLE 17 -+#define PCI_MASTER_CYCLE_DONE_INTERRUPT_ENABLE 16 -+#define GPIO_INTERRUPT_ENABLE 13 -+#define DMA_D_INTERRUPT_ENABLE 12 -+#define DMA_C_INTERRUPT_ENABLE 11 -+#define DMA_B_INTERRUPT_ENABLE 10 -+#define DMA_A_INTERRUPT_ENABLE 9 -+#define EEPROM_DONE_INTERRUPT_ENABLE 8 -+#define VBUS_INTERRUPT_ENABLE 7 -+#define CONTROL_STATUS_INTERRUPT_ENABLE 6 -+#define ROOT_PORT_RESET_INTERRUPT_ENABLE 4 -+#define SUSPEND_REQUEST_INTERRUPT_ENABLE 3 -+#define SUSPEND_REQUEST_CHANGE_INTERRUPT_ENABLE 2 -+#define RESUME_INTERRUPT_ENABLE 1 -+#define SOF_INTERRUPT_ENABLE 0 -+ u32 irqstat0; -+#define INTA_ASSERTED 12 -+#define SETUP_PACKET_INTERRUPT 7 -+#define ENDPOINT_F_INTERRUPT 6 -+#define ENDPOINT_E_INTERRUPT 5 -+#define ENDPOINT_D_INTERRUPT 4 -+#define ENDPOINT_C_INTERRUPT 3 -+#define ENDPOINT_B_INTERRUPT 2 -+#define ENDPOINT_A_INTERRUPT 1 -+#define ENDPOINT_0_INTERRUPT 0 -+ u32 irqstat1; -+#define POWER_STATE_CHANGE_INTERRUPT 27 -+#define PCI_ARBITER_TIMEOUT_INTERRUPT 26 -+#define PCI_PARITY_ERROR_INTERRUPT 25 -+#define PCI_INTA_INTERRUPT 24 -+#define PCI_PME_INTERRUPT 23 -+#define PCI_SERR_INTERRUPT 22 -+#define PCI_PERR_INTERRUPT 21 -+#define PCI_MASTER_ABORT_RECEIVED_INTERRUPT 20 -+#define PCI_TARGET_ABORT_RECEIVED_INTERRUPT 19 -+#define PCI_RETRY_ABORT_INTERRUPT 17 -+#define PCI_MASTER_CYCLE_DONE_INTERRUPT 16 -+#define SOF_DOWN_INTERRUPT 14 -+#define GPIO_INTERRUPT 13 -+#define DMA_D_INTERRUPT 12 -+#define DMA_C_INTERRUPT 11 -+#define DMA_B_INTERRUPT 10 -+#define DMA_A_INTERRUPT 9 -+#define EEPROM_DONE_INTERRUPT 8 -+#define VBUS_INTERRUPT 7 -+#define CONTROL_STATUS_INTERRUPT 6 -+#define ROOT_PORT_RESET_INTERRUPT 4 -+#define SUSPEND_REQUEST_INTERRUPT 3 -+#define SUSPEND_REQUEST_CHANGE_INTERRUPT 2 -+#define RESUME_INTERRUPT 1 -+#define SOF_INTERRUPT 0 -+ // offset 0x0030 -+ u32 idxaddr; -+ u32 idxdata; -+ u32 fifoctl; -+#define PCI_BASE2_RANGE 16 -+#define IGNORE_FIFO_AVAILABILITY 3 -+#define PCI_BASE2_SELECT 2 -+#define FIFO_CONFIGURATION_SELECT 0 -+ u32 _unused2; -+ // offset 0x0040 -+ u32 memaddr; -+#define START 28 -+#define DIRECTION 27 -+#define FIFO_DIAGNOSTIC_SELECT 24 -+#define MEMORY_ADDRESS 0 -+ u32 memdata0; -+ u32 memdata1; -+ u32 _unused3; -+ // offset 0x0050 -+ u32 gpioctl; -+#define GPIO3_LED_SELECT 12 -+#define GPIO3_INTERRUPT_ENABLE 11 -+#define GPIO2_INTERRUPT_ENABLE 10 -+#define GPIO1_INTERRUPT_ENABLE 9 -+#define GPIO0_INTERRUPT_ENABLE 8 -+#define GPIO3_OUTPUT_ENABLE 7 -+#define GPIO2_OUTPUT_ENABLE 6 -+#define GPIO1_OUTPUT_ENABLE 5 -+#define GPIO0_OUTPUT_ENABLE 4 -+#define GPIO3_DATA 3 -+#define GPIO2_DATA 2 -+#define GPIO1_DATA 1 -+#define GPIO0_DATA 0 -+ u32 gpiostat; -+#define GPIO3_INTERRUPT 3 -+#define GPIO2_INTERRUPT 2 -+#define GPIO1_INTERRUPT 1 -+#define GPIO0_INTERRUPT 0 -+} __attribute__ ((packed)); -+ -+/* usb control, BAR0 + 0x0080 */ -+struct net2280_usb_regs { -+ // offset 0x0080 -+ u32 stdrsp; -+#define STALL_UNSUPPORTED_REQUESTS 31 -+#define SET_TEST_MODE 16 -+#define GET_OTHER_SPEED_CONFIGURATION 15 -+#define GET_DEVICE_QUALIFIER 14 -+#define SET_ADDRESS 13 -+#define ENDPOINT_SET_CLEAR_HALT 12 -+#define DEVICE_SET_CLEAR_DEVICE_REMOTE_WAKEUP 11 -+#define GET_STRING_DESCRIPTOR_2 10 -+#define GET_STRING_DESCRIPTOR_1 9 -+#define GET_STRING_DESCRIPTOR_0 8 -+#define GET_SET_INTERFACE 6 -+#define GET_SET_CONFIGURATION 5 -+#define GET_CONFIGURATION_DESCRIPTOR 4 -+#define GET_DEVICE_DESCRIPTOR 3 -+#define GET_ENDPOINT_STATUS 2 -+#define GET_INTERFACE_STATUS 1 -+#define GET_DEVICE_STATUS 0 -+ u32 prodvendid; -+#define PRODUCT_ID 16 -+#define VENDOR_ID 0 -+ u32 relnum; -+ u32 usbctl; -+#define SERIAL_NUMBER_INDEX 16 -+#define PRODUCT_ID_STRING_ENABLE 13 -+#define VENDOR_ID_STRING_ENABLE 12 -+#define USB_ROOT_PORT_WAKEUP_ENABLE 11 -+#define VBUS_PIN 10 -+#define TIMED_DISCONNECT 9 -+#define SUSPEND_IMMEDIATELY 7 -+#define SELF_POWERED_USB_DEVICE 6 -+#define REMOTE_WAKEUP_SUPPORT 5 -+#define PME_POLARITY 4 -+#define USB_DETECT_ENABLE 3 -+#define PME_WAKEUP_ENABLE 2 -+#define DEVICE_REMOTE_WAKEUP_ENABLE 1 -+#define SELF_POWERED_STATUS 0 -+ // offset 0x0090 -+ u32 usbstat; -+#define HIGH_SPEED 7 -+#define FULL_SPEED 6 -+#define GENERATE_RESUME 5 -+#define GENERATE_DEVICE_REMOTE_WAKEUP 4 -+ u32 xcvrdiag; -+#define FORCE_HIGH_SPEED_MODE 31 -+#define FORCE_FULL_SPEED_MODE 30 -+#define USB_TEST_MODE 24 -+#define LINE_STATE 16 -+#define TRANSCEIVER_OPERATION_MODE 2 -+#define TRANSCEIVER_SELECT 1 -+#define TERMINATION_SELECT 0 -+ u32 setup0123; -+ u32 setup4567; -+ // offset 0x0090 -+ u32 _unused0; -+ u32 ouraddr; -+#define FORCE_IMMEDIATE 7 -+#define OUR_USB_ADDRESS 0 -+ u32 ourconfig; -+} __attribute__ ((packed)); -+ -+/* pci control, BAR0 + 0x0100 */ -+struct net2280_pci_regs { -+ // offset 0x0100 -+ u32 pcimstctl; -+#define PCI_ARBITER_PARK_SELECT 13 -+#define PCI_MULTI LEVEL_ARBITER 12 -+#define PCI_RETRY_ABORT_ENABLE 11 -+#define DMA_MEMORY_WRITE_AND_INVALIDATE_ENABLE 10 -+#define DMA_READ_MULTIPLE_ENABLE 9 -+#define DMA_READ_LINE_ENABLE 8 -+#define PCI_MASTER_COMMAND_SELECT 6 -+#define MEM_READ_OR_WRITE 0 -+#define IO_READ_OR_WRITE 1 -+#define CFG_READ_OR_WRITE 2 -+#define PCI_MASTER_START 5 -+#define PCI_MASTER_READ_WRITE 4 -+#define PCI_MASTER_WRITE 0 -+#define PCI_MASTER_READ 1 -+#define PCI_MASTER_BYTE_WRITE_ENABLES 0 -+ u32 pcimstaddr; -+ u32 pcimstdata; -+ u32 pcimststat; -+#define PCI_ARBITER_CLEAR 2 -+#define PCI_EXTERNAL_ARBITER 1 -+#define PCI_HOST_MODE 0 -+} __attribute__ ((packed)); -+ -+/* dma control, BAR0 + 0x0180 ... array of four structs like this, -+ * for channels 0..3. see also struct net2280_dma: descriptor -+ * that can be loaded into some of these registers. -+ */ -+struct net2280_dma_regs { /* [11.7] */ -+ // offset 0x0180, 0x01a0, 0x01c0, 0x01e0, -+ u32 dmactl; -+#define DMA_SCATTER_GATHER_DONE_INTERRUPT_ENABLE 25 -+#define DMA_CLEAR_COUNT_ENABLE 21 -+#define DESCRIPTOR_POLLING_RATE 19 -+#define POLL_CONTINUOUS 0 -+#define POLL_1_USEC 1 -+#define POLL_100_USEC 2 -+#define POLL_1_MSEC 3 -+#define DMA_VALID_BIT_POLLING_ENABLE 18 -+#define DMA_VALID_BIT_ENABLE 17 -+#define DMA_SCATTER_GATHER_ENABLE 16 -+#define DMA_OUT_AUTO_START_ENABLE 4 -+#define DMA_PREEMPT_ENABLE 3 -+#define DMA_FIFO_VALIDATE 2 -+#define DMA_ENABLE 1 -+#define DMA_ADDRESS_HOLD 0 -+ u32 dmastat; -+#define DMA_ABORT_DONE_INTERRUPT 27 -+#define DMA_SCATTER_GATHER_DONE_INTERRUPT 25 -+#define DMA_TRANSACTION_DONE_INTERRUPT 24 -+#define DMA_ABORT 1 -+#define DMA_START 0 -+ u32 _unused0 [2]; -+ // offset 0x0190, 0x01b0, 0x01d0, 0x01f0, -+ u32 dmacount; -+#define VALID_BIT 31 -+#define DMA_DIRECTION 30 -+#define DMA_DONE_INTERRUPT_ENABLE 29 -+#define END_OF_CHAIN 28 -+#define DMA_BYTE_COUNT_MASK ((1<<24)-1) -+#define DMA_BYTE_COUNT 0 -+ u32 dmaaddr; -+ u32 dmadesc; -+ u32 _unused1; -+} __attribute__ ((packed)); -+ -+/* dedicated endpoint registers, BAR0 + 0x0200 */ -+ -+struct net2280_dep_regs { /* [11.8] */ -+ // offset 0x0200, 0x0210, 0x220, 0x230, 0x240 -+ u32 dep_cfg; -+ // offset 0x0204, 0x0214, 0x224, 0x234, 0x244 -+ u32 dep_rsp; -+ u32 _unused [2]; -+} __attribute__ ((packed)); -+ -+/* configurable endpoint registers, BAR0 + 0x0300 ... array of seven structs -+ * like this, for ep0 then the configurable endpoints A..F -+ * ep0 reserved for control; E and F have only 64 bytes of fifo -+ */ -+struct net2280_ep_regs { /* [11.9] */ -+ // offset 0x0300, 0x0320, 0x0340, 0x0360, 0x0380, 0x03a0, 0x03c0 -+ u32 ep_cfg; -+#define ENDPOINT_BYTE_COUNT 16 -+#define ENDPOINT_ENABLE 10 -+#define ENDPOINT_TYPE 8 -+#define ENDPOINT_DIRECTION 7 -+#define ENDPOINT_NUMBER 0 -+ u32 ep_rsp; -+#define SET_NAK_OUT_PACKETS 15 -+#define SET_EP_HIDE_STATUS_PHASE 14 -+#define SET_EP_FORCE_CRC_ERROR 13 -+#define SET_INTERRUPT_MODE 12 -+#define SET_CONTROL_STATUS_PHASE_HANDSHAKE 11 -+#define SET_NAK_OUT_PACKETS_MODE 10 -+#define SET_ENDPOINT_TOGGLE 9 -+#define SET_ENDPOINT_HALT 8 -+#define CLEAR_NAK_OUT_PACKETS 7 -+#define CLEAR_EP_HIDE_STATUS_PHASE 6 -+#define CLEAR_EP_FORCE_CRC_ERROR 5 -+#define CLEAR_INTERRUPT_MODE 4 -+#define CLEAR_CONTROL_STATUS_PHASE_HANDSHAKE 3 -+#define CLEAR_NAK_OUT_PACKETS_MODE 2 -+#define CLEAR_ENDPOINT_TOGGLE 1 -+#define CLEAR_ENDPOINT_HALT 0 -+ u32 ep_irqenb; -+#define SHORT_PACKET_OUT_DONE_INTERRUPT_ENABLE 6 -+#define SHORT_PACKET_TRANSFERRED_INTERRUPT_ENABLE 5 -+#define DATA_PACKET_RECEIVED_INTERRUPT_ENABLE 3 -+#define DATA_PACKET_TRANSMITTED_INTERRUPT_ENABLE 2 -+#define DATA_OUT_PING_TOKEN_INTERRUPT_ENABLE 1 -+#define DATA_IN_TOKEN_INTERRUPT_ENABLE 0 -+ u32 ep_stat; -+#define FIFO_VALID_COUNT 24 -+#define HIGH_BANDWIDTH_OUT_TRANSACTION_PID 22 -+#define TIMEOUT 21 -+#define USB_STALL_SENT 20 -+#define USB_IN_NAK_SENT 19 -+#define USB_IN_ACK_RCVD 18 -+#define USB_OUT_PING_NAK_SENT 17 -+#define USB_OUT_ACK_SENT 16 -+#define FIFO_OVERFLOW 13 -+#define FIFO_UNDERFLOW 12 -+#define FIFO_FULL 11 -+#define FIFO_EMPTY 10 -+#define FIFO_FLUSH 9 -+#define SHORT_PACKET_OUT_DONE_INTERRUPT 6 -+#define SHORT_PACKET_TRANSFERRED_INTERRUPT 5 -+#define NAK_OUT_PACKETS 4 -+#define DATA_PACKET_RECEIVED_INTERRUPT 3 -+#define DATA_PACKET_TRANSMITTED_INTERRUPT 2 -+#define DATA_OUT_PING_TOKEN_INTERRUPT 1 -+#define DATA_IN_TOKEN_INTERRUPT 0 -+ // offset 0x0310, 0x0330, 0x0350, 0x0370, 0x0390, 0x03b0, 0x03d0 -+ u32 ep_avail; -+ u32 ep_data; -+ u32 _unused0 [2]; -+} __attribute__ ((packed)); -+ -+#endif /* __LINUX_USB_NET2280_H */ diff --git a/usb/usb-net2280-short-rx-status-fix.patch b/usb/usb-net2280-short-rx-status-fix.patch deleted file mode 100644 index 0f5eca685e435..0000000000000 --- a/usb/usb-net2280-short-rx-status-fix.patch +++ /dev/null @@ -1,30 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 11:38:18 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: net2280 short rx status fix -Date: Sun, 2 Apr 2006 10:18:53 -0800 -Cc: Greg KH <greg@kroah.com> -Message-Id: <200604021118.53528.david-b@pacbell.net> - -Some patch broke short-OUT packet handling for net2280, making it report -illegal status values. This updates the status code so it's correct. - -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/gadget/net2280.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- gregkh-2.6.orig/drivers/usb/gadget/net2280.c -+++ gregkh-2.6/drivers/usb/gadget/net2280.c -@@ -2241,7 +2241,8 @@ static void handle_ep_small (struct net2 - if (likely (req)) { - req->td->dmacount = 0; - t = readl (&ep->regs->ep_avail); -- dma_done (ep, req, count, t); -+ dma_done (ep, req, count, -+ (ep->out_overflow || t) ? -EOVERFLOW : 0); - } - - /* also flush to prevent erratum 0106 trouble */ diff --git a/usb/usb-net2282-and-net2280-software-compatibility.patch b/usb/usb-net2282-and-net2280-software-compatibility.patch deleted file mode 100644 index b2de18c9e7191..0000000000000 --- a/usb/usb-net2282-and-net2280-software-compatibility.patch +++ /dev/null @@ -1,271 +0,0 @@ -From g.liakhovetski@gmx.de Sun Mar 19 11:49:23 2006 -Date: Sun, 19 Mar 2006 20:49:14 +0100 (CET) -From: Guennadi Liakhovetski <g.liakhovetski@gmx.de> -To: Greg KH <gregkh@suse.de> -Cc: Guennadi Liakhovetski <gl@dsa-ac.de> -Subject: USB: net2282 and net2280 software compatibility -Message-ID: <Pine.LNX.4.60.0603192046210.3832@poirot.grange> - -Below is a patch to gadgets/net2280.[ch] which adds support for the -net2282 controller. The original code was kindly provided by PLX -Technology, I just merged it with the current net2280 driver in the -kernel. Tested on 2.6.15.6, but only with 2282. I did the merge, so -that the behaviour for the 2280 is unaffected (except for short delays -for extra checks). - -Signed-off-by: G. Liakhovetski <g.liakhovetski@gmx.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - -Support for net2282 in net2280 driver. - ---- - drivers/usb/gadget/Kconfig | 4 - - drivers/usb/gadget/net2280.c | 90 ++++++++++++++++++++++++++++++++----------- - drivers/usb/gadget/net2280.h | 2 - 3 files changed, 73 insertions(+), 23 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/gadget/Kconfig -+++ gregkh-2.6/drivers/usb/gadget/Kconfig -@@ -69,11 +69,11 @@ choice - often need board-specific hooks. - - config USB_GADGET_NET2280 -- boolean "NetChip 2280" -+ boolean "NetChip 228x" - depends on PCI - select USB_GADGET_DUALSPEED - help -- NetChip 2280 is a PCI based USB peripheral controller which -+ NetChip 2280 / 2282 is a PCI based USB peripheral controller which - supports both full and high speed USB 2.0 data transfers. - - It has six configurable endpoints, as well as endpoint zero ---- gregkh-2.6.orig/drivers/usb/gadget/net2280.c -+++ gregkh-2.6/drivers/usb/gadget/net2280.c -@@ -26,6 +26,8 @@ - * Copyright (C) 2003 David Brownell - * Copyright (C) 2003-2005 PLX Technology, Inc. - * -+ * Modified Seth Levy 2005 PLX Technology, Inc. to provide compatibility with 2282 chip -+ * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or -@@ -71,8 +73,8 @@ - #include <asm/unaligned.h> - - --#define DRIVER_DESC "PLX NET2280 USB Peripheral Controller" --#define DRIVER_VERSION "2005 Feb 03" -+#define DRIVER_DESC "PLX NET228x USB Peripheral Controller" -+#define DRIVER_VERSION "2005 Sept 27" - - #define DMA_ADDR_INVALID (~(dma_addr_t)0) - #define EP_DONTUSE 13 /* nonzero */ -@@ -118,7 +120,7 @@ module_param (fifo_mode, ushort, 0644); - /* enable_suspend -- When enabled, the driver will respond to - * USB suspend requests by powering down the NET2280. Otherwise, - * USB suspend requests will be ignored. This is acceptible for -- * self-powered devices, and helps avoid some quirks. -+ * self-powered devices - */ - static int enable_suspend = 0; - -@@ -223,6 +225,11 @@ net2280_enable (struct usb_ep *_ep, cons - ep->is_in = (tmp & USB_DIR_IN) != 0; - if (!ep->is_in) - writel ((1 << SET_NAK_OUT_PACKETS), &ep->regs->ep_rsp); -+ else if (dev->pdev->device != 0x2280) { -+ /* Added for 2282, Don't use nak packets on an in endpoint, this was ignored on 2280 */ -+ writel ((1 << CLEAR_NAK_OUT_PACKETS) -+ | (1 << CLEAR_NAK_OUT_PACKETS_MODE), &ep->regs->ep_rsp); -+ } - - writel (tmp, &ep->regs->ep_cfg); - -@@ -232,8 +239,9 @@ net2280_enable (struct usb_ep *_ep, cons - writel (tmp, &dev->regs->pciirqenb0); - - tmp = (1 << DATA_PACKET_RECEIVED_INTERRUPT_ENABLE) -- | (1 << DATA_PACKET_TRANSMITTED_INTERRUPT_ENABLE) -- | readl (&ep->regs->ep_irqenb); -+ | (1 << DATA_PACKET_TRANSMITTED_INTERRUPT_ENABLE); -+ if (dev->pdev->device == 0x2280) -+ tmp |= readl (&ep->regs->ep_irqenb); - writel (tmp, &ep->regs->ep_irqenb); - } else { /* dma, per-request */ - tmp = (1 << (8 + ep->num)); /* completion */ -@@ -314,10 +322,18 @@ static void ep_reset (struct net2280_reg - /* init to our chosen defaults, notably so that we NAK OUT - * packets until the driver queues a read (+note erratum 0112) - */ -- tmp = (1 << SET_NAK_OUT_PACKETS_MODE) -+ if (!ep->is_in || ep->dev->pdev->device == 0x2280) { -+ tmp = (1 << SET_NAK_OUT_PACKETS_MODE) - | (1 << SET_NAK_OUT_PACKETS) - | (1 << CLEAR_EP_HIDE_STATUS_PHASE) - | (1 << CLEAR_INTERRUPT_MODE); -+ } else { -+ /* added for 2282 */ -+ tmp = (1 << CLEAR_NAK_OUT_PACKETS_MODE) -+ | (1 << CLEAR_NAK_OUT_PACKETS) -+ | (1 << CLEAR_EP_HIDE_STATUS_PHASE) -+ | (1 << CLEAR_INTERRUPT_MODE); -+ } - - if (ep->num != 0) { - tmp |= (1 << CLEAR_ENDPOINT_TOGGLE) -@@ -326,14 +342,18 @@ static void ep_reset (struct net2280_reg - writel (tmp, &ep->regs->ep_rsp); - - /* scrub most status bits, and flush any fifo state */ -- writel ( (1 << TIMEOUT) -+ if (ep->dev->pdev->device == 0x2280) -+ tmp = (1 << FIFO_OVERFLOW) -+ | (1 << FIFO_UNDERFLOW); -+ else -+ tmp = 0; -+ -+ writel (tmp | (1 << TIMEOUT) - | (1 << USB_STALL_SENT) - | (1 << USB_IN_NAK_SENT) - | (1 << USB_IN_ACK_RCVD) - | (1 << USB_OUT_PING_NAK_SENT) - | (1 << USB_OUT_ACK_SENT) -- | (1 << FIFO_OVERFLOW) -- | (1 << FIFO_UNDERFLOW) - | (1 << FIFO_FLUSH) - | (1 << SHORT_PACKET_OUT_DONE_INTERRUPT) - | (1 << SHORT_PACKET_TRANSFERRED_INTERRUPT) -@@ -718,7 +738,7 @@ fill_dma_desc (struct net2280_ep *ep, st - */ - if (ep->is_in) - dmacount |= (1 << DMA_DIRECTION); -- else if ((dmacount % ep->ep.maxpacket) != 0) -+ if ((!ep->is_in && (dmacount % ep->ep.maxpacket) != 0) || ep->dev->pdev->device != 0x2280) - dmacount |= (1 << END_OF_CHAIN); - - req->valid = valid; -@@ -760,9 +780,12 @@ static inline void stop_dma (struct net2 - static void start_queue (struct net2280_ep *ep, u32 dmactl, u32 td_dma) - { - struct net2280_dma_regs __iomem *dma = ep->dma; -+ unsigned int tmp = (1 << VALID_BIT) | (ep->is_in << DMA_DIRECTION); - -- writel ((1 << VALID_BIT) | (ep->is_in << DMA_DIRECTION), -- &dma->dmacount); -+ if (ep->dev->pdev->device != 0x2280) -+ tmp |= (1 << END_OF_CHAIN); -+ -+ writel (tmp, &dma->dmacount); - writel (readl (&dma->dmastat), &dma->dmastat); - - writel (td_dma, &dma->dmadesc); -@@ -2110,7 +2133,11 @@ static void handle_ep_small (struct net2 - VDEBUG (ep->dev, "%s ack ep_stat %08x, req %p\n", - ep->ep.name, t, req ? &req->req : 0); - #endif -- writel (t & ~(1 << NAK_OUT_PACKETS), &ep->regs->ep_stat); -+ if (!ep->is_in || ep->dev->pdev->device == 0x2280) -+ writel (t & ~(1 << NAK_OUT_PACKETS), &ep->regs->ep_stat); -+ else -+ /* Added for 2282 */ -+ writel (t, &ep->regs->ep_stat); - - /* for ep0, monitor token irqs to catch data stage length errors - * and to synchronize on status. -@@ -2337,7 +2364,7 @@ static void handle_stat0_irqs (struct ne - u32 raw [2]; - struct usb_ctrlrequest r; - } u; -- int tmp = 0; -+ int tmp; - struct net2280_request *req; - - if (dev->gadget.speed == USB_SPEED_UNKNOWN) { -@@ -2364,14 +2391,19 @@ static void handle_stat0_irqs (struct ne - } - ep->stopped = 0; - dev->protocol_stall = 0; -- writel ( (1 << TIMEOUT) -+ -+ if (ep->dev->pdev->device == 0x2280) -+ tmp = (1 << FIFO_OVERFLOW) -+ | (1 << FIFO_UNDERFLOW); -+ else -+ tmp = 0; -+ -+ writel (tmp | (1 << TIMEOUT) - | (1 << USB_STALL_SENT) - | (1 << USB_IN_NAK_SENT) - | (1 << USB_IN_ACK_RCVD) - | (1 << USB_OUT_PING_NAK_SENT) - | (1 << USB_OUT_ACK_SENT) -- | (1 << FIFO_OVERFLOW) -- | (1 << FIFO_UNDERFLOW) - | (1 << SHORT_PACKET_OUT_DONE_INTERRUPT) - | (1 << SHORT_PACKET_TRANSFERRED_INTERRUPT) - | (1 << DATA_PACKET_RECEIVED_INTERRUPT) -@@ -2385,6 +2417,8 @@ static void handle_stat0_irqs (struct ne - cpu_to_le32s (&u.raw [0]); - cpu_to_le32s (&u.raw [1]); - -+ tmp = 0; -+ - #define w_value le16_to_cpup (&u.r.wValue) - #define w_index le16_to_cpup (&u.r.wIndex) - #define w_length le16_to_cpup (&u.r.wLength) -@@ -2594,10 +2628,17 @@ static void handle_stat1_irqs (struct ne - writel (stat, &dev->regs->irqstat1); - - /* some status we can just ignore */ -- stat &= ~((1 << CONTROL_STATUS_INTERRUPT) -- | (1 << SUSPEND_REQUEST_INTERRUPT) -- | (1 << RESUME_INTERRUPT) -- | (1 << SOF_INTERRUPT)); -+ if (dev->pdev->device == 0x2280) -+ stat &= ~((1 << CONTROL_STATUS_INTERRUPT) -+ | (1 << SUSPEND_REQUEST_INTERRUPT) -+ | (1 << RESUME_INTERRUPT) -+ | (1 << SOF_INTERRUPT)); -+ else -+ stat &= ~((1 << CONTROL_STATUS_INTERRUPT) -+ | (1 << RESUME_INTERRUPT) -+ | (1 << SOF_DOWN_INTERRUPT) -+ | (1 << SOF_INTERRUPT)); -+ - if (!stat) - return; - // DEBUG (dev, "irqstat1 %08x\n", stat); -@@ -2939,6 +2980,13 @@ static struct pci_device_id pci_ids [] = - .device = 0x2280, - .subvendor = PCI_ANY_ID, - .subdevice = PCI_ANY_ID, -+}, { -+ .class = ((PCI_CLASS_SERIAL_USB << 8) | 0xfe), -+ .class_mask = ~0, -+ .vendor = 0x17cc, -+ .device = 0x2282, -+ .subvendor = PCI_ANY_ID, -+ .subdevice = PCI_ANY_ID, - - }, { /* end: all zeroes */ } - }; ---- gregkh-2.6.orig/drivers/usb/gadget/net2280.h -+++ gregkh-2.6/drivers/usb/gadget/net2280.h -@@ -179,6 +179,7 @@ struct net2280_regs { - #define PCI_TARGET_ABORT_RECEIVED_INTERRUPT 19 - #define PCI_RETRY_ABORT_INTERRUPT 17 - #define PCI_MASTER_CYCLE_DONE_INTERRUPT 16 -+#define SOF_DOWN_INTERRUPT 14 - #define GPIO_INTERRUPT 13 - #define DMA_D_INTERRUPT 12 - #define DMA_C_INTERRUPT 11 -@@ -346,6 +347,7 @@ struct net2280_dma_regs { /* [11.7] */ - #define DMA_ENABLE 1 - #define DMA_ADDRESS_HOLD 0 - u32 dmastat; -+#define DMA_ABORT_DONE_INTERRUPT 27 - #define DMA_SCATTER_GATHER_DONE_INTERRUPT 25 - #define DMA_TRANSACTION_DONE_INTERRUPT 24 - #define DMA_ABORT 1 diff --git a/usb/usb-otg-hub-support-is-optional.patch b/usb/usb-otg-hub-support-is-optional.patch deleted file mode 100644 index 93b22568e62d2..0000000000000 --- a/usb/usb-otg-hub-support-is-optional.patch +++ /dev/null @@ -1,49 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 11:38:12 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: otg hub support is optional -Date: Sun, 2 Apr 2006 10:18:09 -0800 -Cc: Greg KH <greg@kroah.com> -Message-Id: <200604021118.09660.david-b@pacbell.net> - -USB OTG devices are not required to support external hubs. This adds a -configuration option to disable that support. - -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/core/Kconfig | 7 +++++++ - drivers/usb/core/hub.c | 7 +++++++ - 2 files changed, 14 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/core/Kconfig -+++ gregkh-2.6/drivers/usb/core/Kconfig -@@ -99,4 +99,11 @@ config USB_OTG_WHITELIST - normal Linux-USB hosts do (other than the warning), and is - convenient for many stages of product development. - -+config USB_OTG_BLACKLIST_HUB -+ bool "Disable external hubs" -+ depends on USB_OTG -+ help -+ If you say Y here, then Linux will refuse to enumerate -+ external hubs. OTG hosts are allowed to reduce hardware -+ and software costs by not supporting external hubs. - ---- gregkh-2.6.orig/drivers/usb/core/hub.c -+++ gregkh-2.6/drivers/usb/core/hub.c -@@ -836,6 +836,13 @@ static int hub_probe(struct usb_interfac - desc = intf->cur_altsetting; - hdev = interface_to_usbdev(intf); - -+#ifdef CONFIG_USB_OTG_BLACKLIST_HUB -+ if (hdev->parent) { -+ dev_warn(&intf->dev, "ignoring external hub\n"); -+ return -ENODEV; -+ } -+#endif -+ - /* Some hubs have a subclass of 1, which AFAICT according to the */ - /* specs is not defined, but it works */ - if ((desc->desc.bInterfaceSubClass != 0) && diff --git a/usb/usb-pci-quirks.c-proper-prototypes.patch b/usb/usb-pci-quirks.c-proper-prototypes.patch deleted file mode 100644 index 20c17c7edf227..0000000000000 --- a/usb/usb-pci-quirks.c-proper-prototypes.patch +++ /dev/null @@ -1,62 +0,0 @@ -From bunk@stusta.de Sat Mar 25 09:02:30 2006 -Date: Sat, 25 Mar 2006 18:01:53 +0100 -From: Adrian Bunk <bunk@stusta.de> -To: stern@rowland.harvard.edu, gregkh@suse.de -Cc: linux-usb-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org -Subject: USB: pci-quirks.c: proper prototypes -Message-ID: <20060325170153.GE4053@stusta.de> -Content-Disposition: inline - -This patch adds a header file with proper prototypes for two functions -in drivers/usb/host/pci-quirks.c. - -Signed-off-by: Adrian Bunk <bunk@stusta.de> -Acked-by: Alan Stern <stern@rowland.harvard.edu> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/host/pci-quirks.c | 1 + - drivers/usb/host/pci-quirks.h | 7 +++++++ - drivers/usb/host/uhci-hcd.c | 4 +--- - 3 files changed, 9 insertions(+), 3 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/host/pci-quirks.c -+++ gregkh-2.6/drivers/usb/host/pci-quirks.c -@@ -15,6 +15,7 @@ - #include <linux/init.h> - #include <linux/delay.h> - #include <linux/acpi.h> -+#include "pci-quirks.h" - - - #define UHCI_USBLEGSUP 0xc0 /* legacy support */ ---- /dev/null -+++ gregkh-2.6/drivers/usb/host/pci-quirks.h -@@ -0,0 +1,7 @@ -+#ifndef __LINUX_USB_PCI_QUIRKS_H -+#define __LINUX_USB_PCI_QUIRKS_H -+ -+void uhci_reset_hc(struct pci_dev *pdev, unsigned long base); -+int uhci_check_and_reset_hc(struct pci_dev *pdev, unsigned long base); -+ -+#endif /* __LINUX_USB_PCI_QUIRKS_H */ ---- gregkh-2.6.orig/drivers/usb/host/uhci-hcd.c -+++ gregkh-2.6/drivers/usb/host/uhci-hcd.c -@@ -50,6 +50,7 @@ - - #include "../core/hcd.h" - #include "uhci-hcd.h" -+#include "pci-quirks.h" - - /* - * Version Information -@@ -100,9 +101,6 @@ static void uhci_get_current_frame_numbe - #include "uhci-q.c" - #include "uhci-hub.c" - --extern void uhci_reset_hc(struct pci_dev *pdev, unsigned long base); --extern int uhci_check_and_reset_hc(struct pci_dev *pdev, unsigned long base); -- - /* - * Finish up a host controller reset and update the recorded state. - */ diff --git a/usb/usb-pegasus-driver-bugfix.patch b/usb/usb-pegasus-driver-bugfix.patch deleted file mode 100644 index 9b4add3f831be..0000000000000 --- a/usb/usb-pegasus-driver-bugfix.patch +++ /dev/null @@ -1,28 +0,0 @@ -From petkan@nucleusys.com Wed Mar 29 22:59:00 2006 -Date: Thu, 30 Mar 2006 09:59:22 +0300 (EEST) -From: Petko Manolov <petkan@nucleusys.com> -To: Greg KH <greg@kroah.com> -Subject: USB: pegasus driver bugfix -Message-ID: <Pine.LNX.4.62.0603300953150.7186@localhost.localdomain> - -Attached is a patch that fixes nasty bug, which i am afraid was there -for a long time. It was spotted by Andre Draszik <kernel@andred.net>. - -From: Petko Manolov <petkan@nucleusys.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/net/pegasus.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- gregkh-2.6.orig/drivers/usb/net/pegasus.c -+++ gregkh-2.6/drivers/usb/net/pegasus.c -@@ -262,7 +262,7 @@ static int set_register(pegasus_t * pega - usb_fill_control_urb(pegasus->ctrl_urb, pegasus->usb, - usb_sndctrlpipe(pegasus->usb, 0), - (char *) &pegasus->dr, -- &tmp, 1, ctrl_callback, pegasus); -+ tmp, 1, ctrl_callback, pegasus); - - add_wait_queue(&pegasus->ctrl_wait, &wait); - set_current_state(TASK_UNINTERRUPTIBLE); diff --git a/usb/usb-pl2303-added-support-for-oti-s-dku-5-clone-cable.patch b/usb/usb-pl2303-added-support-for-oti-s-dku-5-clone-cable.patch deleted file mode 100644 index cebe72accc5ae..0000000000000 --- a/usb/usb-pl2303-added-support-for-oti-s-dku-5-clone-cable.patch +++ /dev/null @@ -1,42 +0,0 @@ -From tomek.fizyk@op.pl Thu Apr 6 14:21:16 2006 -Content-Disposition: inline -Date: Thu, 06 Apr 2006 22:07:12 +0200 -From: tomek.fizyk@op.pl -To: greg@kroah.com -Subject: USB: pl2303: added support for OTi's DKU-5 clone cable -Message-Id: <20060406200716Z2608200-18763+115@kps10.test.onet.pl> - -From: Tomasz Kazmierczak <tomek.fizyk@op.pl> - -This patch adds support for a clone of Nokia DKU-5 cable made by -Ours Technology Inc for Nokia phones with PopPort (Nokia 3100 and others). -The cable uses PL2303 USB-to-serial converter from Prolific Technology Inc. - -Signed-off-by: Tomasz Kazmierczak <tomek.fizyk@op.pl> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/serial/pl2303.c | 1 + - drivers/usb/serial/pl2303.h | 4 ++++ - 2 files changed, 5 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/serial/pl2303.c -+++ gregkh-2.6/drivers/usb/serial/pl2303.c -@@ -78,6 +78,7 @@ static struct usb_device_id id_table [] - { USB_DEVICE(SAGEM_VENDOR_ID, SAGEM_PRODUCT_ID) }, - { USB_DEVICE(LEADTEK_VENDOR_ID, LEADTEK_9531_PRODUCT_ID) }, - { USB_DEVICE(SPEEDDRAGON_VENDOR_ID, SPEEDDRAGON_PRODUCT_ID) }, -+ { USB_DEVICE(OTI_VENDOR_ID, OTI_PRODUCT_ID) }, - { } /* Terminating entry */ - }; - ---- gregkh-2.6.orig/drivers/usb/serial/pl2303.h -+++ gregkh-2.6/drivers/usb/serial/pl2303.h -@@ -79,3 +79,7 @@ - /* USB GSM cable from Speed Dragon Multimedia, Ltd */ - #define SPEEDDRAGON_VENDOR_ID 0x0e55 - #define SPEEDDRAGON_PRODUCT_ID 0x110b -+ -+/* Ours Technology Inc DKU-5 clone, chipset: Prolific Technology Inc */ -+#define OTI_VENDOR_ID 0x0ea0 -+#define OTI_PRODUCT_ID 0x6858 diff --git a/usb/usb-remove-__init-from-usb_console_setup.patch b/usb/usb-remove-__init-from-usb_console_setup.patch deleted file mode 100644 index e4bdd6042283e..0000000000000 --- a/usb/usb-remove-__init-from-usb_console_setup.patch +++ /dev/null @@ -1,30 +0,0 @@ -From stable-bounces@linux.kernel.org Wed Apr 12 14:42:27 2006 -Date: Wed, 12 Apr 2006 23:41:59 +0200 (CEST) -From: Guennadi Liakhovetski <g.liakhovetski@gmx.de> -To: Paul Fulghum <paulkf@microgate.com> -Message-ID: <Pine.LNX.4.60.0604122330430.4984@poirot.grange> -Cc: GregKH <gregkh@suse.de> -Subject: USB: remove __init from usb_console_setup - -From: Paul Fulghum <paulkf@microgate.com> - -This prevents an Oops if booted with "console=ttyUSB0" but without a -USB-serial dongle, and plugged one in afterwards. - -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/serial/console.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- gregkh-2.6.orig/drivers/usb/serial/console.c -+++ gregkh-2.6/drivers/usb/serial/console.c -@@ -54,7 +54,7 @@ static struct console usbcons; - * serial.c code, except that the specifier is "ttyUSB" instead - * of "ttyS". - */ --static int __init usb_console_setup(struct console *co, char *options) -+static int usb_console_setup(struct console *co, char *options) - { - struct usbcons_info *info = &usbcons_info; - int baud = 9600; diff --git a/usb/usb-rename-ax8817x_func-to-asix_func-and-add-utility-functions-to-reduce-bloat.patch b/usb/usb-rename-ax8817x_func-to-asix_func-and-add-utility-functions-to-reduce-bloat.patch deleted file mode 100644 index e783654b759d9..0000000000000 --- a/usb/usb-rename-ax8817x_func-to-asix_func-and-add-utility-functions-to-reduce-bloat.patch +++ /dev/null @@ -1,713 +0,0 @@ -From dhollis@davehollis.com Tue Mar 28 18:38:15 2006 -Date: Tue, 28 Mar 2006 20:15:42 -0500 -From: David Hollis <dhollis@davehollis.com> -Subject: USB: Rename ax8817x_func() to asix_func() and add utility functions to reduce bloat -To: Greg KH <greg@kroah.com> -Message-id: <1143594942.14921.1.camel@dhollis-lnx.sunera.com> - -Now that the ASIX code is supporting more than just the AX88172 devices, -make the utility function names more generic: ax8817x_func -> asix_func. -Functions that are chip specific now indicate as such: ax88772_func. - -Additionally, pull some common routines used in initialization and such -into simple functions to reduce the verbosity of certain functions such -as -the bind() routines and to make the error handling consistent across the -board. - -Signed-off-by: David Hollis <dhollis@davehollis.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/net/asix.c | 327 ++++++++++++++++++++++++------------------------- - 1 file changed, 163 insertions(+), 164 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/net/asix.c -+++ gregkh-2.6/drivers/usb/net/asix.c -@@ -37,7 +37,6 @@ - - #include "usbnet.h" - -- - /* ASIX AX8817X based USB 2.0 Ethernet Devices */ - - #define AX_CMD_SET_SW_MII 0x06 -@@ -109,7 +108,7 @@ - #define AX_EEPROM_MAGIC 0xdeadbeef - - /* This structure cannot exceed sizeof(unsigned long [5]) AKA 20 bytes */ --struct ax8817x_data { -+struct asix_data { - u8 multi_filter[AX_MCAST_FILTER_SIZE]; - }; - -@@ -121,7 +120,7 @@ struct ax88172_int_data { - u16 res3; - } __attribute__ ((packed)); - --static int ax8817x_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index, -+static int asix_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index, - u16 size, void *data) - { - return usb_control_msg( -@@ -136,7 +135,7 @@ static int ax8817x_read_cmd(struct usbne - USB_CTRL_GET_TIMEOUT); - } - --static int ax8817x_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index, -+static int asix_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index, - u16 size, void *data) - { - return usb_control_msg( -@@ -151,19 +150,80 @@ static int ax8817x_write_cmd(struct usbn - USB_CTRL_SET_TIMEOUT); - } - --static void ax8817x_async_cmd_callback(struct urb *urb, struct pt_regs *regs) -+static void asix_async_cmd_callback(struct urb *urb, struct pt_regs *regs) - { - struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; - - if (urb->status < 0) -- printk(KERN_DEBUG "ax8817x_async_cmd_callback() failed with %d", -+ printk(KERN_DEBUG "asix_async_cmd_callback() failed with %d", - urb->status); - - kfree(req); - usb_free_urb(urb); - } - --static void ax8817x_status(struct usbnet *dev, struct urb *urb) -+static inline int asix_set_sw_mii(struct usbnet *dev) -+{ -+ int ret; -+ ret = asix_write_cmd(dev, AX_CMD_SET_SW_MII, 0x0000, 0, 0, NULL); -+ if (ret < 0) -+ devdbg(dev, "Failed to enable software MII access"); -+ return ret; -+} -+ -+static inline int asix_set_hw_mii(struct usbnet *dev) -+{ -+ int ret; -+ ret = asix_write_cmd(dev, AX_CMD_SET_HW_MII, 0x0000, 0, 0, NULL); -+ if (ret < 0) -+ devdbg(dev, "Failed to enable hardware MII access"); -+ return ret; -+} -+ -+static inline int asix_get_phyid(struct usbnet *dev) -+{ -+ int ret = 0; -+ void *buf; -+ -+ buf = kmalloc(2, GFP_KERNEL); -+ if (!buf) -+ goto out1; -+ -+ if ((ret = asix_read_cmd(dev, AX_CMD_READ_PHY_ID, -+ 0, 0, 2, buf)) < 2) { -+ devdbg(dev, "Error reading PHYID register: %02x", ret); -+ goto out2; -+ } -+ ret = *((u8 *)buf + 1); -+out2: -+ kfree(buf); -+out1: -+ return ret; -+} -+ -+static int asix_sw_reset(struct usbnet *dev, u8 flags) -+{ -+ int ret; -+ -+ ret = asix_write_cmd(dev, AX_CMD_SW_RESET, flags, 0, 0, NULL); -+ if (ret < 0) -+ devdbg(dev,"Failed to send software reset: %02x", ret); -+ -+ return ret; -+} -+ -+static int asix_write_rx_ctl(struct usbnet *dev, u16 mode) -+{ -+ int ret; -+ -+ ret = asix_write_cmd(dev, AX_CMD_WRITE_RX_CTL, mode, 0, 0, NULL); -+ if (ret < 0) -+ devdbg(dev, "Failed to write RX_CTL mode: %02x", ret); -+ -+ return ret; -+} -+ -+static void asix_status(struct usbnet *dev, struct urb *urb) - { - struct ax88172_int_data *event; - int link; -@@ -179,12 +239,12 @@ static void ax8817x_status(struct usbnet - usbnet_defer_kevent (dev, EVENT_LINK_RESET ); - } else - netif_carrier_off(dev->net); -- devdbg(dev, "ax8817x - Link Status is: %d", link); -+ devdbg(dev, "Link Status is: %d", link); - } - } - - static void --ax8817x_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value, u16 index, -+asix_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value, u16 index, - u16 size, void *data) - { - struct usb_ctrlrequest *req; -@@ -211,7 +271,7 @@ ax8817x_write_cmd_async(struct usbnet *d - usb_fill_control_urb(urb, dev->udev, - usb_sndctrlpipe(dev->udev, 0), - (void *)req, data, size, -- ax8817x_async_cmd_callback, req); -+ asix_async_cmd_callback, req); - - if((status = usb_submit_urb(urb, GFP_ATOMIC)) < 0) { - deverr(dev, "Error submitting the control message: status=%d", -@@ -221,10 +281,10 @@ ax8817x_write_cmd_async(struct usbnet *d - } - } - --static void ax8817x_set_multicast(struct net_device *net) -+static void asix_set_multicast(struct net_device *net) - { - struct usbnet *dev = netdev_priv(net); -- struct ax8817x_data *data = (struct ax8817x_data *)&dev->data; -+ struct asix_data *data = (struct asix_data *)&dev->data; - u8 rx_ctl = 0x8c; - - if (net->flags & IFF_PROMISC) { -@@ -255,53 +315,51 @@ static void ax8817x_set_multicast(struct - mc_list = mc_list->next; - } - -- ax8817x_write_cmd_async(dev, AX_CMD_WRITE_MULTI_FILTER, 0, 0, -+ asix_write_cmd_async(dev, AX_CMD_WRITE_MULTI_FILTER, 0, 0, - AX_MCAST_FILTER_SIZE, data->multi_filter); - - rx_ctl |= 0x10; - } - -- ax8817x_write_cmd_async(dev, AX_CMD_WRITE_RX_CTL, rx_ctl, 0, 0, NULL); -+ asix_write_cmd_async(dev, AX_CMD_WRITE_RX_CTL, rx_ctl, 0, 0, NULL); - } - --static int ax8817x_mdio_read(struct net_device *netdev, int phy_id, int loc) -+static int asix_mdio_read(struct net_device *netdev, int phy_id, int loc) - { - struct usbnet *dev = netdev_priv(netdev); - u16 res; -- u8 buf[1]; - -- ax8817x_write_cmd(dev, AX_CMD_SET_SW_MII, 0, 0, 0, &buf); -- ax8817x_read_cmd(dev, AX_CMD_READ_MII_REG, phy_id, -+ asix_set_sw_mii(dev); -+ asix_read_cmd(dev, AX_CMD_READ_MII_REG, phy_id, - (__u16)loc, 2, (u16 *)&res); -- ax8817x_write_cmd(dev, AX_CMD_SET_HW_MII, 0, 0, 0, &buf); -+ asix_set_hw_mii(dev); - - return res & 0xffff; - } - - /* same as above, but converts resulting value to cpu byte order */ --static int ax8817x_mdio_read_le(struct net_device *netdev, int phy_id, int loc) -+static int asix_mdio_read_le(struct net_device *netdev, int phy_id, int loc) - { -- return le16_to_cpu(ax8817x_mdio_read(netdev,phy_id, loc)); -+ return le16_to_cpu(asix_mdio_read(netdev,phy_id, loc)); - } - - static void --ax8817x_mdio_write(struct net_device *netdev, int phy_id, int loc, int val) -+asix_mdio_write(struct net_device *netdev, int phy_id, int loc, int val) - { - struct usbnet *dev = netdev_priv(netdev); - u16 res = val; -- u8 buf[1]; - -- ax8817x_write_cmd(dev, AX_CMD_SET_SW_MII, 0, 0, 0, &buf); -- ax8817x_write_cmd(dev, AX_CMD_WRITE_MII_REG, phy_id, -+ asix_set_sw_mii(dev); -+ asix_write_cmd(dev, AX_CMD_WRITE_MII_REG, phy_id, - (__u16)loc, 2, (u16 *)&res); -- ax8817x_write_cmd(dev, AX_CMD_SET_HW_MII, 0, 0, 0, &buf); -+ asix_set_hw_mii(dev); - } - - /* same as above, but converts new value to le16 byte order before writing */ - static void --ax8817x_mdio_write_le(struct net_device *netdev, int phy_id, int loc, int val) -+asix_mdio_write_le(struct net_device *netdev, int phy_id, int loc, int val) - { -- ax8817x_mdio_write( netdev, phy_id, loc, cpu_to_le16(val) ); -+ asix_mdio_write( netdev, phy_id, loc, cpu_to_le16(val) ); - } - - static int ax88172_link_reset(struct usbnet *dev) -@@ -312,23 +370,23 @@ static int ax88172_link_reset(struct usb - u8 mode; - - mode = AX_MEDIUM_TX_ABORT_ALLOW | AX_MEDIUM_FLOW_CONTROL_EN; -- lpa = ax8817x_mdio_read_le(dev->net, dev->mii.phy_id, MII_LPA); -- adv = ax8817x_mdio_read_le(dev->net, dev->mii.phy_id, MII_ADVERTISE); -+ lpa = asix_mdio_read_le(dev->net, dev->mii.phy_id, MII_LPA); -+ adv = asix_mdio_read_le(dev->net, dev->mii.phy_id, MII_ADVERTISE); - res = mii_nway_result(lpa|adv); - if (res & LPA_DUPLEX) - mode |= AX_MEDIUM_FULL_DUPLEX; -- ax8817x_write_cmd(dev, AX_CMD_WRITE_MEDIUM_MODE, mode, 0, 0, NULL); -+ asix_write_cmd(dev, AX_CMD_WRITE_MEDIUM_MODE, mode, 0, 0, NULL); - - return 0; - } - - static void --ax8817x_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo) -+asix_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo) - { - struct usbnet *dev = netdev_priv(net); - u8 opt; - -- if (ax8817x_read_cmd(dev, AX_CMD_READ_MONITOR_MODE, 0, 0, 1, &opt) < 0) { -+ if (asix_read_cmd(dev, AX_CMD_READ_MONITOR_MODE, 0, 0, 1, &opt) < 0) { - wolinfo->supported = 0; - wolinfo->wolopts = 0; - return; -@@ -344,7 +402,7 @@ ax8817x_get_wol(struct net_device *net, - } - - static int --ax8817x_set_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo) -+asix_set_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo) - { - struct usbnet *dev = netdev_priv(net); - u8 opt = 0; -@@ -357,19 +415,19 @@ ax8817x_set_wol(struct net_device *net, - if (opt != 0) - opt |= AX_MONITOR_MODE; - -- if (ax8817x_write_cmd(dev, AX_CMD_WRITE_MONITOR_MODE, -+ if (asix_write_cmd(dev, AX_CMD_WRITE_MONITOR_MODE, - opt, 0, 0, &buf) < 0) - return -EINVAL; - - return 0; - } - --static int ax8817x_get_eeprom_len(struct net_device *net) -+static int asix_get_eeprom_len(struct net_device *net) - { - return AX_EEPROM_LEN; - } - --static int ax8817x_get_eeprom(struct net_device *net, -+static int asix_get_eeprom(struct net_device *net, - struct ethtool_eeprom *eeprom, u8 *data) - { - struct usbnet *dev = netdev_priv(net); -@@ -386,14 +444,14 @@ static int ax8817x_get_eeprom(struct net - - /* ax8817x returns 2 bytes from eeprom on read */ - for (i=0; i < eeprom->len / 2; i++) { -- if (ax8817x_read_cmd(dev, AX_CMD_READ_EEPROM, -+ if (asix_read_cmd(dev, AX_CMD_READ_EEPROM, - eeprom->offset + i, 0, 2, &ebuf[i]) < 0) - return -EINVAL; - } - return 0; - } - --static void ax8817x_get_drvinfo (struct net_device *net, -+static void asix_get_drvinfo (struct net_device *net, - struct ethtool_drvinfo *info) - { - /* Inherit standard device info */ -@@ -401,14 +459,14 @@ static void ax8817x_get_drvinfo (struct - info->eedump_len = 0x3e; - } - --static int ax8817x_get_settings(struct net_device *net, struct ethtool_cmd *cmd) -+static int asix_get_settings(struct net_device *net, struct ethtool_cmd *cmd) - { - struct usbnet *dev = netdev_priv(net); - - return mii_ethtool_gset(&dev->mii,cmd); - } - --static int ax8817x_set_settings(struct net_device *net, struct ethtool_cmd *cmd) -+static int asix_set_settings(struct net_device *net, struct ethtool_cmd *cmd) - { - struct usbnet *dev = netdev_priv(net); - -@@ -418,27 +476,27 @@ static int ax8817x_set_settings(struct n - /* We need to override some ethtool_ops so we require our - own structure so we don't interfere with other usbnet - devices that may be connected at the same time. */ --static struct ethtool_ops ax8817x_ethtool_ops = { -- .get_drvinfo = ax8817x_get_drvinfo, -+static struct ethtool_ops ax88172_ethtool_ops = { -+ .get_drvinfo = asix_get_drvinfo, - .get_link = ethtool_op_get_link, - .get_msglevel = usbnet_get_msglevel, - .set_msglevel = usbnet_set_msglevel, -- .get_wol = ax8817x_get_wol, -- .set_wol = ax8817x_set_wol, -- .get_eeprom_len = ax8817x_get_eeprom_len, -- .get_eeprom = ax8817x_get_eeprom, -- .get_settings = ax8817x_get_settings, -- .set_settings = ax8817x_set_settings, -+ .get_wol = asix_get_wol, -+ .set_wol = asix_set_wol, -+ .get_eeprom_len = asix_get_eeprom_len, -+ .get_eeprom = asix_get_eeprom, -+ .get_settings = asix_get_settings, -+ .set_settings = asix_set_settings, - }; - --static int ax8817x_ioctl (struct net_device *net, struct ifreq *rq, int cmd) -+static int asix_ioctl (struct net_device *net, struct ifreq *rq, int cmd) - { - struct usbnet *dev = netdev_priv(net); - - return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); - } - --static int ax8817x_bind(struct usbnet *dev, struct usb_interface *intf) -+static int ax88172_bind(struct usbnet *dev, struct usb_interface *intf) - { - int ret = 0; - void *buf; -@@ -455,55 +513,39 @@ static int ax8817x_bind(struct usbnet *d - - /* Toggle the GPIOs in a manufacturer/model specific way */ - for (i = 2; i >= 0; i--) { -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_WRITE_GPIOS, -+ if ((ret = asix_write_cmd(dev, AX_CMD_WRITE_GPIOS, - (gpio_bits >> (i * 8)) & 0xff, 0, 0, - buf)) < 0) - goto out2; - msleep(5); - } - -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_WRITE_RX_CTL, -- 0x80, 0, 0, buf)) < 0) { -- dbg("send AX_CMD_WRITE_RX_CTL failed: %d", ret); -+ if ((ret = asix_write_rx_ctl(dev,0x80)) < 0) - goto out2; -- } - - /* Get the MAC address */ - memset(buf, 0, ETH_ALEN); -- if ((ret = ax8817x_read_cmd(dev, AX_CMD_READ_NODE_ID, -+ if ((ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID, - 0, 0, 6, buf)) < 0) { - dbg("read AX_CMD_READ_NODE_ID failed: %d", ret); - goto out2; - } - memcpy(dev->net->dev_addr, buf, ETH_ALEN); - -- /* Get the PHY id */ -- if ((ret = ax8817x_read_cmd(dev, AX_CMD_READ_PHY_ID, -- 0, 0, 2, buf)) < 0) { -- dbg("error on read AX_CMD_READ_PHY_ID: %02x", ret); -- goto out2; -- } else if (ret < 2) { -- /* this should always return 2 bytes */ -- dbg("AX_CMD_READ_PHY_ID returned less than 2 bytes: ret=%02x", -- ret); -- ret = -EIO; -- goto out2; -- } -- - /* Initialize MII structure */ - dev->mii.dev = dev->net; -- dev->mii.mdio_read = ax8817x_mdio_read; -- dev->mii.mdio_write = ax8817x_mdio_write; -+ dev->mii.mdio_read = asix_mdio_read; -+ dev->mii.mdio_write = asix_mdio_write; - dev->mii.phy_id_mask = 0x3f; - dev->mii.reg_num_mask = 0x1f; -- dev->mii.phy_id = *((u8 *)buf + 1); -- dev->net->do_ioctl = ax8817x_ioctl; -+ dev->mii.phy_id = asix_get_phyid(dev); -+ dev->net->do_ioctl = asix_ioctl; - -- dev->net->set_multicast_list = ax8817x_set_multicast; -- dev->net->ethtool_ops = &ax8817x_ethtool_ops; -+ dev->net->set_multicast_list = asix_set_multicast; -+ dev->net->ethtool_ops = &ax88172_ethtool_ops; - -- ax8817x_mdio_write_le(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET); -- ax8817x_mdio_write_le(dev->net, dev->mii.phy_id, MII_ADVERTISE, -+ asix_mdio_write_le(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET); -+ asix_mdio_write_le(dev->net, dev->mii.phy_id, MII_ADVERTISE, - ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP); - mii_nway_restart(&dev->mii); - -@@ -515,16 +557,16 @@ out1: - } - - static struct ethtool_ops ax88772_ethtool_ops = { -- .get_drvinfo = ax8817x_get_drvinfo, -+ .get_drvinfo = asix_get_drvinfo, - .get_link = ethtool_op_get_link, - .get_msglevel = usbnet_get_msglevel, - .set_msglevel = usbnet_set_msglevel, -- .get_wol = ax8817x_get_wol, -- .set_wol = ax8817x_set_wol, -- .get_eeprom_len = ax8817x_get_eeprom_len, -- .get_eeprom = ax8817x_get_eeprom, -- .get_settings = ax8817x_get_settings, -- .set_settings = ax8817x_set_settings, -+ .get_wol = asix_get_wol, -+ .set_wol = asix_set_wol, -+ .get_eeprom_len = asix_get_eeprom_len, -+ .get_eeprom = asix_get_eeprom, -+ .get_settings = asix_get_settings, -+ .set_settings = asix_set_settings, - }; - - static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf) -@@ -541,62 +583,45 @@ static int ax88772_bind(struct usbnet *d - goto out1; - } - -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_WRITE_GPIOS, -+ if ((ret = asix_write_cmd(dev, AX_CMD_WRITE_GPIOS, - 0x00B0, 0, 0, buf)) < 0) - goto out2; - - msleep(5); -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_SW_PHY_SELECT, -+ if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT, - 0x0001, 0, 0, buf)) < 0) { - dbg("Select PHY #1 failed: %d", ret); - goto out2; - } - -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_SW_RESET, AX_SWRESET_IPPD, -- 0, 0, buf)) < 0) { -- dbg("Failed to power down internal PHY: %d", ret); -+ if ((ret = asix_sw_reset(dev, AX_SWRESET_IPPD)) < 0) - goto out2; -- } - - msleep(150); -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_SW_RESET, AX_SWRESET_CLEAR, -- 0, 0, buf)) < 0) { -- dbg("Failed to perform software reset: %d", ret); -+ if ((ret = asix_sw_reset(dev, AX_SWRESET_CLEAR)) < 0) - goto out2; -- } - - msleep(150); -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_SW_RESET, -- AX_SWRESET_IPRL | AX_SWRESET_PRL, -- 0, 0, buf)) < 0) { -- dbg("Failed to set Internal/External PHY reset control: %d", -- ret); -+ if ((ret = asix_sw_reset(dev, AX_SWRESET_IPRL | AX_SWRESET_PRL)) < 0) - goto out2; -- } - - msleep(150); -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_WRITE_RX_CTL, -- 0x0000, 0, 0, buf)) < 0) { -- dbg("Failed to reset RX_CTL: %d", ret); -+ if ((ret = asix_write_rx_ctl(dev, 0x00)) < 0) - goto out2; -- } - - /* Get the MAC address */ - memset(buf, 0, ETH_ALEN); -- if ((ret = ax8817x_read_cmd(dev, AX88772_CMD_READ_NODE_ID, -+ if ((ret = asix_read_cmd(dev, AX88772_CMD_READ_NODE_ID, - 0, 0, ETH_ALEN, buf)) < 0) { - dbg("Failed to read MAC address: %d", ret); - goto out2; - } - memcpy(dev->net->dev_addr, buf, ETH_ALEN); - -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_SET_SW_MII, -- 0, 0, 0, buf)) < 0) { -- dbg("Enabling software MII failed: %d", ret); -+ if ((ret = asix_set_sw_mii(dev)) < 0) - goto out2; -- } - -- if (((ret = ax8817x_read_cmd(dev, AX_CMD_READ_MII_REG, -+ if (((ret = asix_read_cmd(dev, AX_CMD_READ_MII_REG, - 0x0010, 2, 2, buf)) < 0) - || (*((u16 *)buf) != 0x003b)) { - dbg("Read PHY register 2 must be 0x3b00: %d", ret); -@@ -605,74 +630,49 @@ static int ax88772_bind(struct usbnet *d - - /* Initialize MII structure */ - dev->mii.dev = dev->net; -- dev->mii.mdio_read = ax8817x_mdio_read; -- dev->mii.mdio_write = ax8817x_mdio_write; -+ dev->mii.mdio_read = asix_mdio_read; -+ dev->mii.mdio_write = asix_mdio_write; - dev->mii.phy_id_mask = 0xff; - dev->mii.reg_num_mask = 0xff; -- dev->net->do_ioctl = ax8817x_ioctl; -+ dev->net->do_ioctl = asix_ioctl; -+ dev->mii.phy_id = asix_get_phyid(dev); - -- /* Get the PHY id */ -- if ((ret = ax8817x_read_cmd(dev, AX_CMD_READ_PHY_ID, -- 0, 0, 2, buf)) < 0) { -- dbg("Error reading PHY ID: %02x", ret); -+ if ((ret = asix_sw_reset(dev, AX_SWRESET_PRL)) < 0) - goto out2; -- } else if (ret < 2) { -- /* this should always return 2 bytes */ -- dbg("AX_CMD_READ_PHY_ID returned less than 2 bytes: ret=%02x", -- ret); -- ret = -EIO; -- goto out2; -- } -- dev->mii.phy_id = *((u8 *)buf + 1); - -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_SW_RESET, AX_SWRESET_PRL, -- 0, 0, buf)) < 0) { -- dbg("Set external PHY reset pin level: %d", ret); -- goto out2; -- } - msleep(150); -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_SW_RESET, -- AX_SWRESET_IPRL | AX_SWRESET_PRL, -- 0, 0, buf)) < 0) { -- dbg("Set Internal/External PHY reset control: %d", ret); -+ -+ if ((ret = asix_sw_reset(dev, AX_SWRESET_IPRL | AX_SWRESET_PRL)) < 0) - goto out2; -- } -- msleep(150); - -+ msleep(150); - -- dev->net->set_multicast_list = ax8817x_set_multicast; -+ dev->net->set_multicast_list = asix_set_multicast; - dev->net->ethtool_ops = &ax88772_ethtool_ops; - -- ax8817x_mdio_write_le(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET); -- ax8817x_mdio_write_le(dev->net, dev->mii.phy_id, MII_ADVERTISE, -+ asix_mdio_write_le(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET); -+ asix_mdio_write_le(dev->net, dev->mii.phy_id, MII_ADVERTISE, - ADVERTISE_ALL | ADVERTISE_CSMA); - mii_nway_restart(&dev->mii); - -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_WRITE_MEDIUM_MODE, -+ if ((ret = asix_write_cmd(dev, AX_CMD_WRITE_MEDIUM_MODE, - AX88772_MEDIUM_DEFAULT, 0, 0, buf)) < 0) { - dbg("Write medium mode register: %d", ret); - goto out2; - } - -- if ((ret = ax8817x_write_cmd(dev, AX_CMD_WRITE_IPG0, -+ if ((ret = asix_write_cmd(dev, AX_CMD_WRITE_IPG0, - AX88772_IPG0_DEFAULT | AX88772_IPG1_DEFAULT, - AX88772_IPG2_DEFAULT, 0, buf)) < 0) { - dbg("Write IPG,IPG1,IPG2 failed: %d", ret); - goto out2; - } -- if ((ret = -- ax8817x_write_cmd(dev, AX_CMD_SET_HW_MII, 0, 0, 0, &buf)) < 0) { -- dbg("Failed to set hardware MII: %02x", ret); -+ if ((ret = asix_set_hw_mii(dev)) < 0) - goto out2; -- } - - /* Set RX_CTL to default values with 2k buffer, and enable cactus */ -- if ((ret = -- ax8817x_write_cmd(dev, AX_CMD_WRITE_RX_CTL, 0x0088, 0, 0, -- buf)) < 0) { -- dbg("Reset RX_CTL failed: %d", ret); -+ if ((ret = asix_write_rx_ctl(dev, 0x0088)) < 0) - goto out2; -- } - - kfree(buf); - -@@ -794,23 +794,23 @@ static int ax88772_link_reset(struct usb - u16 mode; - - mode = AX88772_MEDIUM_DEFAULT; -- lpa = ax8817x_mdio_read_le(dev->net, dev->mii.phy_id, MII_LPA); -- adv = ax8817x_mdio_read_le(dev->net, dev->mii.phy_id, MII_ADVERTISE); -+ lpa = asix_mdio_read_le(dev->net, dev->mii.phy_id, MII_LPA); -+ adv = asix_mdio_read_le(dev->net, dev->mii.phy_id, MII_ADVERTISE); - res = mii_nway_result(lpa|adv); - - if ((res & LPA_DUPLEX) == 0) - mode &= ~AX88772_MEDIUM_FULL_DUPLEX; - if ((res & LPA_100) == 0) - mode &= ~AX88772_MEDIUM_100MB; -- ax8817x_write_cmd(dev, AX_CMD_WRITE_MEDIUM_MODE, mode, 0, 0, NULL); -+ asix_write_cmd(dev, AX_CMD_WRITE_MEDIUM_MODE, mode, 0, 0, NULL); - - return 0; - } - - static const struct driver_info ax8817x_info = { - .description = "ASIX AX8817x USB 2.0 Ethernet", -- .bind = ax8817x_bind, -- .status = ax8817x_status, -+ .bind = ax88172_bind, -+ .status = asix_status, - .link_reset = ax88172_link_reset, - .reset = ax88172_link_reset, - .flags = FLAG_ETHER, -@@ -819,8 +819,8 @@ static const struct driver_info ax8817x_ - - static const struct driver_info dlink_dub_e100_info = { - .description = "DLink DUB-E100 USB Ethernet", -- .bind = ax8817x_bind, -- .status = ax8817x_status, -+ .bind = ax88172_bind, -+ .status = asix_status, - .link_reset = ax88172_link_reset, - .reset = ax88172_link_reset, - .flags = FLAG_ETHER, -@@ -829,8 +829,8 @@ static const struct driver_info dlink_du - - static const struct driver_info netgear_fa120_info = { - .description = "Netgear FA-120 USB Ethernet", -- .bind = ax8817x_bind, -- .status = ax8817x_status, -+ .bind = ax88172_bind, -+ .status = asix_status, - .link_reset = ax88172_link_reset, - .reset = ax88172_link_reset, - .flags = FLAG_ETHER, -@@ -839,8 +839,8 @@ static const struct driver_info netgear_ - - static const struct driver_info hawking_uf200_info = { - .description = "Hawking UF200 USB Ethernet", -- .bind = ax8817x_bind, -- .status = ax8817x_status, -+ .bind = ax88172_bind, -+ .status = asix_status, - .link_reset = ax88172_link_reset, - .reset = ax88172_link_reset, - .flags = FLAG_ETHER, -@@ -850,13 +850,12 @@ static const struct driver_info hawking_ - static const struct driver_info ax88772_info = { - .description = "ASIX AX88772 USB 2.0 Ethernet", - .bind = ax88772_bind, -- .status = ax8817x_status, -+ .status = asix_status, - .link_reset = ax88772_link_reset, - .reset = ax88772_link_reset, - .flags = FLAG_ETHER | FLAG_FRAMING_AX, - .rx_fixup = ax88772_rx_fixup, - .tx_fixup = ax88772_tx_fixup, -- .data = 0x00130103, - }; - - static const struct usb_device_id products [] = { diff --git a/usb/usb-rndis_host-whitespace-comment-updates.patch b/usb/usb-rndis_host-whitespace-comment-updates.patch deleted file mode 100644 index b141a524ef43e..0000000000000 --- a/usb/usb-rndis_host-whitespace-comment-updates.patch +++ /dev/null @@ -1,81 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 11:38:18 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: rndis_host whitespace/comment updates -Date: Sun, 2 Apr 2006 10:19:08 -0800 -Cc: Greg KH <greg@kroah.com> -Message-Id: <200604021119.08544.david-b@pacbell.net> - -This adds a "avoid proprietary protocols" warnoff, identifying several -of the known deficiencies in Microsoft's excuse-for-specification, and -fixes some whitespace bugs. - -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/net/rndis_host.c | 28 +++++++++++++++++++++------- - 1 file changed, 21 insertions(+), 7 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/net/rndis_host.c -+++ gregkh-2.6/drivers/usb/net/rndis_host.c -@@ -39,6 +39,20 @@ - * RNDIS is NDIS remoted over USB. It's a MSFT variant of CDC ACM ... of - * course ACM was intended for modems, not Ethernet links! USB's standard - * for Ethernet links is "CDC Ethernet", which is significantly simpler. -+ * -+ * NOTE that Microsoft's "RNDIS 1.0" specification is incomplete. Issues -+ * include: -+ * - Power management in particular relies on information that's scattered -+ * through other documentation, and which is incomplete or incorrect even -+ * there. -+ * - There are various undocumented protocol requirements, such as the -+ * need to send unused garbage in control-OUT messages. -+ * - In some cases, MS-Windows will emit undocumented requests; this -+ * matters more to peripheral implementations than host ones. -+ * -+ * For these reasons and others, ** USE OF RNDIS IS STRONGLY DISCOURAGED ** in -+ * favor of such non-proprietary alternatives as CDC Ethernet or the newer (and -+ * currently rare) "Ethernet Emulation Model" (EEM). - */ - - /* -@@ -72,17 +86,17 @@ struct rndis_msg_hdr { - */ - #define RNDIS_MSG_PACKET ccpu2(0x00000001) /* 1-N packets */ - #define RNDIS_MSG_INIT ccpu2(0x00000002) --#define RNDIS_MSG_INIT_C (RNDIS_MSG_INIT|RNDIS_MSG_COMPLETION) -+#define RNDIS_MSG_INIT_C (RNDIS_MSG_INIT|RNDIS_MSG_COMPLETION) - #define RNDIS_MSG_HALT ccpu2(0x00000003) - #define RNDIS_MSG_QUERY ccpu2(0x00000004) --#define RNDIS_MSG_QUERY_C (RNDIS_MSG_QUERY|RNDIS_MSG_COMPLETION) -+#define RNDIS_MSG_QUERY_C (RNDIS_MSG_QUERY|RNDIS_MSG_COMPLETION) - #define RNDIS_MSG_SET ccpu2(0x00000005) --#define RNDIS_MSG_SET_C (RNDIS_MSG_SET|RNDIS_MSG_COMPLETION) -+#define RNDIS_MSG_SET_C (RNDIS_MSG_SET|RNDIS_MSG_COMPLETION) - #define RNDIS_MSG_RESET ccpu2(0x00000006) --#define RNDIS_MSG_RESET_C (RNDIS_MSG_RESET|RNDIS_MSG_COMPLETION) -+#define RNDIS_MSG_RESET_C (RNDIS_MSG_RESET|RNDIS_MSG_COMPLETION) - #define RNDIS_MSG_INDICATE ccpu2(0x00000007) - #define RNDIS_MSG_KEEPALIVE ccpu2(0x00000008) --#define RNDIS_MSG_KEEPALIVE_C (RNDIS_MSG_KEEPALIVE|RNDIS_MSG_COMPLETION) -+#define RNDIS_MSG_KEEPALIVE_C (RNDIS_MSG_KEEPALIVE|RNDIS_MSG_COMPLETION) - - /* codes for "status" field of completion messages */ - #define RNDIS_STATUS_SUCCESS ccpu2(0x00000000) -@@ -596,13 +610,13 @@ static struct usb_driver rndis_driver = - - static int __init rndis_init(void) - { -- return usb_register(&rndis_driver); -+ return usb_register(&rndis_driver); - } - module_init(rndis_init); - - static void __exit rndis_exit(void) - { -- usb_deregister(&rndis_driver); -+ usb_deregister(&rndis_driver); - } - module_exit(rndis_exit); - diff --git a/usb/usb-s3c2410-use-clk_enable-to-ensure-48mhz-to-ohci-core.patch b/usb/usb-s3c2410-use-clk_enable-to-ensure-48mhz-to-ohci-core.patch deleted file mode 100644 index 2df87f8f0f5d4..0000000000000 --- a/usb/usb-s3c2410-use-clk_enable-to-ensure-48mhz-to-ohci-core.patch +++ /dev/null @@ -1,113 +0,0 @@ -From ben@fluff.org.uk Sat Apr 1 16:46:06 2006 -Date: Sun, 2 Apr 2006 01:45:00 +0100 -From: Ben Dooks <ben-linux@fluff.org> -To: linux-usb-devel@lists.sourceforge.net, gregkh@suse.de -Subject: USB: S3C2410: use clk_enable() to ensure 48MHz to OHCI core -Message-ID: <20060402004500.GA26447@home.fluff.org> -Content-Disposition: inline - -Get the "usb-bus" clock and ensure it is enabled -when the OHCI core is in use. - -It seems that a few bootloaders do not enable the -UPLL at startup, which stops the OHCI core having -a 48MHz bus clock. The improvements to the clock -framework for the s3c24xx now allow the USB PLL -to be started and stopped when being used. - -Signed-off-by: Ben Dooks <ben-linux@fluff.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/host/ohci-s3c2410.c | 32 ++++++++++++++++++++++++-------- - 1 file changed, 24 insertions(+), 8 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/host/ohci-s3c2410.c -+++ gregkh-2.6/drivers/usb/host/ohci-s3c2410.c -@@ -30,6 +30,7 @@ - /* clock device associated with the hcd */ - - static struct clk *clk; -+static struct clk *usb_clk; - - /* forward definitions */ - -@@ -47,6 +48,10 @@ static void s3c2410_start_hc(struct plat - struct s3c2410_hcd_info *info = dev->dev.platform_data; - - dev_dbg(&dev->dev, "s3c2410_start_hc:\n"); -+ -+ clk_enable(usb_clk); -+ mdelay(2); /* let the bus clock stabilise */ -+ - clk_enable(clk); - - if (info != NULL) { -@@ -75,6 +80,7 @@ static void s3c2410_stop_hc(struct platf - } - - clk_disable(clk); -+ clk_disable(usb_clk); - } - - /* ohci_s3c2410_hub_status_data -@@ -354,14 +360,21 @@ static int usb_hcd_s3c2410_probe (const - if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) { - dev_err(&dev->dev, "request_mem_region failed"); - retval = -EBUSY; -- goto err0; -+ goto err_put; - } - -- clk = clk_get(NULL, "usb-host"); -+ clk = clk_get(&dev->dev, "usb-host"); - if (IS_ERR(clk)) { - dev_err(&dev->dev, "cannot get usb-host clock\n"); - retval = -ENOENT; -- goto err1; -+ goto err_mem; -+ } -+ -+ usb_clk = clk_get(&dev->dev, "upll"); -+ if (IS_ERR(usb_clk)) { -+ dev_err(&dev->dev, "cannot get usb-host clock\n"); -+ retval = -ENOENT; -+ goto err_clk; - } - - s3c2410_start_hc(dev, hcd); -@@ -370,26 +383,29 @@ static int usb_hcd_s3c2410_probe (const - if (!hcd->regs) { - dev_err(&dev->dev, "ioremap failed\n"); - retval = -ENOMEM; -- goto err2; -+ goto err_ioremap; - } - - ohci_hcd_init(hcd_to_ohci(hcd)); - - retval = usb_add_hcd(hcd, dev->resource[1].start, SA_INTERRUPT); - if (retval != 0) -- goto err2; -+ goto err_ioremap; - - return 0; - -- err2: -+ err_ioremap: - s3c2410_stop_hc(dev); - iounmap(hcd->regs); -+ clk_put(usb_clk); -+ -+ err_clk: - clk_put(clk); - -- err1: -+ err_mem: - release_mem_region(hcd->rsrc_start, hcd->rsrc_len); - -- err0: -+ err_put: - usb_put_hcd(hcd); - return retval; - } diff --git a/usb/usb-serial-converts-port-semaphore-to-mutexes.patch b/usb/usb-serial-converts-port-semaphore-to-mutexes.patch deleted file mode 100644 index 20a66c27704e1..0000000000000 --- a/usb/usb-serial-converts-port-semaphore-to-mutexes.patch +++ /dev/null @@ -1,121 +0,0 @@ -From lcapitulino@mandriva.com.br Fri Mar 24 12:12:58 2006 -Date: Fri, 24 Mar 2006 17:12:31 -0300 -From: Luiz Fernando Capitulino <lcapitulino@mandriva.com.br> -To: Greg KH <gregkh@suse.de> -Subject: USB serial: Converts port semaphore to mutexes. -Message-Id: <20060324171231.6b45576a.lcapitulino@mandriva.com.br> - - -The usbserial's port semaphore used to synchronize serial_open() -and serial_close() are strict mutexes, convert them to the mutex -implementation. - -Signed-off-by: Luiz Capitulino <lcapitulino@mandriva.com.br> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/serial/usb-serial.c | 16 ++++++++-------- - drivers/usb/serial/usb-serial.h | 6 +++--- - 2 files changed, 11 insertions(+), 11 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/serial/usb-serial.c -+++ gregkh-2.6/drivers/usb/serial/usb-serial.c -@@ -27,10 +27,10 @@ - #include <linux/module.h> - #include <linux/moduleparam.h> - #include <linux/spinlock.h> -+#include <linux/mutex.h> - #include <linux/list.h> - #include <linux/smp_lock.h> - #include <asm/uaccess.h> --#include <asm/semaphore.h> - #include <linux/usb.h> - #include "usb-serial.h" - #include "pl2303.h" -@@ -192,7 +192,7 @@ static int serial_open (struct tty_struc - if (!port) - return -ENODEV; - -- if (down_interruptible(&port->sem)) -+ if (mutex_lock_interruptible(&port->mutex)) - return -ERESTARTSYS; - - ++port->open_count; -@@ -219,7 +219,7 @@ static int serial_open (struct tty_struc - goto bailout_module_put; - } - -- up(&port->sem); -+ mutex_unlock(&port->mutex); - return 0; - - bailout_module_put: -@@ -227,7 +227,7 @@ bailout_module_put: - bailout_kref_put: - kref_put(&serial->kref, destroy_serial); - port->open_count = 0; -- up(&port->sem); -+ mutex_unlock(&port->mutex); - return retval; - } - -@@ -240,10 +240,10 @@ static void serial_close(struct tty_stru - - dbg("%s - port %d", __FUNCTION__, port->number); - -- down(&port->sem); -+ mutex_lock(&port->mutex); - - if (port->open_count == 0) { -- up(&port->sem); -+ mutex_unlock(&port->mutex); - return; - } - -@@ -262,7 +262,7 @@ static void serial_close(struct tty_stru - module_put(port->serial->type->driver.owner); - } - -- up(&port->sem); -+ mutex_unlock(&port->mutex); - kref_put(&port->serial->kref, destroy_serial); - } - -@@ -783,7 +783,7 @@ int usb_serial_probe(struct usb_interfac - port->number = i + serial->minor; - port->serial = serial; - spin_lock_init(&port->lock); -- sema_init(&port->sem, 1); -+ mutex_init(&port->mutex); - INIT_WORK(&port->work, usb_serial_port_softint, port); - serial->port[i] = port; - } ---- gregkh-2.6.orig/drivers/usb/serial/usb-serial.h -+++ gregkh-2.6/drivers/usb/serial/usb-serial.h -@@ -16,7 +16,7 @@ - - #include <linux/config.h> - #include <linux/kref.h> --#include <asm/semaphore.h> -+#include <linux/mutex.h> - - #define SERIAL_TTY_MAJOR 188 /* Nice legal number now */ - #define SERIAL_TTY_MINORS 255 /* loads of devices :) */ -@@ -31,7 +31,7 @@ - * @serial: pointer back to the struct usb_serial owner of this port. - * @tty: pointer to the corresponding tty for this port. - * @lock: spinlock to grab when updating portions of this structure. -- * @sem: semaphore used to synchronize serial_open() and serial_close() -+ * @mutex: mutex used to synchronize serial_open() and serial_close() - * access for this port. - * @number: the number of the port (the minor number). - * @interrupt_in_buffer: pointer to the interrupt in buffer for this port. -@@ -63,7 +63,7 @@ struct usb_serial_port { - struct usb_serial * serial; - struct tty_struct * tty; - spinlock_t lock; -- struct semaphore sem; -+ struct mutex mutex; - unsigned char number; - - unsigned char * interrupt_in_buffer; diff --git a/usb/usb-ueagle-cosmetic.patch b/usb/usb-ueagle-cosmetic.patch deleted file mode 100644 index ef5b60a53383c..0000000000000 --- a/usb/usb-ueagle-cosmetic.patch +++ /dev/null @@ -1,165 +0,0 @@ -From castet.matthieu@free.fr Sun Apr 2 09:44:04 2006 -Message-ID: <442FFF49.50303@free.fr> -Date: Sun, 02 Apr 2006 18:43:53 +0200 -From: matthieu castet <castet.matthieu@free.fr> -To: greg@kroah.com -CC: <ueagleatm-dev@gna.org> -Subject: USB: UEAGLE : cosmetic - -- improve debug trace in order to make easy to solve user problems. -- indent some code -- increase version number - -Signed-off-by: Matthieu CASTET <castet.matthieu@free.fr> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - - ---- - drivers/usb/atm/ueagle-atm.c | 35 +++++++++++++++++++++++++++++------ - 1 file changed, 29 insertions(+), 6 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/atm/ueagle-atm.c -+++ gregkh-2.6/drivers/usb/atm/ueagle-atm.c -@@ -68,7 +68,7 @@ - - #include "usbatm.h" - --#define EAGLEUSBVERSION "ueagle 1.2" -+#define EAGLEUSBVERSION "ueagle 1.3" - - - /* -@@ -314,6 +314,10 @@ struct cmv { - ((d) & 0xff) << 16 | \ - ((a) & 0xff) << 8 | \ - ((b) & 0xff)) -+#define GETSA1(a) ((a >> 8) & 0xff) -+#define GETSA2(a) (a & 0xff) -+#define GETSA3(a) ((a >> 24) & 0xff) -+#define GETSA4(a) ((a >> 16) & 0xff) - - #define SA_CNTL MAKESA('C', 'N', 'T', 'L') - #define SA_DIAG MAKESA('D', 'I', 'A', 'G') -@@ -728,11 +732,12 @@ bad2: - uea_err(INS_TO_USBDEV(sc), "sending DSP block %u failed\n", i); - return; - bad1: -- uea_err(INS_TO_USBDEV(sc), "invalid DSP page %u requested\n",pageno); -+ uea_err(INS_TO_USBDEV(sc), "invalid DSP page %u requested\n", pageno); - } - - static inline void wake_up_cmv_ack(struct uea_softc *sc) - { -+ BUG_ON(sc->cmv_ack); - sc->cmv_ack = 1; - wake_up(&sc->cmv_ack_wait); - } -@@ -743,6 +748,9 @@ static inline int wait_cmv_ack(struct ue - sc->cmv_ack, ACK_TIMEOUT); - sc->cmv_ack = 0; - -+ uea_dbg(INS_TO_USBDEV(sc), "wait_event_timeout : %d ms\n", -+ jiffies_to_msecs(ret)); -+ - if (ret < 0) - return ret; - -@@ -791,6 +799,12 @@ static int uea_cmv(struct uea_softc *sc, - struct cmv cmv; - int ret; - -+ uea_enters(INS_TO_USBDEV(sc)); -+ uea_vdbg(INS_TO_USBDEV(sc), "Function : %d-%d, Address : %c%c%c%c, " -+ "offset : 0x%04x, data : 0x%08x\n", -+ FUNCTION_TYPE(function), FUNCTION_SUBTYPE(function), -+ GETSA1(address), GETSA2(address), GETSA3(address), -+ GETSA4(address), offset, data); - /* we send a request, but we expect a reply */ - sc->cmv_function = function | 0x2; - sc->cmv_idx++; -@@ -808,7 +822,9 @@ static int uea_cmv(struct uea_softc *sc, - ret = uea_request(sc, UEA_SET_BLOCK, UEA_MPTX_START, CMV_SIZE, &cmv); - if (ret < 0) - return ret; -- return wait_cmv_ack(sc); -+ ret = wait_cmv_ack(sc); -+ uea_leaves(INS_TO_USBDEV(sc)); -+ return ret; - } - - static inline int uea_read_cmv(struct uea_softc *sc, -@@ -922,7 +938,7 @@ static int uea_stat(struct uea_softc *sc - * we check the status again in order to detect the failure earlier - */ - if (sc->stats.phy.flags) { -- uea_dbg(INS_TO_USBDEV(sc), "Stat flag = %d\n", -+ uea_dbg(INS_TO_USBDEV(sc), "Stat flag = 0x%x\n", - sc->stats.phy.flags); - return 0; - } -@@ -1101,6 +1117,8 @@ static int uea_start_reset(struct uea_so - if (ret < 0) - return ret; - -+ uea_vdbg(INS_TO_USBDEV(sc), "Ready CMV received\n"); -+ - /* Enter in R-IDLE (cmv) until instructed otherwise */ - ret = uea_write_cmv(sc, SA_CNTL, 0, 1); - if (ret < 0) -@@ -1121,6 +1139,7 @@ static int uea_start_reset(struct uea_so - } - /* Enter in R-ACT-REQ */ - ret = uea_write_cmv(sc, SA_CNTL, 0, 2); -+ uea_vdbg(INS_TO_USBDEV(sc), "Entering in R-ACT-REQ state\n"); - out: - release_firmware(cmvs_fw); - sc->reset = 0; -@@ -1235,6 +1254,7 @@ static void uea_dispatch_cmv(struct uea_ - - if (cmv->bFunction == MAKEFUNCTION(ADSLDIRECTIVE, MODEMREADY)) { - wake_up_cmv_ack(sc); -+ uea_leaves(INS_TO_USBDEV(sc)); - return; - } - -@@ -1249,6 +1269,7 @@ static void uea_dispatch_cmv(struct uea_ - sc->data = sc->data << 16 | sc->data >> 16; - - wake_up_cmv_ack(sc); -+ uea_leaves(INS_TO_USBDEV(sc)); - return; - - bad2: -@@ -1256,12 +1277,14 @@ bad2: - "Function : %d, Subfunction : %d\n", - FUNCTION_TYPE(cmv->bFunction), - FUNCTION_SUBTYPE(cmv->bFunction)); -+ uea_leaves(INS_TO_USBDEV(sc)); - return; - - bad1: - uea_err(INS_TO_USBDEV(sc), "invalid cmv received, " - "wPreamble %d, bDirection %d\n", - le16_to_cpu(cmv->wPreamble), cmv->bDirection); -+ uea_leaves(INS_TO_USBDEV(sc)); - } - - /* -@@ -1508,7 +1531,7 @@ static ssize_t read_##name(struct device - int ret = -ENODEV; \ - struct uea_softc *sc; \ - \ -- mutex_lock(&uea_mutex); \ -+ mutex_lock(&uea_mutex); \ - sc = dev_to_uea(dev); \ - if (!sc) \ - goto out; \ -@@ -1516,7 +1539,7 @@ static ssize_t read_##name(struct device - if (reset) \ - sc->stats.phy.name = 0; \ - out: \ -- mutex_unlock(&uea_mutex); \ -+ mutex_unlock(&uea_mutex); \ - return ret; \ - } \ - \ diff --git a/usb/usb-ueagle-memory-leack-fix.patch b/usb/usb-ueagle-memory-leack-fix.patch deleted file mode 100644 index bc198b49e8795..0000000000000 --- a/usb/usb-ueagle-memory-leack-fix.patch +++ /dev/null @@ -1,44 +0,0 @@ -From castet.matthieu@free.fr Sun Apr 2 09:45:55 2006 -Message-ID: <442FFFBA.10000@free.fr> -Date: Sun, 02 Apr 2006 18:45:46 +0200 -From: matthieu castet <castet.matthieu@free.fr> -To: greg@kroah.com -CC: ueagle <ueagleatm-dev@gna.org> -Subject: USB: UEAGLE : memory leack fix - -this patch fix leak of memory allocated to intr if allocation of -sc->urb_int fails. -Found by the Coverity checker. - -Signed-off-by: Duncan Sands <baldrick@free.fr> -Signed-off-by: Matthieu CASTET <castet.matthieu@free.fr> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/atm/ueagle-atm.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/atm/ueagle-atm.c -+++ gregkh-2.6/drivers/usb/atm/ueagle-atm.c -@@ -1376,7 +1376,7 @@ static int uea_boot(struct uea_softc *sc - if (ret < 0) { - uea_err(INS_TO_USBDEV(sc), - "urb submition failed with error %d\n", ret); -- goto err1; -+ goto err; - } - - sc->kthread = kthread_run(uea_kthread, sc, "ueagle-atm"); -@@ -1390,10 +1390,10 @@ static int uea_boot(struct uea_softc *sc - - err2: - usb_kill_urb(sc->urb_int); --err1: -- kfree(intr); - err: - usb_free_urb(sc->urb_int); -+ sc->urb_int = NULL; -+ kfree(intr); - uea_leaves(INS_TO_USBDEV(sc)); - return -ENOMEM; - } diff --git a/usb/usb-ueagle-null-pointer-dereference-fix.patch b/usb/usb-ueagle-null-pointer-dereference-fix.patch deleted file mode 100644 index dcc81669ab663..0000000000000 --- a/usb/usb-ueagle-null-pointer-dereference-fix.patch +++ /dev/null @@ -1,30 +0,0 @@ -From castet.matthieu@free.fr Sun Apr 2 09:45:00 2006 -Message-ID: <442FFF80.9090205@free.fr> -Date: Sun, 02 Apr 2006 18:44:48 +0200 -From: matthieu castet <castet.matthieu@free.fr> -To: greg@kroah.com -CC: ueagle <ueagleatm-dev@gna.org> -Subject: USB: UEAGLE : null pointer dereference fix - -this patch fix potential null pointer dereference. Found by the -Coverity checker. - -Signed-off-by: Duncan Sands <baldrick@free.fr> -Signed-off-by: Matthieu CASTET <castet.matthieu@free.fr> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/atm/ueagle-atm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- gregkh-2.6.orig/drivers/usb/atm/ueagle-atm.c -+++ gregkh-2.6/drivers/usb/atm/ueagle-atm.c -@@ -1673,7 +1673,7 @@ static int uea_bind(struct usbatm_data * - - sc = kzalloc(sizeof(struct uea_softc), GFP_KERNEL); - if (!sc) { -- uea_err(INS_TO_USBDEV(sc), "uea_init: not enough memory !\n"); -+ uea_err(usb, "uea_init: not enough memory !\n"); - return -ENOMEM; - } - diff --git a/usb/usb-ueagle-support-geode.patch b/usb/usb-ueagle-support-geode.patch deleted file mode 100644 index 271d1019790d2..0000000000000 --- a/usb/usb-ueagle-support-geode.patch +++ /dev/null @@ -1,51 +0,0 @@ -From castet.matthieu@free.fr Sun Apr 2 09:44:26 2006 -Message-ID: <442FFF64.3030309@free.fr> -Date: Sun, 02 Apr 2006 18:44:20 +0200 -From: matthieu castet <castet.matthieu@free.fr> -To: greg@kroah.com -CC: ueagle <ueagleatm-dev@gna.org> -Subject: USB: UEAGLE : support geode - -- increase ack timeout for slow system (geode 233MHz where HZ=100) -- reset the cmv ack flag when rebooting - -Signed-off-by: Matthieu CASTET <castet.matthieu@free.fr> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/atm/ueagle-atm.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - ---- gregkh-2.6.orig/drivers/usb/atm/ueagle-atm.c -+++ gregkh-2.6/drivers/usb/atm/ueagle-atm.c -@@ -243,7 +243,7 @@ enum { - #define BULK_TIMEOUT 300 - #define CTRL_TIMEOUT 1000 - --#define ACK_TIMEOUT msecs_to_jiffies(1500) -+#define ACK_TIMEOUT msecs_to_jiffies(3000) - - #define UEA_INTR_IFACE_NO 0 - #define UEA_US_IFACE_NO 1 -@@ -1079,7 +1079,13 @@ static int uea_start_reset(struct uea_so - uea_enters(INS_TO_USBDEV(sc)); - uea_info(INS_TO_USBDEV(sc), "(re)booting started\n"); - -+ /* mask interrupt */ - sc->booting = 1; -+ /* We need to set this here because, a ack timeout could have occured, -+ * but before we start the reboot, the ack occurs and set this to 1. -+ * So we will failed to wait Ready CMV. -+ */ -+ sc->cmv_ack = 0; - UPDATE_ATM_STAT(signal, ATM_PHY_SIG_LOST); - - /* reset statistics */ -@@ -1105,6 +1111,7 @@ static int uea_start_reset(struct uea_so - - msleep(1000); - sc->cmv_function = MAKEFUNCTION(ADSLDIRECTIVE, MODEMREADY); -+ /* demask interrupt */ - sc->booting = 0; - - /* start loading DSP */ diff --git a/usb/usb-uhci-don-t-track-suspended-ports.patch b/usb/usb-uhci-don-t-track-suspended-ports.patch deleted file mode 100644 index 4f36709d3f986..0000000000000 --- a/usb/usb-uhci-don-t-track-suspended-ports.patch +++ /dev/null @@ -1,102 +0,0 @@ -From stern@rowland.harvard.edu Tue Apr 4 11:47:48 2006 -Date: Tue, 4 Apr 2006 14:47:44 -0400 (EDT) -From: Alan Stern <stern@rowland.harvard.edu> -To: Greg KH <greg@kroah.com> -cc: USB development list <linux-usb-devel@lists.sourceforge.net> -Subject: USB: UHCI: don't track suspended ports -Message-ID: <Pine.LNX.4.44L0.0604041441280.4587-100000@iolanthe.rowland.org> - -Someone recently posted a bug report where it turned out that uhci-hcd -was disagreeing with the UHCI controller over whether or not a port was -suspended: The driver thought it wasn't and the hardware thought it was. -This patch (as665) fixes the problem and simplifies the driver by -removing the internal state-tracking completely. Now the driver just -asks the hardware whether a port is suspended. - -Signed-off-by: Alan Stern <stern@rowland.harvard.edu> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/host/uhci-hcd.c | 3 +-- - drivers/usb/host/uhci-hcd.h | 1 - - drivers/usb/host/uhci-hub.c | 18 +++++++++--------- - 3 files changed, 10 insertions(+), 12 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/host/uhci-hcd.c -+++ gregkh-2.6/drivers/usb/host/uhci-hcd.c -@@ -115,8 +115,7 @@ static void finish_reset(struct uhci_hcd - for (port = 0; port < uhci->rh_numports; ++port) - outw(0, uhci->io_addr + USBPORTSC1 + (port * 2)); - -- uhci->port_c_suspend = uhci->suspended_ports = -- uhci->resuming_ports = 0; -+ uhci->port_c_suspend = uhci->resuming_ports = 0; - uhci->rh_state = UHCI_RH_RESET; - uhci->is_stopped = UHCI_IS_STOPPED; - uhci_to_hcd(uhci)->state = HC_STATE_HALT; ---- gregkh-2.6.orig/drivers/usb/host/uhci-hcd.h -+++ gregkh-2.6/drivers/usb/host/uhci-hcd.h -@@ -415,7 +415,6 @@ struct uhci_hcd { - - /* Support for port suspend/resume/reset */ - unsigned long port_c_suspend; /* Bit-arrays of ports */ -- unsigned long suspended_ports; - unsigned long resuming_ports; - unsigned long ports_timeout; /* Time to stop signalling */ - ---- gregkh-2.6.orig/drivers/usb/host/uhci-hub.c -+++ gregkh-2.6/drivers/usb/host/uhci-hub.c -@@ -85,11 +85,10 @@ static void uhci_finish_suspend(struct u - { - int status; - -- if (test_bit(port, &uhci->suspended_ports)) { -+ if (inw(port_addr) & (USBPORTSC_SUSP | USBPORTSC_RD)) { - CLR_RH_PORTSTAT(USBPORTSC_SUSP | USBPORTSC_RD); -- clear_bit(port, &uhci->suspended_ports); -- clear_bit(port, &uhci->resuming_ports); -- set_bit(port, &uhci->port_c_suspend); -+ if (test_bit(port, &uhci->resuming_ports)) -+ set_bit(port, &uhci->port_c_suspend); - - /* The controller won't actually turn off the RD bit until - * it has had a chance to send a low-speed EOP sequence, -@@ -97,6 +96,7 @@ static void uhci_finish_suspend(struct u - * slightly longer for good luck. */ - udelay(4); - } -+ clear_bit(port, &uhci->resuming_ports); - } - - /* Wait for the UHCI controller in HP's iLO2 server management chip. -@@ -265,8 +265,6 @@ static int uhci_hub_control(struct usb_h - wPortChange |= USB_PORT_STAT_C_SUSPEND; - lstatus |= 1; - } -- if (test_bit(port, &uhci->suspended_ports)) -- lstatus |= 2; - if (test_bit(port, &uhci->resuming_ports)) - lstatus |= 4; - -@@ -309,7 +307,6 @@ static int uhci_hub_control(struct usb_h - - switch (wValue) { - case USB_PORT_FEAT_SUSPEND: -- set_bit(port, &uhci->suspended_ports); - SET_RH_PORTSTAT(USBPORTSC_SUSP); - OK(0); - case USB_PORT_FEAT_RESET: -@@ -343,8 +340,11 @@ static int uhci_hub_control(struct usb_h - CLR_RH_PORTSTAT(USBPORTSC_PEC); - OK(0); - case USB_PORT_FEAT_SUSPEND: -- if (test_bit(port, &uhci->suspended_ports) && -- !test_and_set_bit(port, -+ if (!(inw(port_addr) & USBPORTSC_SUSP)) { -+ -+ /* Make certain the port isn't suspended */ -+ uhci_finish_suspend(uhci, port, port_addr); -+ } else if (!test_and_set_bit(port, - &uhci->resuming_ports)) { - SET_RH_PORTSTAT(USBPORTSC_RD); - diff --git a/usb/usb-usbtest-scatterlist-out-data-pattern-testing.patch b/usb/usb-usbtest-scatterlist-out-data-pattern-testing.patch deleted file mode 100644 index 1dcc1e75596e7..0000000000000 --- a/usb/usb-usbtest-scatterlist-out-data-pattern-testing.patch +++ /dev/null @@ -1,65 +0,0 @@ -From david-b@pacbell.net Sun Apr 2 11:38:18 2006 -From: David Brownell <david-b@pacbell.net> -To: linux-usb-devel@lists.sourceforge.net -Subject: USB: usbtest: scatterlist OUT data pattern testing -Date: Sun, 2 Apr 2006 10:20:15 -0800 -Cc: Greg KH <greg@kroah.com> -Message-Id: <200604021120.16233.david-b@pacbell.net> - -Previously, scatterlist tests didn't write patterned data. Given how many -corner cases are addresed by them, this was a significant gap in Linux-USB -test coverage. Moreover, when peripherals checked for correct data patterns, -false error reports would drown out the true ones. - -This adds the pattern on the way OUT from the host, so scatterlist tests can -now be used to uncover bugs like host TX or peripheral RX paths failing for -back-to-back short packets. It's easy enough to get an error there with at -least one of the {DMA,PIO}{RX,TX} code paths, or run into hardware races -that need to be defended against. - -Note this patch doesn't add checking for correct data patterns on the way -IN from peripherals, just a FIXME for later. - -Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/misc/usbtest.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - ---- gregkh-2.6.orig/drivers/usb/misc/usbtest.c -+++ gregkh-2.6/drivers/usb/misc/usbtest.c -@@ -381,6 +381,7 @@ alloc_sglist (int nents, int max, int va - - for (i = 0; i < nents; i++) { - char *buf; -+ unsigned j; - - buf = kzalloc (size, SLAB_KERNEL); - if (!buf) { -@@ -391,6 +392,16 @@ alloc_sglist (int nents, int max, int va - /* kmalloc pages are always physically contiguous! */ - sg_init_one(&sg[i], buf, size); - -+ switch (pattern) { -+ case 0: -+ /* already zeroed */ -+ break; -+ case 1: -+ for (j = 0; j < size; j++) -+ *buf++ = (u8) (j % 63); -+ break; -+ } -+ - if (vary) { - size += vary; - size %= max; -@@ -425,6 +436,8 @@ static int perform_sglist ( - usb_sg_wait (req); - retval = req->status; - -+ /* FIXME check resulting data pattern */ -+ - /* FIXME if endpoint halted, clear halt (and log) */ - } - diff --git a/usb/usb-usbtouchscreen-unified-usb-touchscreen-driver.patch b/usb/usb-usbtouchscreen-unified-usb-touchscreen-driver.patch deleted file mode 100644 index 55a3fce3974c0..0000000000000 --- a/usb/usb-usbtouchscreen-unified-usb-touchscreen-driver.patch +++ /dev/null @@ -1,743 +0,0 @@ -From daniel.ritz-ml@swissonline.ch Wed Mar 29 12:40:33 2006 -From: Daniel Ritz <daniel.ritz-ml@swissonline.ch> -To: Greg KH <greg@kroah.com>, Dmitry Torokhov <dmitry.torokhov@gmail.com> -Subject: USB: usbtouchscreen: unified USB touchscreen driver -Date: Wed, 29 Mar 2006 22:41:07 +0200 -Content-Disposition: inline -Message-Id: <200603292241.07903.daniel.ritz-ml@swissonline.ch> - -A new single driver for various USB touchscreen devices. It currently -supports: -- eGalax TouchKit -- PanJit TouchSet -- 3M/Microtouch -- ITM Touchscreens - -Support for the diffent devices can be enabled/disable when CONFIG_EMBEDDED -is set. - -Sizes for comparision: - text data bss dec hex filename - 2942 724 4 3670 e56 touchkitusb.ko - 2647 660 0 3307 ceb mtouchusb.ko - 2448 628 0 3076 c04 itmtouch.ko - 4145 1012 12 5169 1431 usbtouchscreen.ko - -Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/input/Kconfig | 42 ++ - drivers/usb/input/Makefile | 1 - drivers/usb/input/hid-core.c | 7 - drivers/usb/input/usbtouchscreen.c | 605 +++++++++++++++++++++++++++++++++++++ - 4 files changed, 652 insertions(+), 3 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/input/Kconfig -+++ gregkh-2.6/drivers/usb/input/Kconfig -@@ -200,9 +200,45 @@ config USB_POWERMATE - To compile this driver as a module, choose M here: the - module will be called powermate. - -+config USB_TOUCHSCREEN -+ tristate "USB Touchscreen Driver" -+ depends on USB && INPUT -+ ---help--- -+ USB Touchscreen driver for: -+ - eGalax Touchkit USB -+ - PanJit TouchSet USB -+ - 3M MicroTouch USB -+ - ITM -+ -+ Have a look at <http://linux.chapter7.ch/touchkit/> for -+ a usage description and the required user-space stuff. -+ -+ To compile this driver as a module, choose M here: the -+ module will be called usbtouchscreen. -+ -+config USB_TOUCHSCREEN_EGALAX -+ default y -+ bool "eGalax device support" if EMBEDDED -+ depends on USB_TOUCHSCREEN -+ -+config USB_TOUCHSCREEN_PANJIT -+ default y -+ bool "PanJit device support" if EMBEDDED -+ depends on USB_TOUCHSCREEN -+ -+config USB_TOUCHSCREEN_3M -+ default y -+ bool "3M/Microtouch device support" if EMBEDDED -+ depends on USB_TOUCHSCREEN -+ -+config USB_TOUCHSCREEN_ITM -+ default y -+ bool "ITM device support" if EMBEDDED -+ depends on USB_TOUCHSCREEN -+ - config USB_MTOUCH - tristate "MicroTouch USB Touchscreen Driver" -- depends on USB && INPUT -+ depends on USB && INPUT && !USB_TOUCHSCREEN_3M - ---help--- - Say Y here if you want to use a MicroTouch (Now 3M) USB - Touchscreen controller. -@@ -214,7 +250,7 @@ config USB_MTOUCH - - config USB_ITMTOUCH - tristate "ITM Touch USB Touchscreen Driver" -- depends on USB && INPUT -+ depends on USB && INPUT && !USB_TOUCHSCREEN_ITM - ---help--- - Say Y here if you want to use a ITM Touch USB - Touchscreen controller. -@@ -226,7 +262,7 @@ config USB_ITMTOUCH - - config USB_EGALAX - tristate "eGalax TouchKit USB Touchscreen Driver" -- depends on USB && INPUT -+ depends on USB && INPUT && !USB_TOUCHSCREEN_EGALAX - ---help--- - Say Y here if you want to use a eGalax TouchKit USB - Touchscreen controller. ---- gregkh-2.6.orig/drivers/usb/input/Makefile -+++ gregkh-2.6/drivers/usb/input/Makefile -@@ -37,6 +37,7 @@ obj-$(CONFIG_USB_MOUSE) += usbmouse.o - obj-$(CONFIG_USB_MTOUCH) += mtouchusb.o - obj-$(CONFIG_USB_ITMTOUCH) += itmtouch.o - obj-$(CONFIG_USB_EGALAX) += touchkitusb.o -+obj-$(CONFIG_USB_TOUCHSCREEN) += usbtouchscreen.o - obj-$(CONFIG_USB_POWERMATE) += powermate.o - obj-$(CONFIG_USB_WACOM) += wacom.o - obj-$(CONFIG_USB_ACECAD) += acecad.o ---- gregkh-2.6.orig/drivers/usb/input/hid-core.c -+++ gregkh-2.6/drivers/usb/input/hid-core.c -@@ -1372,6 +1372,8 @@ void hid_close(struct hid_device *hid) - usb_kill_urb(hid->urbin); - } - -+#define USB_VENDOR_ID_PANJIT 0x134c -+ - /* - * Initialize all reports - */ -@@ -1701,6 +1703,11 @@ static const struct hid_blacklist { - { USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN }, - { USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN }, - -+ { USB_VENDOR_ID_PANJIT, 0x0001, HID_QUIRK_IGNORE }, -+ { USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE }, -+ { USB_VENDOR_ID_PANJIT, 0x0003, HID_QUIRK_IGNORE }, -+ { USB_VENDOR_ID_PANJIT, 0x0004, HID_QUIRK_IGNORE }, -+ - { 0, 0 } - }; - ---- /dev/null -+++ gregkh-2.6/drivers/usb/input/usbtouchscreen.c -@@ -0,0 +1,605 @@ -+/****************************************************************************** -+ * usbtouchscreen.c -+ * Driver for USB Touchscreens, supporting those devices: -+ * - eGalax Touchkit -+ * - 3M/Microtouch -+ * - ITM -+ * - PanJit TouchSet -+ * -+ * Copyright (C) 2004-2006 by Daniel Ritz <daniel.ritz@gmx.ch> -+ * Copyright (C) by Todd E. Johnson (mtouchusb.c) -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ * -+ * Driver is based on touchkitusb.c -+ * - ITM parts are from itmtouch.c -+ * - 3M parts are from mtouchusb.c -+ * - PanJit parts are from an unmerged driver by Lanslott Gish -+ * -+ *****************************************************************************/ -+ -+//#define DEBUG -+ -+#include <linux/config.h> -+#include <linux/kernel.h> -+#include <linux/slab.h> -+#include <linux/input.h> -+#include <linux/module.h> -+#include <linux/init.h> -+#include <linux/usb.h> -+#include <linux/usb_input.h> -+ -+ -+#define DRIVER_VERSION "v0.3" -+#define DRIVER_AUTHOR "Daniel Ritz <daniel.ritz@gmx.ch>" -+#define DRIVER_DESC "USB Touchscreen Driver" -+ -+static int swap_xy; -+module_param(swap_xy, bool, 0644); -+MODULE_PARM_DESC(swap_xy, "If set X and Y axes are swapped."); -+ -+/* device specifc data/functions */ -+struct usbtouch_usb; -+struct usbtouch_device_info { -+ int min_xc, max_xc; -+ int min_yc, max_yc; -+ int min_press, max_press; -+ int rept_size; -+ int flags; -+ -+ void (*process_pkt) (struct usbtouch_usb *usbtouch, struct pt_regs *regs, unsigned char *pkt, int len); -+ int (*read_data) (unsigned char *pkt, int *x, int *y, int *touch, int *press); -+ int (*init) (struct usbtouch_usb *usbtouch); -+}; -+ -+#define USBTOUCH_FLG_BUFFER 0x01 -+ -+ -+/* a usbtouch device */ -+struct usbtouch_usb { -+ unsigned char *data; -+ dma_addr_t data_dma; -+ unsigned char *buffer; -+ int buf_len; -+ struct urb *irq; -+ struct usb_device *udev; -+ struct input_dev *input; -+ struct usbtouch_device_info *type; -+ char name[128]; -+ char phys[64]; -+}; -+ -+static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch, -+ struct pt_regs *regs, unsigned char *pkt, int len); -+ -+/* device types */ -+enum { -+ DEVTPYE_DUMMY = -1, -+ DEVTYPE_EGALAX, -+ DEVTYPE_PANJIT, -+ DEVTYPE_3M, -+ DEVTYPE_ITM, -+}; -+ -+static struct usb_device_id usbtouch_devices[] = { -+#ifdef CONFIG_USB_TOUCHSCREEN_EGALAX -+ {USB_DEVICE(0x3823, 0x0001), .driver_info = DEVTYPE_EGALAX}, -+ {USB_DEVICE(0x0123, 0x0001), .driver_info = DEVTYPE_EGALAX}, -+ {USB_DEVICE(0x0eef, 0x0001), .driver_info = DEVTYPE_EGALAX}, -+ {USB_DEVICE(0x0eef, 0x0002), .driver_info = DEVTYPE_EGALAX}, -+#endif -+ -+#ifdef CONFIG_USB_TOUCHSCREEN_PANJIT -+ {USB_DEVICE(0x134c, 0x0001), .driver_info = DEVTYPE_PANJIT}, -+ {USB_DEVICE(0x134c, 0x0002), .driver_info = DEVTYPE_PANJIT}, -+ {USB_DEVICE(0x134c, 0x0003), .driver_info = DEVTYPE_PANJIT}, -+ {USB_DEVICE(0x134c, 0x0004), .driver_info = DEVTYPE_PANJIT}, -+#endif -+ -+#ifdef CONFIG_USB_TOUCHSCREEN_3M -+ {USB_DEVICE(0x0596, 0x0001), .driver_info = DEVTYPE_3M}, -+#endif -+ -+#ifdef CONFIG_USB_TOUCHSCREEN_ITM -+ {USB_DEVICE(0x0403, 0xf9e9), .driver_info = DEVTYPE_ITM}, -+#endif -+ -+ {} -+}; -+ -+ -+/***************************************************************************** -+ * eGalax part -+ */ -+ -+#ifdef CONFIG_USB_TOUCHSCREEN_EGALAX -+ -+#define EGALAX_PKT_TYPE_MASK 0xFE -+#define EGALAX_PKT_TYPE_REPT 0x80 -+#define EGALAX_PKT_TYPE_DIAG 0x0A -+ -+static int egalax_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) -+{ -+ if ((pkt[0] & EGALAX_PKT_TYPE_MASK) != EGALAX_PKT_TYPE_REPT) -+ return 0; -+ -+ *x = ((pkt[3] & 0x0F) << 7) | (pkt[4] & 0x7F); -+ *y = ((pkt[1] & 0x0F) << 7) | (pkt[2] & 0x7F); -+ *touch = pkt[0] & 0x01; -+ -+ return 1; -+ -+} -+ -+static int egalax_get_pkt_len(unsigned char *buf) -+{ -+ switch (buf[0] & EGALAX_PKT_TYPE_MASK) { -+ case EGALAX_PKT_TYPE_REPT: -+ return 5; -+ -+ case EGALAX_PKT_TYPE_DIAG: -+ return buf[1] + 2; -+ } -+ -+ return 0; -+} -+ -+static void egalax_process(struct usbtouch_usb *usbtouch, struct pt_regs *regs, -+ unsigned char *pkt, int len) -+{ -+ unsigned char *buffer; -+ int pkt_len, buf_len, pos; -+ -+ /* if the buffer contains data, append */ -+ if (unlikely(usbtouch->buf_len)) { -+ int tmp; -+ -+ /* if only 1 byte in buffer, add another one to get length */ -+ if (usbtouch->buf_len == 1) -+ usbtouch->buffer[1] = pkt[0]; -+ -+ pkt_len = egalax_get_pkt_len(usbtouch->buffer); -+ -+ /* unknown packet: drop everything */ -+ if (!pkt_len) -+ return; -+ -+ /* append, process */ -+ tmp = pkt_len - usbtouch->buf_len; -+ memcpy(usbtouch->buffer + usbtouch->buf_len, pkt, tmp); -+ usbtouch_process_pkt(usbtouch, regs, usbtouch->buffer, pkt_len); -+ -+ buffer = pkt + tmp; -+ buf_len = len - tmp; -+ } else { -+ buffer = pkt; -+ buf_len = len; -+ } -+ -+ /* only one byte left in buffer */ -+ if (unlikely(buf_len == 1)) { -+ usbtouch->buffer[0] = buffer[0]; -+ usbtouch->buf_len = 1; -+ return; -+ } -+ -+ /* loop over the buffer */ -+ pos = 0; -+ while (pos < buf_len) { -+ /* get packet len */ -+ pkt_len = egalax_get_pkt_len(buffer + pos); -+ -+ /* unknown packet: drop everything */ -+ if (unlikely(!pkt_len)) -+ return; -+ -+ /* full packet: process */ -+ if (likely(pkt_len <= buf_len)) { -+ usbtouch_process_pkt(usbtouch, regs, buffer + pos, pkt_len); -+ } else { -+ /* incomplete packet: save in buffer */ -+ memcpy(usbtouch->buffer, buffer + pos, buf_len - pos); -+ usbtouch->buf_len = buf_len - pos; -+ } -+ pos += pkt_len; -+ } -+} -+#endif -+ -+ -+/***************************************************************************** -+ * PanJit Part -+ */ -+#ifdef CONFIG_USB_TOUCHSCREEN_PANJIT -+static int panjit_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) -+{ -+ *x = ((pkt[2] & 0x0F) << 8) | pkt[1]; -+ *y = ((pkt[4] & 0x0F) << 8) | pkt[3]; -+ *touch = pkt[0] & 0x01; -+ -+ return 1; -+} -+#endif -+ -+ -+/***************************************************************************** -+ * 3M/Microtouch Part -+ */ -+#ifdef CONFIG_USB_TOUCHSCREEN_3M -+ -+#define MTOUCHUSB_ASYNC_REPORT 1 -+#define MTOUCHUSB_RESET 7 -+#define MTOUCHUSB_REQ_CTRLLR_ID 10 -+ -+static int mtouch_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) -+{ -+ *x = (pkt[8] << 8) | pkt[7]; -+ *y = (pkt[10] << 8) | pkt[9]; -+ *touch = (pkt[2] & 0x40) ? 1 : 0; -+ -+ return 1; -+} -+ -+static int mtouch_init(struct usbtouch_usb *usbtouch) -+{ -+ int ret; -+ -+ ret = usb_control_msg(usbtouch->udev, usb_rcvctrlpipe(usbtouch->udev, 0), -+ MTOUCHUSB_RESET, -+ USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, -+ 1, 0, NULL, 0, USB_CTRL_SET_TIMEOUT); -+ dbg("%s - usb_control_msg - MTOUCHUSB_RESET - bytes|err: %d", -+ __FUNCTION__, ret); -+ if (ret < 0) -+ return ret; -+ -+ ret = usb_control_msg(usbtouch->udev, usb_rcvctrlpipe(usbtouch->udev, 0), -+ MTOUCHUSB_ASYNC_REPORT, -+ USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, -+ 1, 1, NULL, 0, USB_CTRL_SET_TIMEOUT); -+ dbg("%s - usb_control_msg - MTOUCHUSB_ASYNC_REPORT - bytes|err: %d", -+ __FUNCTION__, ret); -+ if (ret < 0) -+ return ret; -+ -+ return 0; -+} -+#endif -+ -+ -+/***************************************************************************** -+ * ITM Part -+ */ -+#ifdef CONFIG_USB_TOUCHSCREEN_ITM -+static int itm_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) -+{ -+ *x = ((pkt[0] & 0x1F) << 7) | (pkt[3] & 0x7F); -+ *x = ((pkt[1] & 0x1F) << 7) | (pkt[4] & 0x7F); -+ *press = ((pkt[2] & 0x1F) << 7) | (pkt[5] & 0x7F); -+ *touch = ~pkt[7] & 0x20; -+ -+ return 1; -+} -+#endif -+ -+ -+/***************************************************************************** -+ * the different device descriptors -+ */ -+static struct usbtouch_device_info usbtouch_dev_info[] = { -+#ifdef CONFIG_USB_TOUCHSCREEN_EGALAX -+ [DEVTYPE_EGALAX] = { -+ .min_xc = 0x0, -+ .max_xc = 0x07ff, -+ .min_yc = 0x0, -+ .max_yc = 0x07ff, -+ .rept_size = 16, -+ .flags = USBTOUCH_FLG_BUFFER, -+ .process_pkt = egalax_process, -+ .read_data = egalax_read_data, -+ }, -+#endif -+ -+#ifdef CONFIG_USB_TOUCHSCREEN_PANJIT -+ [DEVTYPE_PANJIT] = { -+ .min_xc = 0x0, -+ .max_xc = 0x0fff, -+ .min_yc = 0x0, -+ .max_yc = 0x0fff, -+ .rept_size = 8, -+ .read_data = panjit_read_data, -+ }, -+#endif -+ -+#ifdef CONFIG_USB_TOUCHSCREEN_3M -+ [DEVTYPE_3M] = { -+ .min_xc = 0x0, -+ .max_xc = 0x4000, -+ .min_yc = 0x0, -+ .max_yc = 0x4000, -+ .rept_size = 11, -+ .read_data = mtouch_read_data, -+ .init = mtouch_init, -+ }, -+#endif -+ -+#ifdef CONFIG_USB_TOUCHSCREEN_ITM -+ [DEVTYPE_ITM] = { -+ .min_xc = 0x0, -+ .max_xc = 0x0fff, -+ .min_yc = 0x0, -+ .max_yc = 0x0fff, -+ .max_press = 0xff, -+ .rept_size = 8, -+ .read_data = itm_read_data, -+ }, -+#endif -+}; -+ -+ -+/***************************************************************************** -+ * Generic Part -+ */ -+static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch, -+ struct pt_regs *regs, unsigned char *pkt, int len) -+{ -+ int x, y, touch, press; -+ struct usbtouch_device_info *type = usbtouch->type; -+ -+ if (!type->read_data(pkt, &x, &y, &touch, &press)) -+ return; -+ -+ input_regs(usbtouch->input, regs); -+ input_report_key(usbtouch->input, BTN_TOUCH, touch); -+ -+ if (swap_xy) { -+ input_report_abs(usbtouch->input, ABS_X, y); -+ input_report_abs(usbtouch->input, ABS_Y, x); -+ } else { -+ input_report_abs(usbtouch->input, ABS_X, x); -+ input_report_abs(usbtouch->input, ABS_Y, y); -+ } -+ if (type->max_press) -+ input_report_abs(usbtouch->input, ABS_PRESSURE, press); -+ input_sync(usbtouch->input); -+} -+ -+ -+static void usbtouch_irq(struct urb *urb, struct pt_regs *regs) -+{ -+ struct usbtouch_usb *usbtouch = urb->context; -+ int retval; -+ -+ switch (urb->status) { -+ case 0: -+ /* success */ -+ break; -+ case -ETIMEDOUT: -+ /* this urb is timing out */ -+ dbg("%s - urb timed out - was the device unplugged?", -+ __FUNCTION__); -+ return; -+ case -ECONNRESET: -+ case -ENOENT: -+ case -ESHUTDOWN: -+ /* this urb is terminated, clean up */ -+ dbg("%s - urb shutting down with status: %d", -+ __FUNCTION__, urb->status); -+ return; -+ default: -+ dbg("%s - nonzero urb status received: %d", -+ __FUNCTION__, urb->status); -+ goto exit; -+ } -+ -+ usbtouch->type->process_pkt(usbtouch, regs, usbtouch->data, urb->actual_length); -+ -+exit: -+ retval = usb_submit_urb(urb, GFP_ATOMIC); -+ if (retval) -+ err("%s - usb_submit_urb failed with result: %d", -+ __FUNCTION__, retval); -+} -+ -+static int usbtouch_open(struct input_dev *input) -+{ -+ struct usbtouch_usb *usbtouch = input->private; -+ -+ usbtouch->irq->dev = usbtouch->udev; -+ -+ if (usb_submit_urb(usbtouch->irq, GFP_KERNEL)) -+ return -EIO; -+ -+ return 0; -+} -+ -+static void usbtouch_close(struct input_dev *input) -+{ -+ struct usbtouch_usb *usbtouch = input->private; -+ -+ usb_kill_urb(usbtouch->irq); -+} -+ -+ -+static void usbtouch_free_buffers(struct usb_device *udev, -+ struct usbtouch_usb *usbtouch) -+{ -+ if (usbtouch->data) -+ usb_buffer_free(udev, usbtouch->type->rept_size, -+ usbtouch->data, usbtouch->data_dma); -+ kfree(usbtouch->buffer); -+} -+ -+ -+static int usbtouch_probe(struct usb_interface *intf, -+ const struct usb_device_id *id) -+{ -+ struct usbtouch_usb *usbtouch; -+ struct input_dev *input_dev; -+ struct usb_host_interface *interface; -+ struct usb_endpoint_descriptor *endpoint; -+ struct usb_device *udev = interface_to_usbdev(intf); -+ struct usbtouch_device_info *type; -+ int err; -+ -+ interface = intf->cur_altsetting; -+ endpoint = &interface->endpoint[0].desc; -+ -+ usbtouch = kzalloc(sizeof(struct usbtouch_usb), GFP_KERNEL); -+ input_dev = input_allocate_device(); -+ if (!usbtouch || !input_dev) -+ goto out_free; -+ -+ type = &usbtouch_dev_info[id->driver_info]; -+ usbtouch->type = type; -+ if (!type->process_pkt) -+ type->process_pkt = usbtouch_process_pkt; -+ -+ usbtouch->data = usb_buffer_alloc(udev, type->rept_size, -+ SLAB_KERNEL, &usbtouch->data_dma); -+ if (!usbtouch->data) -+ goto out_free; -+ -+ if (type->flags & USBTOUCH_FLG_BUFFER) { -+ usbtouch->buffer = kmalloc(type->rept_size, GFP_KERNEL); -+ if (!usbtouch->buffer) -+ goto out_free_buffers; -+ } -+ -+ usbtouch->irq = usb_alloc_urb(0, GFP_KERNEL); -+ if (!usbtouch->irq) { -+ dbg("%s - usb_alloc_urb failed: usbtouch->irq", __FUNCTION__); -+ goto out_free_buffers; -+ } -+ -+ usbtouch->udev = udev; -+ usbtouch->input = input_dev; -+ -+ if (udev->manufacturer) -+ strlcpy(usbtouch->name, udev->manufacturer, sizeof(usbtouch->name)); -+ -+ if (udev->product) { -+ if (udev->manufacturer) -+ strlcat(usbtouch->name, " ", sizeof(usbtouch->name)); -+ strlcat(usbtouch->name, udev->product, sizeof(usbtouch->name)); -+ } -+ -+ if (!strlen(usbtouch->name)) -+ snprintf(usbtouch->name, sizeof(usbtouch->name), -+ "USB Touchscreen %04x:%04x", -+ le16_to_cpu(udev->descriptor.idVendor), -+ le16_to_cpu(udev->descriptor.idProduct)); -+ -+ usb_make_path(udev, usbtouch->phys, sizeof(usbtouch->phys)); -+ strlcpy(usbtouch->phys, "/input0", sizeof(usbtouch->phys)); -+ -+ input_dev->name = usbtouch->name; -+ input_dev->phys = usbtouch->phys; -+ usb_to_input_id(udev, &input_dev->id); -+ input_dev->cdev.dev = &intf->dev; -+ input_dev->private = usbtouch; -+ input_dev->open = usbtouch_open; -+ input_dev->close = usbtouch_close; -+ -+ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS); -+ input_dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH); -+ input_set_abs_params(input_dev, ABS_X, type->min_xc, type->max_xc, 0, 0); -+ input_set_abs_params(input_dev, ABS_Y, type->min_yc, type->max_yc, 0, 0); -+ if (type->max_press) -+ input_set_abs_params(input_dev, ABS_PRESSURE, type->min_press, -+ type->max_press, 0, 0); -+ -+ usb_fill_int_urb(usbtouch->irq, usbtouch->udev, -+ usb_rcvintpipe(usbtouch->udev, 0x81), -+ usbtouch->data, type->rept_size, -+ usbtouch_irq, usbtouch, endpoint->bInterval); -+ -+ usbtouch->irq->transfer_dma = usbtouch->data_dma; -+ usbtouch->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; -+ -+ /* device specific init */ -+ if (type->init) { -+ err = type->init(usbtouch); -+ if (err) { -+ dbg("%s - type->init() failed, err: %d", __FUNCTION__, err); -+ goto out_free_buffers; -+ } -+ } -+ -+ err = input_register_device(usbtouch->input); -+ if (err) { -+ dbg("%s - input_register_device failed, err: %d", __FUNCTION__, err); -+ goto out_free_buffers; -+ } -+ -+ usb_set_intfdata(intf, usbtouch); -+ -+ return 0; -+ -+out_free_buffers: -+ usbtouch_free_buffers(udev, usbtouch); -+out_free: -+ input_free_device(input_dev); -+ kfree(usbtouch); -+ return -ENOMEM; -+} -+ -+static void usbtouch_disconnect(struct usb_interface *intf) -+{ -+ struct usbtouch_usb *usbtouch = usb_get_intfdata(intf); -+ -+ dbg("%s - called", __FUNCTION__); -+ -+ if (!usbtouch) -+ return; -+ -+ dbg("%s - usbtouch is initialized, cleaning up", __FUNCTION__); -+ usb_set_intfdata(intf, NULL); -+ usb_kill_urb(usbtouch->irq); -+ input_unregister_device(usbtouch->input); -+ usb_free_urb(usbtouch->irq); -+ usbtouch_free_buffers(interface_to_usbdev(intf), usbtouch); -+ kfree(usbtouch); -+} -+ -+MODULE_DEVICE_TABLE(usb, usbtouch_devices); -+ -+static struct usb_driver usbtouch_driver = { -+ .name = "usbtouchscreen", -+ .probe = usbtouch_probe, -+ .disconnect = usbtouch_disconnect, -+ .id_table = usbtouch_devices, -+}; -+ -+static int __init usbtouch_init(void) -+{ -+ return usb_register(&usbtouch_driver); -+} -+ -+static void __exit usbtouch_cleanup(void) -+{ -+ usb_deregister(&usbtouch_driver); -+} -+ -+module_init(usbtouch_init); -+module_exit(usbtouch_cleanup); -+ -+MODULE_AUTHOR(DRIVER_AUTHOR); -+MODULE_DESCRIPTION(DRIVER_DESC); -+MODULE_LICENSE("GPL"); -+ -+MODULE_ALIAS("touchkitusb"); -+MODULE_ALIAS("itmtouch"); -+MODULE_ALIAS("mtouchusb"); diff --git a/usb/usb-wacom-tablet-driver-update.patch b/usb/usb-wacom-tablet-driver-update.patch deleted file mode 100644 index 877964804c025..0000000000000 --- a/usb/usb-wacom-tablet-driver-update.patch +++ /dev/null @@ -1,364 +0,0 @@ -From pingc@wacom.com Wed Mar 29 16:33:59 2006 -Subject: [patch 1/2] USB: wacom tablet driver update -Date: Wed, 29 Mar 2006 16:33:49 -0800 -Message-ID: <6753EB6004AFF34FAA275742C104F9520174D0@wacom-nt10.wacom.com> -From: "Ping Cheng" <pingc@wacom.com> -To: <akpm@osdl.org>, "Greg Kroah-Hartman" <gregkh@suse.de>, - <vojtech@suse.cz>, <dtor_core@ameritech.net> - - -This patch adds support for DTF 521, Intuos3 12x12, and 12x19; - fixes minor data report bugs. - - -Signed-off-by: Ping Cheng <pingc@wacom.com> -Acked-by: Vojtech Pavlik <vojtech@suse.cz> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - - - ---- - drivers/usb/input/wacom.c | 136 +++++++++++++++++++++++++++++----------------- - 1 file changed, 87 insertions(+), 49 deletions(-) - ---- gregkh-2.6.orig/drivers/usb/input/wacom.c -+++ gregkh-2.6/drivers/usb/input/wacom.c -@@ -9,7 +9,7 @@ - * Copyright (c) 2000 Daniel Egger <egger@suse.de> - * Copyright (c) 2001 Frederic Lepied <flepied@mandrakesoft.com> - * Copyright (c) 2004 Panagiotis Issaris <panagiotis.issaris@mech.kuleuven.ac.be> -- * Copyright (c) 2002-2005 Ping Cheng <pingc@wacom.com> -+ * Copyright (c) 2002-2006 Ping Cheng <pingc@wacom.com> - * - * ChangeLog: - * v0.1 (vp) - Initial release -@@ -56,6 +56,8 @@ - * - Merged wacom_intuos3_irq into wacom_intuos_irq - * v1.44 (pc) - Added support for Graphire4, Cintiq 710, Intuos3 6x11, etc. - * - Report Device IDs -+ * v1.45 (pc) - Added support for DTF 521, Intuos3 12x12 and 12x19 -+ * - Minor data report fix - */ - - /* -@@ -78,7 +80,7 @@ - /* - * Version Information - */ --#define DRIVER_VERSION "v1.44" -+#define DRIVER_VERSION "v1.45" - #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" - #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" - #define DRIVER_LICENSE "GPL" -@@ -99,6 +101,8 @@ enum { - PL, - INTUOS, - INTUOS3, -+ INTUOS312, -+ INTUOS319, - CINTIQ, - MAX_TYPE - }; -@@ -127,7 +131,19 @@ struct wacom { - char phys[32]; - }; - -+#define USB_REQ_GET_REPORT 0x01 - #define USB_REQ_SET_REPORT 0x09 -+ -+static int usb_get_report(struct usb_interface *intf, unsigned char type, -+ unsigned char id, void *buf, int size) -+{ -+ return usb_control_msg(interface_to_usbdev(intf), -+ usb_rcvctrlpipe(interface_to_usbdev(intf), 0), -+ USB_REQ_GET_REPORT, USB_TYPE_CLASS | USB_RECIP_INTERFACE, -+ (type << 8) + id, intf->altsetting[0].desc.bInterfaceNumber, -+ buf, size, 100); -+} -+ - static int usb_set_report(struct usb_interface *intf, unsigned char type, - unsigned char id, void *buf, int size) - { -@@ -206,7 +222,8 @@ static void wacom_pl_irq(struct urb *urb - wacom->tool[1] = BTN_TOOL_PEN; - id = STYLUS_DEVICE_ID; - } -- input_report_key(dev, wacom->tool[1], id); /* report in proximity for tool */ -+ input_report_key(dev, wacom->tool[1], prox); /* report in proximity for tool */ -+ input_report_abs(dev, ABS_MISC, id); /* report tool id */ - input_report_abs(dev, ABS_X, data[3] | (data[2] << 7) | ((data[1] & 0x03) << 14)); - input_report_abs(dev, ABS_Y, data[6] | (data[5] << 7) | ((data[4] & 0x03) << 14)); - input_report_abs(dev, ABS_PRESSURE, pressure); -@@ -239,7 +256,7 @@ static void wacom_ptu_irq(struct urb *ur - struct wacom *wacom = urb->context; - unsigned char *data = wacom->data; - struct input_dev *dev = wacom->dev; -- int retval; -+ int retval, id; - - switch (urb->status) { - case 0: -@@ -263,12 +280,15 @@ static void wacom_ptu_irq(struct urb *ur - - input_regs(dev, regs); - if (data[1] & 0x04) { -- input_report_key(dev, BTN_TOOL_RUBBER, (data[1] & 0x20) ? ERASER_DEVICE_ID : 0); -+ input_report_key(dev, BTN_TOOL_RUBBER, data[1] & 0x20); - input_report_key(dev, BTN_TOUCH, data[1] & 0x08); -+ id = ERASER_DEVICE_ID; - } else { -- input_report_key(dev, BTN_TOOL_PEN, (data[1] & 0x20) ? STYLUS_DEVICE_ID : 0); -+ input_report_key(dev, BTN_TOOL_PEN, data[1] & 0x20); - input_report_key(dev, BTN_TOUCH, data[1] & 0x01); -+ id = STYLUS_DEVICE_ID; - } -+ input_report_abs(dev, ABS_MISC, id); /* report tool id */ - input_report_abs(dev, ABS_X, le16_to_cpu(*(__le16 *) &data[2])); - input_report_abs(dev, ABS_Y, le16_to_cpu(*(__le16 *) &data[4])); - input_report_abs(dev, ABS_PRESSURE, le16_to_cpu(*(__le16 *) &data[6])); -@@ -312,7 +332,8 @@ static void wacom_penpartner_irq(struct - } - - input_regs(dev, regs); -- input_report_key(dev, BTN_TOOL_PEN, STYLUS_DEVICE_ID); -+ input_report_key(dev, BTN_TOOL_PEN, 1); -+ input_report_abs(dev, ABS_MISC, STYLUS_DEVICE_ID); /* report tool id */ - input_report_abs(dev, ABS_X, le16_to_cpu(*(__le16 *) &data[1])); - input_report_abs(dev, ABS_Y, le16_to_cpu(*(__le16 *) &data[3])); - input_report_abs(dev, ABS_PRESSURE, (signed char)data[6] + 127); -@@ -350,6 +371,8 @@ static void wacom_graphire_irq(struct ur - goto exit; - } - -+ if (data[0] == 99) return; /* for Volito tablets */ -+ - if (data[0] != 2) { - dbg("wacom_graphire_irq: received unknown report #%d", data[0]); - goto exit; -@@ -374,10 +397,10 @@ static void wacom_graphire_irq(struct ur - case 2: /* Mouse with wheel */ - input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); - if (wacom->features->type == WACOM_G4) { -- rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); -- input_report_rel(dev, REL_WHEEL, rw); -+ rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); -+ input_report_rel(dev, REL_WHEEL, -rw); - } else -- input_report_rel(dev, REL_WHEEL, (signed char) data[6]); -+ input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); - /* fall through */ - - case 3: /* Mouse without wheel */ -@@ -406,39 +429,27 @@ static void wacom_graphire_irq(struct ur - } - } - -- input_report_key(dev, wacom->tool[0], (data[1] & 0x10) ? id : 0); -+ if (data[1] & 0x10) -+ input_report_abs(dev, ABS_MISC, id); /* report tool id */ -+ else -+ input_report_abs(dev, ABS_MISC, 0); /* reset tool id */ -+ input_report_key(dev, wacom->tool[0], data[1] & 0x10); - input_sync(dev); - - /* send pad data */ - if (wacom->features->type == WACOM_G4) { -- /* fist time sending pad data */ -- if (wacom->tool[1] != BTN_TOOL_FINGER) { -- wacom->id[1] = 0; -- wacom->serial[1] = (data[7] & 0x38) >> 2; -- } -- if (data[7] & 0xf8) { -+ if ((wacom->serial[1] & 0xc0) != (data[7] & 0xf8)) { -+ wacom->id[1] = 1; -+ wacom->serial[1] = (data[7] & 0xf8); - input_report_key(dev, BTN_0, (data[7] & 0x40)); - input_report_key(dev, BTN_4, (data[7] & 0x80)); -- if (((data[7] & 0x38) >> 2) == (wacom->serial[1] & 0x0e)) -- /* alter REL_WHEEL value so X apps can get it */ -- wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1; -- else -- wacom->serial[1] = (data[7] & 0x38 ) >> 2; -- -- /* don't alter the value when there is no wheel event */ -- if (wacom->serial[1] == 1) -- wacom->serial[1] = 0; -- rw = wacom->serial[1]; -- rw = (rw & 0x08) ? -(rw & 0x07) : (rw & 0x07); -+ rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); - input_report_rel(dev, REL_WHEEL, rw); -- wacom->tool[1] = BTN_TOOL_FINGER; -- wacom->id[1] = data[7] & 0xf8; -- input_report_key(dev, wacom->tool[1], 0xf0); -+ input_report_key(dev, BTN_TOOL_FINGER, 0xf0); - input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); - } else if (wacom->id[1]) { - wacom->id[1] = 0; -- wacom->serial[1] = 0; -- input_report_key(dev, wacom->tool[1], 0); -+ input_report_key(dev, BTN_TOOL_FINGER, 0); - input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); - } - input_sync(dev); -@@ -516,21 +527,31 @@ static int wacom_intuos_inout(struct urb - default: /* Unknown tool */ - wacom->tool[idx] = BTN_TOOL_PEN; - } -- input_report_key(dev, wacom->tool[idx], wacom->id[idx]); -- input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); -- input_sync(dev); -+ if(!((wacom->tool[idx] == BTN_TOOL_LENS) && -+ ((wacom->features->type == INTUOS312) -+ || (wacom->features->type == INTUOS319)))) { -+ input_report_abs(dev, ABS_MISC, wacom->id[idx]); /* report tool id */ -+ input_report_key(dev, wacom->tool[idx], 1); -+ input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); -+ input_sync(dev); -+ } - return 1; - } - - /* Exit report */ - if ((data[1] & 0xfe) == 0x80) { - input_report_key(dev, wacom->tool[idx], 0); -+ input_report_abs(dev, ABS_MISC, 0); /* reset tool id */ - input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); - input_sync(dev); - return 1; - } - -- return 0; -+ if((wacom->tool[idx] == BTN_TOOL_LENS) && ((wacom->features->type == INTUOS312) -+ || (wacom->features->type == INTUOS319))) -+ return 1; -+ else -+ return 0; - } - - static void wacom_intuos_general(struct urb *urb) -@@ -600,10 +621,9 @@ static void wacom_intuos_irq(struct urb - /* pad packets. Works as a second tool and is always in prox */ - if (data[0] == 12) { - /* initiate the pad as a device */ -- if (wacom->tool[1] != BTN_TOOL_FINGER) { -+ if (wacom->tool[1] != BTN_TOOL_FINGER) - wacom->tool[1] = BTN_TOOL_FINGER; -- input_report_key(dev, wacom->tool[1], 1); -- } -+ - input_report_key(dev, BTN_0, (data[5] & 0x01)); - input_report_key(dev, BTN_1, (data[5] & 0x02)); - input_report_key(dev, BTN_2, (data[5] & 0x04)); -@@ -614,6 +634,11 @@ static void wacom_intuos_irq(struct urb - input_report_key(dev, BTN_7, (data[6] & 0x08)); - input_report_abs(dev, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); - input_report_abs(dev, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); -+ -+ if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | data[2]) -+ input_report_key(dev, wacom->tool[1], 1); -+ else -+ input_report_key(dev, wacom->tool[1], 0); - input_event(dev, EV_MSC, MSC_SERIAL, 0xffffffff); - input_sync(dev); - goto exit; -@@ -676,8 +701,8 @@ static void wacom_intuos_irq(struct urb - input_report_key(dev, BTN_LEFT, data[8] & 0x04); - input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); - input_report_key(dev, BTN_RIGHT, data[8] & 0x10); -- input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) -- - (data[8] & 0x01)); -+ input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) -+ - ((data[8] & 0x02) >> 1)); - - /* I3 2D mouse side buttons */ - if (wacom->features->type == INTUOS3) { -@@ -695,7 +720,8 @@ static void wacom_intuos_irq(struct urb - } - } - -- input_report_key(dev, wacom->tool[idx], wacom->id[idx]); -+ input_report_abs(dev, ABS_MISC, wacom->id[idx]); /* report tool id */ -+ input_report_key(dev, wacom->tool[idx], 1); - input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); - input_sync(dev); - -@@ -733,7 +759,8 @@ static struct wacom_features wacom_featu - { "Wacom PL800", 8, 7220, 5780, 511, 32, PL, wacom_pl_irq }, - { "Wacom PL700", 8, 6758, 5406, 511, 32, PL, wacom_pl_irq }, - { "Wacom PL510", 8, 6282, 4762, 511, 32, PL, wacom_pl_irq }, -- { "Wacom PL710", 8, 34080, 27660, 511, 32, PL, wacom_pl_irq }, -+ { "Wacom DTU710", 8, 34080, 27660, 511, 32, PL, wacom_pl_irq }, -+ { "Wacom DTF521", 8, 6282, 4762, 511, 32, PL, wacom_pl_irq }, - { "Wacom DTF720", 8, 6858, 5506, 511, 32, PL, wacom_pl_irq }, - { "Wacom Cintiq Partner",8, 20480, 15360, 511, 32, PL, wacom_ptu_irq }, - { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 15, INTUOS, wacom_intuos_irq }, -@@ -744,6 +771,8 @@ static struct wacom_features wacom_featu - { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 15, INTUOS3, wacom_intuos_irq }, - { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 15, INTUOS3, wacom_intuos_irq }, - { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 15, INTUOS3, wacom_intuos_irq }, -+ { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 15, INTUOS312, wacom_intuos_irq }, -+ { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 15, INTUOS319, wacom_intuos_irq }, - { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 15, INTUOS3, wacom_intuos_irq }, - { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 15, CINTIQ, wacom_intuos_irq }, - { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 15, INTUOS, wacom_intuos_irq }, -@@ -779,6 +808,7 @@ static struct usb_device_id wacom_ids[] - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x38) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x39) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC0) }, -+ { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC3) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x03) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x41) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x42) }, -@@ -788,6 +818,8 @@ static struct usb_device_id wacom_ids[] - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB0) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB1) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB2) }, -+ { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB3) }, -+ { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB4) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) }, -@@ -820,7 +852,7 @@ static int wacom_probe(struct usb_interf - struct usb_endpoint_descriptor *endpoint; - struct wacom *wacom; - struct input_dev *input_dev; -- char rep_data[2] = {0x02, 0x02}; -+ char rep_data[2], limit = 0; - - wacom = kzalloc(sizeof(struct wacom), GFP_KERNEL); - input_dev = input_allocate_device(); -@@ -857,6 +889,7 @@ static int wacom_probe(struct usb_interf - input_set_abs_params(input_dev, ABS_X, 0, wacom->features->x_max, 4, 0); - input_set_abs_params(input_dev, ABS_Y, 0, wacom->features->y_max, 4, 0); - input_set_abs_params(input_dev, ABS_PRESSURE, 0, wacom->features->pressure_max, 0, 0); -+ input_dev->absbit[LONG(ABS_MISC)] |= BIT(ABS_MISC); - - switch (wacom->features->type) { - case WACOM_G4: -@@ -875,6 +908,8 @@ static int wacom_probe(struct usb_interf - break; - - case INTUOS3: -+ case INTUOS312: -+ case INTUOS319: - case CINTIQ: - input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_FINGER); - input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3) | BIT(BTN_4) | BIT(BTN_5) | BIT(BTN_6) | BIT(BTN_7); -@@ -916,10 +951,13 @@ static int wacom_probe(struct usb_interf - - input_register_device(wacom->dev); - -- /* ask the tablet to report tablet data */ -- usb_set_report(intf, 3, 2, rep_data, 2); -- /* repeat once (not sure why the first call often fails) */ -- usb_set_report(intf, 3, 2, rep_data, 2); -+ /* Ask the tablet to report tablet data. Repeat until it succeeds */ -+ do { -+ rep_data[0] = 2; -+ rep_data[1] = 2; -+ usb_set_report(intf, 3, 2, rep_data, 2); -+ usb_get_report(intf, 3, 2, rep_data, 2); -+ } while (rep_data[1] != 2 && limit++ < 5); - - usb_set_intfdata(intf, wacom); - return 0; |