summaryrefslogtreecommitdiff
tag namedebian-bug-670241-update (d1ea56bf05cacbd32fb259fba575004c9dab1c24)
tag date2012-06-04 22:08:34 +0200
tagged byBjørn Mork <bjorn@mork.no>
tagged objectcommit 3ffaa24df8...
rebased on v3.2.19, including new device IDs from v3.5-rc1
A few changes since the bug was reported: - v3.2.19 includes a few fixes in cdc-wdm which conflict with the backport. The easiest way to merge these is to first revert them, do the backport, and then reapply the fixes as cherry-picks from mainline. - The sierra driver fix has been included in stable and can be dropped. - A few new device IDs has been added to the qmi_wwan driver. The following procedure will produce a backported version of qmi_wwan and the supporting cdc-wdm driver on top of a clean v3.2.19: 1) revert the following conflicting stable fixes (will be reapplied in the next step): 8fd4242 USB: cdc-wdm: cannot use dev_printk when device is gone 0c68ab1 USB: cdc-wdm: add debug messages on cleanup 7569109 USB: cdc-wdm: fix memory leak 811c72b USB: cdc-wdm: sanitize error returns 2) cherry-pick to add subdriver support to cdc-wdm: 19b85b3 USB: cdc-wdm: no need to fill the in request URB every time it's submitted 8143a89 USB: cdc-wdm: kill the now unnecessary bMaxPacketSize0 field and udev variable 820c629 USB: cdc-wdm: avoid printing odd-looking "cdc-wdm-176" names fec67b4 usb: cdc-wdm: Add device-id for Huawei 3G/LTE modems 8804420 usb: cdc-wdm: make reset work with blocking IO 8457d99 USB: cdc-wdm: no need to use usb_alloc_coherent 0dffb48 usb: cdc-wdm: split out reusable parts of probe b0c1386 usb: cdc-wdm: adding list lookup indirection 3cc3615 usb: cdc-wdm: adding usb_cdc_wdm_register subdriver support 24a85ba USB: cdc-wdm: sanitize error returns 2f338c8 USB: cdc-wdm: fix memory leak 880bca3 USB: cdc-wdm: add debug messages on cleanup 12a98b2 USB: cdc-wdm: cleanup error codes 6b0b79d USB: cdc-wdm: cannot use dev_printk when device is gone 6286d85 USB: cdc-wdm: remove from device list on disconnect 3) cherry-pick to add qmi_wwan driver: 423ce8c net: usb: qmi_wwan: New driver for Huawei QMI based WWAN devices c3ecb08 net: qmi_wwan: support devices having a shared QMI/wwan interface b086cf0 net: qmi_wwan: add Gobi and Pantech UML290 device IDs 11207b6 net: qmi_wwan: add support for ZTE MF820D 1aa35a2 USB: qmi_wwan: Add ZTE (Vodafone) K3565-Z and K4505-Z net interfaces dbb6d09 USB: qmi_wwan: Add ZTE (Vodafone) K3570-Z and K3571-Z net interfaces 3bc17d1 net: qmi_wwan: support Sierra Wireless MC77xx devices in QMI mode 88c16dc net: qmi_wwan: Add Vodafone/Huawei K5005 support 0000188 USB: qmi_wwan: Make forced int 4 whitelist generic 8965c98 USB: qmi_wwan: Add ZTE (Vodafone) K3765-Z f7142e6 USB: qmi_wwan: Add ZTE (Vodafone) K3520-Z 5e071b5 net: qmi_wwan: Add Sierra Wireless device IDs The diffstat of the above is: bjorn@nemi:/usr/local/src/git/linux$ git diff --stat v3.2.19..HEAD drivers/net/usb/Kconfig | 22 +++++++ drivers/net/usb/Makefile | 1 + drivers/net/usb/qmi_wwan.c | 581 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ drivers/usb/class/cdc-wdm.c | 345 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------ include/linux/usb/cdc-wdm.h | 19 ++++++ 5 files changed, 849 insertions(+), 119 deletions(-) The resulting drivers will be identical to the 3.5-rc1 versions, with the exception of the module_usb_driver() macro and the disable_hub_initiated_lpm patch: bjorn@nemi:/usr/local/src/git/linux$ git diff HEAD..v3.5-rc1 -- drivers/usb/class/cdc-wdm.c include/linux/usb/cdc-wdm.h drivers/net/usb/qmi_wwan.c diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 32755c6..3b20678 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c @@ -562,6 +562,7 @@ static struct usb_driver qmi_wwan_driver = { .resume = qmi_wwan_resume, .reset_resume = qmi_wwan_resume, .supports_autosuspend = 1, + .disable_hub_initiated_lpm = 1, }; static int __init qmi_wwan_init(void) diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c index 2236fe7..ea8b304 100644 --- a/drivers/usb/class/cdc-wdm.c +++ b/drivers/usb/class/cdc-wdm.c @@ -1034,26 +1034,10 @@ static struct usb_driver wdm_driver = { .post_reset = wdm_post_reset, .id_table = wdm_ids, .supports_autosuspend = 1, + .disable_hub_initiated_lpm = 1, }; -/* --- low level module stuff --- */ - -static int __init wdm_init(void) -{ - int rv; - - rv = usb_register(&wdm_driver); - - return rv; -} - -static void __exit wdm_exit(void) -{ - usb_deregister(&wdm_driver); -} - -module_init(wdm_init); -module_exit(wdm_exit); +module_usb_driver(wdm_driver); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEABECAAYFAk/NFjQACgkQ10rqkowbIskt3ACdEmxOvnX3e04op8fxbeV35rBc GA8AnR7nB9PIKzn7ltNsfJ2wgk46SMjA =guYV -----END PGP SIGNATURE-----