From: "Heiko Stübner" <heiko@sntech.de>
To: Frank Wang <frank.wang@rock-chips.com>
Cc: dianders@chromium.org, linux@roeck-us.net, groeck@chromium.org,
jwerner@chromium.org, kishon@ti.com, robh+dt@kernel.org,
pawel.moll@arm.com, mark.rutland@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-usb@vger.kernel.org, linux-rockchip@lists.infradead.org,
xzy.xu@rock-chips.com, kever.yang@rock-chips.com,
huangtao@rock-chips.com, william.wu@rock-chips.com
Subject: Re: [PATCH v5 2/2] phy: rockchip-inno-usb2: add a new driver for Rockchip usb2phy
Date: Wed, 15 Jun 2016 20:49:30 +0200 [thread overview]
Message-ID: <2590052.6LplKWTe68@diego> (raw)
In-Reply-To: <da45cb15-4823-0992-0b83-475f1ad4c8aa@rock-chips.com>
Hi Frank,
Am Mittwoch, 15. Juni 2016, 18:58:43 schrieb Frank Wang:
> On 2016/6/15 17:04, Heiko Stübner wrote:
> > Am Mittwoch, 15. Juni 2016, 11:23:26 schrieb Frank Wang:
> >> On 2016/6/14 21:27, Heiko Stübner wrote:
> >>> Am Montag, 13. Juni 2016, 10:10:10 schrieb Frank Wang:
> >>>> The newer SoCs (rk3366, rk3399) take a different usb-phy IP block
> >>>> than rk3288 and before, and most of phy-related registers are also
> >>>> different from the past, so a new phy driver is required necessarily.
> >>>>
> >>>> Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
> >>>> ---
> >>>>
> >>>> Changes in v5:
> >>>> - Added 'reg' in the data block to match the different phy-blocks in
> >>>> dt.
> >>>>
> >>>> Changes in v4:
> >>>> - Removed some processes related to 'vbus_host-supply'.
> >>>>
> >>>> Changes in v3:
> >>>> - Resolved the mapping defect between fixed value in driver and the
> >>>>
> >>>> property in devicetree.
> >>>>
> >>>> - Optimized 480m output clock register function.
> >>>> - Code cleanup.
> >>>>
> >>>> Changes in v2:
> >>>> - Changed vbus_host operation from gpio to regulator in *_probe.
> >>>> - Improved the fault treatment relate to 480m clock register.
> >>>> - Cleaned up some meaningless codes in *_clk480m_disable.
> >>>> - made more clear the comment of *_sm_work.
> >>>>
> >>>> drivers/phy/Kconfig | 7 +
> >>>> drivers/phy/Makefile | 1 +
> >>>> drivers/phy/phy-rockchip-inno-usb2.c | 645
> >>>>
> >>>> ++++++++++++++++++++++++++++++++++ 3 files changed, 653 insertions(+)
> >>>>
> >>>> [...]
> >>>>
> >>>> +
> >>>> +static int rockchip_usb2phy_exit(struct phy *phy)
> >>>> +{
> >>>> + struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy);
> >>>> +
> >>>>
> >>> if (!rport->port_cfg)
> >>>
> >>> return 0;
> >>>>
> >>>> + if (rport->port_id == USB2PHY_PORT_HOST)
> >>>> + cancel_delayed_work_sync(&rport->sm_work);
> >>>> +
> >>>
> >>> you will also need to resume the port here, if it is suspended at this
> >>> point, as phy_power_off gets called after phy_exit and would probably
> >>> produce clk enable/disable mismatches otherwise.
> >>
> >> Hmm, from my personal point of view, when canceling sm_work here, it may
> >> not cause the port goes to suspend, isn't it? besides, clk only prepared
> >> in *_usb2phy_resume(), and unprepared in *_usb2phy_suspend(), so if we
> >> resume port here, the prepare_count of clk will be increased again, I
> >> am afraid this is not correct, and am I wrong? would you like to tell me
> >> more details?
> >
> > usb2phy_resume gets called both initially through phy_power_on as well.
> > So it's on but through the first scheduled work call, might get suspended
> > when nothing is connected. (clk_enable and clk_disable will run).
> > If nothing is connected on unload phy_power_off will get called while the
> > clock actually is still disabled.
> >
> > So I think it's either resuming on exit, or at least making sure to do
> > nothing in that case in the phy_power_off callback of the driver.
>
> Well, I got what you mean. I saw phy_power_on() gets called twice at
> ehci/ohci driver probe time, one is at pdata->power_on(); another is at
> usb_add_hcd(), so after that, the power_count of phy increases to two.
> however, when ehci/ohci driver goes to suspend, there is only once to
> call phy_power_off(), and the power_count of phy decreases to 1, so our
> usb2phy_resume() could not be invoked :-) .
>
> If so, is it still need to care it?
You should never have to rely on oddities in other drivers :-)
> How about use suspended member of
> rockchip_usb2phy_port as a conditional to check in *_usb2phy_suspend(),
> if necessary.
That looks also sane and should work.
Heiko
next prev parent reply other threads:[~2016-06-15 18:49 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-13 2:10 [PATCH v5 0/2] Add a new Rockchip usb2 phy driver Frank Wang
2016-06-13 2:10 ` Frank Wang
2016-06-13 2:10 ` [PATCH v5 1/2] Documentation: bindings: add DT documentation for Rockchip USB2PHY Frank Wang
[not found] ` <1465783810-18756-2-git-send-email-frank.wang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-06-13 8:38 ` Heiko Stübner
2016-06-13 8:38 ` Heiko Stübner
2016-06-14 13:28 ` Heiko Stübner
2016-06-14 13:28 ` Heiko Stübner
2016-06-15 1:24 ` Frank Wang
2016-06-15 1:24 ` Frank Wang
2016-06-14 22:26 ` Rob Herring
2016-06-14 22:26 ` Rob Herring
2016-06-13 2:10 ` [PATCH v5 2/2] phy: rockchip-inno-usb2: add a new driver for Rockchip usb2phy Frank Wang
2016-06-14 14:52 ` Guenter Roeck
[not found] ` <57601A1D.9020803-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2016-06-14 15:20 ` Heiko Stübner
2016-06-14 15:20 ` Heiko Stübner
[not found] ` <1465783810-18756-3-git-send-email-frank.wang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-06-14 13:27 ` Heiko Stübner
2016-06-14 13:27 ` Heiko Stübner
2016-06-14 13:50 ` Guenter Roeck
2016-06-14 13:50 ` Guenter Roeck
[not found] ` <CABXOdTfzDeg3KOmEkJkeUWs76wFind89D-bSrs=7-jSxmdhSHQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-14 14:00 ` Heiko Stübner
2016-06-14 14:00 ` Heiko Stübner
2016-06-15 1:14 ` Frank Wang
2016-06-15 1:14 ` Frank Wang
2016-06-15 15:47 ` Guenter Roeck
[not found] ` <CABXOdTdD-DFjzZszvTBoxviwsdu=HZSRy5iTzrkgOjg5qae05Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-16 1:47 ` Frank Wang
2016-06-16 1:47 ` Frank Wang
2016-06-16 13:12 ` Guenter Roeck
[not found] ` <5762A5AE.5030400-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2016-06-17 0:57 ` Frank Wang
2016-06-17 0:57 ` Frank Wang
2016-06-15 3:23 ` Frank Wang
2016-06-15 3:23 ` Frank Wang
2016-06-15 9:04 ` Heiko Stübner
2016-06-15 10:58 ` Frank Wang
2016-06-15 18:49 ` Heiko Stübner [this message]
2016-06-17 11:54 ` Kishon Vijay Abraham I
2016-06-17 11:54 ` Kishon Vijay Abraham I
[not found] ` <5763E506.1060500-l0cyMroinI0@public.gmane.org>
2016-06-17 16:46 ` Heiko Stübner
2016-06-17 16:46 ` Heiko Stübner
2016-06-29 14:14 ` Kishon Vijay Abraham I
2016-06-29 14:14 ` Kishon Vijay Abraham I
[not found] ` <5773D7DC.9050902-l0cyMroinI0@public.gmane.org>
2016-06-29 14:27 ` Heiko Stuebner
2016-06-29 14:27 ` Heiko Stuebner
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=2590052.6LplKWTe68@diego \
--to=heiko@sntech.de \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=frank.wang@rock-chips.com \
--cc=galak@codeaurora.org \
--cc=groeck@chromium.org \
--cc=huangtao@rock-chips.com \
--cc=ijc+devicetree@hellion.org.uk \
--cc=jwerner@chromium.org \
--cc=kever.yang@rock-chips.com \
--cc=kishon@ti.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=mark.rutland@arm.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=william.wu@rock-chips.com \
--cc=xzy.xu@rock-chips.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.