Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d69f3a8 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'fixes-for-v4.13-rc2' of...

Merge tag 'fixes-for-v4.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus

Felipe writes:

usb: fixes for v4.13-rc2

First set of fixes for the current -rc cycle. Only three fixes on dwc3
this time around (proper order for getting a PHY reference, fix for
unmapping DMA and a fix for requesting IRQ on the OMAP glue layer).

Most fixes are on the renesas USB controller, fixing several old bugs
with most going to stable.

dwc2 also learned that it *must* reset USB Address to zero on Reset
interrupts.

Apart from these, some drivers needed HAS_DMA dependency and there's a
sparse warning fix for bdc udc.
parents 446230f5 b8b9c974
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3573,6 +3573,9 @@ static irqreturn_t dwc2_hsotg_irq(int irq, void *pw)
		/* Report disconnection if it is not already done. */
		dwc2_hsotg_disconnect(hsotg);

		/* Reset device address to zero */
		__bic32(hsotg->regs + DCFG, DCFG_DEVADDR_MASK);

		if (usb_status & GOTGCTL_BSESVLD && connected)
			dwc2_hsotg_core_init_disconnected(hsotg, true);
	}
+3 −3
Original line number Diff line number Diff line
@@ -766,15 +766,15 @@ static int dwc3_core_init(struct dwc3 *dwc)
			dwc->maximum_speed = USB_SPEED_HIGH;
	}

	ret = dwc3_core_soft_reset(dwc);
	ret = dwc3_core_get_phy(dwc);
	if (ret)
		goto err0;

	ret = dwc3_phy_setup(dwc);
	ret = dwc3_core_soft_reset(dwc);
	if (ret)
		goto err0;

	ret = dwc3_core_get_phy(dwc);
	ret = dwc3_phy_setup(dwc);
	if (ret)
		goto err0;

+8 −10
Original line number Diff line number Diff line
@@ -512,15 +512,6 @@ static int dwc3_omap_probe(struct platform_device *pdev)

	/* check the DMA Status */
	reg = dwc3_omap_readl(omap->base, USBOTGSS_SYSCONFIG);
	irq_set_status_flags(omap->irq, IRQ_NOAUTOEN);
	ret = devm_request_threaded_irq(dev, omap->irq, dwc3_omap_interrupt,
					dwc3_omap_interrupt_thread, IRQF_SHARED,
					"dwc3-omap", omap);
	if (ret) {
		dev_err(dev, "failed to request IRQ #%d --> %d\n",
				omap->irq, ret);
		goto err1;
	}

	ret = dwc3_omap_extcon_register(omap);
	if (ret < 0)
@@ -532,8 +523,15 @@ static int dwc3_omap_probe(struct platform_device *pdev)
		goto err1;
	}

	ret = devm_request_threaded_irq(dev, omap->irq, dwc3_omap_interrupt,
					dwc3_omap_interrupt_thread, IRQF_SHARED,
					"dwc3-omap", omap);
	if (ret) {
		dev_err(dev, "failed to request IRQ #%d --> %d\n",
			omap->irq, ret);
		goto err1;
	}
	dwc3_omap_enable_irqs(omap);
	enable_irq(omap->irq);
	return 0;

err1:
+5 −3
Original line number Diff line number Diff line
@@ -191,15 +191,17 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req,

	req->started = false;
	list_del(&req->list);
	req->trb = NULL;
	req->remaining = 0;

	if (req->request.status == -EINPROGRESS)
		req->request.status = status;

	if (req->trb)
		usb_gadget_unmap_request_by_dev(dwc->sysdev,
						&req->request, req->direction);

	req->trb = NULL;

	trace_dwc3_gadget_giveback(req);

	spin_unlock(&dwc->lock);
+1 −1
Original line number Diff line number Diff line
@@ -2490,7 +2490,7 @@ static int fsg_main_thread(void *common_)
		int i;

		down_write(&common->filesem);
		for (i = 0; i < ARRAY_SIZE(common->luns); --i) {
		for (i = 0; i < ARRAY_SIZE(common->luns); i++) {
			struct fsg_lun *curlun = common->luns[i];
			if (!curlun || !fsg_lun_is_open(curlun))
				continue;
Loading