Re: rcar_gen3_phy_usb2: unbalanced disables for USB20_VBUS0

From: Geert Uytterhoeven
Date: Wed Jun 05 2019 - 03:07:22 EST


Hi Shimoda-san,

On Wed, Jun 5, 2019 at 6:06 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@xxxxxxxxxxx> wrote:
> > From: Geert Uytterhoeven, Sent: Wednesday, June 5, 2019 3:06 AM
> > Using a tree based on renesas-drivers-2019-06-04-v5.2-rc3, I started seeing
> > the following warning during a second system suspend (s2idle):
> <snip>
> > So far I've seen this on Salvator-X with R-Car H3 ES1.0 or M3-W, and
> > on Salvator-XS with R-Car M3-N, but not (yet?) on H3 ES2.0.
>
> I could reproduce this issue on R-Car H3 ES3.0 with Suspend-to-RAM.
> # I'm silly but I could not use s2idle that didn't wake up by ravb.
> # https://elinux.org/R-Car/Boards/Salvator-X#Suspend-to-Idle

With CONFIG_PM_DEBUG=y and CONFIG_PM_TEST_SUSPEND=y, you can use

echo platform > /sys/power/pm_test

to configure the system to wake up from s2idle after 5 seconds.
This allows to loop s2idle without user intervention.

> Thank you for trying it. I have investigated this issue and then I found the root cause.
>
> After the following patch was applied, multiple phy devices are generated.
> https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/commit/drivers/phy/renesas/phy-rcar-gen3-usb2.c?h=renesas-drivers-2019-06-04-v5.2-rc3&id=549b6b55b00558183cef4af2c2bb61d4f2ffe508
>
> But, on the power_on function, it should set the "powered" flag for any other phys anyway.
> Otherwise, such a strange imbalance behavior happened.
> The powered flag is needed to avoid multiple "PLL_RST" register setting.
> # I think regulator_{en,dis}able() don't need such a condition though.
>
> I'll submit a bugfix patch with your Reported-by tag later.

Thank you very much!

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds