mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
usb: dwc3: fix failed to enter suspend
The dwc3 disable wakeup in runtime resume, it prevent the PM suspend with the following log on RK3588 EVB1: [ 22.910675][ T1886] PM: suspend entry (deep) ...... [ 23.059751][ T1886] Hardware name: Rockchip RK3588 EVB1 LP4 V10 Board (DT) [ 23.059759][ T1886] Call trace: [ 23.059782][ T1886] dump_backtrace+0x0/0x1c8 [ 23.059797][ T1886] show_stack+0x1c/0x2c [ 23.059813][ T1886] dump_stack_lvl+0xdc/0x12c [ 23.059825][ T1886] dump_stack+0x1c/0x64 [ 23.059840][ T1886] __pm_stay_awake+0xb0/0xbc [ 23.059856][ T1886] ep_poll_callback+0x190/0x2e8 [ 23.059872][ T1886] __wake_up_common+0xc8/0x14c [ 23.059884][ T1886] __wake_up_sync_key+0x80/0xd0 [ 23.059900][ T1886] sock_def_readable+0x44/0x7c [ 23.059915][ T1886] netlink_broadcast_deliver+0xa0/0xe0 [ 23.059928][ T1886] do_one_broadcast+0x234/0x434 [ 23.059940][ T1886] netlink_broadcast_filtered+0xd8/0x1e0 [ 23.059952][ T1886] netlink_broadcast+0x1c/0x2c [ 23.059966][ T1886] uevent_net_broadcast_untagged+0xd0/0x138 [ 23.059977][ T1886] kobject_uevent_env+0x3e8/0x404 [ 23.059987][ T1886] kobject_uevent+0x18/0x28 [ 23.060001][ T1886] device_del+0x290/0x488 [ 23.060013][ T1886] device_unregister+0x1c/0x3c [ 23.060025][ T1886] wakeup_source_sysfs_remove+0x18/0x28 [ 23.060036][ T1886] wakeup_source_unregister+0x8c/0xa8 [ 23.060047][ T1886] device_init_wakeup+0x94/0xf4 [ 23.060063][ T1886] dwc3_runtime_resume+0x28/0x74 [ 23.060076][ T1886] pm_generic_runtime_resume+0x2c/0x44 [ 23.060089][ T1886] genpd_runtime_resume+0x174/0x234 [ 23.060099][ T1886] __rpm_callback+0x80/0x338 [ 23.060112][ T1886] rpm_resume+0x3e4/0x66c [ 23.060125][ T1886] __pm_runtime_resume+0x54/0x8c [ 23.060137][ T1886] genpd_prepare+0x70/0x100 [ 23.060148][ T1886] device_prepare+0x74/0x184 [ 23.060158][ T1886] dpm_prepare+0xb8/0x410 [ 23.060169][ T1886] dpm_suspend_start+0x30/0x1e4 [ 23.060180][ T1886] suspend_devices_and_enter+0xc4/0x338 [ 23.060191][ T1886] enter_state+0x12c/0x3f8 [ 23.060201][ T1886] pm_suspend+0x60/0xcc ...... [ 23.067765][ T1886] PM: PM: Pending Wakeup Sources: NETLINK [ 23.067780][ T1886] PM: Some devices failed to suspend, or early wake event detected [ 23.092746][ T1886] OOM killer enabled. [ 23.093099][ T1886] Restarting tasks ... done. [ 23.095953][ T1886] [dhd] dhd_pm_callback: action=4, suspend=0, suspend_mode=0 [ 23.096644][ T1886] Abort: Pending Wakeup Sources: NETLINK [ 23.097145][ T1886] PM: suspend exit Actually, we can enable wakeup in runtime resume when usb connect, so let's fix it. Signed-off-by: William Wu <william.wu@rock-chips.com> Change-Id: I7376fe45fbcbc8210db38ed49600f9ffd101607d
This commit is contained in:
@@ -1943,7 +1943,7 @@ static int dwc3_runtime_suspend(struct device *dev)
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
device_init_wakeup(dev, true);
|
device_init_wakeup(dev, false);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1953,7 +1953,7 @@ static int dwc3_runtime_resume(struct device *dev)
|
|||||||
struct dwc3 *dwc = dev_get_drvdata(dev);
|
struct dwc3 *dwc = dev_get_drvdata(dev);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
device_init_wakeup(dev, false);
|
device_init_wakeup(dev, true);
|
||||||
|
|
||||||
ret = dwc3_resume_common(dwc, PMSG_AUTO_RESUME);
|
ret = dwc3_resume_common(dwc, PMSG_AUTO_RESUME);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|||||||
Reference in New Issue
Block a user