On 1/23/24 3:58 PM, Claudiu wrote: > From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> > > Reference clock could be or not part of the power domain. If it is part of Could be or not be, perhaps? > the power domain, the power domain takes care of propertly setting it. In Properly. :-) > case it is not part of the power domain and full runtime PM support is > available in driver the clock will not be propertly disabled/enabled at > runtime. For this, keep the prepare/unprepare operations in the driver's > probe()/remove() functions and move the enable/disable in runtime PM > functions. > > Along with it, the other clock request operations were moved close to > reference clock request and prepare to have all the clock requests > specific code grouped together. > > Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> [...] > diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c > index 9fc0e39e33c2..4673cc2faec0 100644 > --- a/drivers/net/ethernet/renesas/ravb_main.c > +++ b/drivers/net/ethernet/renesas/ravb_main.c [...] > @@ -3060,21 +3058,27 @@ static int ravb_resume(struct device *dev) > return ret; > } > > -static int ravb_runtime_nop(struct device *dev) > +static int ravb_runtime_suspend(struct device *dev) > { > - /* Runtime PM callback shared between ->runtime_suspend() > - * and ->runtime_resume(). Simply returns success. > - * > - * This driver re-initializes all registers after > - * pm_runtime_get_sync() anyway so there is no need > - * to save and restore registers here. > - */ I want to pull out the dummy {ravb|sh_eth}_runtime_nop() funcs -- they don't seem to be necessary... Then we can implement your clock dance with freshly added ravb_runtime_{suspend|resume}()... [...] MBR, Sergey