On 12/12/2018 09:43 AM, Laurent Pinchart wrote: > Hi Marex, Hi, > Thank you for the patch. > > On Wednesday, 12 December 2018 03:41:30 EET Marek Vasut wrote: >> Add simple suspend/resume handlers to the driver to restore the chip >> configuration after resume. It is possible that the chip was configured >> with non-default values before suspend-resume cycle and that the chip >> is powered down during this cycle, so the configuration could get lost. >> >> Signed-off-by: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> >> Cc: Alexey Firago <alexey_firago@xxxxxxxxxx> >> Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> >> Cc: Michael Turquette <mturquette@xxxxxxxxxxxx> >> Cc: Stephen Boyd <sboyd@xxxxxxxxxxxxxx> >> Cc: linux-renesas-soc@xxxxxxxxxxxxxxx >> --- >> V2: Replace ifdef with __maybe_unused >> Simplify return value handling in resume >> --- >> drivers/clk/clk-versaclock5.c | 31 +++++++++++++++++++++++++++++++ >> 1 file changed, 31 insertions(+) >> >> diff --git a/drivers/clk/clk-versaclock5.c b/drivers/clk/clk-versaclock5.c >> index decffb3826ec..b66586a3abb7 100644 >> --- a/drivers/clk/clk-versaclock5.c >> +++ b/drivers/clk/clk-versaclock5.c >> @@ -906,6 +906,34 @@ static int vc5_remove(struct i2c_client *client) >> return 0; >> } >> >> +static int __maybe_unused vc5_suspend(struct device *dev) >> +{ >> + struct vc5_driver_data *vc5 = dev_get_drvdata(dev); >> + int ret; >> + >> + ret = regcache_sync(vc5->regmap); > > Didn't you say the sync here was unneeded and would be dropped ? > >> + if (ret != 0) { >> + dev_err(dev, "Failed to save register map: %d\n", ret); >> + return ret; >> + } If you have a setup with working DU and VGA on something close to next (it's broken in next), can you try dropping this hunk (basically do ret = 0;//regcache_sync(vc5->regmap); ) and see if the regcache stays consistent ? It should. If so, I'll drop this in V3. >> + regcache_cache_only(vc5->regmap, true); >> + regcache_mark_dirty(vc5->regmap); [...] -- Best regards, Marek Vasut