From: Nicolas Boichat <drinkcat@chromium.org>
To: "Nick Fan (范哲維)" <Nick.Fan@mediatek.com>
Cc: "Mark Rutland" <mark.rutland@arm.com>,
"Ulf Hansson" <ulf.hansson@linaro.org>,
"David Airlie" <airlied@linux.ie>,
"Viresh Kumar" <viresh.kumar@linaro.org>,
dri-devel <dri-devel@lists.freedesktop.org>,
"Liam Girdwood" <lgirdwood@gmail.com>,
"Weiyi Lu (呂威儀)" <Weiyi.Lu@mediatek.com>,
"Steven Price" <steven.price@arm.com>,
"Alyssa Rosenzweig" <alyssa.rosenzweig@collabora.com>,
"Devicetree List" <devicetree@vger.kernel.org>,
"Sj Huang (黃信璋)" <sj.huang@mediatek.com>,
"Mark Brown" <broonie@kernel.org>,
"moderated list:ARM/Mediatek SoC support"
<linux-mediatek@lists.infradead.org>,
"Hsin-Yi Wang" <hsinyi@chromium.org>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"linux-arm Mailing List" <linux-arm-kernel@lists.infradead.org>,
"Tomeu Vizoso" <tomeu.vizoso@collabora.com>,
"Stephen Boyd" <sboyd@kernel.org>,
lkml <linux-kernel@vger.kernel.org>,
"JB Tsai (蔡志彬)" <Jb.Tsai@mediatek.com>,
"Rob Herring" <robh+dt@kernel.org>,
"Daniel Vetter" <daniel@ffwll.ch>
Subject: Re: [PATCH v4 7/7] RFC: drm/panfrost: devfreq: Add support for 2 regulators
Date: Mon, 9 Mar 2020 09:53:35 +0800 [thread overview]
Message-ID: <CANMq1KDmvxQdKHgyvQb6xChFX5UkBqPyQKXxuxGV70=p1=ezKw@mail.gmail.com> (raw)
In-Reply-To: <e4e95aa7713344e8b43fe5fad05de3ee@mtkmbs01n1.mediatek.inc>
Looping back on this, after digging a bit deeper...
On Fri, Feb 14, 2020 at 9:38 AM Nick Fan (范哲維) <Nick.Fan@mediatek.com> wrote:
> [snip]
> > > Another thing that I'm not implementing is the dance that Mediatek
> > > does in their kbase driver when changing the clock (described in
> > > patch
> > > 2/7):
> > > ""
> > > The binding we use with out-of-tree Mali drivers includes more
> > > clocks, this is used for devfreq: the out-of-tree driver switches
> > > clk_mux to clk_sub_parent (26Mhz), adjusts clk_main_parent, then
> > > switches clk_mux back to clk_main_parent:
> > > (see
> > > https://chromium.googlesource.com/chromiumos/third_party/kernel/+/ch
> > > romeos-4.19/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_run
> > > time_pm.c#423)
> > > clocks =
> > > <&topckgen CLK_TOP_MFGPLL_CK>,
> > > <&topckgen CLK_TOP_MUX_MFG>,
> > > <&clk26m>,
> > > <&mfgcfg CLK_MFG_BG3D>;
> > > clock-names =
> > > "clk_main_parent",
> > > "clk_mux",
> > > "clk_sub_parent",
> > > "subsys_mfg_cg";
> > > ""
> > > Is there a clean/simple way to implement this in the clock
> > > framework/device tree? Or should we implement something in the
> > > panfrost driver?
> >
> > Putting parent clocks into 'clocks' for a device is a pretty common
> > abuse. The 'assigned-clocks' binding is what's used for parent clock
> > setup. Not sure that's going to help here though. Is this dance
> > because the parent clock frequency can't be changed cleanly?
>
> Nick/Weiyi, any idea why we do that dance in the first place? (maybe the PLL clock is unstable while it's being changed?)
>
> Clock source may become unstable during clock frequency changes, so it is always safer to switch to a more reliable clock source.
> Otherwise, it may cause some problem in some corner case.
> I would suggest to keep it.
The Mediatek CPUfreq driver actually does a very similar dance:
https://github.com/torvalds/linux/blob/master/drivers/cpufreq/mediatek-cpufreq.c#L249
What they have in the device tree is the main clock, and the
"intermediate" clock that is required during switching:
clocks = <&mcucfg CLK_MCU_MP0_SEL>, <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
clock-names = "cpu", "intermediate";
The topology looks like this:
clk26m 15 15 1 26000000
0 0 50000
armpll_ll 1 1 0 1417000000
0 0 50000
mcu_mp0_sel 0 0 0 1417000000
0 0 50000
And device tree provides mcu_mp0_sel as "cpu", and the armpll_div_pll1
as "intermediate".
The driver looks up armpll_ll by calling get_parent, then:
- set_parent(mcu_mp0_sel, armpll_div_pll1)
- set_rate(armpll_ll, new_rate)
- set_parent(mcu_mp0_sel, armpll_ll)
On MT8183's GPU, the topology is a little bit more complicated (but I
think there should be a way to merge mfg_bg3d an mfg_sel in the clock
core)
clk26m 15 15 1 26000000
0 0 50000
mfgpll 1 1 0 419999817
0 0 50000
mfgpll_ck 2 2 0 419999817
0 0 50000
mfg_sel 3 3 0 419999817
0 0 50000
mfg_bg3d 1 1 0 419999817
0 0 50000
We're going to need a special panfrost devfreq driver for mt8183
anyway (to handle the 2 regulators), so it would be easy to take a
similar approach:
- Add "intermediate" clock in the device tree (clk26m)
- Find mfg_sel/mfgpll_ck using 1/2 clk_get_parent calls.
- Switch mfg_sel to clk26m, set mfgpll_ck rate, switch mfg_sel back
to mfgpll_ck.
(BTW, I tried to look, and couldn't find examples or reparenting
during clock changes in drivers/clk, are there existing drivers doing
similar things? Or this would be new?).
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
next prev parent reply other threads:[~2020-03-09 1:54 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-07 5:26 [PATCH v4 0/7] Add dts for mt8183 GPU (and misc panfrost patches) Nicolas Boichat
2020-02-07 5:26 ` [PATCH v4 1/7] dt-bindings: gpu: mali-bifrost: Add Mediatek MT8183 Nicolas Boichat
2020-02-25 17:16 ` Rob Herring
2020-02-26 0:55 ` Nicolas Boichat
2020-03-06 2:34 ` Nick Fan
2020-03-06 2:43 ` Nicolas Boichat
2020-03-06 14:13 ` Rob Herring
2020-03-06 14:43 ` Steven Price
2020-03-09 7:55 ` Nick Fan
2020-02-07 5:26 ` [PATCH v4 2/7] arm64: dts: mt8183: Add node for the Mali GPU Nicolas Boichat
2020-02-07 5:26 ` [PATCH v4 3/7] drm/panfrost: Improve error reporting in panfrost_gpu_power_on Nicolas Boichat
2020-02-12 10:38 ` Matthias Brugger
2020-02-07 5:26 ` [PATCH v4 4/7] drm/panfrost: Add support for multiple regulators Nicolas Boichat
2020-02-10 11:31 ` Steven Price
2020-02-10 14:00 ` Mark Brown
2020-02-07 5:26 ` [PATCH v4 5/7] drm/panfrost: Add support for multiple power domains Nicolas Boichat
2020-02-07 13:52 ` Alyssa Rosenzweig
2020-02-09 12:43 ` Nicolas Boichat
2020-02-07 14:25 ` Ulf Hansson
2020-02-09 12:50 ` Nicolas Boichat
2020-02-10 7:50 ` Ulf Hansson
2020-02-10 11:39 ` Steven Price
2020-02-11 19:43 ` Rob Herring
2020-02-11 20:08 ` Saravana Kannan
2020-02-12 1:58 ` Rob Herring
2020-02-12 2:10 ` Saravana Kannan
2020-02-12 2:08 ` Nicolas Boichat
2020-02-07 5:26 ` [PATCH v4 6/7] RFC: drm/panfrost: Add mt8183-mali compatible string Nicolas Boichat
2020-02-07 5:26 ` [PATCH v4 7/7] RFC: drm/panfrost: devfreq: Add support for 2 regulators Nicolas Boichat
2020-02-12 8:49 ` Nicolas Boichat
2020-02-12 9:06 ` Viresh Kumar
2020-02-12 18:14 ` Rob Herring
2020-02-13 7:57 ` Nicolas Boichat
2020-02-13 8:24 ` Nicolas Boichat
[not found] ` <e4e95aa7713344e8b43fe5fad05de3ee@mtkmbs01n1.mediatek.inc>
2020-03-09 1:53 ` Nicolas Boichat [this message]
2020-02-07 6:17 ` [PATCH v4 0/7] Add dts for mt8183 GPU (and misc panfrost patches) Tomeu Vizoso
2020-02-07 7:42 ` Nicolas Boichat
2020-02-07 8:13 ` Tomeu Vizoso
2020-02-10 3:39 ` Nicolas Boichat
2020-02-10 8:17 ` Tomeu Vizoso
2020-02-25 20:35 ` Rob Herring
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='CANMq1KDmvxQdKHgyvQb6xChFX5UkBqPyQKXxuxGV70=p1=ezKw@mail.gmail.com' \
--to=drinkcat@chromium.org \
--cc=Jb.Tsai@mediatek.com \
--cc=Nick.Fan@mediatek.com \
--cc=Weiyi.Lu@mediatek.com \
--cc=airlied@linux.ie \
--cc=alyssa.rosenzweig@collabora.com \
--cc=broonie@kernel.org \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=hsinyi@chromium.org \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=matthias.bgg@gmail.com \
--cc=robh+dt@kernel.org \
--cc=sboyd@kernel.org \
--cc=sj.huang@mediatek.com \
--cc=steven.price@arm.com \
--cc=tomeu.vizoso@collabora.com \
--cc=ulf.hansson@linaro.org \
--cc=viresh.kumar@linaro.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;
as well as URLs for NNTP newsgroup(s).