From: "Cousson, Benoit" <b-cousson@ti.com>
To: "Basak, Partha" <p-basak2@ti.com>
Cc: "ABRAHAM, KISHON VIJAY" <kishon@ti.com>,
Paul Walmsley <paul@pwsan.com>,
Kevin Hilman <khilman@deeprootsystems.com>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
"Kamat, Nishant" <nskamat@ti.com>,
"Varadarajan, Charulatha" <charu@ti.com>,
"Datta, Shubhrajyoti" <shubhrajyoti@ti.com>,
"ext-eero.nurkkala@nokia.com" <ext-eero.nurkkala@nokia.com>,
"eduardo.valentin@nokia.com" <eduardo.valentin@nokia.com>,
"Govindraj.R" <govindraj.raja@ti.com>
Subject: Re: [PATCH 6/7] [RFC] OMAP: hwmod: SYSCONFIG register modification for MCBSP
Date: Wed, 1 Dec 2010 12:15:38 +0100 [thread overview]
Message-ID: <4CF62E5A.2080004@ti.com> (raw)
In-Reply-To: <B85A65D85D7EB246BE421B3FB0FBB5930247AFD66A@dbde02.ent.ti.com>
+ Govindraj
Hi Partha,
On 12/1/2010 8:14 AM, Basak, Partha wrote:
>
>> From: Cousson, Benoit
>> Sent: Tuesday, November 30, 2010 9:33 PM
>>
>> Hi Kishon,
>>
>> Sorry, for the delay.
>>
>> On 11/22/2010 4:59 PM, ABRAHAM, KISHON VIJAY wrote:
>>> Resending the mail in plain text format..
>>>
>>> On Mon, Nov 22, 2010 at 9:20 PM, ABRAHAM, KISHON VIJAY<kishon@ti.com>
>> wrote:
>>>>
>>>> On Mon, Oct 11, 2010 at 11:48 AM, ABRAHAM, KISHON
>> VIJAY<kishon@ti.com> wrote:
>>>>>
>>>>> On Friday 08 October 2010 01:12 PM, Cousson, Benoit wrote:
>>>>>> Hi Kishon,
>>>>>>
>>>>>> On 10/5/2010 6:37 PM, ABRAHAM, KISHON VIJAY wrote:
>>>>>>> MCBSP 2 and 3 in OMAP3 has sidetone feature which requires
>>>>>>> autoidle to be disabled before starting the sidetone. Also
>> SYSCONFIG
>>>>>>> register has to be set with smart idle or no idle depending on
>> the
>>>>>>> dma op mode (threshold or element sync). For doing these
>> operations
>>>>>>> dynamically at runtime, hwmod API'S are used to modify SYSCONFIG
>>>>> register
>>>>>>> directly.
>>>>>>
>>>>>> OK, it looks like we don't have the choice... But for the
>>>>>> implementation, please discussed with Manju on that, He is doing
>> the
>>>>>> similar thing for the smartstandby issue on SDMA.
>>>>>
>>>>> OK.
>>>>
>>>>
>>>> Looks like we have a problem when we write an API similar to
>> the one written
>>>> by Manju (omap_hwmod_set_master_standbymode()) [1]. In the
>> case of McBSP,
>>>> I have to modify omap_hwmod_set_slave_idlemode() (which is
>> already existing),
>>>> to include something like
>>>>
>>>> + if (sf& SYSC_HAS_SIDLEMODE) {
>>>> + if (idlemode)
>>>> + idlemode = HWMOD_IDLEMODE_NO;
>>>> + else
>>>> + idlemode = (oh->flags&
>> HWMOD_SWSUP_SIDLE) ?
>>>> + HWMOD_IDLEMODE_NO :
>> HWMOD_IDLEMODE_SMART;
>>>> + }
>>
>> How to you enable HWMOD_IDLEMODE_FORCE mode in that case?
>>
>>>> Then an API like omap_device_require_no_idle() and
>> omap_device_release_no_idle()
>>>> would be written similar to omap_device_require_no_mstandby
>> and
>>>> omap_device_release_no_mstandby() (see [1]) that calls
>>>> omap_hwmod_set_slave_idlemode() with true/false. Passing true
>> to
>>>> omap_hwmod_set_slave_idlemode() will write SIDLE bits with
>>>> HWMOD_IDLEMODE_NO and false to it will write
>>>> HWMOD_IDLEMODE_NO/HWMOD_IDLEMODE_SMART depending on
>>>> HWMOD_SWSUP_SIDLE to SIDLE bits.
>>>>
>>>> This works fine for McBSP since only two modes come to play
>> here
>>>> (HWMOD_IDLEMODE_NO/HWMOD_IDLEMODE_SMART).
>>>>
>>>> But omap_hwmod_set_slave_idlemode() API is used by UART
>>>> (serial.c Please refer [2]) which writes SIDLE bits to
>>>> HWMOD_IDLEMODE_NO/HWMOD_IDLEMODE_SMART/ and
>>>> HWMOD_IDLEMODE_FORCE.
>>
>> That code should not be there. It was a temporary hacks that should be
>> replaced eventually with a clean omap_device API like the one you are
>> currently implementing.
>> There are a bunch of direct access to omap_hwmod struct that need to be
>> removed as well.
>>
>>>> Modifying omap_hwmod_set_slave_idlemode() will require
>>>> 1) serial.c to be modified to call functions like
>> 'omap_device_require_no_idle(),
>>>> omap_device_release_no_idle()' and
>> 'omap_device_require_force_idle() and
>>>> omap_device_release_force_idle()' instead of
>>>> omap_hwmod_set_slave_idlemode() which is currently
>> present.
>>
>> Yep, you're right.
>>
>>>>
>>>> There are 2 problems associated with it
>>>> 1) The first problem is having a single API like
>> omap_hwmod_set_slave_idlemode() to
>>>> set two different values like HWMOD_IDLEMODE_NO or
>>>> HWMOD_IDLEMODE_FORCE (intended to be called by
>> omap_device_require_no_idle()
>>>> and omap_device_require_force_idle() respectively).
>> According to the new design
>>>> omap_hwmod_set_slave_idlemode() is intended to take only
>> true/false as
>>>> arguments.
>>>>
>>>> 2) The second problem is having the release API's
>> (omap_device_release_no_idle() and
>>>> omap_device_release_force_idle()) to restore the
>> SYSCONFIG to the previous state.
>>>> Remember, this was not problem for McBSP since only two
>> modes were needed.
>>
>> And what about 3 APIs?
>>
>> omap_device_force_idle
>> omap_device_no_idle
>> omap_device_smart_idle
>
> Want to reiterate Paul Walmsley's comments on Manju's DMA email dated 11/11/2010
> <snip>
> 2. Rather than just using a single omap_device_mstandby() function call,
> I'd rather see something like omap_device_require_no_standby() and
> omap_device_release_no_standby(). omap_device_require_no_standby() would
> force the initiator port into no-standby.
> omap_device_release_no_standby() would return the initiator port
> MSTANDBYMODE to whatever the state should be (this depends on whether
> HWMOD_SWSUP_MSTDBY is set). I'd rather not have the drivers manage the
> contents of the MSTANDBYMODE bits directly. Then you should be able to
> drop _get_master_standbymode() and omap_hwmod_get_master_idlemode() also.
> Can you please make these changes?
> <snip>
>
> The key point is, in the absence of any special situation like errata etc, the IdleMode settings should
> be dicated solely by the hwmod flags. We should have a mechanism though to supersede this setting& request
> /release customized settings to handle errata etc.
>
> So, it makes sense to have request/release API pairs. In this case,
> omap_device_request_no_idle()& omap_device_release_no_idle().
>
> omap_hwmod_set_slave_idlemode should continue to take absolute values instead of true/false to support
> all possible settings of IdleMode.
Mmm, and how that email is helping to progress in the discussion?
The issue is not really for the mcbsp but for the serial that need to
handle the 3 different states.
if (enable) {
/**
* Errata 2.15: [UART]:Cannot Acknowledge Idle Requests
* in Smartidle Mode When Configured for DMA Operations.
*/
if (uart->dma_enabled)
idlemode = HWMOD_IDLEMODE_FORCE;
else
idlemode = HWMOD_IDLEMODE_SMART;
} else {
idlemode = HWMOD_IDLEMODE_NO;
}
You do need to explicitly set the 3 modes, hence the following 3 APIs:
omap_device_force_idle
omap_device_no_idle
omap_device_smart_idle
You can potentially add another API to restore the default idle mode:
omap_device_default_idle
That seems much simpler than 3 pairs of APIs.
Regards,
Benoit
next prev parent reply other threads:[~2010-12-01 11:15 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-05 16:37 [PATCH 1/7] [RFC] OMAP: MCBSP: hwmod database for 2xxx devices Kishon Vijay Abraham I
2010-10-05 16:37 ` [PATCH 2/7] [RFC] OMAP: MCBSP: hwmod database for 3xxx devices Kishon Vijay Abraham I
2010-10-05 16:37 ` [PATCH 3/7] [RFC] OMAP: MCBSP: hwmod database for 4xxx devices Kishon Vijay Abraham I
2010-10-06 9:20 ` Cousson, Benoit
2010-10-06 9:51 ` kishon
2010-10-05 16:37 ` [PATCH 4/7] [RFC] OMAP: hwmod implementation for MCBSP Kishon Vijay Abraham I
2010-10-06 6:01 ` Peter Ujfalusi
2010-10-06 6:12 ` Varadarajan, Charulatha
2010-10-06 6:58 ` Peter Ujfalusi
2010-10-06 7:06 ` Varadarajan, Charulatha
2010-10-06 9:34 ` Cousson, Benoit
2010-10-06 10:39 ` kishon
2010-10-07 16:53 ` kishon
2010-10-05 16:37 ` [PATCH 5/7] [RFC] OMAP: hwmod: New API to modify the autoidle bit of sysconfig register Kishon Vijay Abraham I
2010-10-05 16:37 ` [PATCH 6/7] [RFC] OMAP: hwmod: SYSCONFIG register modification for MCBSP Kishon Vijay Abraham I
2010-10-08 7:42 ` Cousson, Benoit
2010-10-11 6:18 ` kishon
[not found] ` <AANLkTi=a80MLvj5YuC==evfGqY6xUToHcBU3TyWEBHAo@mail.gmail.com>
2010-11-22 15:59 ` ABRAHAM, KISHON VIJAY
2010-11-30 16:03 ` Cousson, Benoit
2010-12-01 7:14 ` Basak, Partha
2010-12-01 11:15 ` Cousson, Benoit [this message]
2010-12-01 12:05 ` Govindraj
2010-12-02 10:54 ` Kevin Hilman
2010-12-07 13:15 ` Basak, Partha
2010-10-05 16:37 ` [PATCH 7/7] [RFC] OMAP: pm_runtime support " Kishon Vijay Abraham I
2010-10-06 7:01 ` [PATCH 1/7] [RFC] OMAP: MCBSP: hwmod database for 2xxx devices Varadarajan, Charulatha
2010-10-06 7:17 ` Peter Ujfalusi
2010-10-08 6:20 ` Varadarajan, Charulatha
2010-10-08 7:22 ` Cousson, Benoit
2010-10-12 9:33 ` kishon
2010-10-13 8:31 ` Peter Ujfalusi
2010-10-14 14:51 ` Varadarajan, Charulatha
2010-10-15 6:51 ` Jarkko Nikula
2010-10-15 14:24 ` Mark Brown
2010-10-15 7:13 ` Peter Ujfalusi
2010-10-06 10:32 ` kishon
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=4CF62E5A.2080004@ti.com \
--to=b-cousson@ti.com \
--cc=charu@ti.com \
--cc=eduardo.valentin@nokia.com \
--cc=ext-eero.nurkkala@nokia.com \
--cc=govindraj.raja@ti.com \
--cc=khilman@deeprootsystems.com \
--cc=kishon@ti.com \
--cc=linux-omap@vger.kernel.org \
--cc=nskamat@ti.com \
--cc=p-basak2@ti.com \
--cc=paul@pwsan.com \
--cc=shubhrajyoti@ti.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.