From: Richard Zhao <richard.zhao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: linaro-dev-cunTk1MwBs8s++Sfvej+rw@public.gmane.org,
arnd-r2nGTMty4D4@public.gmane.org,
patches-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
marc.zyngier-5wv7dgnIgG8@public.gmane.org,
catalin.marinas-5wv7dgnIgG8@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
eric.miao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org,
rdunlap-/UHa2rfvQTnk1uMJSBkQmQ@public.gmane.org,
Richard Zhao
<richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
cpufreq-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org,
Jamie Iles <jamie-wmLquQDDieKakBO8gow8eQ@public.gmane.org>,
davej-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH V3 4/7] cpufreq: add generic cpufreq driver
Date: Wed, 21 Dec 2011 06:16:00 +0800 [thread overview]
Message-ID: <CAH8gqwXDaxOCOCf3y11aQQ4oz8LZSD0RabMEM8j85rD1qHN2jw@mail.gmail.com> (raw)
In-Reply-To: <4EF0A612.2060400-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 6264 bytes --]
在 2011-12-20 下午11:13,"Rob Herring" <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>写道:
>
> On 12/19/2011 07:59 PM, Richard Zhao wrote:
> > On Mon, Dec 19, 2011 at 09:00:44AM -0600, Rob Herring wrote:
> >> On 12/19/2011 08:39 AM, Jamie Iles wrote:
> >>> On Mon, Dec 19, 2011 at 10:19:29PM +0800, Richard Zhao wrote:
> >>>> On Mon, Dec 19, 2011 at 10:05:12AM +0000, Jamie Iles wrote:
> >>>>> Hi Richard,
> >>>>>
> >>>>> On Mon, Dec 19, 2011 at 11:21:40AM +0800, Richard Zhao wrote:
> >>>>>> It support single core and multi-core ARM SoCs. But currently it
assume
> >>>>>> all cores share the same frequency and voltage.
> >>>>>>
> >>>>>> Signed-off-by: Richard Zhao <richard.zhao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> >>>>>> ---
> >>>>>> .../devicetree/bindings/cpufreq/generic-cpufreq | 7 +
> >>>>>> drivers/cpufreq/Kconfig | 8 +
> >>>>>> drivers/cpufreq/Makefile | 2 +
> >>>>>> drivers/cpufreq/generic-cpufreq.c | 251
++++++++++++++++++++
> >>>>>> 4 files changed, 268 insertions(+), 0 deletions(-)
> >>>>>> create mode 100644
Documentation/devicetree/bindings/cpufreq/generic-cpufreq
> >>>>>> create mode 100644 drivers/cpufreq/generic-cpufreq.c
> >>>>>>
> >>>>>> diff --git
a/Documentation/devicetree/bindings/cpufreq/generic-cpufreq
b/Documentation/devicetree/bindings/cpufreq/generic-cpufreq
> >>>>>> new file mode 100644
> >>>>>> index 0000000..15dd780
> >>>>>> --- /dev/null
> >>>>>> +++ b/Documentation/devicetree/bindings/cpufreq/generic-cpufreq
> >>>>>> @@ -0,0 +1,7 @@
> >>>>>> +Generic cpufreq driver
> >>>>>> +
> >>>>>> +Required properties in /cpus/cpu@0:
> >>>>>> +- compatible : "generic-cpufreq"
> >>>>>
> >>>>> I'm not convinced this is the best way to do this. By requiring a
> >>>>> generic-cpufreq compatible string we're encoding Linux driver
> >>>>> information into the hardware description. The only way I can see
to
> >>>>> avoid this is to provide a generic_clk_cpufreq_init() function that
> >>>>> platforms can call in their machine init code to use the driver.
> >>
> >> Agreed on the compatible string.
> > Assume you reject to use compatible string.
> >> It's putting Linux specifics into DT.
> >>
> >> You could flip this around and have the module make a call into the
> >> kernel to determine whether to initialize or not. Then platforms could
> >> set a flag to indicate this.
> > Could you make it more clear? kernel global variable, macro, or
function?
>
> Any of those. Of course, direct access to variables across modules is
> discouraged, so it would probably be a function that checks a variable.
why not use function pointer? arch that don't use this driver do not have
to set it. if use function, everyone should define it.
>
> > - Following your idea, I think, we can add in driver/cpufreq/cpufreq.c:
> > int (*clk_reg_cpufreq_get_op_table) (struct op_table *tbl, int *size);
> > SoC code set the callback. If it's NULL, driver will exit. We can get
rid
> > of DT. It'll make cpufreq core dirty, but it's the only file built-in.
>
> But aren't you getting the operating points from the DT? Then you don't
> want to put this code into each platform.
the variable is mainly used to check whether some platform want to use
this driver. getting ride of dt is side affect.
>
> >
> > - Drop module support. SoC call generic_clk_cpufreq_init as Jamie said.
> >
> >>
> >>>> It'll prevent the driver from being a kernel module.
> >>>
> >>> Hmm, that's not very nice either! I guess you _could_ add an
> >>> of_machine_is_compatible() check against a list of compatible machines
> >>> in the driver but that feels a little gross. Hopefully Rob or Grant
> >>> have a good alternative!
> >>>
> >>
> >> What does cpufreq core do if multiple drivers are registered?
> > current cpufreq core only support one cpufreq_driver. Others will fail
> > except the first time.
>
> Then whoever gets there first wins. Make your driver register late and
> if someone doesn't want to use it they can register a custom driver
earlier.
this driver did
>
> Rob
>
> >> Perhaps a
> >> ranking is needed and this would only get enabled if there are no other
> >> drivers and other conditions like having the clock "cpu" present are
met.
> > We'd better keep cpufreq core simple. For this driver, register
cpufreq_driver
> > is the last thing after checking all conditions.
> >
> >>
> >> Rob
> >>
> >>>> Hi Grant & Rob,
> >>>>
> >>>> Could you comment?
> >>>>
> >>>>>
> >>>>>> +- cpu-freqs : cpu frequency points it support
> >>>>>> +- cpu-volts : cpu voltages required by the frequency point at the
same index
> >>>>>> +- trans-latency : transition_latency
> >>>>>> diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
> >>>>>> index e24a2a1..216eecd 100644
> >>>>>> --- a/drivers/cpufreq/Kconfig
> >>>>>> +++ b/drivers/cpufreq/Kconfig
> >>>>>> @@ -179,6 +179,14 @@ config CPU_FREQ_GOV_CONSERVATIVE
> >>>>>>
> >>>>>> If in doubt, say N.
> >>>>>>
> >>>>>> +config GENERIC_CPUFREQ_DRIVER
> >>>>>> + bool "Generic cpufreq driver using
clock/regulator/devicetree"
> >>>>>> + help
> >>>>>> + This adds generic CPUFreq driver. It assumes all
> >>>>>> + cores of the CPU share the same clock and voltage.
> >>>>>> +
> >>>>>> + If in doubt, say N.
> >>>>>
> >>>>> I think this needs dependencies on HAVE_CLK, OF and REGULATOR.
> >>>> right, Thanks. I can not check clk before generic clock framework
> >>>> come in.
> >>>> Added:
> >>>> depends on OF && REGULATOR
> >>>> select CPU_FREQ_TABLE
> >>>
> >>> You can still use HAVE_CLK. That symbol has been around for ages and
> >>> any platform implementing the clk API should select it so it's fine to
> >>> depend on it even before there is a generic struct clk.
> > You are right. Thanks.
> >
> > Richard
> >>>
> >>> Jamie
> >>
> >> _______________________________________________
> >> linux-arm-kernel mailing list
> >> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> >>
> >
>
[-- Attachment #1.2: Type: text/html, Size: 9118 bytes --]
[-- Attachment #2: Type: text/plain, Size: 175 bytes --]
_______________________________________________
linaro-dev mailing list
linaro-dev-cunTk1MwBs8s++Sfvej+rw@public.gmane.org
http://lists.linaro.org/mailman/listinfo/linaro-dev
next prev parent reply other threads:[~2011-12-20 22:16 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-19 3:21 [PATCH V3 0/7] add a generic cpufreq driver Richard Zhao
2011-12-19 3:21 ` [PATCH V3 1/7] ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp Richard Zhao
2011-12-21 14:21 ` Richard Zhao
2011-12-19 3:21 ` [PATCH V3 2/7] arm/imx: cpufreq: remove loops_per_jiffy recalculate " Richard Zhao
2011-12-19 3:21 ` [PATCH V3 3/7] cpufreq: OMAP: " Richard Zhao
2011-12-19 3:21 ` [PATCH V3 4/7] cpufreq: add generic cpufreq driver Richard Zhao
2011-12-19 10:05 ` Jamie Iles
2011-12-19 14:19 ` Richard Zhao
2011-12-19 14:39 ` Jamie Iles
2011-12-19 15:00 ` Rob Herring
2011-12-20 1:59 ` Richard Zhao
2011-12-20 15:13 ` Rob Herring
[not found] ` <4EF0A612.2060400-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-12-20 22:16 ` Richard Zhao [this message]
2011-12-20 15:21 ` Arnd Bergmann
[not found] ` <201112201521.37747.arnd-r2nGTMty4D4@public.gmane.org>
2011-12-20 21:57 ` Richard Zhao
2011-12-20 14:59 ` Mark Brown
2011-12-20 23:27 ` Richard Zhao
2011-12-20 23:48 ` Mark Brown
2011-12-21 1:20 ` Richard Zhao
2011-12-21 1:32 ` Mark Brown
2011-12-21 2:24 ` Richard Zhao
[not found] ` <20111221022452.GF15863-iWYTGMXpHj9ITqJhDdzsOjpauB2SiJktrE5yTffgRl4@public.gmane.org>
2011-12-21 2:33 ` Mark Brown
2011-12-21 2:51 ` Richard Zhao
2011-12-21 9:27 ` Richard Zhao
2011-12-21 9:43 ` Arnd Bergmann
2011-12-21 11:44 ` Kay Sievers
2011-12-21 12:12 ` Mark Brown
2011-12-21 12:49 ` Kay Sievers
2011-12-21 14:19 ` Richard Zhao
2011-12-22 0:50 ` Mark Brown
2011-12-21 12:11 ` Mark Brown
2011-12-19 3:21 ` [PATCH V3 5/7] dts/imx6q: add cpufreq property Richard Zhao
2011-12-19 3:21 ` [PATCH V3 6/7] arm/imx6q: register arm_clk as cpu to clkdev Richard Zhao
2011-12-19 3:21 ` [PATCH V3 7/7] arm/imx6q: select ARCH_HAS_CPUFREQ Richard Zhao
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=CAH8gqwXDaxOCOCf3y11aQQ4oz8LZSD0RabMEM8j85rD1qHN2jw@mail.gmail.com \
--to=richard.zhao-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=catalin.marinas-5wv7dgnIgG8@public.gmane.org \
--cc=cpufreq-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=davej-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=eric.miao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=jamie-wmLquQDDieKakBO8gow8eQ@public.gmane.org \
--cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=linaro-dev-cunTk1MwBs8s++Sfvej+rw@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
--cc=marc.zyngier-5wv7dgnIgG8@public.gmane.org \
--cc=patches-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=rdunlap-/UHa2rfvQTnk1uMJSBkQmQ@public.gmane.org \
--cc=richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.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).