On 10/11/2020 5:50 PM, Artur Petrosyan wrote: > This patch set fixes/improves partial power down, hibernation power > saving modes and adds support for host/device clock gating. > > Changes from V1: > - Added new patches. > 1. usb: dwc2: Add support for dwc2 host/device clock gating. > 2. usb: dwc2: Add exit power saving mode before removing driver. > 3. usb: dwc2: Fix HPRT0.PrtSusp bit setting for HiKey 960 board. > > - Updated patches > 1. usb: dwc2: Fix/update enter/exit partial power down. > - Updated the patch name from "usb: dwc2: Fix > dwc2_restore_device_registers() function." to "usb: dwc2: > Fix/update enter/exit partial power down." > - Updated entering and exiting partial power down function > flow. Before there was a lot of confusions with core > entering to partial power down in device or host mode. > - Added "rem_wakeup" for host exiting from Partial Power > Down mode from host remote wakeup flow. According to > programming guide in host mode, port power must be > turned on when wakeup is detected. > - Added "in_ppd" flag to indicate the core state after > entering into Partial Power Down mode. > 2. usb: dwc2: Fix wakeup detected and session request interrupt handlers. > - According to programming guide added partial power > down exit flow in wakeup detected interrupt handler. > - Added clock gating exit flow from wakeup detected > and session request interrupt handlers. > 3. usb: dwc2: Fix suspend state in host mode for partial power down. > - Added "dwc2_port_suspend" and "dwc2_port_resume" functions to > "core.h" header file > - Updated "USB_PORT_FEAT_RESET" flow when core receives port > reset in Partial Power Down or Hibernation state. > - Added return "-ENODEV" if core is in suspend state > in "_dwc2_hcd_urb_enqueue" function to avoid port > reset issue, when an external hub is connected. > 4. usb: dwc2: Add part. power down exit from dwc2_conn_id_status_change(). > - Instead of clearing registers inline for exiting partial power down > mode, now calling the "dwc2_exit_partial_power_down" function without > restoring the backup registers. > 5. usb: dwc2: Update dwc2_handle_usb_suspend_intr function. > - Added changes suggested by Douglas Anderson from commit > "usb: dwc2: Get rid of useless error checks for > hibernation/partial power down" > 6. usb: dwc2: Fix hibernation between host and device modes. > - Added setting of "hsotg->bus_suspended" flag to 0 because before if > core exited from "GPWRDN_STS_CHGINT" interrupt in host mode the flag > remained true not letting enter to hibernation next time. > 7. usb: dwc2: Clear fifo_map when resetting core. > - Added "static inline void dwc2_clear_fifo_map()" helper > function to clear fifo_map with peripheral or dual role mode. > - Added a dummy version of "dwc2_clear_fifo_map()" helper > for host-only mode. > 8. usb: dwc2: Add power saving mode support from system issued suspend/resume. > - Updated the patch name from "usb: dwc2: Add enter/exit hibernation > from system scheduled suspend" to "usb: dwc2: Add power saving mode > support from system issued suspend/resume." > - Fixed issue related to "spinlock already unlocked" reported by Doug > Anderson. > > - Abandoned patches. > 1. usb: dwc2: Add port conn. sts. checking in _dwc2_hcd_resume() function. > - The changes of this patch are moved to the "usb: dwc2: Add power > saving mode support from system issued suspend/resume" patch. > 2. usb: dwc2: Add flag and debug messages for Partial Power Down mode. > - The changes of this patch are moved to the "usb: dwc2: Fix/update > enter/exit partial power down." patch. > > > Artur Petrosyan (15): > usb: dwc2: Fix/update enter/exit partial power down. > usb: dwc2: Add support for dwc2 host/device clock gating. > usb: dwc2: Fix wakeup detected and session request interrupt handlers. > usb: dwc2: Fix suspend state in host mode for partial power down. > usb: dwc2: Add part. power down exit from > dwc2_conn_id_status_change(). > usb: dwc2: Reset DEVADDR after exiting gadget hibernation. > usb: dwc2: Add default param to control power optimization. > usb: dwc2: Update dwc2_handle_usb_suspend_intr function. > usb: dwc2: Fix hibernation between host and device modes. > usb: dwc2: Fix HPRT0.PrtSusp bit setting for HiKey 960 board. > usb: dwc2: Allow exiting hibernation from gpwrdn rst detect > usb: dwc2: Clear fifo_map when resetting core. > usb: dwc2: Clear GINTSTS_RESTOREDONE bit after restore is generated. > usb: dwc2: Add power saving mode support from system issued > suspend/resume > usb: dwc2: Add exit power saving mode before removing driver > > drivers/usb/dwc2/core.c | 125 ++------ > drivers/usb/dwc2/core.h | 46 ++- > drivers/usb/dwc2/core_intr.c | 284 ++++++++++------- > drivers/usb/dwc2/debugfs.c | 2 + > drivers/usb/dwc2/gadget.c | 223 ++++++++++++- > drivers/usb/dwc2/hcd.c | 589 ++++++++++++++++++++++++++--------- > drivers/usb/dwc2/hw.h | 1 + > drivers/usb/dwc2/params.c | 17 +- > drivers/usb/dwc2/platform.c | 44 ++- > 9 files changed, 960 insertions(+), 371 deletions(-) > Acked-by: Minas Harutyunyan <Minas.Harutyunyan@xxxxxxxxxxxx>