Re: [PATCH] USB: qcserial: Add support for Quectel EC20 Mini PCIe module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bjørn Mork <bjorn@xxxxxxx> [2015-11-04 13:15:10]:

> Based on that, I wonder if it wouldn't be more appropriate to simply do
> this as a device specific quirk in the qmi_wwan probe?

So rather something like this?

	diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
	index 2a7c1be..2dafc69 100644
	--- a/drivers/net/usb/qmi_wwan.c
	+++ b/drivers/net/usb/qmi_wwan.c
	@@ -822,6 +822,7 @@ static const struct usb_device_id products[] = {
		{QMI_GOBI_DEVICE(0x05c6, 0x9245)},	/* Samsung Gobi 2000 Modem device (VL176) */
		{QMI_GOBI_DEVICE(0x03f0, 0x251d)},	/* HP Gobi 2000 Modem device (VP412) */
		{QMI_GOBI_DEVICE(0x05c6, 0x9215)},	/* Acer Gobi 2000 Modem device (VP413) */
	+	{QMI_FIXED_INTF(0x05c6, 0x9215, 4)},	/* Quectel EC20 Mini PCIe Module */
		{QMI_GOBI_DEVICE(0x05c6, 0x9265)},	/* Asus Gobi 2000 Modem device (VR305) */
		{QMI_GOBI_DEVICE(0x05c6, 0x9235)},	/* Top Global Gobi 2000 Modem device (VR306) */
		{QMI_GOBI_DEVICE(0x05c6, 0x9275)},	/* iRex Technologies Gobi 2000 Modem device (VR307) */
	@@ -853,6 +854,23 @@ static const struct usb_device_id products[] = {
	 };
	 MODULE_DEVICE_TABLE(usb, products);

or rather something like this?
 
	+#define QUECTEL_EC20_VENDORID 0x05c6
	+#define QUECTEL_EC20_PRODUCTID 0x9215
	+#define QUECTEL_EC20_NINTERFACES 5
	+#define QUECTEL_EC20_QMI_IFACE_FIX 4
	+static int quectel_ec20_detected(struct usb_interface *intf)
	+{
	+	struct usb_device *dev = interface_to_usbdev(intf);
	+
	+	if (dev->actconfig &&
	+	    le16_to_cpu(dev->descriptor.idVendor) == QUECTEL_EC20_VENDORID &&
	+	    le16_to_cpu(dev->descriptor.idProduct) == QUECTEL_EC20_PRODUCTID &&
	+	    dev->actconfig->desc.bNumInterfaces == QUECTEL_EC20_NINTERFACES)
	+		return 1;
	+
	+	return 0;
	+}
	+
	 static int qmi_wwan_probe(struct usb_interface *intf,
				  const struct usb_device_id *prod)
	 {
	@@ -868,6 +886,12 @@ static int qmi_wwan_probe(struct usb_interface *intf,
			id->driver_info = (unsigned long)&qmi_wwan_info;
		}
	 
	+	/* Quectel EC20 quirk where we're fixing QMI iterface index from 0 to 4 */
	+	if (quectel_ec20_detected(intf)) {
	+		dev_dbg(&intf->dev, "enabling Quectel EC20 interface quirk\n");
	+		id->bInterfaceNumber = QUECTEL_EC20_QMI_IFACE_FIX;
	+	}
	+
		return usbnet_probe(intf, id);
	 }
	 
-- ynezz
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux