From 1898d93087d7404317dfdeaffa5d18fadbca52ef Mon Sep 17 00:00:00 2001 From: ronnie <ronnie@industiosoft.com> Date: Sun, 23 Oct 2022 10:11:45 +0000 Subject: [PATCH] add ec20 drivers --- longan/kernel/linux-4.9/drivers/usb/serial/option.c | 21 +++++++++++++++++++++ longan/kernel/linux-4.9/drivers/usb/serial/usb_wwan.c | 12 +++++++++++- 2 files changed, 32 insertions(+), 1 deletions(-) diff --git a/longan/kernel/linux-4.9/drivers/usb/serial/option.c b/longan/kernel/linux-4.9/drivers/usb/serial/option.c index 9f96dd2..665f417 100644 --- a/longan/kernel/linux-4.9/drivers/usb/serial/option.c +++ b/longan/kernel/linux-4.9/drivers/usb/serial/option.c @@ -555,6 +555,10 @@ #define WETELECOM_PRODUCT_6802 0x6802 #define WETELECOM_PRODUCT_WMD300 0x6803 +#define FIBOCOM_VENDOR_ID 0x1782 +#define FIBOCOM_PRODUCT_L61031 0x4D10 +#define FIBOCOM_PRODUCT_L61032 0x4D11 +#define FIBOCOM_PRODUCT_L61033 0x4D11 /* Device flags */ @@ -1965,6 +1969,22 @@ .driver_info = RSVD(4) | RSVD(5) }, { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */ .driver_info = RSVD(6) }, +#if 1 + { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */ + { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */ + { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */ + { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */ + { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */ + { USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */ + { USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */ + { USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */ + { USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */ +#endif + /* fibocom L610 */ + { USB_DEVICE(FIBOCOM_VENDOR_ID, FIBOCOM_PRODUCT_L61031) }, + { USB_DEVICE(FIBOCOM_VENDOR_ID, FIBOCOM_PRODUCT_L61032) }, + { USB_DEVICE(FIBOCOM_VENDOR_ID, FIBOCOM_PRODUCT_L61033) }, + { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, option_ids); @@ -1999,6 +2019,7 @@ #ifdef CONFIG_PM .suspend = usb_wwan_suspend, .resume = usb_wwan_resume, + .reset_resume = usb_wwan_resume, #endif }; diff --git a/longan/kernel/linux-4.9/drivers/usb/serial/usb_wwan.c b/longan/kernel/linux-4.9/drivers/usb/serial/usb_wwan.c index 3dfdfc8..abb2c70 100644 --- a/longan/kernel/linux-4.9/drivers/usb/serial/usb_wwan.c +++ b/longan/kernel/linux-4.9/drivers/usb/serial/usb_wwan.c @@ -504,7 +504,17 @@ usb_fill_bulk_urb(urb, serial->dev, usb_sndbulkpipe(serial->dev, endpoint) | dir, buf, len, callback, ctx); - + if (dir == USB_DIR_OUT) { + struct usb_device_descriptor *desc = &serial->dev->descriptor; + if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9090)) + urb->transfer_flags |= URB_ZERO_PACKET; + if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9003)) + urb->transfer_flags |= URB_ZERO_PACKET; + if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9215)) + urb->transfer_flags |= URB_ZERO_PACKET; + if (desc->idVendor == cpu_to_le16(0x2C7C)) + urb->transfer_flags |= URB_ZERO_PACKET; + } return urb; } -- Gitblit v1.6.2