All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nishanth Menon <nm@ti.com>
To: "Premi, Sanjeev" <premi@ti.com>
Cc: "Cousson, Benoit" <b-cousson@ti.com>,
	Kevin H <khilman@deeprootsystems.com>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>
Subject: Re: Question on OPP table handling
Date: Tue, 6 Oct 2009 06:44:45 -0500	[thread overview]
Message-ID: <4ACB2DAD.1090200@ti.com> (raw)
In-Reply-To: <B85A65D85D7EB246BE421B3FB0FBB59301DDC09146@dbde02.ent.ti.com>

Premi, Sanjeev had written, on 10/06/2009 03:52 AM, the following:
>>>>>>> +	{0, 0, 0},
>>>>>>> +	/*OPP1*/
>>>>>>> +	{S125M, VDD1_OPP1, 0x1E},
>>>>>>> +	/*OPP2*/
>>>>>>> +	{S250M, VDD1_OPP2, 0x26},
>>>>>>> +	/*OPP3*/
>>>>>>> +	{S500M, VDD1_OPP3, 0x30},
>>>>>>> +	/*OPP4*/
>>>>>>> +	{S550M, VDD1_OPP4, 0x36},
>>>>>>> +	/*OPP5*/
>>>>>>> +	{S600M, VDD1_OPP5, 0x3C},
>>>>>>> +};
>>>>>>>
>>>>>> For those involved,
>>>>>> if we wanted to convert omap3_mpu_table[] into
>>>>>> *omap3_mpu_table so that
>>>>>> we dynamically initialize it based on cpu type - what 
>> would be the
>>>>>> recommendations?
>>>>> Nishanth,
>>>>>
>>>>> Good idea!
>>>>>
>>>>> As a table, previous patch enables it (not as intent, but due to
>>> syntax):
>>>>>   >  +/* struct omap_opp_table - View OPP table as an object
>>>>>   > + * @min: Minimum OPP id
>>>>>   > + * @max: Maximim OPP id
>>>>>   > + * @opps: Pointer to array defining the OPPs.
>>>>>   > + *
>>>>>   > + * An OPP table has varied length. Knowing minimum 
>> and maximum
>>>>>   > + * OPP ids allow easy traversal.
>>>>>   > + */
>>>>>   > +struct omap_opp_table {
>>>>>   > +       u8      min;
>>>>>   > +       u8      max;
>>>>>   > +       struct omap_opp* opps;
>>>>>   > +};
>>>>>
>>>>> But now, I think it would be good to have an API that can fill an
>>> opp_table:
>>>>> int add_opp_definition(u8 id, u32 freq, u16 vsel);
>>>>>
>>>>> ...and, if an array is preferred, length can be set as:
>>>>> int set_opp_table_length (u8 max);
>>>> I'm all for dynamic OPP setting, but not as an array.  A 
>> list should
>>>> probably be used.
>>> Won't a list implementation cause more than necessary 
>> overhead? I agree
>>> that something like set_opp_table_length probably might be 
>> redundant in
>>> that case.
>> I'm aligned with Nishanth. I think a static table with the 
>> possibility to disable some entry is good enough to deal with 
>> most of the OPPs we have on OMAP3 and we will have to handle on OMAP4.
>>
>> OPPs are defined during silicon characterization, and should 
>> not be changed dynamically (in theory).
> 
> [sp] The intent of 'dynamic' is not with respect to changing the
>      OPPs but manitaining OPPs in an array or a list.
> 
>      This is to take care of possibility that an OPP is not
>      applicable for specific devices. E.g. OPP5 was earlier
>      considered 'overdrive'; and the code had a small 'hack'
>      to prevent this OPP being used during cpufreq.
> 
>      Marking the OPP 'disabled/invalid' in the table would have
>      been a better solution.
> 
>      In a 'list' implementation, the node corresponding to such
>      OPPs can be removed from the 'active' list.

Couple of opinions on why a list with disabled/invalid marker might not 
make sense as a grand unified OPP table:
a) it is no better than a list implementation
b) it is a waste of memory.
c) search Algo overheads

Recommendation a.k.a hybrid approach:
* Each silicon has it's own static OPP table
* Each table has a invalid marker which is disabled for silicon variants 
which dont need specific OPPs
* OPPs table be stored in a hash table a.k.a how do we optimize search 
for OPP params?

-- 
Regards,
Nishanth Menon

  reply	other threads:[~2009-10-06 11:45 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-01 18:03 [PATCHv2 1/1] OMAP3: PM: Functions to get freq from opp and vice-versa Sanjeev Premi
2009-10-03 15:04 ` Question on OPP table handling Nishanth Menon
2009-10-05 13:09   ` Premi, Sanjeev
2009-10-05 16:56     ` Kevin Hilman
2009-10-05 17:19       ` Nishanth Menon
2009-10-06  8:06         ` Shilimkar, Santosh
2009-10-06  8:44           ` Premi, Sanjeev
2009-10-06  9:19             ` Shilimkar, Santosh
2009-10-06  8:42         ` Cousson, Benoit
2009-10-06  8:52           ` Premi, Sanjeev
2009-10-06 11:44             ` Nishanth Menon [this message]
2009-10-06 12:00               ` Dasgupta, Romit
2009-10-06 12:04                 ` Nishanth Menon
2009-10-06 12:10                   ` Cousson, Benoit
2009-10-06 12:14                     ` Dasgupta, Romit
2009-10-06 12:52                       ` Cousson, Benoit
2009-10-09  0:41                         ` Nishanth Menon
2009-10-06 12:21                   ` Dasgupta, Romit
2009-10-06 12:43                     ` Shilimkar, Santosh
2009-10-06 13:29           ` Kevin Hilman
2009-10-09 15:19 ` [PATCHv2 1/1] OMAP3: PM: Functions to get freq from opp and vice-versa Kevin Hilman

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=4ACB2DAD.1090200@ti.com \
    --to=nm@ti.com \
    --cc=b-cousson@ti.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=premi@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.