I'm working with an i.MX8QXP RevC A35 with the 5.15.32_2.0.0 BSP. I'm encountering a usb3 warning when going into hibernate that says the usb3 clks are already disabled/unprepared. After tracing the stack call it looks like usb3 clocks are disabled twice during hibernation. Once with runtime suspend and again with dpm suspend. I suspect it comes from line 406 in drivers/usb/cdns3/cdns3-imx.c since the runtime and system suspend functions are the same (cdns_imx_suspend).
static const struct dev_pm_ops cdns_imx_pm_ops = {
SET_RUNTIME_PM_OPS(cdns_imx_suspend, cdns_imx_resume, NULL)
SET_SYSTEM_SLEEP_PM_OPS(cdns_imx_suspend, cdns_imx_system_resume)
};
Steps to reproduce.
1. Have the kernel built with
CONFIG_USB=y
CONFIG_USB_CDNS_SUPPORT=m
2. Once booted and with a usb3 device plugged in
pm-hibernate
I've uploaded two logs, the usb3 clk stack trace log I inserted code to show a stack trace every time usb3_core_pclk is disabled/enabled/unprepared in clk.c. This shows that the system tries to disable the clock twice. The usb3 stack trace log shows the default behavior where various usb3 clocks are getting a warning when hibernating.