Merge 4.10-rc7 into usb-next
We want the USB fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -594,11 +594,11 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
|
||||
| MUSB_PORT_STAT_RESUME;
|
||||
musb->rh_timer = jiffies
|
||||
+ msecs_to_jiffies(USB_RESUME_TIMEOUT);
|
||||
musb->need_finish_resume = 1;
|
||||
|
||||
musb->xceiv->otg->state = OTG_STATE_A_HOST;
|
||||
musb->is_active = 1;
|
||||
musb_host_resume_root_hub(musb);
|
||||
schedule_delayed_work(&musb->finish_resume_work,
|
||||
msecs_to_jiffies(USB_RESUME_TIMEOUT));
|
||||
break;
|
||||
case OTG_STATE_B_WAIT_ACON:
|
||||
musb->xceiv->otg->state = OTG_STATE_B_PERIPHERAL;
|
||||
@@ -1915,6 +1915,14 @@ static void musb_pm_runtime_check_session(struct musb *musb)
|
||||
static void musb_irq_work(struct work_struct *data)
|
||||
{
|
||||
struct musb *musb = container_of(data, struct musb, irq_work.work);
|
||||
int error;
|
||||
|
||||
error = pm_runtime_get_sync(musb->controller);
|
||||
if (error < 0) {
|
||||
dev_err(musb->controller, "Could not enable: %i\n", error);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
musb_pm_runtime_check_session(musb);
|
||||
|
||||
@@ -1922,6 +1930,9 @@ static void musb_irq_work(struct work_struct *data)
|
||||
musb->xceiv_old_state = musb->xceiv->otg->state;
|
||||
sysfs_notify(&musb->controller->kobj, NULL, "mode");
|
||||
}
|
||||
|
||||
pm_runtime_mark_last_busy(musb->controller);
|
||||
pm_runtime_put_autosuspend(musb->controller);
|
||||
}
|
||||
|
||||
static void musb_recover_from_babble(struct musb *musb)
|
||||
@@ -2705,11 +2716,6 @@ static int musb_resume(struct device *dev)
|
||||
mask = MUSB_DEVCTL_BDEVICE | MUSB_DEVCTL_FSDEV | MUSB_DEVCTL_LSDEV;
|
||||
if ((devctl & mask) != (musb->context.devctl & mask))
|
||||
musb->port1_status = 0;
|
||||
if (musb->need_finish_resume) {
|
||||
musb->need_finish_resume = 0;
|
||||
schedule_delayed_work(&musb->finish_resume_work,
|
||||
msecs_to_jiffies(USB_RESUME_TIMEOUT));
|
||||
}
|
||||
|
||||
/*
|
||||
* The USB HUB code expects the device to be in RPM_ACTIVE once it came
|
||||
@@ -2761,12 +2767,6 @@ static int musb_runtime_resume(struct device *dev)
|
||||
|
||||
musb_restore_context(musb);
|
||||
|
||||
if (musb->need_finish_resume) {
|
||||
musb->need_finish_resume = 0;
|
||||
schedule_delayed_work(&musb->finish_resume_work,
|
||||
msecs_to_jiffies(USB_RESUME_TIMEOUT));
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&musb->lock, flags);
|
||||
error = musb_run_resume_work(musb);
|
||||
if (error)
|
||||
|
@@ -411,7 +411,6 @@ struct musb {
|
||||
|
||||
/* is_suspended means USB B_PERIPHERAL suspend */
|
||||
unsigned is_suspended:1;
|
||||
unsigned need_finish_resume :1;
|
||||
|
||||
/* may_wakeup means remote wakeup is enabled */
|
||||
unsigned may_wakeup:1;
|
||||
|
Reference in New Issue
Block a user