From: Marek Vasut <marek.vasut@gmail.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: linux-clk@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
Marek Vasut <marek.vasut+renesas@gmail.com>,
Alexey Firago <alexey_firago@mentor.com>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@codeaurora.org>
Subject: Re: [PATCH V2] clk: vc5: Add suspend/resume support
Date: Thu, 13 Dec 2018 17:17:24 +0100 [thread overview]
Message-ID: <7c418bb0-5ac8-fcfa-4fda-1e33c55b4c46@gmail.com> (raw)
In-Reply-To: <3136523.fA2jzEL6tu@avalon>
On 12/13/2018 05:52 AM, Laurent Pinchart wrote:
> Hi Marek,
Hi,
> On Thursday, 13 December 2018 04:09:19 EET Marek Vasut wrote:
>> On 12/12/2018 09:43 AM, Laurent Pinchart wrote:
>>> 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@gmail.com>
>>>> Cc: Alexey Firago <alexey_firago@mentor.com>
>>>> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>>>> Cc: Michael Turquette <mturquette@baylibre.com>
>>>> Cc: Stephen Boyd <sboyd@codeaurora.org>
>>>> Cc: linux-renesas-soc@vger.kernel.org
>>>> ---
>>>> 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);
>>
>> [...]
>
> Here's my test procedure:
>
> - Boot the board
> - Dump the VC5 state (into vc5-next+*-1-boot.log)
> - Enable the VGA output with kmstest -c VGA-1
I didn't know this was needed, all right.
> - Dump the VC5 state (into vc5-next+*-2-display-on.log)
> - Suspend and resume
> - Dump the VC5 state (into vc5-next+*-3-post-suspend.log)
> - Stop kmstest
> - Dump the VC5 state (into vc5-next+*-4-display-off.log)
>
> To dump the VC5 state, I use
>
> -----------------------------------------------------------------------------
> #!/bin/sh
>
> echo "-------- i2cdump --------"
> i2cdump -f -y 4 0x6a
>
> for f in /sys/kernel/debug/regmap/4-006a/* ; do
> echo "-------- $f --------"
> cat $f
> done
> -----------------------------------------------------------------------------
>
> The base kernel version is v4.20-rc6 + the fixes branch from linux media. I've
> tested the following three configurations, in order:
>
> next+0 - Base
> next+1 - Base + this patch
> next+2 - Base + this patch + removal of regcache_sync() from vc5_suspend()
>
> With base, the VGA output would remain off after resume, and running kmstest
> again wouldn't help. With the other two configurations the problem is fixed
> and the VGA output is functional.
>
> Furthermore, there are no differences in the VC5 dumps between next+1 and
> next+2, neither are there between the boot and display-on dumps between any of
> the three configurations.
>
> I've attached the logs to this e-mail.
Thanks for the test, I sent out a V3 without the regcache_sync() .
--
Best regards,
Marek Vasut
prev parent reply other threads:[~2018-12-13 16:46 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-12 1:41 [PATCH V2] clk: vc5: Add suspend/resume support Marek Vasut
2018-12-12 8:43 ` Laurent Pinchart
2018-12-13 2:09 ` Marek Vasut
2018-12-13 4:52 ` Laurent Pinchart
2018-12-13 16:17 ` Marek Vasut [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7c418bb0-5ac8-fcfa-4fda-1e33c55b4c46@gmail.com \
--to=marek.vasut@gmail.com \
--cc=alexey_firago@mentor.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-clk@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=marek.vasut+renesas@gmail.com \
--cc=mturquette@baylibre.com \
--cc=sboyd@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox