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.14-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb

Pull USB fixes from Greg KH:
"Here are some small USB and Thunderbolt driver fixes and new
usb-serial device ids. Included in here are:

- new usb-serial device ids

- typec driver bugfix

- thunderbolt driver resume bugfix

All of these have been in linux-next with no reported issues"

* tag 'usb-6.14-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
usb: typec: tcpm: fix state transition for SNK_WAIT_CAPABILITIES state in run_state_machine()
USB: serial: ftdi_sio: add support for Altera USB Blaster 3
thunderbolt: Prevent use-after-free in resume from hibernate
USB: serial: option: fix Telit Cinterion FE990A name
USB: serial: option: add Telit Cinterion FE990B compositions
USB: serial: option: match on interface class for Telit FN990B

+73 -23
+8 -3
drivers/thunderbolt/tunnel.c
··· 1009 1009 */ 1010 1010 tb_tunnel_get(tunnel); 1011 1011 1012 + tunnel->dprx_started = true; 1013 + 1012 1014 if (tunnel->callback) { 1013 1015 tunnel->dprx_timeout = dprx_timeout_to_ktime(dprx_timeout); 1014 1016 queue_delayed_work(tunnel->tb->wq, &tunnel->dprx_work, 0); ··· 1023 1021 1024 1022 static void tb_dp_dprx_stop(struct tb_tunnel *tunnel) 1025 1023 { 1026 - tunnel->dprx_canceled = true; 1027 - cancel_delayed_work(&tunnel->dprx_work); 1028 - tb_tunnel_put(tunnel); 1024 + if (tunnel->dprx_started) { 1025 + tunnel->dprx_started = false; 1026 + tunnel->dprx_canceled = true; 1027 + cancel_delayed_work(&tunnel->dprx_work); 1028 + tb_tunnel_put(tunnel); 1029 + } 1029 1030 } 1030 1031 1031 1032 static int tb_dp_activate(struct tb_tunnel *tunnel, bool active)
+2
drivers/thunderbolt/tunnel.h
··· 63 63 * @allocated_down: Allocated downstream bandwidth (only for USB3) 64 64 * @bw_mode: DP bandwidth allocation mode registers can be used to 65 65 * determine consumed and allocated bandwidth 66 + * @dprx_started: DPRX negotiation was started (tb_dp_dprx_start() was called for it) 66 67 * @dprx_canceled: Was DPRX capabilities read poll canceled 67 68 * @dprx_timeout: If set DPRX capabilities read poll work will timeout after this passes 68 69 * @dprx_work: Worker that is scheduled to poll completion of DPRX capabilities read ··· 101 100 int allocated_up; 102 101 int allocated_down; 103 102 bool bw_mode; 103 + bool dprx_started; 104 104 bool dprx_canceled; 105 105 ktime_t dprx_timeout; 106 106 struct delayed_work dprx_work;
+14
drivers/usb/serial/ftdi_sio.c
··· 1079 1079 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, 1080 1080 /* GMC devices */ 1081 1081 { USB_DEVICE(GMC_VID, GMC_Z216C_PID) }, 1082 + /* Altera USB Blaster 3 */ 1083 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6022_PID, 1) }, 1084 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6025_PID, 2) }, 1085 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6026_PID, 2) }, 1086 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6026_PID, 3) }, 1087 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6029_PID, 2) }, 1088 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602A_PID, 2) }, 1089 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602A_PID, 3) }, 1090 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602C_PID, 1) }, 1091 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602D_PID, 1) }, 1092 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602D_PID, 2) }, 1093 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602E_PID, 1) }, 1094 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602E_PID, 2) }, 1095 + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602E_PID, 3) }, 1082 1096 { } /* Terminating entry */ 1083 1097 }; 1084 1098
+13
drivers/usb/serial/ftdi_sio_ids.h
··· 1612 1612 */ 1613 1613 #define GMC_VID 0x1cd7 1614 1614 #define GMC_Z216C_PID 0x0217 /* GMC Z216C Adapter IR-USB */ 1615 + 1616 + /* 1617 + * Altera USB Blaster 3 (http://www.altera.com). 1618 + */ 1619 + #define ALTERA_VID 0x09fb 1620 + #define ALTERA_UB3_6022_PID 0x6022 1621 + #define ALTERA_UB3_6025_PID 0x6025 1622 + #define ALTERA_UB3_6026_PID 0x6026 1623 + #define ALTERA_UB3_6029_PID 0x6029 1624 + #define ALTERA_UB3_602A_PID 0x602a 1625 + #define ALTERA_UB3_602C_PID 0x602c 1626 + #define ALTERA_UB3_602D_PID 0x602d 1627 + #define ALTERA_UB3_602E_PID 0x602e
+32 -16
drivers/usb/serial/option.c
··· 1368 1368 .driver_info = NCTRL(0) | RSVD(1) }, 1369 1369 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1075, 0xff), /* Telit FN990A (PCIe) */ 1370 1370 .driver_info = RSVD(0) }, 1371 - { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1080, 0xff), /* Telit FE990 (rmnet) */ 1371 + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1080, 0xff), /* Telit FE990A (rmnet) */ 1372 1372 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, 1373 - { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1081, 0xff), /* Telit FE990 (MBIM) */ 1373 + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1081, 0xff), /* Telit FE990A (MBIM) */ 1374 1374 .driver_info = NCTRL(0) | RSVD(1) }, 1375 - { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1082, 0xff), /* Telit FE990 (RNDIS) */ 1375 + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1082, 0xff), /* Telit FE990A (RNDIS) */ 1376 1376 .driver_info = NCTRL(2) | RSVD(3) }, 1377 - { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1083, 0xff), /* Telit FE990 (ECM) */ 1377 + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1083, 0xff), /* Telit FE990A (ECM) */ 1378 1378 .driver_info = NCTRL(0) | RSVD(1) }, 1379 1379 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10a0, 0xff), /* Telit FN20C04 (rmnet) */ 1380 1380 .driver_info = RSVD(0) | NCTRL(3) }, ··· 1388 1388 .driver_info = RSVD(0) | NCTRL(2) | RSVD(3) | RSVD(4) }, 1389 1389 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10aa, 0xff), /* Telit FN920C04 (MBIM) */ 1390 1390 .driver_info = NCTRL(3) | RSVD(4) | RSVD(5) }, 1391 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b0, 0xff, 0xff, 0x30), /* Telit FE990B (rmnet) */ 1392 + .driver_info = NCTRL(5) }, 1393 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b0, 0xff, 0xff, 0x40) }, 1394 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b0, 0xff, 0xff, 0x60) }, 1395 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b1, 0xff, 0xff, 0x30), /* Telit FE990B (MBIM) */ 1396 + .driver_info = NCTRL(6) }, 1397 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b1, 0xff, 0xff, 0x40) }, 1398 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b1, 0xff, 0xff, 0x60) }, 1399 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b2, 0xff, 0xff, 0x30), /* Telit FE990B (RNDIS) */ 1400 + .driver_info = NCTRL(6) }, 1401 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b2, 0xff, 0xff, 0x40) }, 1402 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b2, 0xff, 0xff, 0x60) }, 1403 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b3, 0xff, 0xff, 0x30), /* Telit FE990B (ECM) */ 1404 + .driver_info = NCTRL(6) }, 1405 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b3, 0xff, 0xff, 0x40) }, 1406 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10b3, 0xff, 0xff, 0x60) }, 1391 1407 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10c0, 0xff), /* Telit FE910C04 (rmnet) */ 1392 1408 .driver_info = RSVD(0) | NCTRL(3) }, 1393 1409 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10c4, 0xff), /* Telit FE910C04 (rmnet) */ 1394 1410 .driver_info = RSVD(0) | NCTRL(3) }, 1395 1411 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10c8, 0xff), /* Telit FE910C04 (rmnet) */ 1396 1412 .driver_info = RSVD(0) | NCTRL(2) | RSVD(3) | RSVD(4) }, 1397 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d0, 0x60) }, /* Telit FN990B (rmnet) */ 1398 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d0, 0x40) }, 1399 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d0, 0x30), 1413 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x30), /* Telit FN990B (rmnet) */ 1400 1414 .driver_info = NCTRL(5) }, 1401 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d1, 0x60) }, /* Telit FN990B (MBIM) */ 1402 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d1, 0x40) }, 1403 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d1, 0x30), 1415 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x40) }, 1416 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x60) }, 1417 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d1, 0xff, 0xff, 0x30), /* Telit FN990B (MBIM) */ 1404 1418 .driver_info = NCTRL(6) }, 1405 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d2, 0x60) }, /* Telit FN990B (RNDIS) */ 1406 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d2, 0x40) }, 1407 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d2, 0x30), 1419 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d1, 0xff, 0xff, 0x40) }, 1420 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d1, 0xff, 0xff, 0x60) }, 1421 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d2, 0xff, 0xff, 0x30), /* Telit FN990B (RNDIS) */ 1408 1422 .driver_info = NCTRL(6) }, 1409 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d3, 0x60) }, /* Telit FN990B (ECM) */ 1410 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d3, 0x40) }, 1411 - { USB_DEVICE_INTERFACE_PROTOCOL(TELIT_VENDOR_ID, 0x10d3, 0x30), 1423 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d2, 0xff, 0xff, 0x40) }, 1424 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d2, 0xff, 0xff, 0x60) }, 1425 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d3, 0xff, 0xff, 0x30), /* Telit FN990B (ECM) */ 1412 1426 .driver_info = NCTRL(6) }, 1427 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d3, 0xff, 0xff, 0x40) }, 1428 + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d3, 0xff, 0xff, 0x60) }, 1413 1429 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), 1414 1430 .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) }, 1415 1431 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
+4 -4
drivers/usb/typec/tcpm/tcpm.c
··· 5117 5117 */ 5118 5118 if (port->vbus_never_low) { 5119 5119 port->vbus_never_low = false; 5120 - tcpm_set_state(port, SNK_SOFT_RESET, 5121 - port->timings.sink_wait_cap_time); 5120 + upcoming_state = SNK_SOFT_RESET; 5122 5121 } else { 5123 5122 if (!port->self_powered) 5124 5123 upcoming_state = SNK_WAIT_CAPABILITIES_TIMEOUT; 5125 5124 else 5126 5125 upcoming_state = hard_reset_state(port); 5127 - tcpm_set_state(port, SNK_WAIT_CAPABILITIES_TIMEOUT, 5128 - port->timings.sink_wait_cap_time); 5129 5126 } 5127 + 5128 + tcpm_set_state(port, upcoming_state, 5129 + port->timings.sink_wait_cap_time); 5130 5130 break; 5131 5131 case SNK_WAIT_CAPABILITIES_TIMEOUT: 5132 5132 /*