On Fri, Sep 16, 2022 at 03:54:16PM +0530, Rajendra Nayak wrote: > The USB controller on sc7180 does not retain the state when > the system goes into low power state and the GDSC is > turned off. This results in the controller reinitializing and > re-enumerating all the connected devices (resulting in additional > delay while coming out of suspend) > Fix this by updating the .pwrsts for the USB GDSC so it only > transitions to retention state in low power. > > Signed-off-by: Rajendra Nayak <quic_rjendra@xxxxxxxxxxx> > Reviewed-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx> > Tested-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx> > --- > v2: > Updated the changelog > > drivers/clk/qcom/gcc-sc7180.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/clk/qcom/gcc-sc7180.c b/drivers/clk/qcom/gcc-sc7180.c > index c2ea09945c47..2d3980251e78 100644 > --- a/drivers/clk/qcom/gcc-sc7180.c > +++ b/drivers/clk/qcom/gcc-sc7180.c > @@ -2224,7 +2224,7 @@ static struct gdsc usb30_prim_gdsc = { > .pd = { > .name = "usb30_prim_gdsc", > }, > - .pwrsts = PWRSTS_OFF_ON, > + .pwrsts = PWRSTS_RET_ON, > }; > > static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = { It seems like the above will not work unless you also provide the registers offsets that gdsc_force_mem_on() expects. Specifically, unless you set cxc_count for the GDSC, the above call is a no-op and the retention setting (i.e. the RETAIN_MEM and RETAIN_PERIPH bits) will not be updated when registering the GDSC. Johan