From: m-karicheri2@ti.com (Murali Karicheri)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 02/11] clk: davinci - add PSC clock driver
Date: Tue, 27 Nov 2012 15:38:21 -0500 [thread overview]
Message-ID: <50B524BD.7060403@ti.com> (raw)
In-Reply-To: <20121127172900.21126.89528@nucleus>
On 11/27/2012 12:29 PM, Mike Turquette wrote:
> Quoting Sekhar Nori (2012-11-27 07:05:21)
>> Hi Mike,
>>
>> On 11/10/2012 7:52 AM, Mike Turquette wrote:
>>> Quoting Murali Karicheri (2012-11-05 07:10:52)
>>>> On 11/03/2012 08:07 AM, Sekhar Nori wrote:
>>>>> On 10/25/2012 9:41 PM, Murali Karicheri wrote:
>>>>>> This is the driver for the Power Sleep Controller (PSC) hardware
>>>>>> found on DM SoCs as well Keystone SoCs (c6x). This driver borrowed
>>>>>> code from arch/arm/mach-davinci/psc.c and implemented the driver
>>>>>> as per common clock provider API. The PSC module is responsible for
>>>>>> enabling/disabling the Power Domain and Clock domain for different IPs
>>>>>> present in the SoC. The driver is configured through the clock data
>>>>>> passed to the driver through struct clk_psc_data.
>>>>>>
>>>>>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>>>>> ---
>>>>>> +/**
>>>>>> + * struct clk_psc - DaVinci PSC clock driver data
>>>>>> + *
>>>>>> + * @hw: clk_hw for the psc
>>>>>> + * @psc_data: Driver specific data
>>>>>> + */
>>>>>> +struct clk_psc {
>>>>>> + struct clk_hw hw;
>>>>>> + struct clk_psc_data *psc_data;
>>>>>> + spinlock_t *lock;
>>>>> Unused member? I don't see this being used.
>>>> OK. Will remove.
>>> Those locks are only used for the case where a register might contain
>>> bits for several clocks. Thus RMW operations are protected. On OMAP
>>> this isn't necessary due to a very generous register layout (typically
>>> one 32-bit reg per module) controlling clocks. Seems tha tmaybe this is
>>> not needed for PSC module either?
>> Sorry about the late reply. The above is not totally true for PSC. There
>> are some registers (like PTCMD) which are common for all clocks.
>>
>> There is an enable_lock used in drivers/clk/clk.c which serializes all
>> enable/disable calls across the clock tree. Since that is done, further
>> locking at clk-psc level is not really needed, no?
>>
> I haven't finished looking through the PSC design document yet, but my
> answer to your question is this:
>
> If a register is only used for clk_enable/disable calls (not touched by
> anything held under the prepare_lock mutex) and if that register isn't
> used anywhere else in the code (outside of the clk framework) then yes,
> the enable_lock spinlock is enough for you.
The psc clocks share registers such as PTCMD in addition to the clock
specific register. So if there are multiple concurrent paths to
clk_enable()/clk_disable() possible, then PTCMD write is not protected
through the main enable()/disable() lock. Now I am not sure if there are
multiple concurrent paths possible such as invoking the API in the
context of a user process, kernel thread etc. If this is a possibility
then IMO, a lock is needed.
Murali
> Also have you looked into regmap? Since you are defining your own clock
> type that might be something nice for you.
>
> Regards,
> Mike
>
>> Thanks,
>> Sekhar
>
WARNING: multiple messages have this Message-ID (diff)
From: Murali Karicheri <m-karicheri2@ti.com>
To: Mike Turquette <mturquette@linaro.org>
Cc: Sekhar Nori <nsekhar@ti.com>, <arnd@arndb.de>,
<akpm@linux-foundation.org>, <shawn.guo@linaro.org>,
<rob.herring@calxeda.com>, <linus.walleij@linaro.org>,
<viresh.linux@gmail.com>, <linux-kernel@vger.kernel.org>,
<khilman@ti.com>, <linux@arm.linux.org.uk>,
<sshtylyov@mvista.com>,
<davinci-linux-open-source@linux.davincidsp.com>,
<linux-arm-kernel@lists.infradead.org>,
<linux-keystone@list.ti.com>
Subject: Re: [PATCH v3 02/11] clk: davinci - add PSC clock driver
Date: Tue, 27 Nov 2012 15:38:21 -0500 [thread overview]
Message-ID: <50B524BD.7060403@ti.com> (raw)
In-Reply-To: <20121127172900.21126.89528@nucleus>
On 11/27/2012 12:29 PM, Mike Turquette wrote:
> Quoting Sekhar Nori (2012-11-27 07:05:21)
>> Hi Mike,
>>
>> On 11/10/2012 7:52 AM, Mike Turquette wrote:
>>> Quoting Murali Karicheri (2012-11-05 07:10:52)
>>>> On 11/03/2012 08:07 AM, Sekhar Nori wrote:
>>>>> On 10/25/2012 9:41 PM, Murali Karicheri wrote:
>>>>>> This is the driver for the Power Sleep Controller (PSC) hardware
>>>>>> found on DM SoCs as well Keystone SoCs (c6x). This driver borrowed
>>>>>> code from arch/arm/mach-davinci/psc.c and implemented the driver
>>>>>> as per common clock provider API. The PSC module is responsible for
>>>>>> enabling/disabling the Power Domain and Clock domain for different IPs
>>>>>> present in the SoC. The driver is configured through the clock data
>>>>>> passed to the driver through struct clk_psc_data.
>>>>>>
>>>>>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>>>>> ---
>>>>>> +/**
>>>>>> + * struct clk_psc - DaVinci PSC clock driver data
>>>>>> + *
>>>>>> + * @hw: clk_hw for the psc
>>>>>> + * @psc_data: Driver specific data
>>>>>> + */
>>>>>> +struct clk_psc {
>>>>>> + struct clk_hw hw;
>>>>>> + struct clk_psc_data *psc_data;
>>>>>> + spinlock_t *lock;
>>>>> Unused member? I don't see this being used.
>>>> OK. Will remove.
>>> Those locks are only used for the case where a register might contain
>>> bits for several clocks. Thus RMW operations are protected. On OMAP
>>> this isn't necessary due to a very generous register layout (typically
>>> one 32-bit reg per module) controlling clocks. Seems tha tmaybe this is
>>> not needed for PSC module either?
>> Sorry about the late reply. The above is not totally true for PSC. There
>> are some registers (like PTCMD) which are common for all clocks.
>>
>> There is an enable_lock used in drivers/clk/clk.c which serializes all
>> enable/disable calls across the clock tree. Since that is done, further
>> locking at clk-psc level is not really needed, no?
>>
> I haven't finished looking through the PSC design document yet, but my
> answer to your question is this:
>
> If a register is only used for clk_enable/disable calls (not touched by
> anything held under the prepare_lock mutex) and if that register isn't
> used anywhere else in the code (outside of the clk framework) then yes,
> the enable_lock spinlock is enough for you.
The psc clocks share registers such as PTCMD in addition to the clock
specific register. So if there are multiple concurrent paths to
clk_enable()/clk_disable() possible, then PTCMD write is not protected
through the main enable()/disable() lock. Now I am not sure if there are
multiple concurrent paths possible such as invoking the API in the
context of a user process, kernel thread etc. If this is a possibility
then IMO, a lock is needed.
Murali
> Also have you looked into regmap? Since you are defining your own clock
> type that might be something nice for you.
>
> Regards,
> Mike
>
>> Thanks,
>> Sekhar
>
next prev parent reply other threads:[~2012-11-27 20:38 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-25 16:11 [PATCH v3 00/11] common clk drivers migration for DaVinci SoCs Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-10-25 16:11 ` [PATCH v3 01/11] clk: davinci - add main PLL clock driver Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-10-28 19:18 ` Linus Walleij
2012-10-28 19:18 ` Linus Walleij
2012-10-31 13:23 ` Murali Karicheri
2012-10-31 13:23 ` Murali Karicheri
2012-10-31 12:29 ` Sekhar Nori
2012-10-31 12:29 ` Sekhar Nori
2012-10-31 13:46 ` Murali Karicheri
2012-10-31 13:46 ` Murali Karicheri
2012-11-01 11:01 ` Sekhar Nori
2012-11-01 11:01 ` Sekhar Nori
2012-10-25 16:11 ` [PATCH v3 02/11] clk: davinci - add PSC " Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-10-28 19:24 ` Linus Walleij
2012-10-28 19:24 ` Linus Walleij
2012-10-31 13:23 ` Murali Karicheri
2012-10-31 13:23 ` Murali Karicheri
2013-03-19 10:57 ` Sekhar Nori
2013-03-19 10:57 ` Sekhar Nori
2012-11-03 12:07 ` Sekhar Nori
2012-11-03 12:07 ` Sekhar Nori
2012-11-05 15:10 ` Murali Karicheri
2012-11-05 15:10 ` Murali Karicheri
2012-11-10 2:22 ` Mike Turquette
2012-11-10 2:22 ` Mike Turquette
2012-11-27 15:05 ` Sekhar Nori
2012-11-27 15:05 ` Sekhar Nori
2012-11-27 17:29 ` Mike Turquette
2012-11-27 20:38 ` Murali Karicheri [this message]
2012-11-27 20:38 ` Murali Karicheri
2012-11-28 13:22 ` Sekhar Nori
2012-11-28 13:22 ` Sekhar Nori
2013-03-22 11:20 ` Sekhar Nori
2013-03-22 11:20 ` Sekhar Nori
2013-03-22 20:37 ` Mike Turquette
2013-03-22 20:37 ` Mike Turquette
2013-03-25 6:50 ` Sekhar Nori
2013-03-25 6:50 ` Sekhar Nori
2012-10-25 16:11 ` [PATCH v3 03/11] clk: davinci - common clk utilities to init clk driver Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-10-28 19:25 ` Linus Walleij
2012-10-28 19:25 ` Linus Walleij
2012-10-31 13:23 ` Murali Karicheri
2012-10-31 13:23 ` Murali Karicheri
2012-11-01 12:41 ` Sekhar Nori
2012-11-01 12:41 ` Sekhar Nori
2012-11-01 18:34 ` Murali Karicheri
2012-11-01 18:34 ` Murali Karicheri
2012-11-03 12:35 ` Sekhar Nori
2012-11-03 12:35 ` Sekhar Nori
2012-11-05 15:20 ` Murali Karicheri
2012-11-05 15:20 ` Murali Karicheri
2012-11-06 9:31 ` Sekhar Nori
2012-11-06 9:31 ` Sekhar Nori
2012-11-06 15:04 ` Murali Karicheri
2012-11-06 15:04 ` Murali Karicheri
2012-10-25 16:11 ` [PATCH v3 04/11] clk: davinci - add pll divider clock driver Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-10-28 19:26 ` Linus Walleij
2012-10-28 19:26 ` Linus Walleij
2012-10-31 13:22 ` Murali Karicheri
2012-10-31 13:22 ` Murali Karicheri
2012-11-02 11:33 ` Sekhar Nori
2012-11-02 11:33 ` Sekhar Nori
2012-11-02 13:53 ` Murali Karicheri
2012-11-02 13:53 ` Murali Karicheri
2012-11-03 12:03 ` Sekhar Nori
2012-11-03 12:03 ` Sekhar Nori
2012-11-05 15:10 ` Murali Karicheri
2012-11-05 15:10 ` Murali Karicheri
2012-10-25 16:11 ` [PATCH v3 05/11] clk: davinci - add dm644x clock initialization Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-11-03 13:30 ` Sekhar Nori
2012-11-03 13:30 ` Sekhar Nori
2012-11-05 15:42 ` Murali Karicheri
2012-11-05 15:42 ` Murali Karicheri
2012-11-06 10:18 ` Sekhar Nori
2012-11-06 10:18 ` Sekhar Nori
2012-11-05 23:23 ` Murali Karicheri
2012-11-05 23:23 ` Murali Karicheri
2012-11-06 9:40 ` Sekhar Nori
2012-11-06 9:40 ` Sekhar Nori
2012-10-25 16:11 ` [PATCH v3 06/11] clk: davinci - add build infrastructure for DaVinci clock drivers Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-11-04 13:34 ` Sekhar Nori
2012-11-04 13:34 ` Sekhar Nori
2012-11-05 16:17 ` Murali Karicheri
2012-11-05 16:17 ` Murali Karicheri
2012-11-06 9:48 ` Sekhar Nori
2012-11-06 9:48 ` Sekhar Nori
2012-10-25 16:11 ` [PATCH v3 07/11] ARM: davinci - restructure header files for common clock migration Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-11-04 14:05 ` Sekhar Nori
2012-11-04 14:05 ` Sekhar Nori
2012-11-05 19:11 ` Murali Karicheri
2012-11-05 19:11 ` Murali Karicheri
2012-11-06 10:03 ` Sekhar Nori
2012-11-06 10:03 ` Sekhar Nori
2012-11-05 21:57 ` Murali Karicheri
2012-11-05 21:57 ` Murali Karicheri
2012-12-03 13:23 ` Sekhar Nori
2012-12-03 13:23 ` Sekhar Nori
2012-10-25 16:11 ` [PATCH v3 08/11] ARM: davinci - migrating to use common clock init code Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-10-25 16:11 ` [PATCH v3 09/11] ARM: davinci - dm644x: update SoC code to remove the clock data Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-10-25 16:11 ` [PATCH v3 10/11] ARM: davinci - migrate to common clock Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-11-04 13:06 ` Sekhar Nori
2012-11-04 13:06 ` Sekhar Nori
2012-11-05 15:43 ` Murali Karicheri
2012-11-05 15:43 ` Murali Karicheri
2012-10-25 16:11 ` [PATCH v3 11/11] ARM: davinci - common clock migration: clean up the old code Murali Karicheri
2012-10-25 16:11 ` Murali Karicheri
2012-10-30 17:00 ` [PATCH v3 00/11] common clk drivers migration for DaVinci SoCs Karicheri, Muralidharan
2012-10-30 17:00 ` Karicheri, Muralidharan
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=50B524BD.7060403@ti.com \
--to=m-karicheri2@ti.com \
--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.