On Wed, Oct 9, 2024 at 8:45 PM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > On Wed, Oct 09, 2024 at 05:42:55AM +0000, Guan-Yu Lin wrote: > > + > > +static int dwc3_poweroff(struct device *dev) > > +{ > > + struct dwc3 *dwc = dev_get_drvdata(dev); > > + int ret; > > + > > + ret = dwc3_suspend_common(dwc, PMSG_HIBERNATE); > > Why is power off hibernate? > > This needs an ack from the dwc3 maintainer as I can't determine if it's > correct at all... > > thanks, > > greg k-h Described in /include/linux/pm.h, PM_EVENT_HIBERNATE message denotes the following transition in the PM core code: "Hibernation image has been saved, call ->prepare() and ->poweroff() for all devices." Meantime, the interpretation of the the above description could be found in /drivers/base/power/main.c: static pm_callback_t pm_op(const struct dev_pm_ops *ops, pm_message_t state) { ... case PM_EVENT_HIBERNATE: return ops->poweroff; ... } An example in device drivers could be found in usb/drivers/usb/core/usb.c: static int usb_dev_suspend(struct device *dev) { return usb_suspend(dev, PMSG_SUSPEND); } Regards, Guan-Yu