From: "Heiko Stübner" <heiko@sntech.de>
To: Frank Wang <frank.wang@rock-chips.com>
Cc: Xing Zheng <zhengxing@rock-chips.com>,
linux-rockchip@lists.infradead.org, dianders@chromium.org,
briannorris@chromium.org, huangtao@rock-chips.com,
zhangqing@rock-chips.com, wulf@rock-chips.com,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@codeaurora.org>,
linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, daniel.meng@rock-chips.com
Subject: Re: [PATCH v3 2/7] clk: rockchip: rk3399: export 480M_SRC clock id for usbphy0/usbphy1
Date: Fri, 05 Aug 2016 18:05:51 +0200 [thread overview]
Message-ID: <1570410.dThJclhmJd@diego> (raw)
In-Reply-To: <cba79ba6-7f41-5398-389c-7fd3fe5e0089@rock-chips.com>
Hi Frank,
Am Freitag, 5. August 2016, 16:34:42 schrieb Frank Wang:
> On 2016/8/5 3:10, Heiko St=FCbner wrote:
> > Am Dienstag, 2. August 2016, 15:19:56 schrieb Xing Zheng:
> >> Export these source clocks for usbphy.
> >>=20
> >> Signed-off-by: Xing Zheng <zhengxing@rock-chips.com>
> >=20
> > can you please provide a rationale why you need manual control over=
that
> > intermediate clock?
>=20
> Well, From below graph, you can see that 'clk_usbphyX_480m' is genera=
ted
> from usb2phy, and 'clk_usbphy_480m' which select from
> clk_usbphyX_480m_src via a gate (G13[12]) provided 480M clock to oth=
er
> modules.
>=20
> xin24m
>=20
> |__ clk_usb2phy0_ref
> |
> | |__ clk_usbphy0_480m
> | |
> | |__clk_usbphy0_480m_src
> | |
> | |__clk_usbphy_480m
> | |
> | |__ ... ...
> |
> |__ clk_usb2phy1_ref
> |
> |__ clk_usbphy1_480m
> |
> |__clk_usbphy1_480m_src
> >=20
> > The two usbphys seem to use the clk_usb2phyX_ref clocks, generate =
the
> > 480m
> > clocks, but do not seem to need the clk_usbphyX_480m_src gates.
>=20
> Yeah, they used to be. However, the story went something like this,
>=20
> Some PM suspend process related ehci/ohci controller are base on 480m=
> clocks, unfortunately, usb2-phy suspended earlier than ehci/ohci
> (usb2-phy will be auto suspended if no devices plug-in), and the
> clk-480m provided by it was disabled if no module used. As a result, =
the
> PM suspend process was blocked when it run into ehci/ohci module.
ah, so the ehci controller needs that 480m clock as well? Do you happen=
to=20
have example patches for the ehci/ohci side already? I'd like to peak a=
t what=20
you mean with "some PM suspend process related" things.
Depending on what is actually needed, you could also pull the usbphy ou=
t of=20
autosuspend in a pm-prepare callback of the phy driver itself ... see=20=
http://lxr.free-electrons.com/source/include/linux/pm.h#L86
Like=20
- in the .prepare callback make sure to unsuspend the phy
and deactivate the autosuspend
- ehci/ohci will poweroff the phy in it s suspend callback (already doe=
s that)
- suspend -> resume
- ehci/ohci will poweron the phy
- in the phy's .complete callback you can reactivate the autosuspend ti=
mer
Because it looks more like you actually need the phy and not the clock =
alone.
So it would be nicer to use mechanisms already in place instead of crea=
ting=20
new dependencies.
> Hence, we are planing to refer clk_usbphyX_480m_src into each ehci/oh=
ci
> driver. Maybe you will challenge why not refer clk_usbphy_480m direct=
ly?
> because there are two ehci/ohci connected in the different usb2phy, a=
nd
> only one clk_usbphy_480m clock was selected in clock tree.
Nope, no argument from me as I fully understand that each phy provides =
its own=20
480m clock :-) .
Heiko
next prev parent reply other threads:[~2016-08-05 16:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-02 7:19 [PATCH v3 0/7] fix and optimize some clock configuration for the RK3399 platfom Xing Zheng
2016-08-02 7:19 ` [PATCH v3 2/7] clk: rockchip: rk3399: export 480M_SRC clock id for usbphy0/usbphy1 Xing Zheng
2016-08-04 19:10 ` Heiko Stübner
2016-08-05 8:34 ` Frank Wang
2016-08-05 16:05 ` Heiko Stübner [this message]
2016-08-08 9:55 ` Frank Wang
2016-08-16 6:34 ` Frank Wang
2016-08-02 7:19 ` [PATCH v3 3/7] clk: rockchip: rk3399: fix incorrect GATE bits for {c, g}pll_aclk_perihp_src Xing Zheng
2016-08-12 16:30 ` Heiko Stübner
2016-08-02 7:19 ` [PATCH v3 4/7] clk: rockchip: rk3399: fix incorrect aclk_emmc source gate bits Xing Zheng
2016-08-12 8:05 ` Heiko Stübner
2016-08-02 7:22 ` [PATCH v3 5/7] clk: rockchip: rk3399: add 65MHz and 106.5MHz clocks for HDMI Xing Zheng
2016-08-04 19:05 ` Heiko Stübner
2016-08-02 7:22 ` [PATCH v3 6/7] clk: rockchip: rk3399: delete the CLK_IGNORE_UNUSED for aclk_pcie Xing Zheng
2016-08-04 19:06 ` Heiko Stübner
2016-08-02 7:22 ` [PATCH v3 7/7] clk: rockchip: rk3399: Add support frac mode frequencies Xing Zheng
2016-08-04 19:19 ` Heiko Stübner
2016-08-05 2:26 ` Xing Zheng
2016-08-05 8:48 ` Heiko Stübner
2016-08-05 13:23 ` Xing Zheng
2016-08-05 13:26 ` Heiko Stübner
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=1570410.dThJclhmJd@diego \
--to=heiko@sntech.de \
--cc=briannorris@chromium.org \
--cc=daniel.meng@rock-chips.com \
--cc=dianders@chromium.org \
--cc=frank.wang@rock-chips.com \
--cc=huangtao@rock-chips.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mturquette@baylibre.com \
--cc=sboyd@codeaurora.org \
--cc=wulf@rock-chips.com \
--cc=zhangqing@rock-chips.com \
--cc=zhengxing@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox