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

Merge tag 'fixes-for-v3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus

Felipe writes:

usb: fixes for v3.11-rc1

Quite a few changes going on here. They have been
boot tested on OMAP5 and compile tested on ARM and x86
with different defconfigs.

Many gadget drivers got a depends on HAS_DMA in order
to prevent build failures on !HAS_DMA architectures.

DWC3 learned how to allow a gadget driver to be modprobed
after an unsuccessful modprobe of another gadget driver. It
also got a fix to a wrong bit mask in dwc3_event_type, and
learns to return proper error codes from failed usb3_phy
initialization.

RNDIS function driver can now be built with configfs.

at91_udc now knows that we need to prepare the clock
before enabling it.

renesas_usbhs now lets gadget drivers be modprobed
multiple times.

phy-omap-usb3 got a fix for the DPLL settings.

mv_u3d_core now passes the correct cookie to free_irq().

fotg210-udc got Section mismatch fixes.

Signed-of-by: Felipe Balbi <balbi@ti.com>

+30 -22
+1 -1
drivers/usb/dwc3/Kconfig
··· 1 1 config USB_DWC3 2 2 tristate "DesignWare USB3 DRD Core Support" 3 - depends on (USB || USB_GADGET) && GENERIC_HARDIRQS 3 + depends on (USB || USB_GADGET) && GENERIC_HARDIRQS && HAS_DMA 4 4 select USB_XHCI_PLATFORM if USB_SUPPORT && USB_XHCI_HCD 5 5 help 6 6 Say Y or M here if your system has a Dual Role SuperSpeed
+1 -1
drivers/usb/dwc3/core.c
··· 450 450 } 451 451 452 452 if (IS_ERR(dwc->usb3_phy)) { 453 - ret = PTR_ERR(dwc->usb2_phy); 453 + ret = PTR_ERR(dwc->usb3_phy); 454 454 455 455 /* 456 456 * if -ENXIO is returned, it means PHY layer wasn't
+2 -2
drivers/usb/dwc3/core.h
··· 759 759 760 760 struct dwc3_event_type { 761 761 u32 is_devspec:1; 762 - u32 type:6; 763 - u32 reserved8_31:25; 762 + u32 type:7; 763 + u32 reserved8_31:24; 764 764 } __packed; 765 765 766 766 #define DWC3_DEPEVT_XFERCOMPLETE 0x01
+1
drivers/usb/dwc3/gadget.c
··· 1584 1584 __dwc3_gadget_ep_disable(dwc->eps[0]); 1585 1585 1586 1586 err0: 1587 + dwc->gadget_driver = NULL; 1587 1588 spin_unlock_irqrestore(&dwc->lock, flags); 1588 1589 1589 1590 return ret;
+4 -1
drivers/usb/gadget/Kconfig
··· 193 193 Faraday usb device controller FUSB300 driver 194 194 195 195 config USB_FOTG210_UDC 196 + depends on HAS_DMA 196 197 tristate "Faraday FOTG210 USB Peripheral Controller" 197 198 help 198 199 Faraday USB2.0 OTG controller which can be configured as ··· 329 328 330 329 config USB_MV_UDC 331 330 tristate "Marvell USB2.0 Device Controller" 332 - depends on GENERIC_HARDIRQS 331 + depends on GENERIC_HARDIRQS && HAS_DMA 333 332 help 334 333 Marvell Socs (including PXA and MMP series) include a high speed 335 334 USB2.0 OTG controller, which can be configured as high speed or 336 335 full speed USB peripheral. 337 336 338 337 config USB_MV_U3D 338 + depends on HAS_DMA 339 339 tristate "MARVELL PXA2128 USB 3.0 controller" 340 340 help 341 341 MARVELL PXA2128 Processor series include a super speed USB3.0 device ··· 641 639 depends on USB_CONFIGFS 642 640 depends on NET 643 641 select USB_U_ETHER 642 + select USB_U_RNDIS 644 643 select USB_F_RNDIS 645 644 help 646 645 Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
+9 -7
drivers/usb/gadget/at91_udc.c
··· 870 870 if (udc->clocked) 871 871 return; 872 872 udc->clocked = 1; 873 - clk_enable(udc->iclk); 874 - clk_enable(udc->fclk); 873 + clk_prepare_enable(udc->iclk); 874 + clk_prepare_enable(udc->fclk); 875 875 } 876 876 877 877 static void clk_off(struct at91_udc *udc) ··· 880 880 return; 881 881 udc->clocked = 0; 882 882 udc->gadget.speed = USB_SPEED_UNKNOWN; 883 - clk_disable(udc->fclk); 884 - clk_disable(udc->iclk); 883 + clk_disable_unprepare(udc->fclk); 884 + clk_disable_unprepare(udc->iclk); 885 885 } 886 886 887 887 /* ··· 1725 1725 /* init software state */ 1726 1726 udc = &controller; 1727 1727 udc->gadget.dev.parent = dev; 1728 - if (pdev->dev.of_node) 1728 + if (IS_ENABLED(CONFIG_OF) && pdev->dev.of_node) 1729 1729 at91udc_of_init(udc, pdev->dev.of_node); 1730 1730 else 1731 1731 memcpy(&udc->board, dev->platform_data, ··· 1782 1782 } 1783 1783 1784 1784 /* don't do anything until we have both gadget driver and VBUS */ 1785 - clk_enable(udc->iclk); 1785 + retval = clk_prepare_enable(udc->iclk); 1786 + if (retval) 1787 + goto fail1; 1786 1788 at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS); 1787 1789 at91_udp_write(udc, AT91_UDP_IDR, 0xffffffff); 1788 1790 /* Clear all pending interrupts - UDP may be used by bootloader. */ 1789 1791 at91_udp_write(udc, AT91_UDP_ICR, 0xffffffff); 1790 - clk_disable(udc->iclk); 1792 + clk_disable_unprepare(udc->iclk); 1791 1793 1792 1794 /* request UDC and maybe VBUS irqs */ 1793 1795 udc->udp_irq = platform_get_irq(pdev, 0);
+2 -2
drivers/usb/gadget/fotg210-udc.c
··· 1074 1074 .udc_stop = fotg210_udc_stop, 1075 1075 }; 1076 1076 1077 - static int __exit fotg210_udc_remove(struct platform_device *pdev) 1077 + static int fotg210_udc_remove(struct platform_device *pdev) 1078 1078 { 1079 1079 struct fotg210_udc *fotg210 = dev_get_drvdata(&pdev->dev); 1080 1080 ··· 1088 1088 return 0; 1089 1089 } 1090 1090 1091 - static int __init fotg210_udc_probe(struct platform_device *pdev) 1091 + static int fotg210_udc_probe(struct platform_device *pdev) 1092 1092 { 1093 1093 struct resource *res, *ires; 1094 1094 struct fotg210_udc *fotg210 = NULL;
+2 -2
drivers/usb/gadget/mv_u3d_core.c
··· 1776 1776 kfree(u3d->eps); 1777 1777 1778 1778 if (u3d->irq) 1779 - free_irq(u3d->irq, &dev->dev); 1779 + free_irq(u3d->irq, u3d); 1780 1780 1781 1781 if (u3d->cap_regs) 1782 1782 iounmap(u3d->cap_regs); ··· 1974 1974 return 0; 1975 1975 1976 1976 err_unregister: 1977 - free_irq(u3d->irq, &dev->dev); 1977 + free_irq(u3d->irq, u3d); 1978 1978 err_request_irq: 1979 1979 err_get_irq: 1980 1980 kfree(u3d->status_req);
+6
drivers/usb/gadget/udc-core.c
··· 50 50 51 51 /* ------------------------------------------------------------------------- */ 52 52 53 + #ifdef CONFIG_HAS_DMA 54 + 53 55 int usb_gadget_map_request(struct usb_gadget *gadget, 54 56 struct usb_request *req, int is_in) 55 57 { ··· 100 98 } 101 99 } 102 100 EXPORT_SYMBOL_GPL(usb_gadget_unmap_request); 101 + 102 + #endif /* CONFIG_HAS_DMA */ 103 103 104 104 /* ------------------------------------------------------------------------- */ 105 105 ··· 198 194 dev_set_name(&gadget->dev, "gadget"); 199 195 gadget->dev.parent = parent; 200 196 197 + #ifdef CONFIG_HAS_DMA 201 198 dma_set_coherent_mask(&gadget->dev, parent->coherent_dma_mask); 202 199 gadget->dev.dma_parms = parent->dma_parms; 203 200 gadget->dev.dma_mask = parent->dma_mask; 201 + #endif 204 202 205 203 if (release) 206 204 gadget->dev.release = release;
+1 -1
drivers/usb/phy/phy-omap-usb3.c
··· 71 71 {1250, 5, 4, 20, 0}, /* 12 MHz */ 72 72 {3125, 20, 4, 20, 0}, /* 16.8 MHz */ 73 73 {1172, 8, 4, 20, 65537}, /* 19.2 MHz */ 74 + {1000, 7, 4, 10, 0}, /* 20 MHz */ 74 75 {1250, 12, 4, 20, 0}, /* 26 MHz */ 75 76 {3125, 47, 4, 20, 92843}, /* 38.4 MHz */ 76 - {1000, 7, 4, 10, 0}, /* 20 MHz */ 77 77 78 78 }; 79 79
+1 -1
drivers/usb/phy/phy-samsung-usb2.c
··· 388 388 clk = devm_clk_get(dev, "otg"); 389 389 390 390 if (IS_ERR(clk)) { 391 - dev_err(dev, "Failed to get otg clock\n"); 391 + dev_err(dev, "Failed to get usbhost/otg clock\n"); 392 392 return PTR_ERR(clk); 393 393 } 394 394
-4
drivers/usb/renesas_usbhs/mod_gadget.c
··· 855 855 struct usbhsg_gpriv *gpriv = usbhsg_gadget_to_gpriv(gadget); 856 856 struct usbhs_priv *priv = usbhsg_gpriv_to_priv(gpriv); 857 857 858 - if (!driver || 859 - !driver->unbind) 860 - return -EINVAL; 861 - 862 858 usbhsg_try_stop(priv, USBHSG_STATUS_REGISTERD); 863 859 gpriv->driver = NULL; 864 860