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:
William Wu
2022-01-07 11:10:32 +08:00
committed by Tao Huang
parent 88ebea8839
commit f1636eb0fd

View File

@@ -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)