Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7181d00 authored by Martin Hauke's avatar Martin Hauke Committed by Johan Hovold
Browse files

USB: qcserial: Add support for HP lt4112 LTE/HSPA+ Gobi 4G Modem



Added new device layout "DEVICE_HWI" and also added the USB VID/PID for the
HP lt4112 LTE/HSPA+ Gobi 4G Modem (Huawei me906e)

Signed-off-by: default avatarMartin Hauke <mardnh@gmx.de>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
parent 679315e5
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -27,12 +27,15 @@ enum qcserial_layouts {
	QCSERIAL_G2K = 0,	/* Gobi 2000 */
	QCSERIAL_G1K = 1,	/* Gobi 1000 */
	QCSERIAL_SWI = 2,	/* Sierra Wireless */
	QCSERIAL_HWI = 3,	/* Huawei */
};

#define DEVICE_G1K(v, p) \
	USB_DEVICE(v, p), .driver_info = QCSERIAL_G1K
#define DEVICE_SWI(v, p) \
	USB_DEVICE(v, p), .driver_info = QCSERIAL_SWI
#define DEVICE_HWI(v, p) \
	USB_DEVICE(v, p), .driver_info = QCSERIAL_HWI

static const struct usb_device_id id_table[] = {
	/* Gobi 1000 devices */
@@ -157,6 +160,9 @@ static const struct usb_device_id id_table[] = {
	{DEVICE_SWI(0x413c, 0x81a8)},	/* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card */
	{DEVICE_SWI(0x413c, 0x81a9)},	/* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card */

	/* Huawei devices */
	{DEVICE_HWI(0x03f0, 0x581d)},	/* HP lt4112 LTE/HSPA+ Gobi 4G Modem (Huawei me906e) */

	{ }				/* Terminating entry */
};
MODULE_DEVICE_TABLE(usb, id_table);
@@ -287,6 +293,33 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
			break;
		}
		break;
	case QCSERIAL_HWI:
		/*
		 * Huawei layout:
		 * 0: AT-capable modem port
		 * 1: DM/DIAG
		 * 2: AT-capable modem port
		 * 3: CCID-compatible PCSC interface
		 * 4: QMI/net
		 * 5: NMEA
		 */
		switch (ifnum) {
		case 0:
		case 2:
			dev_dbg(dev, "Modem port found\n");
			break;
		case 1:
			dev_dbg(dev, "DM/DIAG interface found\n");
			break;
		case 5:
			dev_dbg(dev, "NMEA GPS interface found\n");
			break;
		default:
			/* don't claim any unsupported interface */
			altsetting = -1;
			break;
		}
		break;
	default:
		dev_err(dev, "unsupported device layout type: %lu\n",
			id->driver_info);