>>-----Original Message-----
>>From: linux-omap-ow...@vger.kernel.org 
>>[mailto:linux-omap-ow...@vger.kernel.org] On Behalf Of Mike
>>Chan
>>Sent: Tuesday, June 08, 2010 1:00 AM
>>To: Gadiyar, Anand
>>Cc: Kevin Hilman; linux-omap@vger.kernel.org; Paul Walmsley
>>Subject: Re: Future of resource framework?
>>
>>On Thu, Jun 3, 2010 at 8:01 PM, Gadiyar, Anand <gadi...@ti.com> wrote:
>>> Kevin Hilman wrote:
>>>> Mike Chan <m...@android.com> writes:
>>>>
>>>> > On Fri, May 21, 2010 at 9:47 AM, Kevin Hilman
>>>> > <khil...@deeprootsystems.com> wrote:
>>>> >> Mike Chan <m...@android.com> writes:
>>>> >>
>>>> >>> I'm not sure if this has been discussed, yet but since it seems that
>>>> >>> the resource framework will not be making it upstream, I am curious
>>>> >>> what are the replacements under consideration. I am starting to see
>>>> >>> similar issues on other platforms (msm / tegra) so more generic
>>>> >>> (non-omap) solution might be something to consider.
>>>> >>
>>>> >> Hi Mike,
>>>> >>
>>>> >> Which parts of the SRF do you currently use and find useful?  It would
>>>> >> be helpful for us to to understand the parts you see as useful and
>>>> >> potentially helpful to generalize.
>>>> >>
>>>> >
>>>> > Off the top of my head, for Droid specifically, OPP values are useful,
>>>> > although in theory if you changed OPP requests to cpu throughput that
>>>> > might give the equivalent functionality.
>>>> >
>>>> > Memory bus speeds / bandwidth, although its tied to CPU, which
>>>> > ultimately ends up in a cpu speed bump.
>>>> >
>>>> > Although most of the usage I've seen are just hacks, ie: the driver
>>>> > knows it needs 550mhz from the cpu so it will request some bogus
>>>> > value.
>>>> >
>>>> >
>>>> >> As you know, the current implementation has a several layers
>>>> >> and attempts to manage several things: OPPs, latencies etc.
>>>> >>
>>>> >> Our current plans are essentially to break up the "one framework to
>>>> >> rule them all" philosophy and design of SRF and manage the various
>>>> >> pieces by exending other layers such as the new OPP layer and voltage
>>>> >> layers.  Latencies are being managed by the omap_device layer and we
>>>> >> will hopefully have some discussions with the broader linux-pm
>>>> >> community about generalizing that more into the generic driver model
>>>> >> over this year.
>>>> >>
>>>> >
>>>> > Bus speed is a common resource I see for omap / msm / tegra. Clocks
>>>> > for devices also.
>>>> >
>>>> > ie: If I'm doing heavy mem operation and need max memory bus, I might
>>>> > need to request higher performance. (which might mean 600mhz on
>>>> > omap34030, on msm it might mean AXI clock running at 128mhz, and
>>>> > something else on tegra).
>>>> >
>>>> > Or if I'm doing graphics, I may need to up the gfx clock rate, or
>>>> > swich which pll its sourcing etc.. etc..
>>>> >
>>>> > It doesn't look like pm qos has bus support, or even clock support,
>>>> > and this gets tricky if you want something semi-general.
>>>>
>>>> What we're hoping to work towards (and has come up in the suspend
>>>> blocker related discussions) is moving towards a way to track
>>>> per-device (or per-subsystem) constraints like latency and throughput
>>>> in real world terms (usecs, bytes/sec, etc.) that would be general
>>>> way.
>>>>
>>>> These constraints would then be visible to the bus- or
>>>> platform-specific code that could make intelligent decisions with them
>>>> (i.e whether or not to raise/lower OPP or bus speed, or whether or not
>>>> to power down a powerdomain etc.)
>>>>
>>>
>>>
>>> What if a driver knows that it cannot afford to let the PM layer
>>> turn off the power domain at certain points of time (maybe as long
>>> as a USB cable is connected). How can this be specified in terms
>>> of a latency or throughput constraint?
>>>
>>
>>Are there cases for this in omap? From what I've seen with omap3430
>>(atleast our hw configuration for Droid) we haven't run into this
>>case.
>>
>>If you want to prevent a particular domain from entering RET or OFF, I
>>believe you'd have to look at the latency values in the cpuidle34xx.c
>>(or whatever it maybe called in .35) and match those latency in your
>>driver against the PM_QOS_CPU_DMA_LATENCY. The omap cpuidle registers
>>a table of various cpu states, which are a combination of ON, RET and
>>OFF for various domains. (Note only handles a few domains so maybe you
>>need to extend the table or rev a new constraint type or something to
>>pm_qos).
>>
>>It seems kind of hacky and not very general, but I've only seen a need
>>for something like this on msm7k / msm8k, and the need was an msm
>>specific driver and have not yet seen a need for this on omap[3403] or
>>tegra but things could change.

PM_QOS takes care of interrupt and dma latencies which today in OMAP boils down
to MPU and Core power domain states. But this will not take care of other 
individual
power domains. For preventing other power domains from entering low power 
states,
there are power domain constraint in the SRF which again takes latencies and 
converts
them into power domain states.

But, yes if you want to prevent power domains from entering low power states for
Non-latency reasons like hw bug etc there is no clean solution. You ll have to
have a hack and use a dummy latency value and achieve the same.

Regards
Thara

>>
>>-- Mike
>>
>>> Just curious, since I don't understand current OMAP3 PM code
>>> as well as I would like to.
>>>
>>> - Anand
>>>
>>--
>>To unsubscribe from this list: send the line "unsubscribe linux-omap" in
>>the body of a message to majord...@vger.kernel.org
>>More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to