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

Commit 368907dd authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'fixes-for-v4.8-rc3' of...

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

Felipe writes:

usb: fixes for v4.8-rc3

Few fixes on dwc3 again, the most important being a
fix for pm_runtime to make it work with current
intel platforms.

Other than that, there's a signedness bug fix in fsl
udc and some other minor fixes.
parents 53e5f36f 6f8245b4
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -868,6 +868,7 @@ struct dwc2_hsotg {
	void *priv;
	void *priv;
	int     irq;
	int     irq;
	struct clk *clk;
	struct clk *clk;
	struct reset_control *reset;


	unsigned int queuing_high_bandwidth:1;
	unsigned int queuing_high_bandwidth:1;
	unsigned int srp_success:1;
	unsigned int srp_success:1;
+22 −0
Original line number Original line Diff line number Diff line
@@ -45,6 +45,7 @@
#include <linux/platform_device.h>
#include <linux/platform_device.h>
#include <linux/phy/phy.h>
#include <linux/phy/phy.h>
#include <linux/platform_data/s3c-hsotg.h>
#include <linux/platform_data/s3c-hsotg.h>
#include <linux/reset.h>


#include <linux/usb/of.h>
#include <linux/usb/of.h>


@@ -337,6 +338,24 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg)
{
{
	int i, ret;
	int i, ret;


	hsotg->reset = devm_reset_control_get_optional(hsotg->dev, "dwc2");
	if (IS_ERR(hsotg->reset)) {
		ret = PTR_ERR(hsotg->reset);
		switch (ret) {
		case -ENOENT:
		case -ENOTSUPP:
			hsotg->reset = NULL;
			break;
		default:
			dev_err(hsotg->dev, "error getting reset control %d\n",
				ret);
			return ret;
		}
	}

	if (hsotg->reset)
		reset_control_deassert(hsotg->reset);

	/* Set default UTMI width */
	/* Set default UTMI width */
	hsotg->phyif = GUSBCFG_PHYIF16;
	hsotg->phyif = GUSBCFG_PHYIF16;


@@ -434,6 +453,9 @@ static int dwc2_driver_remove(struct platform_device *dev)
	if (hsotg->ll_hw_enabled)
	if (hsotg->ll_hw_enabled)
		dwc2_lowlevel_hw_disable(hsotg);
		dwc2_lowlevel_hw_disable(hsotg);


	if (hsotg->reset)
		reset_control_assert(hsotg->reset);

	return 0;
	return 0;
}
}


+1 −0
Original line number Original line Diff line number Diff line
@@ -1192,6 +1192,7 @@ static int dwc3_runtime_resume(struct device *dev)
	}
	}


	pm_runtime_mark_last_busy(dev);
	pm_runtime_mark_last_busy(dev);
	pm_runtime_put(dev);


	return 0;
	return 0;
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -192,7 +192,7 @@ dwc3_ep_event_string(const struct dwc3_event_depevt *event)
	int ret;
	int ret;


	ret = sprintf(str, "ep%d%s: ", epnum >> 1,
	ret = sprintf(str, "ep%d%s: ", epnum >> 1,
			(epnum & 1) ? "in" : "in");
			(epnum & 1) ? "in" : "out");
	if (ret < 0)
	if (ret < 0)
		return "UNKNOWN";
		return "UNKNOWN";


+8 −1
Original line number Original line Diff line number Diff line
@@ -243,6 +243,13 @@ static int dwc3_pci_runtime_suspend(struct device *dev)
	return -EBUSY;
	return -EBUSY;
}
}


static int dwc3_pci_runtime_resume(struct device *dev)
{
	struct platform_device *dwc3 = dev_get_drvdata(dev);

	return pm_runtime_get(&dwc3->dev);
}

static int dwc3_pci_pm_dummy(struct device *dev)
static int dwc3_pci_pm_dummy(struct device *dev)
{
{
	/*
	/*
@@ -259,7 +266,7 @@ static int dwc3_pci_pm_dummy(struct device *dev)


static struct dev_pm_ops dwc3_pci_dev_pm_ops = {
static struct dev_pm_ops dwc3_pci_dev_pm_ops = {
	SET_SYSTEM_SLEEP_PM_OPS(dwc3_pci_pm_dummy, dwc3_pci_pm_dummy)
	SET_SYSTEM_SLEEP_PM_OPS(dwc3_pci_pm_dummy, dwc3_pci_pm_dummy)
	SET_RUNTIME_PM_OPS(dwc3_pci_runtime_suspend, dwc3_pci_pm_dummy,
	SET_RUNTIME_PM_OPS(dwc3_pci_runtime_suspend, dwc3_pci_runtime_resume,
		NULL)
		NULL)
};
};


Loading