From: Greg Kroah-Hartman Date: Sun, 16 Jun 2019 09:52:50 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v5.1.11~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ed7e469041285b13f169dc49459c81fffb3617d2;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: usb-dwc2-fix-dma-cache-alignment-issues.patch usb-dwc2-host-fix-wmaxpacketsize-handling-fix-webcam-regression.patch usb-fix-chipmunk-like-voice-when-using-logitech-c270-for-recording-audio.patch usb-serial-option-add-support-for-simcom-sim7500-sim7600-rndis-mode.patch usb-serial-option-add-telit-0x1260-and-0x1261-compositions.patch usb-serial-pl2303-add-allied-telesis-vt-kit3.patch usb-usb-storage-add-new-id-to-ums-realtek.patch --- diff --git a/queue-4.19/series b/queue-4.19/series index 3da7f28f294..7f7fafc86b6 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -56,3 +56,10 @@ kvm-s390-fix-memory-slot-handling-for-kvm_set_user_m.patch tools-kvm_stat-fix-fields-filter-for-child-events.patch drm-vmwgfx-integer-underflow-in-vmw_cmd_dx_set_shader-leading-to-an-invalid-read.patch drm-vmwgfx-null-pointer-dereference-from-vmw_cmd_dx_view_define.patch +usb-dwc2-fix-dma-cache-alignment-issues.patch +usb-dwc2-host-fix-wmaxpacketsize-handling-fix-webcam-regression.patch +usb-fix-chipmunk-like-voice-when-using-logitech-c270-for-recording-audio.patch +usb-usb-storage-add-new-id-to-ums-realtek.patch +usb-serial-pl2303-add-allied-telesis-vt-kit3.patch +usb-serial-option-add-support-for-simcom-sim7500-sim7600-rndis-mode.patch +usb-serial-option-add-telit-0x1260-and-0x1261-compositions.patch diff --git a/queue-4.19/usb-dwc2-fix-dma-cache-alignment-issues.patch b/queue-4.19/usb-dwc2-fix-dma-cache-alignment-issues.patch new file mode 100644 index 00000000000..021e0d38328 --- /dev/null +++ b/queue-4.19/usb-dwc2-fix-dma-cache-alignment-issues.patch @@ -0,0 +1,62 @@ +From 4a4863bf2e7932e584a3a462d3c6daf891142ddc Mon Sep 17 00:00:00 2001 +From: Martin Schiller +Date: Mon, 18 Feb 2019 07:37:30 +0100 +Subject: usb: dwc2: Fix DMA cache alignment issues + +From: Martin Schiller + +commit 4a4863bf2e7932e584a3a462d3c6daf891142ddc upstream. + +Insert a padding between data and the stored_xfer_buffer pointer to +ensure they are not on the same cache line. + +Otherwise, the stored_xfer_buffer gets corrupted for IN URBs on +non-cache-coherent systems. (In my case: Lantiq xRX200 MIPS) + +Fixes: 3bc04e28a030 ("usb: dwc2: host: Get aligned DMA in a more supported way") +Fixes: 56406e017a88 ("usb: dwc2: Fix DMA alignment to start at allocated boundary") +Cc: +Tested-by: Douglas Anderson +Reviewed-by: Douglas Anderson +Acked-by: Minas Harutyunyan +Signed-off-by: Martin Schiller +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/dwc2/hcd.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +--- a/drivers/usb/dwc2/hcd.c ++++ b/drivers/usb/dwc2/hcd.c +@@ -2673,8 +2673,10 @@ static void dwc2_free_dma_aligned_buffer + return; + + /* Restore urb->transfer_buffer from the end of the allocated area */ +- memcpy(&stored_xfer_buffer, urb->transfer_buffer + +- urb->transfer_buffer_length, sizeof(urb->transfer_buffer)); ++ memcpy(&stored_xfer_buffer, ++ PTR_ALIGN(urb->transfer_buffer + urb->transfer_buffer_length, ++ dma_get_cache_alignment()), ++ sizeof(urb->transfer_buffer)); + + if (usb_urb_dir_in(urb)) { + if (usb_pipeisoc(urb->pipe)) +@@ -2706,6 +2708,7 @@ static int dwc2_alloc_dma_aligned_buffer + * DMA + */ + kmalloc_size = urb->transfer_buffer_length + ++ (dma_get_cache_alignment() - 1) + + sizeof(urb->transfer_buffer); + + kmalloc_ptr = kmalloc(kmalloc_size, mem_flags); +@@ -2716,7 +2719,8 @@ static int dwc2_alloc_dma_aligned_buffer + * Position value of original urb->transfer_buffer pointer to the end + * of allocation for later referencing + */ +- memcpy(kmalloc_ptr + urb->transfer_buffer_length, ++ memcpy(PTR_ALIGN(kmalloc_ptr + urb->transfer_buffer_length, ++ dma_get_cache_alignment()), + &urb->transfer_buffer, sizeof(urb->transfer_buffer)); + + if (usb_urb_dir_out(urb)) diff --git a/queue-4.19/usb-dwc2-host-fix-wmaxpacketsize-handling-fix-webcam-regression.patch b/queue-4.19/usb-dwc2-host-fix-wmaxpacketsize-handling-fix-webcam-regression.patch new file mode 100644 index 00000000000..ea40425ec83 --- /dev/null +++ b/queue-4.19/usb-dwc2-host-fix-wmaxpacketsize-handling-fix-webcam-regression.patch @@ -0,0 +1,240 @@ +From babd183915e91a64e976b9e8ab682bb56624df76 Mon Sep 17 00:00:00 2001 +From: Douglas Anderson +Date: Fri, 31 May 2019 13:04:12 -0700 +Subject: usb: dwc2: host: Fix wMaxPacketSize handling (fix webcam regression) + +From: Douglas Anderson + +commit babd183915e91a64e976b9e8ab682bb56624df76 upstream. + +In commit abb621844f6a ("usb: ch9: make usb_endpoint_maxp() return +only packet size") the API to usb_endpoint_maxp() changed. It used to +just return wMaxPacketSize but after that commit it returned +wMaxPacketSize with the high bits (the multiplier) masked off. If you +wanted to get the multiplier it was now up to your code to call the +new usb_endpoint_maxp_mult() which was introduced in +commit 541b6fe63023 ("usb: add helper to extract bits 12:11 of +wMaxPacketSize"). + +Prior to the API change most host drivers were updated, but no update +was made to dwc2. Presumably it was assumed that dwc2 was too +simplistic to use the multiplier and thus just didn't support a +certain class of USB devices. However, it turns out that dwc2 did use +the multiplier and many devices using it were working quite nicely. +That means that many USB devices have been broken since the API +change. One such device is a Logitech HD Pro Webcam C920. + +Specifically, though dwc2 didn't directly call usb_endpoint_maxp(), it +did call usb_maxpacket() which in turn called usb_endpoint_maxp(). + +Let's update dwc2 to work properly with the new API. + +Fixes: abb621844f6a ("usb: ch9: make usb_endpoint_maxp() return only packet size") +Cc: stable@vger.kernel.org +Acked-by: Minas Harutyunyan +Reviewed-by: Matthias Kaehlcke +Signed-off-by: Douglas Anderson +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/dwc2/hcd.c | 29 +++++++++++++++++------------ + drivers/usb/dwc2/hcd.h | 20 +++++++++++--------- + drivers/usb/dwc2/hcd_intr.c | 5 +++-- + drivers/usb/dwc2/hcd_queue.c | 10 ++++++---- + 4 files changed, 37 insertions(+), 27 deletions(-) + +--- a/drivers/usb/dwc2/hcd.c ++++ b/drivers/usb/dwc2/hcd.c +@@ -2805,7 +2805,7 @@ static int dwc2_assign_and_init_hc(struc + chan->dev_addr = dwc2_hcd_get_dev_addr(&urb->pipe_info); + chan->ep_num = dwc2_hcd_get_ep_num(&urb->pipe_info); + chan->speed = qh->dev_speed; +- chan->max_packet = dwc2_max_packet(qh->maxp); ++ chan->max_packet = qh->maxp; + + chan->xfer_started = 0; + chan->halt_status = DWC2_HC_XFER_NO_HALT_STATUS; +@@ -2883,7 +2883,7 @@ static int dwc2_assign_and_init_hc(struc + * This value may be modified when the transfer is started + * to reflect the actual transfer length + */ +- chan->multi_count = dwc2_hb_mult(qh->maxp); ++ chan->multi_count = qh->maxp_mult; + + if (hsotg->params.dma_desc_enable) { + chan->desc_list_addr = qh->desc_list_dma; +@@ -3995,19 +3995,21 @@ static struct dwc2_hcd_urb *dwc2_hcd_urb + + static void dwc2_hcd_urb_set_pipeinfo(struct dwc2_hsotg *hsotg, + struct dwc2_hcd_urb *urb, u8 dev_addr, +- u8 ep_num, u8 ep_type, u8 ep_dir, u16 mps) ++ u8 ep_num, u8 ep_type, u8 ep_dir, ++ u16 maxp, u16 maxp_mult) + { + if (dbg_perio() || + ep_type == USB_ENDPOINT_XFER_BULK || + ep_type == USB_ENDPOINT_XFER_CONTROL) + dev_vdbg(hsotg->dev, +- "addr=%d, ep_num=%d, ep_dir=%1x, ep_type=%1x, mps=%d\n", +- dev_addr, ep_num, ep_dir, ep_type, mps); ++ "addr=%d, ep_num=%d, ep_dir=%1x, ep_type=%1x, maxp=%d (%d mult)\n", ++ dev_addr, ep_num, ep_dir, ep_type, maxp, maxp_mult); + urb->pipe_info.dev_addr = dev_addr; + urb->pipe_info.ep_num = ep_num; + urb->pipe_info.pipe_type = ep_type; + urb->pipe_info.pipe_dir = ep_dir; +- urb->pipe_info.mps = mps; ++ urb->pipe_info.maxp = maxp; ++ urb->pipe_info.maxp_mult = maxp_mult; + } + + /* +@@ -4098,8 +4100,9 @@ void dwc2_hcd_dump_state(struct dwc2_hso + dwc2_hcd_is_pipe_in(&urb->pipe_info) ? + "IN" : "OUT"); + dev_dbg(hsotg->dev, +- " Max packet size: %d\n", +- dwc2_hcd_get_mps(&urb->pipe_info)); ++ " Max packet size: %d (%d mult)\n", ++ dwc2_hcd_get_maxp(&urb->pipe_info), ++ dwc2_hcd_get_maxp_mult(&urb->pipe_info)); + dev_dbg(hsotg->dev, + " transfer_buffer: %p\n", + urb->buf); +@@ -4657,8 +4660,10 @@ static void dwc2_dump_urb_info(struct us + } + + dev_vdbg(hsotg->dev, " Speed: %s\n", speed); +- dev_vdbg(hsotg->dev, " Max packet size: %d\n", +- usb_maxpacket(urb->dev, urb->pipe, usb_pipeout(urb->pipe))); ++ dev_vdbg(hsotg->dev, " Max packet size: %d (%d mult)\n", ++ usb_endpoint_maxp(&urb->ep->desc), ++ usb_endpoint_maxp_mult(&urb->ep->desc)); ++ + dev_vdbg(hsotg->dev, " Data buffer length: %d\n", + urb->transfer_buffer_length); + dev_vdbg(hsotg->dev, " Transfer buffer: %p, Transfer DMA: %08lx\n", +@@ -4741,8 +4746,8 @@ static int _dwc2_hcd_urb_enqueue(struct + dwc2_hcd_urb_set_pipeinfo(hsotg, dwc2_urb, usb_pipedevice(urb->pipe), + usb_pipeendpoint(urb->pipe), ep_type, + usb_pipein(urb->pipe), +- usb_maxpacket(urb->dev, urb->pipe, +- !(usb_pipein(urb->pipe)))); ++ usb_endpoint_maxp(&ep->desc), ++ usb_endpoint_maxp_mult(&ep->desc)); + + buf = urb->transfer_buffer; + +--- a/drivers/usb/dwc2/hcd.h ++++ b/drivers/usb/dwc2/hcd.h +@@ -171,7 +171,8 @@ struct dwc2_hcd_pipe_info { + u8 ep_num; + u8 pipe_type; + u8 pipe_dir; +- u16 mps; ++ u16 maxp; ++ u16 maxp_mult; + }; + + struct dwc2_hcd_iso_packet_desc { +@@ -264,6 +265,7 @@ struct dwc2_hs_transfer_time { + * - USB_ENDPOINT_XFER_ISOC + * @ep_is_in: Endpoint direction + * @maxp: Value from wMaxPacketSize field of Endpoint Descriptor ++ * @maxp_mult: Multiplier for maxp + * @dev_speed: Device speed. One of the following values: + * - USB_SPEED_LOW + * - USB_SPEED_FULL +@@ -340,6 +342,7 @@ struct dwc2_qh { + u8 ep_type; + u8 ep_is_in; + u16 maxp; ++ u16 maxp_mult; + u8 dev_speed; + u8 data_toggle; + u8 ping_state; +@@ -503,9 +506,14 @@ static inline u8 dwc2_hcd_get_pipe_type( + return pipe->pipe_type; + } + +-static inline u16 dwc2_hcd_get_mps(struct dwc2_hcd_pipe_info *pipe) ++static inline u16 dwc2_hcd_get_maxp(struct dwc2_hcd_pipe_info *pipe) ++{ ++ return pipe->maxp; ++} ++ ++static inline u16 dwc2_hcd_get_maxp_mult(struct dwc2_hcd_pipe_info *pipe) + { +- return pipe->mps; ++ return pipe->maxp_mult; + } + + static inline u8 dwc2_hcd_get_dev_addr(struct dwc2_hcd_pipe_info *pipe) +@@ -620,12 +628,6 @@ static inline bool dbg_urb(struct urb *u + static inline bool dbg_perio(void) { return false; } + #endif + +-/* High bandwidth multiplier as encoded in highspeed endpoint descriptors */ +-#define dwc2_hb_mult(wmaxpacketsize) (1 + (((wmaxpacketsize) >> 11) & 0x03)) +- +-/* Packet size for any kind of endpoint descriptor */ +-#define dwc2_max_packet(wmaxpacketsize) ((wmaxpacketsize) & 0x07ff) +- + /* + * Returns true if frame1 index is greater than frame2 index. The comparison + * is done modulo FRLISTEN_64_SIZE. This accounts for the rollover of the +--- a/drivers/usb/dwc2/hcd_intr.c ++++ b/drivers/usb/dwc2/hcd_intr.c +@@ -1617,8 +1617,9 @@ static void dwc2_hc_ahberr_intr(struct d + + dev_err(hsotg->dev, " Speed: %s\n", speed); + +- dev_err(hsotg->dev, " Max packet size: %d\n", +- dwc2_hcd_get_mps(&urb->pipe_info)); ++ dev_err(hsotg->dev, " Max packet size: %d (mult %d)\n", ++ dwc2_hcd_get_maxp(&urb->pipe_info), ++ dwc2_hcd_get_maxp_mult(&urb->pipe_info)); + dev_err(hsotg->dev, " Data buffer length: %d\n", urb->length); + dev_err(hsotg->dev, " Transfer buffer: %p, Transfer DMA: %08lx\n", + urb->buf, (unsigned long)urb->dma); +--- a/drivers/usb/dwc2/hcd_queue.c ++++ b/drivers/usb/dwc2/hcd_queue.c +@@ -708,7 +708,7 @@ static void dwc2_hs_pmap_unschedule(stru + static int dwc2_uframe_schedule_split(struct dwc2_hsotg *hsotg, + struct dwc2_qh *qh) + { +- int bytecount = dwc2_hb_mult(qh->maxp) * dwc2_max_packet(qh->maxp); ++ int bytecount = qh->maxp_mult * qh->maxp; + int ls_search_slice; + int err = 0; + int host_interval_in_sched; +@@ -1332,7 +1332,7 @@ static int dwc2_check_max_xfer_size(stru + u32 max_channel_xfer_size; + int status = 0; + +- max_xfer_size = dwc2_max_packet(qh->maxp) * dwc2_hb_mult(qh->maxp); ++ max_xfer_size = qh->maxp * qh->maxp_mult; + max_channel_xfer_size = hsotg->params.max_transfer_size; + + if (max_xfer_size > max_channel_xfer_size) { +@@ -1517,8 +1517,9 @@ static void dwc2_qh_init(struct dwc2_hso + u32 prtspd = (hprt & HPRT0_SPD_MASK) >> HPRT0_SPD_SHIFT; + bool do_split = (prtspd == HPRT0_SPD_HIGH_SPEED && + dev_speed != USB_SPEED_HIGH); +- int maxp = dwc2_hcd_get_mps(&urb->pipe_info); +- int bytecount = dwc2_hb_mult(maxp) * dwc2_max_packet(maxp); ++ int maxp = dwc2_hcd_get_maxp(&urb->pipe_info); ++ int maxp_mult = dwc2_hcd_get_maxp_mult(&urb->pipe_info); ++ int bytecount = maxp_mult * maxp; + char *speed, *type; + + /* Initialize QH */ +@@ -1531,6 +1532,7 @@ static void dwc2_qh_init(struct dwc2_hso + + qh->data_toggle = DWC2_HC_PID_DATA0; + qh->maxp = maxp; ++ qh->maxp_mult = maxp_mult; + INIT_LIST_HEAD(&qh->qtd_list); + INIT_LIST_HEAD(&qh->qh_list_entry); + diff --git a/queue-4.19/usb-fix-chipmunk-like-voice-when-using-logitech-c270-for-recording-audio.patch b/queue-4.19/usb-fix-chipmunk-like-voice-when-using-logitech-c270-for-recording-audio.patch new file mode 100644 index 00000000000..44ab3ad5102 --- /dev/null +++ b/queue-4.19/usb-fix-chipmunk-like-voice-when-using-logitech-c270-for-recording-audio.patch @@ -0,0 +1,37 @@ +From bd21f0222adab64974b7d1b4b8c7ce6b23e9ea4d Mon Sep 17 00:00:00 2001 +From: Marco Zatta +Date: Sat, 1 Jun 2019 09:52:57 +0200 +Subject: USB: Fix chipmunk-like voice when using Logitech C270 for recording audio. + +From: Marco Zatta + +commit bd21f0222adab64974b7d1b4b8c7ce6b23e9ea4d upstream. + +This patch fixes the chipmunk-like voice that manifets randomly when +using the integrated mic of the Logitech Webcam HD C270. + +The issue was solved initially for this device by commit 2394d67e446b +("USB: add RESET_RESUME for webcams shown to be quirky") but it was then +reintroduced by e387ef5c47dd ("usb: Add USB_QUIRK_RESET_RESUME for all +Logitech UVC webcams"). This patch is to have the fix back. + +Signed-off-by: Marco Zatta +Cc: stable +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/quirks.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/usb/core/quirks.c ++++ b/drivers/usb/core/quirks.c +@@ -215,6 +215,9 @@ static const struct usb_device_id usb_qu + /* Cherry Stream G230 2.0 (G85-231) and 3.0 (G85-232) */ + { USB_DEVICE(0x046a, 0x0023), .driver_info = USB_QUIRK_RESET_RESUME }, + ++ /* Logitech HD Webcam C270 */ ++ { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME }, ++ + /* Logitech HD Pro Webcams C920, C920-C, C925e and C930e */ + { USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT }, + { USB_DEVICE(0x046d, 0x0841), .driver_info = USB_QUIRK_DELAY_INIT }, diff --git a/queue-4.19/usb-serial-option-add-support-for-simcom-sim7500-sim7600-rndis-mode.patch b/queue-4.19/usb-serial-option-add-support-for-simcom-sim7500-sim7600-rndis-mode.patch new file mode 100644 index 00000000000..a490d397cce --- /dev/null +++ b/queue-4.19/usb-serial-option-add-support-for-simcom-sim7500-sim7600-rndis-mode.patch @@ -0,0 +1,51 @@ +From 5417a7e482962952e622eabd60cd3600dd65dedf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rgen=20Storvist?= +Date: Mon, 13 May 2019 18:37:52 +0200 +Subject: USB: serial: option: add support for Simcom SIM7500/SIM7600 RNDIS mode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Jörgen Storvist + +commit 5417a7e482962952e622eabd60cd3600dd65dedf upstream. + +Added IDs for Simcom SIM7500/SIM7600 series cellular module in RNDIS +mode. Reserved the interface for ADB. + +T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 7 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +P: Vendor=1e0e ProdID=9011 Rev=03.18 +S: Manufacturer=SimTech, Incorporated +S: Product=SimTech, Incorporated +S: SerialNumber=0123456789ABCDEF +C: #Ifs= 8 Cfg#= 1 Atr=a0 MxPwr=500mA +I: If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=02 Prot=ff Driver=rndis_host +I: If#=0x1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host +I: If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +I: If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +I: If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +I: If#=0x5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +I: If#=0x6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +I: If#=0x7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) + +Signed-off-by: Jörgen Storvist +Cc: stable +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -1772,6 +1772,8 @@ static const struct usb_device_id option + { USB_DEVICE(ALINK_VENDOR_ID, SIMCOM_PRODUCT_SIM7100E), + .driver_info = RSVD(5) | RSVD(6) }, + { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */ ++ { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff), /* Simcom SIM7500/SIM7600 RNDIS mode */ ++ .driver_info = RSVD(7) }, + { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), + .driver_info = NCTRL(0) | NCTRL(1) | RSVD(4) }, + { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D), diff --git a/queue-4.19/usb-serial-option-add-telit-0x1260-and-0x1261-compositions.patch b/queue-4.19/usb-serial-option-add-telit-0x1260-and-0x1261-compositions.patch new file mode 100644 index 00000000000..02f3ae4906c --- /dev/null +++ b/queue-4.19/usb-serial-option-add-telit-0x1260-and-0x1261-compositions.patch @@ -0,0 +1,33 @@ +From f3dfd4072c3ee6e287f501a18b5718b185d6a940 Mon Sep 17 00:00:00 2001 +From: Daniele Palmas +Date: Wed, 15 May 2019 17:27:49 +0200 +Subject: USB: serial: option: add Telit 0x1260 and 0x1261 compositions + +From: Daniele Palmas + +commit f3dfd4072c3ee6e287f501a18b5718b185d6a940 upstream. + +Added support for Telit LE910Cx 0x1260 and 0x1261 compositions. + +Signed-off-by: Daniele Palmas +Cc: stable +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -1171,6 +1171,10 @@ static const struct usb_device_id option + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1213, 0xff) }, + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1214), + .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) }, ++ { USB_DEVICE(TELIT_VENDOR_ID, 0x1260), ++ .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, ++ { USB_DEVICE(TELIT_VENDOR_ID, 0x1261), ++ .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, + { USB_DEVICE(TELIT_VENDOR_ID, 0x1900), /* Telit LN940 (QMI) */ + .driver_info = NCTRL(0) | RSVD(1) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1901, 0xff), /* Telit LN940 (MBIM) */ diff --git a/queue-4.19/usb-serial-pl2303-add-allied-telesis-vt-kit3.patch b/queue-4.19/usb-serial-pl2303-add-allied-telesis-vt-kit3.patch new file mode 100644 index 00000000000..c37ad477367 --- /dev/null +++ b/queue-4.19/usb-serial-pl2303-add-allied-telesis-vt-kit3.patch @@ -0,0 +1,41 @@ +From c5f81656a18b271976a86724dadd8344e54de74e Mon Sep 17 00:00:00 2001 +From: Chris Packham +Date: Tue, 14 May 2019 17:35:42 +1200 +Subject: USB: serial: pl2303: add Allied Telesis VT-Kit3 + +From: Chris Packham + +commit c5f81656a18b271976a86724dadd8344e54de74e upstream. + +This is adds the vendor and device id for the AT-VT-Kit3 which is a +pl2303-based device. + +Signed-off-by: Chris Packham +Cc: stable +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/pl2303.c | 1 + + drivers/usb/serial/pl2303.h | 3 +++ + 2 files changed, 4 insertions(+) + +--- a/drivers/usb/serial/pl2303.c ++++ b/drivers/usb/serial/pl2303.c +@@ -106,6 +106,7 @@ static const struct usb_device_id id_tab + { USB_DEVICE(SANWA_VENDOR_ID, SANWA_PRODUCT_ID) }, + { USB_DEVICE(ADLINK_VENDOR_ID, ADLINK_ND6530_PRODUCT_ID) }, + { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) }, ++ { USB_DEVICE(AT_VENDOR_ID, AT_VTKIT3_PRODUCT_ID) }, + { } /* Terminating entry */ + }; + +--- a/drivers/usb/serial/pl2303.h ++++ b/drivers/usb/serial/pl2303.h +@@ -155,3 +155,6 @@ + #define SMART_VENDOR_ID 0x0b8c + #define SMART_PRODUCT_ID 0x2303 + ++/* Allied Telesis VT-Kit3 */ ++#define AT_VENDOR_ID 0x0caa ++#define AT_VTKIT3_PRODUCT_ID 0x3001 diff --git a/queue-4.19/usb-usb-storage-add-new-id-to-ums-realtek.patch b/queue-4.19/usb-usb-storage-add-new-id-to-ums-realtek.patch new file mode 100644 index 00000000000..a788cc34773 --- /dev/null +++ b/queue-4.19/usb-usb-storage-add-new-id-to-ums-realtek.patch @@ -0,0 +1,36 @@ +From 1a6dd3fea131276a4fc44ae77b0f471b0b473577 Mon Sep 17 00:00:00 2001 +From: Kai-Heng Feng +Date: Tue, 4 Jun 2019 00:20:49 +0800 +Subject: USB: usb-storage: Add new ID to ums-realtek + +From: Kai-Heng Feng + +commit 1a6dd3fea131276a4fc44ae77b0f471b0b473577 upstream. + +There is one more Realtek card reader requires ums-realtek to work +correctly. + +Add the device ID to support it. + +Signed-off-by: Kai-Heng Feng +Cc: stable +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_realtek.h | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/usb/storage/unusual_realtek.h ++++ b/drivers/usb/storage/unusual_realtek.h +@@ -17,6 +17,11 @@ UNUSUAL_DEV(0x0bda, 0x0138, 0x0000, 0x99 + "USB Card Reader", + USB_SC_DEVICE, USB_PR_DEVICE, init_realtek_cr, 0), + ++UNUSUAL_DEV(0x0bda, 0x0153, 0x0000, 0x9999, ++ "Realtek", ++ "USB Card Reader", ++ USB_SC_DEVICE, USB_PR_DEVICE, init_realtek_cr, 0), ++ + UNUSUAL_DEV(0x0bda, 0x0158, 0x0000, 0x9999, + "Realtek", + "USB Card Reader",