mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
usb: ehci: fix suspend bug
This commit is contained in:
@@ -1170,7 +1170,7 @@ static int urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
|
||||
|
||||
DWC_SPINLOCK_IRQSAVE(dwc_otg_hcd->lock, &flags);
|
||||
rc = usb_hcd_check_unlink_urb(hcd, urb, status);
|
||||
if (rc){
|
||||
if (rc) {
|
||||
DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, flags);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -408,7 +408,7 @@ static void usb20ehci_phy_suspend(void *pdata, int suspend)
|
||||
|
||||
if (suspend) {
|
||||
/* enable soft control */
|
||||
writel(UOC_HIWORD_UPDATE(0x1d5, 0x1ff, 0),
|
||||
writel(UOC_HIWORD_UPDATE(0x1d1, 0x1ff, 0),
|
||||
RK_GRF_VIRT + RK312X_GRF_UOC1_CON5);
|
||||
usbpdata->phy_status = 1;
|
||||
} else {
|
||||
|
||||
@@ -367,25 +367,14 @@ static int ehci_rk_probe(struct platform_device *pdev)
|
||||
|
||||
rk_ehci->ehci = ehci;
|
||||
rk_ehci->pldata = pldata;
|
||||
rk_ehci->host_enabled = 2;
|
||||
rk_ehci->host_setenable = 2;
|
||||
rk_ehci->host_enabled = -1;
|
||||
rk_ehci->host_setenable = -1;
|
||||
rk_ehci->connect_detect_timer.function = rk_ehci_hcd_connect_detect;
|
||||
rk_ehci->connect_detect_timer.data = (unsigned long)(rk_ehci);
|
||||
init_timer(&rk_ehci->connect_detect_timer);
|
||||
mod_timer(&rk_ehci->connect_detect_timer, jiffies + (HZ << 1));
|
||||
INIT_DELAYED_WORK(&rk_ehci->host_enable_work, rk_ehci_hcd_enable);
|
||||
|
||||
if (pldata->phy_suspend) {
|
||||
if (pldata->phy_status == USB_PHY_ENABLED) {
|
||||
pldata->phy_suspend(pldata, USB_PHY_SUSPEND);
|
||||
/* do not disable EHCI clk, otherwise RK3288
|
||||
* host1(DWC_OTG) can't work normally.
|
||||
* udelay(3);
|
||||
* pldata->clock_enable(pldata, 0);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
EHCI_PRINT("%s ok\n", __func__);
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user