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

Pull USB / PHY fixes from Greg KH:
"Here are a number of small USB and PHY driver fixes for 4.9-rc5

Nothing major, just small fixes for reported issues, all of these have
been in linux-next for a while with no reported issues"

* tag 'usb-4.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
USB: cdc-acm: fix TIOCMIWAIT
cdc-acm: fix uninitialized variable
drivers/usb: Skip auto handoff for TI and RENESAS usb controllers
usb: musb: remove duplicated actions
usb: musb: da8xx: Don't print phy error on -EPROBE_DEFER
phy: sun4i: check PMU presence when poking unknown bit of pmu
phy-rockchip-pcie: remove deassert of phy_rst from exit callback
phy: da8xx-usb: rename the ohci device to ohci-da8xx
phy: Add reset callback for not generic phy
uwb: fix device reference leaks
usb: gadget: u_ether: remove interrupt throttling
usb: dwc3: st: add missing <linux/pinctrl/consumer.h> include
usb: dwc3: Fix error handling for core init

+42 -37
+3 -2
drivers/phy/phy-da8xx-usb.c
··· 198 198 } else { 199 199 int ret; 200 200 201 - ret = phy_create_lookup(d_phy->usb11_phy, "usb-phy", "ohci.0"); 201 + ret = phy_create_lookup(d_phy->usb11_phy, "usb-phy", 202 + "ohci-da8xx"); 202 203 if (ret) 203 204 dev_warn(dev, "Failed to create usb11 phy lookup\n"); 204 205 ret = phy_create_lookup(d_phy->usb20_phy, "usb-phy", ··· 217 216 218 217 if (!pdev->dev.of_node) { 219 218 phy_remove_lookup(d_phy->usb20_phy, "usb-phy", "musb-da8xx"); 220 - phy_remove_lookup(d_phy->usb11_phy, "usb-phy", "ohci.0"); 219 + phy_remove_lookup(d_phy->usb11_phy, "usb-phy", "ohci-da8xx"); 221 220 } 222 221 223 222 return 0;
+1 -12
drivers/phy/phy-rockchip-pcie.c
··· 249 249 static int rockchip_pcie_phy_exit(struct phy *phy) 250 250 { 251 251 struct rockchip_pcie_phy *rk_phy = phy_get_drvdata(phy); 252 - int err = 0; 253 252 254 253 clk_disable_unprepare(rk_phy->clk_pciephy_ref); 255 254 256 - err = reset_control_deassert(rk_phy->phy_rst); 257 - if (err) { 258 - dev_err(&phy->dev, "deassert phy_rst err %d\n", err); 259 - goto err_reset; 260 - } 261 - 262 - return err; 263 - 264 - err_reset: 265 - clk_prepare_enable(rk_phy->clk_pciephy_ref); 266 - return err; 255 + return 0; 267 256 } 268 257 269 258 static const struct phy_ops ops = {
+1 -1
drivers/phy/phy-sun4i-usb.c
··· 264 264 return ret; 265 265 } 266 266 267 - if (data->cfg->enable_pmu_unk1) { 267 + if (phy->pmu && data->cfg->enable_pmu_unk1) { 268 268 val = readl(phy->pmu + REG_PMU_UNK1); 269 269 writel(val & ~2, phy->pmu + REG_PMU_UNK1); 270 270 }
+2 -2
drivers/usb/class/cdc-acm.c
··· 932 932 DECLARE_WAITQUEUE(wait, current); 933 933 struct async_icount old, new; 934 934 935 - if (arg & (TIOCM_DSR | TIOCM_RI | TIOCM_CD)) 936 - return -EINVAL; 937 935 do { 938 936 spin_lock_irq(&acm->read_lock); 939 937 old = acm->oldcount; ··· 1158 1160 1159 1161 if (quirks == IGNORE_DEVICE) 1160 1162 return -ENODEV; 1163 + 1164 + memset(&h, 0x00, sizeof(struct usb_cdc_parsed_header)); 1161 1165 1162 1166 num_rx_buf = (quirks == SINGLE_RX_URB) ? 1 : ACM_NR; 1163 1167
+2 -3
drivers/usb/dwc3/core.c
··· 769 769 return 0; 770 770 771 771 err4: 772 - phy_power_off(dwc->usb2_generic_phy); 772 + phy_power_off(dwc->usb3_generic_phy); 773 773 774 774 err3: 775 - phy_power_off(dwc->usb3_generic_phy); 775 + phy_power_off(dwc->usb2_generic_phy); 776 776 777 777 err2: 778 778 usb_phy_set_suspend(dwc->usb2_phy, 1); 779 779 usb_phy_set_suspend(dwc->usb3_phy, 1); 780 - dwc3_core_exit(dwc); 781 780 782 781 err1: 783 782 usb_phy_shutdown(dwc->usb2_phy);
+1
drivers/usb/dwc3/dwc3-st.c
··· 31 31 #include <linux/slab.h> 32 32 #include <linux/regmap.h> 33 33 #include <linux/reset.h> 34 + #include <linux/pinctrl/consumer.h> 34 35 #include <linux/usb/of.h> 35 36 36 37 #include "core.h"
-8
drivers/usb/gadget/function/u_ether.c
··· 588 588 589 589 req->length = length; 590 590 591 - /* throttle high/super speed IRQ rate back slightly */ 592 - if (gadget_is_dualspeed(dev->gadget)) 593 - req->no_interrupt = (((dev->gadget->speed == USB_SPEED_HIGH || 594 - dev->gadget->speed == USB_SPEED_SUPER)) && 595 - !list_empty(&dev->tx_reqs)) 596 - ? ((atomic_read(&dev->tx_qlen) % dev->qmult) != 0) 597 - : 0; 598 - 599 591 retval = usb_ep_queue(in, req, GFP_ATOMIC); 600 592 switch (retval) { 601 593 default:
+8
drivers/usb/host/pci-quirks.c
··· 995 995 } 996 996 val = readl(base + ext_cap_offset); 997 997 998 + /* Auto handoff never worked for these devices. Force it and continue */ 999 + if ((pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241) || 1000 + (pdev->vendor == PCI_VENDOR_ID_RENESAS 1001 + && pdev->device == 0x0014)) { 1002 + val = (val | XHCI_HC_OS_OWNED) & ~XHCI_HC_BIOS_OWNED; 1003 + writel(val, base + ext_cap_offset); 1004 + } 1005 + 998 1006 /* If the BIOS owns the HC, signal that the OS wants it, and wait */ 999 1007 if (val & XHCI_HC_BIOS_OWNED) { 1000 1008 writel(val | XHCI_HC_OS_OWNED, base + ext_cap_offset);
+2 -1
drivers/usb/musb/da8xx.c
··· 479 479 480 480 glue->phy = devm_phy_get(&pdev->dev, "usb-phy"); 481 481 if (IS_ERR(glue->phy)) { 482 - dev_err(&pdev->dev, "failed to get phy\n"); 482 + if (PTR_ERR(glue->phy) != -EPROBE_DEFER) 483 + dev_err(&pdev->dev, "failed to get phy\n"); 483 484 return PTR_ERR(glue->phy); 484 485 } 485 486
-5
drivers/usb/musb/musb_core.c
··· 2114 2114 musb->io.ep_offset = musb_flat_ep_offset; 2115 2115 musb->io.ep_select = musb_flat_ep_select; 2116 2116 } 2117 - /* And override them with platform specific ops if specified. */ 2118 - if (musb->ops->ep_offset) 2119 - musb->io.ep_offset = musb->ops->ep_offset; 2120 - if (musb->ops->ep_select) 2121 - musb->io.ep_select = musb->ops->ep_select; 2122 2117 2123 2118 /* At least tusb6010 has its own offsets */ 2124 2119 if (musb->ops->ep_offset)
+13 -3
drivers/uwb/lc-rc.c
··· 56 56 struct uwb_rc *rc = NULL; 57 57 58 58 dev = class_find_device(&uwb_rc_class, NULL, &index, uwb_rc_index_match); 59 - if (dev) 59 + if (dev) { 60 60 rc = dev_get_drvdata(dev); 61 + put_device(dev); 62 + } 63 + 61 64 return rc; 62 65 } 63 66 ··· 470 467 if (dev) { 471 468 rc = dev_get_drvdata(dev); 472 469 __uwb_rc_get(rc); 470 + put_device(dev); 473 471 } 472 + 474 473 return rc; 475 474 } 476 475 EXPORT_SYMBOL_GPL(__uwb_rc_try_get); ··· 525 520 526 521 dev = class_find_device(&uwb_rc_class, NULL, grandpa_dev, 527 522 find_rc_grandpa); 528 - if (dev) 523 + if (dev) { 529 524 rc = dev_get_drvdata(dev); 525 + put_device(dev); 526 + } 527 + 530 528 return rc; 531 529 } 532 530 EXPORT_SYMBOL_GPL(uwb_rc_get_by_grandpa); ··· 561 553 struct uwb_rc *rc = NULL; 562 554 563 555 dev = class_find_device(&uwb_rc_class, NULL, addr, find_rc_dev); 564 - if (dev) 556 + if (dev) { 565 557 rc = dev_get_drvdata(dev); 558 + put_device(dev); 559 + } 566 560 567 561 return rc; 568 562 }
+2
drivers/uwb/pal.c
··· 97 97 98 98 dev = class_find_device(&uwb_rc_class, NULL, target_rc, find_rc); 99 99 100 + put_device(dev); 101 + 100 102 return (dev != NULL); 101 103 } 102 104
+7
include/linux/phy/phy.h
··· 253 253 return -ENOSYS; 254 254 } 255 255 256 + static inline int phy_reset(struct phy *phy) 257 + { 258 + if (!phy) 259 + return 0; 260 + return -ENOSYS; 261 + } 262 + 256 263 static inline int phy_get_bus_width(struct phy *phy) 257 264 { 258 265 return -ENOSYS;