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

Pull USB/Thunderbolt fixes from Greg KH:
"Here are some small remaining USB and Thunderbolt fixes and device ids
for 6.12-rc7. Included in here are:

- new USB serial driver device ids

- thunderbolt driver fixes for reported problems

- typec bugfixes

- dwc3 driver fix

- musb driver fix

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

* tag 'usb-6.12-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
USB: serial: qcserial: add support for Sierra Wireless EM86xx
thunderbolt: Fix connection issue with Pluggable UD-4VPD dock
usb: typec: fix potential out of bounds in ucsi_ccg_update_set_new_cam_cmd()
usb: dwc3: fix fault at system suspend if device was already runtime suspended
usb: typec: qcom-pmic: init value of hdr_len/txbuf_len earlier
usb: musb: sunxi: Fix accessing an released usb phy
USB: serial: io_edgeport: fix use after free in debug printk
USB: serial: option: add Quectel RG650V
USB: serial: option: add Fibocom FG132 0x0112 composition
thunderbolt: Add only on-board retimers when !CONFIG_USB4_DEBUGFS_MARGINING

+33 -24
+2
drivers/thunderbolt/retimer.c
··· 532 532 } 533 533 534 534 ret = 0; 535 + if (!IS_ENABLED(CONFIG_USB4_DEBUGFS_MARGINING)) 536 + max = min(last_idx, max); 535 537 536 538 /* Add retimers if they do not exist already */ 537 539 for (i = 1; i <= max; i++) {
+1 -1
drivers/thunderbolt/usb4.c
··· 48 48 49 49 /* Delays in us used with usb4_port_wait_for_bit() */ 50 50 #define USB4_PORT_DELAY 50 51 - #define USB4_PORT_SB_DELAY 5000 51 + #define USB4_PORT_SB_DELAY 1000 52 52 53 53 static int usb4_native_switch_op(struct tb_switch *sw, u16 opcode, 54 54 u32 *metadata, u8 *status,
+12 -13
drivers/usb/dwc3/core.c
··· 2342 2342 u32 reg; 2343 2343 int i; 2344 2344 2345 - dwc->susphy_state = (dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)) & 2346 - DWC3_GUSB2PHYCFG_SUSPHY) || 2347 - (dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0)) & 2348 - DWC3_GUSB3PIPECTL_SUSPHY); 2345 + if (!pm_runtime_suspended(dwc->dev) && !PMSG_IS_AUTO(msg)) { 2346 + dwc->susphy_state = (dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)) & 2347 + DWC3_GUSB2PHYCFG_SUSPHY) || 2348 + (dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0)) & 2349 + DWC3_GUSB3PIPECTL_SUSPHY); 2350 + /* 2351 + * TI AM62 platform requires SUSPHY to be 2352 + * enabled for system suspend to work. 2353 + */ 2354 + if (!dwc->susphy_state) 2355 + dwc3_enable_susphy(dwc, true); 2356 + } 2349 2357 2350 2358 switch (dwc->current_dr_role) { 2351 2359 case DWC3_GCTL_PRTCAP_DEVICE: ··· 2404 2396 default: 2405 2397 /* do nothing */ 2406 2398 break; 2407 - } 2408 - 2409 - if (!PMSG_IS_AUTO(msg)) { 2410 - /* 2411 - * TI AM62 platform requires SUSPHY to be 2412 - * enabled for system suspend to work. 2413 - */ 2414 - if (!dwc->susphy_state) 2415 - dwc3_enable_susphy(dwc, true); 2416 2399 } 2417 2400 2418 2401 return 0;
-2
drivers/usb/musb/sunxi.c
··· 293 293 if (test_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags)) 294 294 sunxi_sram_release(musb->controller->parent); 295 295 296 - devm_usb_put_phy(glue->dev, glue->xceiv); 297 - 298 296 return 0; 299 297 } 300 298
+4 -4
drivers/usb/serial/io_edgeport.c
··· 770 770 static void edge_bulk_out_cmd_callback(struct urb *urb) 771 771 { 772 772 struct edgeport_port *edge_port = urb->context; 773 + struct device *dev = &urb->dev->dev; 773 774 int status = urb->status; 774 775 775 776 atomic_dec(&CmdUrbs); 776 - dev_dbg(&urb->dev->dev, "%s - FREE URB %p (outstanding %d)\n", 777 - __func__, urb, atomic_read(&CmdUrbs)); 777 + dev_dbg(dev, "%s - FREE URB %p (outstanding %d)\n", __func__, urb, 778 + atomic_read(&CmdUrbs)); 778 779 779 780 780 781 /* clean up the transfer buffer */ ··· 785 784 usb_free_urb(urb); 786 785 787 786 if (status) { 788 - dev_dbg(&urb->dev->dev, 789 - "%s - nonzero write bulk status received: %d\n", 787 + dev_dbg(dev, "%s - nonzero write bulk status received: %d\n", 790 788 __func__, status); 791 789 return; 792 790 }
+6
drivers/usb/serial/option.c
··· 251 251 #define QUECTEL_VENDOR_ID 0x2c7c 252 252 /* These Quectel products use Quectel's vendor ID */ 253 253 #define QUECTEL_PRODUCT_EC21 0x0121 254 + #define QUECTEL_PRODUCT_RG650V 0x0122 254 255 #define QUECTEL_PRODUCT_EM061K_LTA 0x0123 255 256 #define QUECTEL_PRODUCT_EM061K_LMS 0x0124 256 257 #define QUECTEL_PRODUCT_EC25 0x0125 ··· 1274 1273 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG912Y, 0xff, 0, 0) }, 1275 1274 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG916Q, 0xff, 0x00, 0x00) }, 1276 1275 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500K, 0xff, 0x00, 0x00) }, 1276 + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RG650V, 0xff, 0xff, 0x30) }, 1277 + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RG650V, 0xff, 0, 0) }, 1277 1278 1278 1279 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, 1279 1280 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) }, ··· 2323 2320 { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */ 2324 2321 { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */ 2325 2322 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0111, 0xff) }, /* Fibocom FM160 (MBIM mode) */ 2323 + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0112, 0xff, 0xff, 0x30) }, /* Fibocom FG132 Diag */ 2324 + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0112, 0xff, 0xff, 0x40) }, /* Fibocom FG132 AT */ 2325 + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0112, 0xff, 0, 0) }, /* Fibocom FG132 NMEA */ 2326 2326 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0115, 0xff), /* Fibocom FM135 (laptop MBIM) */ 2327 2327 .driver_info = RSVD(5) }, 2328 2328 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */
+2
drivers/usb/serial/qcserial.c
··· 166 166 {DEVICE_SWI(0x1199, 0x9090)}, /* Sierra Wireless EM7565 QDL */ 167 167 {DEVICE_SWI(0x1199, 0x9091)}, /* Sierra Wireless EM7565 */ 168 168 {DEVICE_SWI(0x1199, 0x90d2)}, /* Sierra Wireless EM9191 QDL */ 169 + {DEVICE_SWI(0x1199, 0x90e4)}, /* Sierra Wireless EM86xx QDL*/ 170 + {DEVICE_SWI(0x1199, 0x90e5)}, /* Sierra Wireless EM86xx */ 169 171 {DEVICE_SWI(0x1199, 0xc080)}, /* Sierra Wireless EM7590 QDL */ 170 172 {DEVICE_SWI(0x1199, 0xc081)}, /* Sierra Wireless EM7590 */ 171 173 {DEVICE_SWI(0x413c, 0x81a2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */
+4 -4
drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
··· 227 227 228 228 spin_lock_irqsave(&pmic_typec_pdphy->lock, flags); 229 229 230 + hdr_len = sizeof(msg->header); 231 + txbuf_len = pd_header_cnt_le(msg->header) * 4; 232 + txsize_len = hdr_len + txbuf_len - 1; 233 + 230 234 ret = regmap_read(pmic_typec_pdphy->regmap, 231 235 pmic_typec_pdphy->base + USB_PDPHY_RX_ACKNOWLEDGE_REG, 232 236 &val); ··· 247 243 ret = qcom_pmic_typec_pdphy_clear_tx_control_reg(pmic_typec_pdphy); 248 244 if (ret) 249 245 goto done; 250 - 251 - hdr_len = sizeof(msg->header); 252 - txbuf_len = pd_header_cnt_le(msg->header) * 4; 253 - txsize_len = hdr_len + txbuf_len - 1; 254 246 255 247 /* Write message header sizeof(u16) to USB_PDPHY_TX_BUFFER_HDR_REG */ 256 248 ret = regmap_bulk_write(pmic_typec_pdphy->regmap,
+2
drivers/usb/typec/ucsi/ucsi_ccg.c
··· 482 482 483 483 port = uc->orig; 484 484 new_cam = UCSI_SET_NEW_CAM_GET_AM(*cmd); 485 + if (new_cam >= ARRAY_SIZE(uc->updated)) 486 + return; 485 487 new_port = &uc->updated[new_cam]; 486 488 cam = new_port->linked_idx; 487 489 enter_new_mode = UCSI_SET_NEW_CAM_ENTER(*cmd);