Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'usb-6.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb

Pull USB bugfixes from Greg KH:
"Here are some small USB bugfixes for 6.3-rc6 that have been in my
tree, and in linux-next, for a while. Included in here are:

- new usb-serial driver device ids

- xhci bugfixes for reported problems

- gadget driver bugfixes for reported problems

- dwc3 new device id

All have been in linux-next with no reported problems"

* tag 'usb-6.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
usb: cdnsp: Fixes error: uninitialized symbol 'len'
usb: gadgetfs: Fix ep_read_iter to handle ITER_UBUF
usb: gadget: f_fs: Fix ffs_epfile_read_iter to handle ITER_UBUF
usb: typec: altmodes/displayport: Fix configure initial pin assignment
usb: dwc3: pci: add support for the Intel Meteor Lake-S
xhci: Free the command allocated for setting LPM if we return early
Revert "usb: xhci-pci: Set PROBE_PREFER_ASYNCHRONOUS"
xhci: also avoid the XHCI_ZERO_64B_REGS quirk with a passthrough iommu
USB: serial: option: add Quectel RM500U-CN modem
usb: xhci: tegra: fix sleep in atomic call
USB: serial: option: add Telit FE990 compositions
USB: serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs

+35 -13
+1 -2
drivers/usb/cdns3/cdnsp-ep0.c
··· 414 414 void cdnsp_setup_analyze(struct cdnsp_device *pdev) 415 415 { 416 416 struct usb_ctrlrequest *ctrl = &pdev->setup; 417 - int ret = 0; 417 + int ret = -EINVAL; 418 418 u16 len; 419 419 420 420 trace_cdnsp_ctrl_req(ctrl); ··· 424 424 425 425 if (pdev->gadget.state == USB_STATE_NOTATTACHED) { 426 426 dev_err(pdev->dev, "ERR: Setup detected in unattached state\n"); 427 - ret = -EINVAL; 428 427 goto out; 429 428 } 430 429
+4
drivers/usb/dwc3/dwc3-pci.c
··· 49 49 #define PCI_DEVICE_ID_INTEL_RPLS 0x7a61 50 50 #define PCI_DEVICE_ID_INTEL_MTLM 0x7eb1 51 51 #define PCI_DEVICE_ID_INTEL_MTLP 0x7ec1 52 + #define PCI_DEVICE_ID_INTEL_MTLS 0x7f6f 52 53 #define PCI_DEVICE_ID_INTEL_MTL 0x7e7e 53 54 #define PCI_DEVICE_ID_INTEL_TGL 0x9a15 54 55 #define PCI_DEVICE_ID_AMD_MR 0x163a ··· 473 472 (kernel_ulong_t) &dwc3_pci_intel_swnode, }, 474 473 475 474 { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MTLP), 475 + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, 476 + 477 + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MTLS), 476 478 (kernel_ulong_t) &dwc3_pci_intel_swnode, }, 477 479 478 480 { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MTL),
+1 -1
drivers/usb/gadget/function/f_fs.c
··· 1251 1251 p->kiocb = kiocb; 1252 1252 if (p->aio) { 1253 1253 p->to_free = dup_iter(&p->data, to, GFP_KERNEL); 1254 - if (!p->to_free) { 1254 + if (!iter_is_ubuf(&p->data) && !p->to_free) { 1255 1255 kfree(p); 1256 1256 return -ENOMEM; 1257 1257 }
+1 -1
drivers/usb/gadget/legacy/inode.c
··· 614 614 if (!priv) 615 615 goto fail; 616 616 priv->to_free = dup_iter(&priv->to, to, GFP_KERNEL); 617 - if (!priv->to_free) { 617 + if (!iter_is_ubuf(&priv->to) && !priv->to_free) { 618 618 kfree(priv); 619 619 goto fail; 620 620 }
+3 -4
drivers/usb/host/xhci-pci.c
··· 771 771 /* suspend and resume implemented later */ 772 772 773 773 .shutdown = usb_hcd_pci_shutdown, 774 - .driver = { 775 774 #ifdef CONFIG_PM 776 - .pm = &usb_hcd_pci_pm_ops, 777 - #endif 778 - .probe_type = PROBE_PREFER_ASYNCHRONOUS, 775 + .driver = { 776 + .pm = &usb_hcd_pci_pm_ops 779 777 }, 778 + #endif 780 779 }; 781 780 782 781 static int __init xhci_pci_init(void)
+3 -3
drivers/usb/host/xhci-tegra.c
··· 1360 1360 1361 1361 mutex_unlock(&tegra->lock); 1362 1362 1363 + tegra->otg_usb3_port = tegra_xusb_padctl_get_usb3_companion(tegra->padctl, 1364 + tegra->otg_usb2_port); 1365 + 1363 1366 if (tegra->host_mode) { 1364 1367 /* switch to host mode */ 1365 1368 if (tegra->otg_usb3_port >= 0) { ··· 1477 1474 } 1478 1475 1479 1476 tegra->otg_usb2_port = tegra_xusb_get_usb2_port(tegra, usbphy); 1480 - tegra->otg_usb3_port = tegra_xusb_padctl_get_usb3_companion( 1481 - tegra->padctl, 1482 - tegra->otg_usb2_port); 1483 1477 1484 1478 tegra->host_mode = (usbphy->last_event == USB_EVENT_ID) ? true : false; 1485 1479
+6 -1
drivers/usb/host/xhci.c
··· 9 9 */ 10 10 11 11 #include <linux/pci.h> 12 + #include <linux/iommu.h> 12 13 #include <linux/iopoll.h> 13 14 #include <linux/irq.h> 14 15 #include <linux/log2.h> ··· 229 228 static void xhci_zero_64b_regs(struct xhci_hcd *xhci) 230 229 { 231 230 struct device *dev = xhci_to_hcd(xhci)->self.sysdev; 231 + struct iommu_domain *domain; 232 232 int err, i; 233 233 u64 val; 234 234 u32 intrs; ··· 248 246 * an iommu. Doing anything when there is no iommu is definitely 249 247 * unsafe... 250 248 */ 251 - if (!(xhci->quirks & XHCI_ZERO_64B_REGS) || !device_iommu_mapped(dev)) 249 + domain = iommu_get_domain_for_dev(dev); 250 + if (!(xhci->quirks & XHCI_ZERO_64B_REGS) || !domain || 251 + domain->type == IOMMU_DOMAIN_IDENTITY) 252 252 return; 253 253 254 254 xhci_info(xhci, "Zeroing 64bit base registers, expecting fault\n"); ··· 4442 4438 4443 4439 if (!virt_dev || max_exit_latency == virt_dev->current_mel) { 4444 4440 spin_unlock_irqrestore(&xhci->lock, flags); 4441 + xhci_free_command(xhci, command); 4445 4442 return 0; 4446 4443 } 4447 4444
+1
drivers/usb/serial/cp210x.c
··· 120 120 { USB_DEVICE(0x10C4, 0x826B) }, /* Cygnal Integrated Products, Inc., Fasttrax GPS demonstration module */ 121 121 { USB_DEVICE(0x10C4, 0x8281) }, /* Nanotec Plug & Drive */ 122 122 { USB_DEVICE(0x10C4, 0x8293) }, /* Telegesis ETRX2USB */ 123 + { USB_DEVICE(0x10C4, 0x82AA) }, /* Silicon Labs IFS-USB-DATACABLE used with Quint UPS */ 123 124 { USB_DEVICE(0x10C4, 0x82EF) }, /* CESINEL FALCO 6105 AC Power Supply */ 124 125 { USB_DEVICE(0x10C4, 0x82F1) }, /* CESINEL MEDCAL EFD Earth Fault Detector */ 125 126 { USB_DEVICE(0x10C4, 0x82F2) }, /* CESINEL MEDCAL ST Network Analyzer */
+10
drivers/usb/serial/option.c
··· 1198 1198 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0xff, 0x30) }, 1199 1199 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0x40) }, 1200 1200 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0) }, 1201 + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0900, 0xff, 0, 0), /* RM500U-CN */ 1202 + .driver_info = ZLP }, 1201 1203 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200U, 0xff, 0, 0) }, 1202 1204 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) }, 1203 1205 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) }, ··· 1302 1300 .driver_info = NCTRL(0) | RSVD(1) }, 1303 1301 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1075, 0xff), /* Telit FN990 (PCIe) */ 1304 1302 .driver_info = RSVD(0) }, 1303 + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1080, 0xff), /* Telit FE990 (rmnet) */ 1304 + .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, 1305 + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1081, 0xff), /* Telit FE990 (MBIM) */ 1306 + .driver_info = NCTRL(0) | RSVD(1) }, 1307 + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1082, 0xff), /* Telit FE990 (RNDIS) */ 1308 + .driver_info = NCTRL(2) | RSVD(3) }, 1309 + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1083, 0xff), /* Telit FE990 (ECM) */ 1310 + .driver_info = NCTRL(0) | RSVD(1) }, 1305 1311 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), 1306 1312 .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) }, 1307 1313 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
+5 -1
drivers/usb/typec/altmodes/displayport.c
··· 112 112 if (dp->data.status & DP_STATUS_PREFER_MULTI_FUNC && 113 113 pin_assign & DP_PIN_ASSIGN_MULTI_FUNC_MASK) 114 114 pin_assign &= DP_PIN_ASSIGN_MULTI_FUNC_MASK; 115 - else if (pin_assign & DP_PIN_ASSIGN_DP_ONLY_MASK) 115 + else if (pin_assign & DP_PIN_ASSIGN_DP_ONLY_MASK) { 116 116 pin_assign &= DP_PIN_ASSIGN_DP_ONLY_MASK; 117 + /* Default to pin assign C if available */ 118 + if (pin_assign & BIT(DP_PIN_ASSIGN_C)) 119 + pin_assign = BIT(DP_PIN_ASSIGN_C); 120 + } 117 121 118 122 if (!pin_assign) 119 123 return -EINVAL;