All of lore.kernel.org
 help / color / mirror / Atom feed
From: skannan@codeaurora.org (Saravana Kannan)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v7 2/3] clk: introduce the common clock framework
Date: Tue, 20 Mar 2012 20:10:34 -0700	[thread overview]
Message-ID: <4F6946AA.4070201@codeaurora.org> (raw)
In-Reply-To: <CAJOA=zNmgSQfYAUZ-vqqTk0w3s3eKz3tjVOpyDgO35Q_Ogkz0g@mail.gmail.com>

On 03/20/2012 04:53 PM, Turquette, Mike wrote:
> On Tue, Mar 20, 2012 at 10:46 AM, Saravana Kannan
> <skannan@codeaurora.org>  wrote:
>> On Tue, March 20, 2012 7:02 am, Shawn Guo wrote:
>>> On Thu, Mar 15, 2012 at 11:11:19PM -0700, Mike Turquette wrote:
>>> ...
>>>> +struct clk_ops {
>>>> +    int             (*prepare)(struct clk_hw *hw);
>>>> +    void            (*unprepare)(struct clk_hw *hw);
>>>> +    int             (*enable)(struct clk_hw *hw);
>>>> +    void            (*disable)(struct clk_hw *hw);
>>>> +    int             (*is_enabled)(struct clk_hw *hw);
>>>> +    unsigned long   (*recalc_rate)(struct clk_hw *hw,
>>>> +                                    unsigned long parent_rate);
>>>
>>> I believe I have heard people love the interface with parent_rate
>>> passed in.  I love that too.  But I would like to ask the same thing
>>> on .round_rate and .set_rate as well for the same reason why we have
>>> it for .recalc_rate.
>>
>> In my case, for most clocks, set rate involves reparenting. So, what does
>> passing parent_rate for these even mean? Passing parent_rate seems more
>> apt for recalc_rate since it's called when the parent rate changes -- so,
>> the actual parent itself is not expected to change.
>
>  From my conversations with folks across many platforms, I think that
> the way your clock tree expects to change rates is the exception, not
> the rule.  As such you should just ignore the parent_rate parameter as
> it useless to you.
>
>> I could ignore the parameter, but just wondering how many of the others
>> see value in this. And if we do add this parameter, it shouldn't be made
>> mandatory for the platform driver to use it (due to other assumptions the
>> clock framework might make).
>
>  From my rough census of folks that actually need .set_rate support, I
> think that everyone except MSM could benefit from this.  Your concept
> of clk_set_rate is everyone else's clk_set_parent.

To clarify, MSM's set parent is a subset of steps needed to be done to 
finish set parent. So, it's not that we just randomly decided to swap 
the meanings of these two functions.

Also, I think don't think the difference in view of set_rate is due to 
the difference in the clock trees between platforms with complicated 
trees. I think it's more because of who actually decides the rates for 
the clock tree. It looks like some platforms pick a top-down approach to 
deciding the rates of the clock tre while others pick a bottom-up approach.

> Ignoring the new parameter should cause you no harm.

As long as this is guaranteed, I have no problems with Shawn's suggestion.

> It does make me
> wonder if it would be a good idea to pass in the parent rate for
> .set_parent, which is analogous to .set_rate in many ways.

I need to think a bit more about this.

-Saravana

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

WARNING: multiple messages have this Message-ID (diff)
From: Saravana Kannan <skannan@codeaurora.org>
To: "Turquette, Mike" <mturquette@ti.com>
Cc: Shawn Guo <shawn.guo@linaro.org>, Paul Walmsley <paul@pwsan.com>,
	Russell King <linux@arm.linux.org.uk>,
	Linus Walleij <linus.walleij@stericsson.com>,
	patches@linaro.org, Magnus Damm <magnus.damm@gmail.com>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Stephen Boyd <sboyd@codeaurora.org>,
	linux-kernel@vger.kernel.org, linaro-dev@lists.linaro.org,
	Jeremy Kerr <jeremy.kerr@canonical.com>,
	linux-arm-kernel@lists.infradead.org,
	Arnd Bergman <arnd.bergmann@linaro.org>
Subject: Re: [PATCH v7 2/3] clk: introduce the common clock framework
Date: Tue, 20 Mar 2012 20:10:34 -0700	[thread overview]
Message-ID: <4F6946AA.4070201@codeaurora.org> (raw)
In-Reply-To: <CAJOA=zNmgSQfYAUZ-vqqTk0w3s3eKz3tjVOpyDgO35Q_Ogkz0g@mail.gmail.com>

On 03/20/2012 04:53 PM, Turquette, Mike wrote:
> On Tue, Mar 20, 2012 at 10:46 AM, Saravana Kannan
> <skannan@codeaurora.org>  wrote:
>> On Tue, March 20, 2012 7:02 am, Shawn Guo wrote:
>>> On Thu, Mar 15, 2012 at 11:11:19PM -0700, Mike Turquette wrote:
>>> ...
>>>> +struct clk_ops {
>>>> +    int             (*prepare)(struct clk_hw *hw);
>>>> +    void            (*unprepare)(struct clk_hw *hw);
>>>> +    int             (*enable)(struct clk_hw *hw);
>>>> +    void            (*disable)(struct clk_hw *hw);
>>>> +    int             (*is_enabled)(struct clk_hw *hw);
>>>> +    unsigned long   (*recalc_rate)(struct clk_hw *hw,
>>>> +                                    unsigned long parent_rate);
>>>
>>> I believe I have heard people love the interface with parent_rate
>>> passed in.  I love that too.  But I would like to ask the same thing
>>> on .round_rate and .set_rate as well for the same reason why we have
>>> it for .recalc_rate.
>>
>> In my case, for most clocks, set rate involves reparenting. So, what does
>> passing parent_rate for these even mean? Passing parent_rate seems more
>> apt for recalc_rate since it's called when the parent rate changes -- so,
>> the actual parent itself is not expected to change.
>
>  From my conversations with folks across many platforms, I think that
> the way your clock tree expects to change rates is the exception, not
> the rule.  As such you should just ignore the parent_rate parameter as
> it useless to you.
>
>> I could ignore the parameter, but just wondering how many of the others
>> see value in this. And if we do add this parameter, it shouldn't be made
>> mandatory for the platform driver to use it (due to other assumptions the
>> clock framework might make).
>
>  From my rough census of folks that actually need .set_rate support, I
> think that everyone except MSM could benefit from this.  Your concept
> of clk_set_rate is everyone else's clk_set_parent.

To clarify, MSM's set parent is a subset of steps needed to be done to 
finish set parent. So, it's not that we just randomly decided to swap 
the meanings of these two functions.

Also, I think don't think the difference in view of set_rate is due to 
the difference in the clock trees between platforms with complicated 
trees. I think it's more because of who actually decides the rates for 
the clock tree. It looks like some platforms pick a top-down approach to 
deciding the rates of the clock tre while others pick a bottom-up approach.

> Ignoring the new parameter should cause you no harm.

As long as this is guaranteed, I have no problems with Shawn's suggestion.

> It does make me
> wonder if it would be a good idea to pass in the parent rate for
> .set_parent, which is analogous to .set_rate in many ways.

I need to think a bit more about this.

-Saravana

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

  reply	other threads:[~2012-03-21  3:10 UTC|newest]

Thread overview: 242+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-16  6:11 [PATCH v7 0/3] common clk framework Mike Turquette
2012-03-16  6:11 ` Mike Turquette
2012-03-16  6:11 ` [PATCH v7 1/3] Documentation: common clk API Mike Turquette
2012-03-16  6:11   ` Mike Turquette
2012-03-16  8:25   ` Linus Walleij
2012-03-16  8:25     ` Linus Walleij
2012-03-16 10:29     ` Thomas Gleixner
2012-03-16 10:29       ` Thomas Gleixner
2012-03-16 11:14       ` Amit Kucheria
2012-03-16 11:14         ` Amit Kucheria
2012-03-16 12:18         ` Arnd Bergmann
2012-03-16 12:18           ` Arnd Bergmann
2012-03-16 20:57           ` Arnd Bergmann
2012-03-16 20:57             ` Arnd Bergmann
2012-03-16 21:40             ` Turquette, Mike
2012-03-16 21:40               ` Turquette, Mike
2012-03-16 21:50             ` Nicolas Pitre
2012-03-16 21:50               ` Nicolas Pitre
2012-03-16 22:21             ` Paul Walmsley
2012-03-16 22:21               ` Paul Walmsley
2012-03-16 22:21               ` Paul Walmsley
2012-03-16 22:33               ` Turquette, Mike
2012-03-16 22:33                 ` Turquette, Mike
     [not found]                 ` <CAJOA=zPmy7Dwzw8EOCW_+cvy2Dv=w0TPUq7Zg_s=Y0rs+v+u2w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-17  9:05                   ` Arnd Bergmann
2012-03-17  9:05                     ` Arnd Bergmann
2012-03-17  9:05                     ` Arnd Bergmann
2012-03-17 18:02                     ` Turquette, Mike
2012-03-17 18:02                       ` Turquette, Mike
2012-03-17 18:02                       ` Turquette, Mike
     [not found]                       ` <CAJOA=zNVSWR6xZEfx4hioB-Q7M6PsrP9gdvJc1t+YN=QVE=83w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-17 18:33                         ` Arnd Bergmann
2012-03-17 18:33                           ` Arnd Bergmann
2012-03-17 18:33                           ` Arnd Bergmann
2012-03-17 20:29                         ` Sascha Hauer
2012-03-17 20:29                           ` Sascha Hauer
2012-03-17 20:29                           ` Sascha Hauer
     [not found]                           ` <20120317202931.GN3852-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-03-17 21:13                             ` Arnd Bergmann
2012-03-17 21:13                               ` Arnd Bergmann
2012-03-17 21:13                               ` Arnd Bergmann
2012-03-20 23:40                     ` Paul Walmsley
2012-03-20 23:40                       ` Paul Walmsley
2012-03-21  8:59                       ` Arnd Bergmann
2012-03-21  8:59                         ` Arnd Bergmann
     [not found]               ` <alpine.DEB.2.00.1203161509470.4395-rwI8Ez+7Ko+d5PgPZx9QOdBPR1lH4CV8@public.gmane.org>
2012-03-16 23:47                 ` Sascha Hauer
2012-03-16 23:47                   ` Sascha Hauer
2012-03-16 23:47                   ` Sascha Hauer
     [not found]                   ` <20120316234706.GJ3852-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-03-17  0:54                     ` Rob Herring
2012-03-17  0:54                       ` Rob Herring
2012-03-17  0:54                       ` Rob Herring
2012-03-17  3:38                       ` Saravana Kannan
2012-03-17  3:38                         ` Saravana Kannan
2012-03-17  3:38                         ` Saravana Kannan
2012-03-20 23:31                   ` Paul Walmsley
2012-03-20 23:31                     ` Paul Walmsley
2012-03-20 23:31                     ` Paul Walmsley
2012-03-21  3:15                     ` Nicolas Pitre
2012-03-21  3:15                       ` Nicolas Pitre
2012-03-21  3:15                       ` Nicolas Pitre
2012-03-21  3:26                       ` Saravana Kannan
2012-03-21  3:26                         ` Saravana Kannan
2012-03-21  3:26                         ` Saravana Kannan
2012-03-21  7:44                         ` Paul Walmsley
2012-03-21  7:44                           ` Paul Walmsley
2012-03-21  7:44                           ` Paul Walmsley
     [not found]                           ` <alpine.DEB.2.00.1203210130520.30543-rwI8Ez+7Ko+d5PgPZx9QOdBPR1lH4CV8@public.gmane.org>
2012-03-21  9:10                             ` Sascha Hauer
2012-03-21  9:10                               ` Sascha Hauer
2012-03-21  9:10                               ` Sascha Hauer
2012-03-21 18:38                           ` Saravana Kannan
2012-03-21 18:38                             ` Saravana Kannan
2012-03-21 18:38                             ` Saravana Kannan
2012-03-21 19:07                             ` Mark Brown
2012-03-21 19:07                               ` Mark Brown
2012-03-21 19:07                               ` Mark Brown
     [not found]                               ` <20120321190741.GL3226-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-03-21 19:33                                 ` Tony Lindgren
2012-03-21 19:33                                   ` Tony Lindgren
2012-03-21 19:33                                   ` Tony Lindgren
2012-03-21 19:41                                   ` Saravana Kannan
2012-03-21 19:41                                     ` Saravana Kannan
2012-03-21 19:41                                     ` Saravana Kannan
     [not found]                                     ` <4F6A2EF5.3010008-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2012-03-21 19:56                                       ` Mark Brown
2012-03-21 19:56                                         ` Mark Brown
2012-03-21 19:56                                         ` Mark Brown
2012-03-21 20:04                                         ` Saravana Kannan
2012-03-21 20:04                                           ` Saravana Kannan
2012-03-21 20:04                                           ` Saravana Kannan
     [not found]                                           ` <4F6A3446.9020809-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2012-03-21 20:10                                             ` Mark Brown
2012-03-21 20:10                                               ` Mark Brown
2012-03-21 20:10                                               ` Mark Brown
2012-03-22  0:42                                       ` Russell King - ARM Linux
2012-03-22  0:42                                         ` Russell King - ARM Linux
2012-03-22  0:42                                         ` Russell King - ARM Linux
2012-03-21  7:30                       ` Paul Walmsley
2012-03-21  7:30                         ` Paul Walmsley
2012-03-21  7:30                         ` Paul Walmsley
     [not found]                         ` <alpine.DEB.2.00.1203210018260.30543-rwI8Ez+7Ko+d5PgPZx9QOdBPR1lH4CV8@public.gmane.org>
2012-03-21 13:23                           ` Nicolas Pitre
2012-03-21 13:23                             ` Nicolas Pitre
2012-03-21 13:23                             ` Nicolas Pitre
2012-03-16  6:11 ` [PATCH v7 2/3] clk: introduce the common clock framework Mike Turquette
2012-03-16  6:11   ` Mike Turquette
2012-03-17  3:28   ` Saravana Kannan
2012-03-17  3:28     ` Saravana Kannan
2012-03-19 18:56     ` Turquette, Mike
2012-03-19 18:56       ` Turquette, Mike
2012-03-19 19:13       ` Saravana Kannan
2012-03-19 19:13         ` Saravana Kannan
2012-03-19 19:33         ` Turquette, Mike
2012-03-19 19:33           ` Turquette, Mike
2012-03-19 19:49           ` Saravana Kannan
2012-03-19 19:49             ` Saravana Kannan
2012-03-20  3:38           ` [PATCH 1/2] clk: Fix error handling in fixed clock hardware type register fn Saravana Kannan
2012-03-20  3:38             ` Saravana Kannan
2012-03-20  3:38             ` [PATCH 2/2] clk: Move init fields from clk to clk_hw Saravana Kannan
2012-03-20  3:38               ` Saravana Kannan
2012-03-20  7:20               ` Shawn Guo
2012-03-20  7:20                 ` Shawn Guo
2012-03-20  7:54                 ` Saravana Kannan
2012-03-20  7:54                   ` Saravana Kannan
2012-03-20  7:54                   ` Saravana Kannan
2012-03-20  8:13                   ` Shawn Guo
2012-03-20  8:13                     ` Shawn Guo
2012-03-20  9:40                   ` Sascha Hauer
2012-03-20  9:40                     ` Sascha Hauer
2012-03-20 10:17                     ` Saravana Kannan
2012-03-20 10:17                       ` Saravana Kannan
2012-03-20 10:17                       ` Saravana Kannan
2012-03-20 18:14                       ` Sascha Hauer
2012-03-20 18:14                         ` Sascha Hauer
2012-03-20 20:14                         ` Saravana Kannan
2012-03-20 20:14                           ` Saravana Kannan
2012-03-20 22:40                           ` Sascha Hauer
2012-03-20 22:40                             ` Sascha Hauer
2012-03-22  3:23                             ` Shawn Guo
2012-03-22  3:23                               ` Shawn Guo
2012-03-20 14:18                     ` Shawn Guo
2012-03-20 14:18                       ` Shawn Guo
2012-03-20 18:10                       ` Sascha Hauer
2012-03-20 18:10                         ` Sascha Hauer
2012-03-20 20:06                         ` Saravana Kannan
2012-03-20 20:06                           ` Saravana Kannan
2012-03-20 23:12                           ` Sascha Hauer
2012-03-20 23:12                             ` Sascha Hauer
2012-03-21  1:47                             ` Turquette, Mike
2012-03-21  1:47                               ` Turquette, Mike
2012-03-21  3:01                               ` Saravana Kannan
2012-03-21  3:01                                 ` Saravana Kannan
2012-03-27  4:35                                 ` Saravana Kannan
2012-03-27  4:35                                   ` Saravana Kannan
2012-03-27 18:49                                   ` Turquette, Mike
2012-03-27 18:49                                     ` Turquette, Mike
2012-03-27 22:27                                     ` Saravana Kannan
2012-03-27 22:27                                       ` Saravana Kannan
2012-04-06  1:30                                     ` Saravana Kannan
2012-04-06  1:30                                       ` Saravana Kannan
2012-04-11 17:59                                       ` Turquette, Mike
2012-04-11 17:59                                         ` Turquette, Mike
2012-04-11 19:57                                         ` Saravana Kannan
2012-04-11 19:57                                           ` Saravana Kannan
2012-04-11 19:57                                           ` Saravana Kannan
2012-04-11 20:17                                           ` Turquette, Mike
2012-04-11 20:17                                             ` Turquette, Mike
2012-04-11 20:21                                             ` Saravana Kannan
2012-04-11 20:21                                               ` Saravana Kannan
2012-04-11 20:21                                               ` Saravana Kannan
2012-03-20 23:47                         ` Paul Walmsley
2012-03-20 23:47                           ` Paul Walmsley
2012-03-21  9:16                           ` Sascha Hauer
2012-03-21  9:16                             ` Sascha Hauer
2012-03-20  7:19             ` [PATCH 1/2] clk: Fix error handling in fixed clock hardware type register fn Sascha Hauer
2012-03-20  7:19               ` Sascha Hauer
2012-03-20  7:46               ` Saravana Kannan
2012-03-20  7:46                 ` Saravana Kannan
2012-03-20  7:46                 ` Saravana Kannan
2012-03-21  0:13                 ` Turquette, Mike
2012-03-21  0:13                   ` Turquette, Mike
2012-03-21  2:32                   ` Saravana Kannan
2012-03-21  2:32                     ` Saravana Kannan
2012-03-21  5:45                     ` Turquette, Mike
2012-03-21  5:45                       ` Turquette, Mike
2012-03-21  6:33                       ` Saravana Kannan
2012-03-21  6:33                         ` Saravana Kannan
2012-03-21  6:33                         ` Saravana Kannan
2012-03-21  9:07                       ` Russell King - ARM Linux
2012-03-21  9:07                         ` Russell King - ARM Linux
2012-03-21 19:56                         ` Turquette, Mike
2012-03-21 19:56                           ` Turquette, Mike
2012-03-18 13:46   ` [PATCH v7 2/3] clk: introduce the common clock framework Shawn Guo
2012-03-18 13:46     ` Shawn Guo
2012-03-19 18:58     ` Turquette, Mike
2012-03-19 18:58       ` Turquette, Mike
2012-03-18 14:07   ` Shawn Guo
2012-03-18 14:07     ` Shawn Guo
2012-03-19 19:00     ` Turquette, Mike
2012-03-19 19:00       ` Turquette, Mike
2012-03-19 11:22   ` Rajendra Nayak
2012-03-19 11:22     ` Rajendra Nayak
2012-03-19 11:28     ` Sascha Hauer
2012-03-19 11:28       ` Sascha Hauer
2012-03-19 19:09       ` Turquette, Mike
2012-03-19 19:09         ` Turquette, Mike
2012-03-19 19:53     ` Turquette, Mike
2012-03-19 19:53       ` Turquette, Mike
2012-03-20 14:02   ` Shawn Guo
2012-03-20 14:02     ` Shawn Guo
2012-03-20 17:46     ` Saravana Kannan
2012-03-20 17:46       ` Saravana Kannan
2012-03-20 23:53       ` Turquette, Mike
2012-03-20 23:53         ` Turquette, Mike
2012-03-21  3:10         ` Saravana Kannan [this message]
2012-03-21  3:10           ` Saravana Kannan
2012-03-23 21:33           ` Saravana Kannan
2012-03-23 21:33             ` Saravana Kannan
2012-03-23 21:39             ` Turquette, Mike
2012-03-23 21:39               ` Turquette, Mike
2012-03-23 21:51               ` Saravana Kannan
2012-03-23 21:51                 ` Saravana Kannan
2012-03-23 22:12               ` Saravana Kannan
2012-03-23 22:12                 ` Saravana Kannan
2012-03-23 22:32                 ` Turquette, Mike
2012-03-23 22:32                   ` Turquette, Mike
2012-03-23 23:04                   ` Saravana Kannan
2012-03-23 23:04                     ` Saravana Kannan
2012-03-23 23:28                     ` Turquette, Mike
2012-03-23 23:28                       ` Turquette, Mike
2012-03-28  3:06                       ` Saravana Kannan
2012-03-28  3:06                         ` Saravana Kannan
2012-03-28 17:08                         ` Turquette, Mike
2012-03-28 17:08                           ` Turquette, Mike
2012-03-28 22:25                           ` Saravana Kannan
2012-03-28 22:25                             ` Saravana Kannan
2012-03-28 23:49                             ` Turquette, Mike
2012-03-28 23:49                               ` Turquette, Mike
2012-03-20 23:46     ` Turquette, Mike
2012-03-20 23:46       ` Turquette, Mike
2012-03-21  5:46       ` Shawn Guo
2012-03-21  5:46         ` Shawn Guo
2012-03-16  6:11 ` [PATCH v7 3/3] clk: basic clock hardware types Mike Turquette
2012-03-16  6:11   ` Mike Turquette
2012-03-16 12:25   ` Richard Zhao
2012-03-16 12:25     ` Richard Zhao
2012-03-16 16:51     ` Turquette, Mike
2012-03-16 16:51       ` Turquette, Mike
2012-03-16 10:57 ` [PATCH v7 0/3] common clk framework Sascha Hauer
2012-03-16 10:57   ` Sascha Hauer

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=4F6946AA.4070201@codeaurora.org \
    --to=skannan@codeaurora.org \
    --cc=linux-arm-kernel@lists.infradead.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 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.