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

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

Merge tag 'fixes-for-v3.16-rc4' of...

Merge tag 'fixes-for-v3.16-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb

 into usb-linus

Felipe writes:

usb: fixes for v3.16-rc4

A few more fixes for this RC cycle. There's a revert of a previous patch
which ended up being the wrong version, so we reverted that commit and
applied a better fix.

CPPI41 got a race condition fix which was found by Thomas Gleixner.

The MSM PHY driver got a runtime pm usage fix so that it wouldn't
kill the PHY while it was still being used.

We also have a fix for a panic caused when removing musb_am335x driver.

Other than that, a few other minor fixes.

Signed-of-by: default avatarFelipe Balbi <balbi@ti.com>
parents 8ecd93ab 80356913
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1532,8 +1532,9 @@ static int gr_ep_enable(struct usb_ep *_ep,
			"%s mode: multiple trans./microframe not valid\n",
			(mode == 2 ? "Bulk" : "Control"));
		return -EINVAL;
	} else if (nt == 0x11) {
		dev_err(dev->dev, "Invalid value for trans./microframe\n");
	} else if (nt == 0x3) {
		dev_err(dev->dev,
			"Invalid value 0x3 for additional trans./microframe\n");
		return -EINVAL;
	} else if ((nt + 1) * max > buffer_size) {
		dev_err(dev->dev, "Hw buffer size %d < max payload %d * %d\n",
+6 −17
Original line number Diff line number Diff line
@@ -19,21 +19,6 @@ static int am335x_child_probe(struct platform_device *pdev)
	return ret;
}

static int of_remove_populated_child(struct device *dev, void *d)
{
	struct platform_device *pdev = to_platform_device(dev);

	of_device_unregister(pdev);
	return 0;
}

static int am335x_child_remove(struct platform_device *pdev)
{
	device_for_each_child(&pdev->dev, NULL, of_remove_populated_child);
	pm_runtime_disable(&pdev->dev);
	return 0;
}

static const struct of_device_id am335x_child_of_match[] = {
	{ .compatible = "ti,am33xx-usb" },
	{  },
@@ -42,13 +27,17 @@ MODULE_DEVICE_TABLE(of, am335x_child_of_match);

static struct platform_driver am335x_child_driver = {
	.probe		= am335x_child_probe,
	.remove         = am335x_child_remove,
	.driver         = {
		.name   = "am335x-usb-childs",
		.of_match_table	= am335x_child_of_match,
	},
};

module_platform_driver(am335x_child_driver);
static int __init am335x_child_init(void)
{
	return platform_driver_register(&am335x_child_driver);
}
module_init(am335x_child_init);

MODULE_DESCRIPTION("AM33xx child devices");
MODULE_LICENSE("GPL v2");
+1 −1
Original line number Diff line number Diff line
@@ -318,7 +318,7 @@ static void cppi41_dma_callback(void *private_data)
		}
		list_add_tail(&cppi41_channel->tx_check,
				&controller->early_tx_list);
		if (!hrtimer_active(&controller->early_tx)) {
		if (!hrtimer_is_queued(&controller->early_tx)) {
			hrtimer_start_range_ns(&controller->early_tx,
				ktime_set(0, 140 * NSEC_PER_USEC),
				40 * NSEC_PER_USEC,
+4 −5
Original line number Diff line number Diff line
@@ -494,10 +494,9 @@ static int dsps_musb_set_mode(struct musb *musb, u8 mode)
	struct dsps_glue *glue = dev_get_drvdata(dev->parent);
	const struct dsps_musb_wrapper *wrp = glue->wrp;
	void __iomem *ctrl_base = musb->ctrl_base;
	void __iomem *base = musb->mregs;
	u32 reg;

	reg = dsps_readl(base, wrp->mode);
	reg = dsps_readl(ctrl_base, wrp->mode);

	switch (mode) {
	case MUSB_HOST:
@@ -510,7 +509,7 @@ static int dsps_musb_set_mode(struct musb *musb, u8 mode)
		 */
		reg |= (1 << wrp->iddig_mux);

		dsps_writel(base, wrp->mode, reg);
		dsps_writel(ctrl_base, wrp->mode, reg);
		dsps_writel(ctrl_base, wrp->phy_utmi, 0x02);
		break;
	case MUSB_PERIPHERAL:
@@ -523,10 +522,10 @@ static int dsps_musb_set_mode(struct musb *musb, u8 mode)
		 */
		reg |= (1 << wrp->iddig_mux);

		dsps_writel(base, wrp->mode, reg);
		dsps_writel(ctrl_base, wrp->mode, reg);
		break;
	case MUSB_OTG:
		dsps_writel(base, wrp->phy_utmi, 0x02);
		dsps_writel(ctrl_base, wrp->phy_utmi, 0x02);
		break;
	default:
		dev_err(glue->dev, "unsupported mode %d\n", mode);
+3 −1
Original line number Diff line number Diff line
@@ -1229,6 +1229,8 @@ static void msm_otg_sm_work(struct work_struct *w)
			motg->chg_state = USB_CHG_STATE_UNDEFINED;
			motg->chg_type = USB_INVALID_CHARGER;
		}

		if (otg->phy->state == OTG_STATE_B_IDLE)
			pm_runtime_put_sync(otg->phy->dev);
		break;
	case OTG_STATE_B_PERIPHERAL:
Loading