diff options
| author | Greg Kroah-Hartman <gregkh@suse.de> | 2009-10-27 10:54:41 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-10-27 10:54:41 -0700 |
| commit | 607008879414ffa8d5f424a3646cca2644119c3b (patch) | |
| tree | 32c49c67c62c88b9559f644f418b1c585122f2d7 /usb.current | |
| parent | d93ada0e086cc8b5de957b5dfaeb1247489f1717 (diff) | |
| download | patches-607008879414ffa8d5f424a3646cca2644119c3b.tar.gz | |
more patches
Diffstat (limited to 'usb.current')
3 files changed, 179 insertions, 0 deletions
diff --git a/usb.current/usb-option-tlaytech-tue800-support.patch b/usb.current/usb-option-tlaytech-tue800-support.patch new file mode 100644 index 00000000000000..b3d50d9b214f83 --- /dev/null +++ b/usb.current/usb-option-tlaytech-tue800-support.patch @@ -0,0 +1,40 @@ +From bryan.wu@canonical.com Tue Oct 27 10:35:48 2009 +From: Bryan Wu <bryan.wu@canonical.com> +Date: Thu, 22 Oct 2009 15:00:36 +0800 +Subject: USB: option: TLAYTECH TUE800 support +To: smurf@smurf.noris.de +Cc: linux-usb@vger.kernel.org, gregkh@suse.de, linux-kernel@vger.kernel.org +Message-ID: <1256194836-15733-1-git-send-email-bryan.wu@canonical.com> + + +Add ID for Tlaytech TUE800 CDMA modem to the option driver. + +Signed-off-by: Bryan Wu <bryan.wu@canonical.com> +Acked-By: Matthias Urlichs <matthias@urlichs.de> +Cc: stable <stable@kernel.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/option.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -315,6 +315,9 @@ static int option_resume(struct usb_ser + #define QISDA_PRODUCT_H20_4515 0x4515 + #define QISDA_PRODUCT_H20_4519 0x4519 + ++/* TLAYTECH PRODUCTS */ ++#define TLAYTECH_VENDOR_ID 0x20B9 ++#define TLAYTECH_PRODUCT_TEU800 0x1682 + + /* TOSHIBA PRODUCTS */ + #define TOSHIBA_VENDOR_ID 0x0930 +@@ -593,6 +596,7 @@ static struct usb_device_id option_ids[] + { USB_DEVICE_AND_INTERFACE_INFO(ALINK_VENDOR_ID, ALINK_PRODUCT_3GU, 0xff, 0xff, 0xff) }, + { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S) }, + { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, ++ { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) }, + { } /* Terminating entry */ + }; + MODULE_DEVICE_TABLE(usb, option_ids); diff --git a/usb.current/usb-r8a66597-hcd-fix-cannot-detect-a-device-when-uses_new_polling-is-set.patch b/usb.current/usb-r8a66597-hcd-fix-cannot-detect-a-device-when-uses_new_polling-is-set.patch new file mode 100644 index 00000000000000..2ff23a249f8137 --- /dev/null +++ b/usb.current/usb-r8a66597-hcd-fix-cannot-detect-a-device-when-uses_new_polling-is-set.patch @@ -0,0 +1,57 @@ +From shimoda.yoshihiro@renesas.com Tue Oct 27 10:23:57 2009 +From: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com> +Date: Wed, 21 Oct 2009 20:33:39 +0900 +Subject: USB: r8a66597-hcd: fix cannot detect a device when uses_new_polling is set +To: Greg Kroah-Hartman <gregkh@suse.de> +Message-ID: <4ADEF193.30204@renesas.com> + + +Signed-off-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/host/r8a66597-hcd.c | 23 +++++++++++++---------- + 1 file changed, 13 insertions(+), 10 deletions(-) + +--- a/drivers/usb/host/r8a66597-hcd.c ++++ b/drivers/usb/host/r8a66597-hcd.c +@@ -1003,19 +1003,20 @@ static void r8a66597_check_syssts(struct + if (syssts == SE0) { + r8a66597_write(r8a66597, ~ATTCH, get_intsts_reg(port)); + r8a66597_bset(r8a66597, ATTCHE, get_intenb_reg(port)); +- return; +- } ++ } else { ++ if (syssts == FS_JSTS) ++ r8a66597_bset(r8a66597, HSE, get_syscfg_reg(port)); ++ else if (syssts == LS_JSTS) ++ r8a66597_bclr(r8a66597, HSE, get_syscfg_reg(port)); + +- if (syssts == FS_JSTS) +- r8a66597_bset(r8a66597, HSE, get_syscfg_reg(port)); +- else if (syssts == LS_JSTS) +- r8a66597_bclr(r8a66597, HSE, get_syscfg_reg(port)); ++ r8a66597_write(r8a66597, ~DTCH, get_intsts_reg(port)); ++ r8a66597_bset(r8a66597, DTCHE, get_intenb_reg(port)); + +- r8a66597_write(r8a66597, ~DTCH, get_intsts_reg(port)); +- r8a66597_bset(r8a66597, DTCHE, get_intenb_reg(port)); ++ if (r8a66597->bus_suspended) ++ usb_hcd_resume_root_hub(r8a66597_to_hcd(r8a66597)); ++ } + +- if (r8a66597->bus_suspended) +- usb_hcd_resume_root_hub(r8a66597_to_hcd(r8a66597)); ++ usb_hcd_poll_rh_status(r8a66597_to_hcd(r8a66597)); + } + + /* this function must be called with interrupt disabled */ +@@ -1024,6 +1025,8 @@ static void r8a66597_usb_connect(struct + u16 speed = get_rh_usb_speed(r8a66597, port); + struct r8a66597_root_hub *rh = &r8a66597->root_hub[port]; + ++ rh->port &= ~((1 << USB_PORT_FEAT_HIGHSPEED) | ++ (1 << USB_PORT_FEAT_LOWSPEED)); + if (speed == HSMODE) + rh->port |= (1 << USB_PORT_FEAT_HIGHSPEED); + else if (speed == LSMODE) diff --git a/usb.current/usb-serial-sierra-driver-send_setup-autopm-fix.patch b/usb.current/usb-serial-sierra-driver-send_setup-autopm-fix.patch new file mode 100644 index 00000000000000..6aa61e5a1d0af9 --- /dev/null +++ b/usb.current/usb-serial-sierra-driver-send_setup-autopm-fix.patch @@ -0,0 +1,82 @@ +From epasheva@sierrawireless.com Tue Oct 27 10:12:48 2009 +From: Elina Pasheva <epasheva@sierrawireless.com> +Date: Fri, 16 Oct 2009 12:04:54 -0700 +Subject: USB: serial: sierra driver send_setup() autopm fix +To: <gregkh@suse.de> +Cc: <epasheva@sierrawireless.com>, <rfiler@sierrawireless.com> +Message-ID: <1255719894.23492.5.camel@Linuxdev4-laptop> + + +From: Elina Pasheva <epasheva@sierrawireless.com> + +This patch presents a fix for the autosuspend feature implementation in +sierra usb serial driver for function sierra_send_setup(). Because it +is possible to call sierra_send_setup() before sierra_open() or after +sierra_close() we added a get/put interface activity to assure that the +usb control can happen even when the device is autosuspended. + +Signed-off-by: Elina Pasheva <epasheva@sierrawireless.com> +Tested-by: Matthew Safar <msafar@sierrawireless.com> +Cc: stable <stable@kernel.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + drivers/usb/serial/sierra.c | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) + +--- a/drivers/usb/serial/sierra.c ++++ b/drivers/usb/serial/sierra.c +@@ -296,7 +296,6 @@ struct sierra_port_private { + int dsr_state; + int dcd_state; + int ri_state; +- + unsigned int opened:1; + }; + +@@ -306,6 +305,8 @@ static int sierra_send_setup(struct usb_ + struct sierra_port_private *portdata; + __u16 interface = 0; + int val = 0; ++ int do_send = 0; ++ int retval; + + dev_dbg(&port->dev, "%s\n", __func__); + +@@ -324,10 +325,7 @@ static int sierra_send_setup(struct usb_ + */ + if (port->interrupt_in_urb) { + /* send control message */ +- return usb_control_msg(serial->dev, +- usb_rcvctrlpipe(serial->dev, 0), +- 0x22, 0x21, val, interface, +- NULL, 0, USB_CTRL_SET_TIMEOUT); ++ do_send = 1; + } + } + +@@ -339,12 +337,18 @@ static int sierra_send_setup(struct usb_ + interface = 1; + else if (port->bulk_out_endpointAddress == 5) + interface = 2; +- return usb_control_msg(serial->dev, +- usb_rcvctrlpipe(serial->dev, 0), +- 0x22, 0x21, val, interface, +- NULL, 0, USB_CTRL_SET_TIMEOUT); ++ ++ do_send = 1; + } +- return 0; ++ if (!do_send) ++ return 0; ++ ++ usb_autopm_get_interface(serial->interface); ++ retval = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), ++ 0x22, 0x21, val, interface, NULL, 0, USB_CTRL_SET_TIMEOUT); ++ usb_autopm_put_interface(serial->interface); ++ ++ return retval; + } + + static void sierra_set_termios(struct tty_struct *tty, |
