mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 05:38:49 -04:00
Merge tag 'fixes-for-v4.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus
Felipe writes: usb: fixes for-v4.4-rc5 Hopefully final set of fixes for v4.4 release cycle. There's a fix for a regression on dwc3 caused by recent changes to how transfers are started. We're not pre-starting interrupt endpoints anymore. A NULL pointer dereference fix for the MSM phy driver. The UVC gadget got a minor fix for permissions to its configfs attributes and, finally, two fixes for MUSB. A fix for PM runtime when MUSB returns EPROBE_DEFER and a fix to actually return an error in case we can't initialize a DMA engine. Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
@@ -1078,6 +1078,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
|
||||
* little bit faster.
|
||||
*/
|
||||
if (!usb_endpoint_xfer_isoc(dep->endpoint.desc) &&
|
||||
!usb_endpoint_xfer_int(dep->endpoint.desc) &&
|
||||
!(dep->flags & DWC3_EP_BUSY)) {
|
||||
ret = __dwc3_gadget_kick_transfer(dep, 0, true);
|
||||
goto out;
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#define UVC_ATTR(prefix, cname, aname) \
|
||||
static struct configfs_attribute prefix##attr_##cname = { \
|
||||
.ca_name = __stringify(aname), \
|
||||
.ca_mode = S_IRUGO, \
|
||||
.ca_mode = S_IRUGO | S_IWUGO, \
|
||||
.ca_owner = THIS_MODULE, \
|
||||
.show = prefix##cname##_show, \
|
||||
.store = prefix##cname##_store, \
|
||||
|
||||
@@ -2017,7 +2017,6 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
|
||||
/* We need musb_read/write functions initialized for PM */
|
||||
pm_runtime_use_autosuspend(musb->controller);
|
||||
pm_runtime_set_autosuspend_delay(musb->controller, 200);
|
||||
pm_runtime_irq_safe(musb->controller);
|
||||
pm_runtime_enable(musb->controller);
|
||||
|
||||
/* The musb_platform_init() call:
|
||||
@@ -2095,6 +2094,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
|
||||
#ifndef CONFIG_MUSB_PIO_ONLY
|
||||
if (!musb->ops->dma_init || !musb->ops->dma_exit) {
|
||||
dev_err(dev, "DMA controller not set\n");
|
||||
status = -ENODEV;
|
||||
goto fail2;
|
||||
}
|
||||
musb_dma_controller_create = musb->ops->dma_init;
|
||||
@@ -2218,6 +2218,12 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
|
||||
|
||||
pm_runtime_put(musb->controller);
|
||||
|
||||
/*
|
||||
* For why this is currently needed, see commit 3e43a0725637
|
||||
* ("usb: musb: core: add pm_runtime_irq_safe()")
|
||||
*/
|
||||
pm_runtime_irq_safe(musb->controller);
|
||||
|
||||
return 0;
|
||||
|
||||
fail5:
|
||||
|
||||
@@ -1506,7 +1506,6 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
|
||||
{
|
||||
struct msm_otg_platform_data *pdata;
|
||||
struct extcon_dev *ext_id, *ext_vbus;
|
||||
const struct of_device_id *id;
|
||||
struct device_node *node = pdev->dev.of_node;
|
||||
struct property *prop;
|
||||
int len, ret, words;
|
||||
@@ -1518,8 +1517,9 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
|
||||
|
||||
motg->pdata = pdata;
|
||||
|
||||
id = of_match_device(msm_otg_dt_match, &pdev->dev);
|
||||
pdata->phy_type = (enum msm_usb_phy_type) id->data;
|
||||
pdata->phy_type = (enum msm_usb_phy_type)of_device_get_match_data(&pdev->dev);
|
||||
if (!pdata->phy_type)
|
||||
return 1;
|
||||
|
||||
motg->link_rst = devm_reset_control_get(&pdev->dev, "link");
|
||||
if (IS_ERR(motg->link_rst))
|
||||
|
||||
Reference in New Issue
Block a user