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> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJWaEy5AAoJEIaOsuA1yqRELFcP/jQxtHM4Yxyqg9Os1aER7biu L99DVENwhTYbbiQw89irl0xobMCorQOc6l+p4cW1zpZ1binxFIdtriuBBsdlt1OS lev3uieHvo6QALxFS6+/31YCFXVi2MKqmU/LGAbJ6nBYLMivyllfCThFwPkkEP3w 6nfHKPQHGXR9S3qmvWRZ4hhrfstPtzLuUYQg4PkT4TvTg+p586iOfdZukNkgSx44 AmOInfaf990JvMJKYHFBpCCmxrfimrUkxd4soV69Fz8HORl2ZzQ9OuEMoOPwiWDp ALzKyd7gx2TED5mC8zJDz1JKKDhnJGiqDL9dgdZbTaLQVdbJdMS2g2zm/LU2wBIB c9VniI4Tr6J3xpoZkBbo5BqpQedx9S5m9fsmRL5ZRd4XGiSkB0uSqQElgy+p+nR2 7zwhLuj5LuCPyi1yBSTSkI6/ExysNi4oSDTJWx2urU7LmMmZkD6V0GtoydSNBka3 ACKZQHHDu9virLABWJWxilcckxrajfDQUZ6jzk3DQPQqJjN1XuLTixbclBHHtyuv CFq21kRMExqbLkon/KcD+NfAe6PTxONrZjmpOqPrOUN5bdnJQrpU5SAVvPIsg2an hwfX7JdViu1SADxUehYaXMjPSq1Guyh31722HabtiueqFN4SgS4mqlR60SVasqgB yNhBmVFPNsV8xiJW/wBo =o5zI -----END PGP SIGNATURE----- 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:
commit
73b39bb0a0
|
@ -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))
|
||||
|
|
Loading…
Reference in a new issue