diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-12-09 13:15:30 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-12-09 13:15:30 -0500 |
commit | 73b39bb0a0feefc9b2f410e213f20a7d4f715682 (patch) | |
tree | 6f9830882caac6c2d05b1df72711abdb85125006 | |
parent | 4a0c4c36094cefd85cbe489590382ef69516ccef (diff) | |
parent | 7d32cdef535622c0aea39807989f62cdddea207e (diff) |
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>
-rw-r--r-- | drivers/usb/dwc3/gadget.c | 1 | ||||
-rw-r--r-- | drivers/usb/gadget/function/uvc_configfs.c | 2 | ||||
-rw-r--r-- | drivers/usb/musb/musb_core.c | 8 | ||||
-rw-r--r-- | drivers/usb/phy/phy-msm-usb.c | 6 |
4 files changed, 12 insertions, 5 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index e24a01cc98df..a58376fd65fe 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c | |||
@@ -1078,6 +1078,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req) | |||
1078 | * little bit faster. | 1078 | * little bit faster. |
1079 | */ | 1079 | */ |
1080 | if (!usb_endpoint_xfer_isoc(dep->endpoint.desc) && | 1080 | if (!usb_endpoint_xfer_isoc(dep->endpoint.desc) && |
1081 | !usb_endpoint_xfer_int(dep->endpoint.desc) && | ||
1081 | !(dep->flags & DWC3_EP_BUSY)) { | 1082 | !(dep->flags & DWC3_EP_BUSY)) { |
1082 | ret = __dwc3_gadget_kick_transfer(dep, 0, true); | 1083 | ret = __dwc3_gadget_kick_transfer(dep, 0, true); |
1083 | goto out; | 1084 | goto out; |
diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c index 289ebca316d3..ad8c9b05572d 100644 --- a/drivers/usb/gadget/function/uvc_configfs.c +++ b/drivers/usb/gadget/function/uvc_configfs.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #define UVC_ATTR(prefix, cname, aname) \ | 20 | #define UVC_ATTR(prefix, cname, aname) \ |
21 | static struct configfs_attribute prefix##attr_##cname = { \ | 21 | static struct configfs_attribute prefix##attr_##cname = { \ |
22 | .ca_name = __stringify(aname), \ | 22 | .ca_name = __stringify(aname), \ |
23 | .ca_mode = S_IRUGO, \ | 23 | .ca_mode = S_IRUGO | S_IWUGO, \ |
24 | .ca_owner = THIS_MODULE, \ | 24 | .ca_owner = THIS_MODULE, \ |
25 | .show = prefix##cname##_show, \ | 25 | .show = prefix##cname##_show, \ |
26 | .store = prefix##cname##_store, \ | 26 | .store = prefix##cname##_store, \ |
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index 18cfc0a361cb..ee9ff7028b92 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c | |||
@@ -2017,7 +2017,6 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) | |||
2017 | /* We need musb_read/write functions initialized for PM */ | 2017 | /* We need musb_read/write functions initialized for PM */ |
2018 | pm_runtime_use_autosuspend(musb->controller); | 2018 | pm_runtime_use_autosuspend(musb->controller); |
2019 | pm_runtime_set_autosuspend_delay(musb->controller, 200); | 2019 | pm_runtime_set_autosuspend_delay(musb->controller, 200); |
2020 | pm_runtime_irq_safe(musb->controller); | ||
2021 | pm_runtime_enable(musb->controller); | 2020 | pm_runtime_enable(musb->controller); |
2022 | 2021 | ||
2023 | /* The musb_platform_init() call: | 2022 | /* The musb_platform_init() call: |
@@ -2095,6 +2094,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) | |||
2095 | #ifndef CONFIG_MUSB_PIO_ONLY | 2094 | #ifndef CONFIG_MUSB_PIO_ONLY |
2096 | if (!musb->ops->dma_init || !musb->ops->dma_exit) { | 2095 | if (!musb->ops->dma_init || !musb->ops->dma_exit) { |
2097 | dev_err(dev, "DMA controller not set\n"); | 2096 | dev_err(dev, "DMA controller not set\n"); |
2097 | status = -ENODEV; | ||
2098 | goto fail2; | 2098 | goto fail2; |
2099 | } | 2099 | } |
2100 | musb_dma_controller_create = musb->ops->dma_init; | 2100 | musb_dma_controller_create = musb->ops->dma_init; |
@@ -2218,6 +2218,12 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) | |||
2218 | 2218 | ||
2219 | pm_runtime_put(musb->controller); | 2219 | pm_runtime_put(musb->controller); |
2220 | 2220 | ||
2221 | /* | ||
2222 | * For why this is currently needed, see commit 3e43a0725637 | ||
2223 | * ("usb: musb: core: add pm_runtime_irq_safe()") | ||
2224 | */ | ||
2225 | pm_runtime_irq_safe(musb->controller); | ||
2226 | |||
2221 | return 0; | 2227 | return 0; |
2222 | 2228 | ||
2223 | fail5: | 2229 | fail5: |
diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c index 80eb991c2506..0d19a6d61a71 100644 --- a/drivers/usb/phy/phy-msm-usb.c +++ b/drivers/usb/phy/phy-msm-usb.c | |||
@@ -1506,7 +1506,6 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg) | |||
1506 | { | 1506 | { |
1507 | struct msm_otg_platform_data *pdata; | 1507 | struct msm_otg_platform_data *pdata; |
1508 | struct extcon_dev *ext_id, *ext_vbus; | 1508 | struct extcon_dev *ext_id, *ext_vbus; |
1509 | const struct of_device_id *id; | ||
1510 | struct device_node *node = pdev->dev.of_node; | 1509 | struct device_node *node = pdev->dev.of_node; |
1511 | struct property *prop; | 1510 | struct property *prop; |
1512 | int len, ret, words; | 1511 | int len, ret, words; |
@@ -1518,8 +1517,9 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg) | |||
1518 | 1517 | ||
1519 | motg->pdata = pdata; | 1518 | motg->pdata = pdata; |
1520 | 1519 | ||
1521 | id = of_match_device(msm_otg_dt_match, &pdev->dev); | 1520 | pdata->phy_type = (enum msm_usb_phy_type)of_device_get_match_data(&pdev->dev); |
1522 | pdata->phy_type = (enum msm_usb_phy_type) id->data; | 1521 | if (!pdata->phy_type) |
1522 | return 1; | ||
1523 | 1523 | ||
1524 | motg->link_rst = devm_reset_control_get(&pdev->dev, "link"); | 1524 | motg->link_rst = devm_reset_control_get(&pdev->dev, "link"); |
1525 | if (IS_ERR(motg->link_rst)) | 1525 | if (IS_ERR(motg->link_rst)) |