mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
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: Felipe Balbi <[email protected]> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJTsa7CAAoJEIaOsuA1yqREC7kP/RRECPS8UrZgrVlU9Gch5iqw WtV3TdkTVuB6bhwvtRGIAjiXOdr8INvRkKvlzVN082cROAdSWjElbD9A/830a2Iv 5sMOWbM6HIkrwr51cGXIMul+0wNhcszftCn4+8UUiuKoP7dFnqTGZBgcyoDhfkHQ BjQ3/RlzeZ3XjLiBtnA4gTVko9i9L77TMayskOyjDpEEBKJ4HBKcD9Ged2xfgDxV P7lc5lkehUF9l3BAP4xfJq+vV8nxpRwq5J4OkBmJpODUPmim8XlSTNxA3EJQ+3SQ 1NusKOT/pVcSNYzVtB23C9Qvj6pvocso0ktvJOzwMLmW95GNMwN6NzbJUiSXIUzG cOGXGA6dJYKVFZ/7QNsV99ZAjEYBrgszZqtDHYmitYdo29ABMSuZ/3ZdfAT09a9P +Fqm4gqTDLJ9y72PHSc1CPJq4whTINGpIKcyRiVaxl+jFXl4v5rs3BywKV2gMIlM EhXaNz/AG+wGZVOiZzg0zHSjAhCw0GbthysMmd87z7Ynjcu97pDBEIw+xl1aI3wS eyFFt16WtRxujXFYqfDtArU0pdqrTxLgTBisxf949LKZJiB6Ta7v+MZOfFKVu//O 5K8KCN1l4vMUPOvTghT0BIGsCg4Td9zi0LTEQOBEwavYzXyATdqGAYnYeLgoqO4z 82XvxgC4fqXzXLhAntC5 =7Mt5 -----END PGP SIGNATURE----- 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: Felipe Balbi <[email protected]>
This commit is contained in:
commit
ba1ba3a4ed
8 changed files with 30 additions and 52 deletions
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -19,21 +19,6 @@ err:
|
|||
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");
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -1229,7 +1229,9 @@ static void msm_otg_sm_work(struct work_struct *w)
|
|||
motg->chg_state = USB_CHG_STATE_UNDEFINED;
|
||||
motg->chg_type = USB_INVALID_CHARGER;
|
||||
}
|
||||
pm_runtime_put_sync(otg->phy->dev);
|
||||
|
||||
if (otg->phy->state == OTG_STATE_B_IDLE)
|
||||
pm_runtime_put_sync(otg->phy->dev);
|
||||
break;
|
||||
case OTG_STATE_B_PERIPHERAL:
|
||||
dev_dbg(otg->phy->dev, "OTG_STATE_B_PERIPHERAL state\n");
|
||||
|
|
|
|||
Loading…
Reference in a new issue