]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/3.18.3/usb-qcserial-add-support-for-hp-lt4112-lte-hspa-gobi-4g-modem.patch
drop drm patch
[thirdparty/kernel/stable-queue.git] / releases / 3.18.3 / usb-qcserial-add-support-for-hp-lt4112-lte-hspa-gobi-4g-modem.patch
1 From e7181d005e84b15fe3121a8d22840adc3395d496 Mon Sep 17 00:00:00 2001
2 From: Martin Hauke <mardnh@gmx.de>
3 Date: Sun, 16 Nov 2014 21:17:30 +0100
4 Subject: USB: qcserial: Add support for HP lt4112 LTE/HSPA+ Gobi 4G Modem
5
6 From: Martin Hauke <mardnh@gmx.de>
7
8 commit e7181d005e84b15fe3121a8d22840adc3395d496 upstream.
9
10 Added new device layout "DEVICE_HWI" and also added the USB VID/PID for the
11 HP lt4112 LTE/HSPA+ Gobi 4G Modem (Huawei me906e)
12
13 Signed-off-by: Martin Hauke <mardnh@gmx.de>
14 Signed-off-by: Johan Hovold <johan@kernel.org>
15 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16
17 ---
18 drivers/usb/serial/qcserial.c | 33 +++++++++++++++++++++++++++++++++
19 1 file changed, 33 insertions(+)
20
21 --- a/drivers/usb/serial/qcserial.c
22 +++ b/drivers/usb/serial/qcserial.c
23 @@ -27,12 +27,15 @@ enum qcserial_layouts {
24 QCSERIAL_G2K = 0, /* Gobi 2000 */
25 QCSERIAL_G1K = 1, /* Gobi 1000 */
26 QCSERIAL_SWI = 2, /* Sierra Wireless */
27 + QCSERIAL_HWI = 3, /* Huawei */
28 };
29
30 #define DEVICE_G1K(v, p) \
31 USB_DEVICE(v, p), .driver_info = QCSERIAL_G1K
32 #define DEVICE_SWI(v, p) \
33 USB_DEVICE(v, p), .driver_info = QCSERIAL_SWI
34 +#define DEVICE_HWI(v, p) \
35 + USB_DEVICE(v, p), .driver_info = QCSERIAL_HWI
36
37 static const struct usb_device_id id_table[] = {
38 /* Gobi 1000 devices */
39 @@ -157,6 +160,9 @@ static const struct usb_device_id id_tab
40 {DEVICE_SWI(0x413c, 0x81a8)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card */
41 {DEVICE_SWI(0x413c, 0x81a9)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card */
42
43 + /* Huawei devices */
44 + {DEVICE_HWI(0x03f0, 0x581d)}, /* HP lt4112 LTE/HSPA+ Gobi 4G Modem (Huawei me906e) */
45 +
46 { } /* Terminating entry */
47 };
48 MODULE_DEVICE_TABLE(usb, id_table);
49 @@ -283,6 +289,33 @@ static int qcprobe(struct usb_serial *se
50 break;
51 default:
52 /* don't claim any unsupported interface */
53 + altsetting = -1;
54 + break;
55 + }
56 + break;
57 + case QCSERIAL_HWI:
58 + /*
59 + * Huawei layout:
60 + * 0: AT-capable modem port
61 + * 1: DM/DIAG
62 + * 2: AT-capable modem port
63 + * 3: CCID-compatible PCSC interface
64 + * 4: QMI/net
65 + * 5: NMEA
66 + */
67 + switch (ifnum) {
68 + case 0:
69 + case 2:
70 + dev_dbg(dev, "Modem port found\n");
71 + break;
72 + case 1:
73 + dev_dbg(dev, "DM/DIAG interface found\n");
74 + break;
75 + case 5:
76 + dev_dbg(dev, "NMEA GPS interface found\n");
77 + break;
78 + default:
79 + /* don't claim any unsupported interface */
80 altsetting = -1;
81 break;
82 }