From: Mike Turquette <mturquette@linaro.org>
To: Tomasz Figa <tomasz.figa@gmail.com>,
linux-arm-kernel@lists.infradead.org
Cc: Chander Kashyap <chander.kashyap@linaro.org>,
thomas.abraham@linaro.org, linux-samsung-soc@vger.kernel.org
Subject: Re: [RFC Patch v2 0/3] add temporary parent migration support
Date: Wed, 04 Sep 2013 10:43:28 -0700 [thread overview]
Message-ID: <20130904174328.10934.18433@quantum> (raw)
In-Reply-To: <3927125.3UOplv4uU5@localhost>
Quoting Tomasz Figa (2013-09-03 15:36:50)
> Hi Chander,
>
> On Tuesday 03 of September 2013 17:04:28 Chander Kashyap wrote:
> > Some platform has provision to change cpu parent clock during
> > cpu frequency scaling. This patch series provides a mechanism to
> > implement the same using CCF.
> >
> > Patch1 provides mechanism to migrate to new parent temporarily.
> >
> > Patch2 updates the user of clk_register_mux and DEFINE_CLK_MUX which are
> > modified to add support for clk migration.
> >
> > Patch3 adds support to Exynos5250 to use the clock parent migration
> > feature implemented in CCF.
>
> I don't really like this approach. A need to change mux setting
> temporarily is heavily platform-specific and I don't think it should be
> handled by generic code.
I agree with Tomasz.
> First of all there are many factor that you would
> have to account for to make this solution generic, such as:
> - board specific alternative parents,
> - exact moment of parent change,
> - some other platform specific conditions, like CPU voltage that must be
> changed when mux is changed, because it changes CPU frequency,
> - and probably a lot of more factors that only people working with all
> the platforms supported (and unsupported yet) by Linux.
>
> I can see at least two solutions for this problem that don't require
> changing core code of common clock framework:
>
> 1) Implementing a special clock type using normal mux ops, but also
> registering a notifier for its PRE_RATE_CHANGE and POST_RATE_CHANGE events
> to perform parent switching.
Creating a custom clock type is the way to go here. It is possible to
wrap the mux clk_ops to re-use that code, or just write a custom clock
type from scratch.
I do not like using the clock rate-change notifiers for this purpose.
The notifiers provide hooks to drivers that need to take care around
clock transitions. Using the notifiers from within the clock framework
indicates poor design.
>
> 2) Using normal mux clock, but registering such notifiers in clock
> controller or cpufreq driver.
This depends on what the data sheet or reference manual states. If using
a temporary parent is a property of the clock programming sequence (e.g.
to have a glitch-less transition) then that logic belongs in the clock
provider driver (i.e. a custom clock type needs to be created with this
logic).
However if using a temporary parent is not required for programming the
clock, but is instead a requirement of the clock consumer (e.g. a CPU,
or some I/O controller) then perhaps putting this logic in that driver
is the right way to go. In that case the logic could be explicit:
clk_set_parent(clk, temp_parent);
clk_set_rate(clk, target_rate);
clk_set_parent(clk, target_parent);
Or it could implicit with the use of rate-change notifiers. Again the
rate-change notifiers exist for clock consumer drivers to use, so this
is OK.
I have a hunch that the right way to do this is for a custom clock type
to be created which simply calls clk_set_parent from within the clock's
.set_rate callback, but I'll wait on feedback from Chander on the needs
of his platform.
Regards,
Mike
>
> Best regards,
> Tomasz
WARNING: multiple messages have this Message-ID (diff)
From: mturquette@linaro.org (Mike Turquette)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC Patch v2 0/3] add temporary parent migration support
Date: Wed, 04 Sep 2013 10:43:28 -0700 [thread overview]
Message-ID: <20130904174328.10934.18433@quantum> (raw)
In-Reply-To: <3927125.3UOplv4uU5@localhost>
Quoting Tomasz Figa (2013-09-03 15:36:50)
> Hi Chander,
>
> On Tuesday 03 of September 2013 17:04:28 Chander Kashyap wrote:
> > Some platform has provision to change cpu parent clock during
> > cpu frequency scaling. This patch series provides a mechanism to
> > implement the same using CCF.
> >
> > Patch1 provides mechanism to migrate to new parent temporarily.
> >
> > Patch2 updates the user of clk_register_mux and DEFINE_CLK_MUX which are
> > modified to add support for clk migration.
> >
> > Patch3 adds support to Exynos5250 to use the clock parent migration
> > feature implemented in CCF.
>
> I don't really like this approach. A need to change mux setting
> temporarily is heavily platform-specific and I don't think it should be
> handled by generic code.
I agree with Tomasz.
> First of all there are many factor that you would
> have to account for to make this solution generic, such as:
> - board specific alternative parents,
> - exact moment of parent change,
> - some other platform specific conditions, like CPU voltage that must be
> changed when mux is changed, because it changes CPU frequency,
> - and probably a lot of more factors that only people working with all
> the platforms supported (and unsupported yet) by Linux.
>
> I can see at least two solutions for this problem that don't require
> changing core code of common clock framework:
>
> 1) Implementing a special clock type using normal mux ops, but also
> registering a notifier for its PRE_RATE_CHANGE and POST_RATE_CHANGE events
> to perform parent switching.
Creating a custom clock type is the way to go here. It is possible to
wrap the mux clk_ops to re-use that code, or just write a custom clock
type from scratch.
I do not like using the clock rate-change notifiers for this purpose.
The notifiers provide hooks to drivers that need to take care around
clock transitions. Using the notifiers from within the clock framework
indicates poor design.
>
> 2) Using normal mux clock, but registering such notifiers in clock
> controller or cpufreq driver.
This depends on what the data sheet or reference manual states. If using
a temporary parent is a property of the clock programming sequence (e.g.
to have a glitch-less transition) then that logic belongs in the clock
provider driver (i.e. a custom clock type needs to be created with this
logic).
However if using a temporary parent is not required for programming the
clock, but is instead a requirement of the clock consumer (e.g. a CPU,
or some I/O controller) then perhaps putting this logic in that driver
is the right way to go. In that case the logic could be explicit:
clk_set_parent(clk, temp_parent);
clk_set_rate(clk, target_rate);
clk_set_parent(clk, target_parent);
Or it could implicit with the use of rate-change notifiers. Again the
rate-change notifiers exist for clock consumer drivers to use, so this
is OK.
I have a hunch that the right way to do this is for a custom clock type
to be created which simply calls clk_set_parent from within the clock's
.set_rate callback, but I'll wait on feedback from Chander on the needs
of his platform.
Regards,
Mike
>
> Best regards,
> Tomasz
next prev parent reply other threads:[~2013-09-04 17:43 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-03 11:34 [RFC Patch v2 0/3] add temporary parent migration support Chander Kashyap
2013-09-03 11:34 ` Chander Kashyap
2013-09-03 11:34 ` [RFC Patch v2 1/3] clk: add support for temporary parent clock migration Chander Kashyap
2013-09-03 11:34 ` Chander Kashyap
2013-09-03 21:47 ` Sylwester Nawrocki
2013-09-03 21:47 ` Sylwester Nawrocki
2013-09-04 6:06 ` Chander Kashyap
2013-09-04 6:06 ` Chander Kashyap
2013-09-07 3:37 ` Saravana Kannan
2013-09-07 3:37 ` Saravana Kannan
2013-09-03 11:34 ` [RFC Patch v2 2/3] clk: update users of "clk_register_mux" and "DEFINE_CLK_MUX" Chander Kashyap
2013-09-03 11:34 ` Chander Kashyap
2013-09-03 11:34 ` [RFC Patch v2 3/3] clk: samsung: Exynos5250: Add alternate parent name for mout_cpu Chander Kashyap
2013-09-03 11:34 ` Chander Kashyap
2013-09-03 22:36 ` [RFC Patch v2 0/3] add temporary parent migration support Tomasz Figa
2013-09-03 22:36 ` Tomasz Figa
2013-09-04 6:02 ` Chander Kashyap
2013-09-04 6:02 ` Chander Kashyap
2013-09-04 17:43 ` Mike Turquette [this message]
2013-09-04 17:43 ` Mike Turquette
2013-09-04 18:01 ` Tomasz Figa
2013-09-04 18:01 ` Tomasz Figa
2013-09-05 18:32 ` Mike Turquette
2013-09-05 18:32 ` Mike Turquette
2013-09-11 4:22 ` Chander Kashyap
2013-09-11 4:22 ` Chander Kashyap
2013-09-11 4:19 ` Chander Kashyap
2013-09-11 4:19 ` Chander Kashyap
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=20130904174328.10934.18433@quantum \
--to=mturquette@linaro.org \
--cc=chander.kashyap@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=thomas.abraham@linaro.org \
--cc=tomasz.figa@gmail.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.