Skip to content

Commit 281b3ec

Browse files
committed
Merge tag 'usb-5.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB and Thunderbolt fixes from Greg KH: "Here are some small Thunderbolt and USB driver fixes for 5.10-rc4 to solve some reported issues. Nothing huge in here, just small things: - thunderbolt memory leaks fixed and new device ids added - revert of problem patch for the musb driver - new quirks added for USB devices - typec power supply fixes to resolve much reported problems about charging notifications not working anymore All except the cdc-acm driver quirk addition have been in linux-next with no reported issues (the quirk patch was applied on Friday, and is self-contained)" * tag 'usb-5.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: usb: cdc-acm: Add DISABLE_ECHO for Renesas USB Download mode MAINTAINERS: add usb raw gadget entry usb: typec: ucsi: Report power supply changes xhci: hisilicon: fix refercence leak in xhci_histb_probe Revert "usb: musb: convert to devm_platform_ioremap_resource_byname" thunderbolt: Add support for Intel Tiger Lake-H thunderbolt: Only configure USB4 wake for lane 0 adapters thunderbolt: Add uaccess dependency to debugfs interface thunderbolt: Fix memory leak if ida_simple_get() fails in enumerate_services() thunderbolt: Add the missed ida_simple_remove() in ring_request_msix()
2 parents 0062442 + 6d853c9 commit 281b3ec

File tree

14 files changed

+69
-7
lines changed

14 files changed

+69
-7
lines changed

MAINTAINERS

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18173,6 +18173,14 @@ L: [email protected]
1817318173
S: Supported
1817418174
F: drivers/usb/class/usblp.c
1817518175

18176+
USB RAW GADGET DRIVER
18177+
R: Andrey Konovalov <[email protected]>
18178+
18179+
S: Maintained
18180+
F: Documentation/usb/raw-gadget.rst
18181+
F: drivers/usb/gadget/legacy/raw_gadget.c
18182+
F: include/uapi/linux/usb/raw_gadget.h
18183+
1817618184
USB QMI WWAN NETWORK DRIVER
1817718185
M: Bjørn Mork <[email protected]>
1817818186

drivers/thunderbolt/debugfs.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include <linux/debugfs.h>
1111
#include <linux/pm_runtime.h>
12+
#include <linux/uaccess.h>
1213

1314
#include "tb.h"
1415

drivers/thunderbolt/icm.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2284,6 +2284,8 @@ struct tb *icm_probe(struct tb_nhi *nhi)
22842284

22852285
case PCI_DEVICE_ID_INTEL_TGL_NHI0:
22862286
case PCI_DEVICE_ID_INTEL_TGL_NHI1:
2287+
case PCI_DEVICE_ID_INTEL_TGL_H_NHI0:
2288+
case PCI_DEVICE_ID_INTEL_TGL_H_NHI1:
22872289
icm->is_supported = icm_tgl_is_supported;
22882290
icm->driver_ready = icm_icl_driver_ready;
22892291
icm->set_uuid = icm_icl_set_uuid;

drivers/thunderbolt/nhi.c

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -406,12 +406,23 @@ static int ring_request_msix(struct tb_ring *ring, bool no_suspend)
406406

407407
ring->vector = ret;
408408

409-
ring->irq = pci_irq_vector(ring->nhi->pdev, ring->vector);
410-
if (ring->irq < 0)
411-
return ring->irq;
409+
ret = pci_irq_vector(ring->nhi->pdev, ring->vector);
410+
if (ret < 0)
411+
goto err_ida_remove;
412+
413+
ring->irq = ret;
412414

413415
irqflags = no_suspend ? IRQF_NO_SUSPEND : 0;
414-
return request_irq(ring->irq, ring_msix, irqflags, "thunderbolt", ring);
416+
ret = request_irq(ring->irq, ring_msix, irqflags, "thunderbolt", ring);
417+
if (ret)
418+
goto err_ida_remove;
419+
420+
return 0;
421+
422+
err_ida_remove:
423+
ida_simple_remove(&nhi->msix_ida, ring->vector);
424+
425+
return ret;
415426
}
416427

417428
static void ring_release_msix(struct tb_ring *ring)
@@ -1334,6 +1345,10 @@ static struct pci_device_id nhi_ids[] = {
13341345
.driver_data = (kernel_ulong_t)&icl_nhi_ops },
13351346
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL_NHI1),
13361347
.driver_data = (kernel_ulong_t)&icl_nhi_ops },
1348+
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL_H_NHI0),
1349+
.driver_data = (kernel_ulong_t)&icl_nhi_ops },
1350+
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL_H_NHI1),
1351+
.driver_data = (kernel_ulong_t)&icl_nhi_ops },
13371352

13381353
/* Any USB4 compliant host */
13391354
{ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_USB4, ~0) },

drivers/thunderbolt/nhi.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ extern const struct tb_nhi_ops icl_nhi_ops;
7575
#define PCI_DEVICE_ID_INTEL_ICL_NHI0 0x8a17
7676
#define PCI_DEVICE_ID_INTEL_TGL_NHI0 0x9a1b
7777
#define PCI_DEVICE_ID_INTEL_TGL_NHI1 0x9a1d
78+
#define PCI_DEVICE_ID_INTEL_TGL_H_NHI0 0x9a1f
79+
#define PCI_DEVICE_ID_INTEL_TGL_H_NHI1 0x9a21
7880

7981
#define PCI_CLASS_SERIAL_USB_USB4 0x0c0340
8082

drivers/thunderbolt/tb.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -784,6 +784,8 @@ static inline bool tb_switch_is_tiger_lake(const struct tb_switch *sw)
784784
switch (sw->config.device_id) {
785785
case PCI_DEVICE_ID_INTEL_TGL_NHI0:
786786
case PCI_DEVICE_ID_INTEL_TGL_NHI1:
787+
case PCI_DEVICE_ID_INTEL_TGL_H_NHI0:
788+
case PCI_DEVICE_ID_INTEL_TGL_H_NHI1:
787789
return true;
788790
}
789791
}

drivers/thunderbolt/usb4.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,8 +421,12 @@ int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags)
421421
* upstream USB4 port.
422422
*/
423423
tb_switch_for_each_port(sw, port) {
424+
if (!tb_port_is_null(port))
425+
continue;
424426
if (!route && tb_is_upstream_port(port))
425427
continue;
428+
if (!port->cap_usb4)
429+
continue;
426430

427431
ret = tb_port_read(port, &val, TB_CFG_PORT,
428432
port->cap_usb4 + PORT_CS_19, 1);

drivers/thunderbolt/xdomain.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -881,6 +881,7 @@ static void enumerate_services(struct tb_xdomain *xd)
881881

882882
id = ida_simple_get(&xd->service_ids, 0, 0, GFP_KERNEL);
883883
if (id < 0) {
884+
kfree(svc->key);
884885
kfree(svc);
885886
break;
886887
}

drivers/usb/class/cdc-acm.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1693,6 +1693,15 @@ static const struct usb_device_id acm_ids[] = {
16931693
{ USB_DEVICE(0x0870, 0x0001), /* Metricom GS Modem */
16941694
.driver_info = NO_UNION_NORMAL, /* has no union descriptor */
16951695
},
1696+
{ USB_DEVICE(0x045b, 0x023c), /* Renesas USB Download mode */
1697+
.driver_info = DISABLE_ECHO, /* Don't echo banner */
1698+
},
1699+
{ USB_DEVICE(0x045b, 0x0248), /* Renesas USB Download mode */
1700+
.driver_info = DISABLE_ECHO, /* Don't echo banner */
1701+
},
1702+
{ USB_DEVICE(0x045b, 0x024D), /* Renesas USB Download mode */
1703+
.driver_info = DISABLE_ECHO, /* Don't echo banner */
1704+
},
16961705
{ USB_DEVICE(0x0e8d, 0x0003), /* FIREFLY, MediaTek Inc; [email protected] */
16971706
.driver_info = NO_UNION_NORMAL, /* has no union descriptor */
16981707
},

drivers/usb/host/xhci-histb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ static int xhci_histb_probe(struct platform_device *pdev)
240240
/* Initialize dma_mask and coherent_dma_mask to 32-bits */
241241
ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
242242
if (ret)
243-
return ret;
243+
goto disable_pm;
244244

245245
hcd = usb_create_hcd(driver, dev, dev_name(dev));
246246
if (!hcd) {

0 commit comments

Comments
 (0)