| From 84ac5d1140f716a616522f952734e850448d2556 Mon Sep 17 00:00:00 2001 |
| From: Bin Liu <b-liu@ti.com> |
| Date: Tue, 31 May 2016 10:05:24 -0500 |
| Subject: usb: musb: only restore devctl when session was set in backup |
| |
| From: Bin Liu <b-liu@ti.com> |
| |
| commit 84ac5d1140f716a616522f952734e850448d2556 upstream. |
| |
| If the session bit was not set in the backup of devctl register, |
| restoring devctl would clear the session bit. Therefor, only restore |
| devctl register when the session bit was set in the backup. |
| |
| This solves the device enumeration failure in otg mode exposed by commit |
| 56f487c (PM / Runtime: Update last_busy in rpm_resume). |
| |
| Signed-off-by: Bin Liu <b-liu@ti.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/musb/musb_core.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/usb/musb/musb_core.c |
| +++ b/drivers/usb/musb/musb_core.c |
| @@ -2429,7 +2429,8 @@ static void musb_restore_context(struct |
| musb_writew(musb_base, MUSB_INTRTXE, musb->intrtxe); |
| musb_writew(musb_base, MUSB_INTRRXE, musb->intrrxe); |
| musb_writeb(musb_base, MUSB_INTRUSBE, musb->context.intrusbe); |
| - musb_writeb(musb_base, MUSB_DEVCTL, musb->context.devctl); |
| + if (musb->context.devctl & MUSB_DEVCTL_SESSION) |
| + musb_writeb(musb_base, MUSB_DEVCTL, musb->context.devctl); |
| |
| for (i = 0; i < musb->config->num_eps; ++i) { |
| struct musb_hw_ep *hw_ep; |