All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gopinath, Thara" <thara@ti.com>
To: Kevin Hilman <khilman@deeprootsystems.com>
Cc: "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"paul@pwsan.com" <paul@pwsan.com>,
	"Cousson, Benoit" <b-cousson@ti.com>,
	"Sripathy, Vishwanath" <vishwanath.bs@ti.com>,
	"Sawant, Anand" <sawant@ti.com>
Subject: RE: [PATCH v3 10/11] OMAP3: PM: Program correct init voltages for VDD1 and VDD2
Date: Fri, 22 Oct 2010 20:14:51 +0530	[thread overview]
Message-ID: <5A47E75E594F054BAF48C5E4FC4B92AB035EB95EAD@dbde02.ent.ti.com> (raw)
In-Reply-To: <871v7spc07.fsf@deeprootsystems.com>



>>-----Original Message-----
>>From: Kevin Hilman [mailto:khilman@deeprootsystems.com]
>>Sent: Friday, October 15, 2010 5:23 AM
>>To: Gopinath, Thara
>>Cc: linux-omap@vger.kernel.org; paul@pwsan.com; Cousson, Benoit; Sripathy,
>>Vishwanath; Sawant, Anand
>>Subject: Re: [PATCH v3 10/11] OMAP3: PM: Program correct init voltages for
>>VDD1 and VDD2
>>
>>Thara Gopinath <thara@ti.com> writes:
>>
>>> By default the system boots up at nominal voltage for every
>>> voltage domain in the system. This patch puts VDD1 and VDD2
>>> to the correct boot up voltage as per the opp tables specified.
>>> This patch implements this by matching the rate of the main clock
>>> of the voltage domain with the opp table and picking up the correct
>>> voltage.
>>>
>>> Signed-off-by: Thara Gopinath <thara@ti.com>
>>
>>For de-coupling the init from OPP, I like this approach better.  Thanks.
Most welcome!!
>>
>>Minor comment below...
>>
>>> ---
>>>  arch/arm/mach-omap2/pm.c |   67
>>+++++++++++++++++++++++++++++++++++++++++++++-
>>>  1 files changed, 66 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c
>>> index 71c5a77..86c7bf1 100644
>>> --- a/arch/arm/mach-omap2/pm.c
>>> +++ b/arch/arm/mach-omap2/pm.c
>>> @@ -13,6 +13,7 @@
>>>  #include <linux/init.h>
>>>  #include <linux/io.h>
>>>  #include <linux/err.h>
>>> +#include <linux/clk.h>
>>>
>>>  #include <plat/omap-pm.h>
>>>  #include <plat/omap_device.h>
>>> @@ -20,6 +21,7 @@
>>>
>>>  #include <plat/powerdomain.h>
>>>  #include <plat/clockdomain.h>
>>> +#include <plat/voltage.h>
>>>
>>>  #include "pm.h"
>>>
>>> @@ -138,12 +140,75 @@ err:
>>>  	return ret;
>>>  }
>>>
>>> +/*
>>> + * This is to be called during init to put the various voltage
>>> + * domains to the voltage as per the opp table. Typically we boot up
>>> + * at the nominal voltage. So this function finds out the rate of
>>> + * the clock associated with the voltage domain, finds out the correct
>>> + * opp entry and puts the voltage domain to the voltage specifies
>>> + * in the opp entry
>>> + */
>>> +static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
>>> +						struct device *dev)
>>> +{
>>> +	struct voltagedomain *voltdm;
>>> +	struct clk *_clk;
>>
>>s/_clk/clk/
Will it not conflict with struct clk??

Regards
Thara

>>
>>> +	struct omap_opp *opp;
>>> +	unsigned long freq, bootup_volt;
>>> +
>>> +	if (!vdd_name || !clk_name || !dev) {
>>> +		printk(KERN_ERR "%s: Invalid parameters!\n", __func__);
>>> +		goto exit;
>>> +	}
>>> +
>>> +	voltdm = omap_voltage_domain_get(vdd_name);
>>> +	if (IS_ERR(voltdm)) {
>>> +		printk(KERN_ERR "%s: Unable to get vdd pointer for vdd_%s\n",
>>> +			__func__, vdd_name);
>>> +		goto exit;
>>> +	}
>>> +
>>> +	_clk =  clk_get(NULL, clk_name);
>>> +	if (IS_ERR(_clk)) {
>>> +		printk(KERN_ERR "%s: unable to get clk %s\n",
>>> +			__func__, clk_name);
>>> +		goto exit;
>>> +	}
>>> +
>>> +	freq = _clk->rate;
>>> +	opp = opp_find_freq_ceil(dev, &freq);
>>> +	if (IS_ERR(opp)) {
>>> +		printk(KERN_ERR "%s: unable to find boot up OPP for vdd_%s\n",
>>> +			__func__, vdd_name);
>>> +		goto exit;
>>> +	}
>>> +
>>> +	bootup_volt = opp_get_voltage(opp);
>>> +	if (!bootup_volt) {
>>> +		printk(KERN_ERR "%s: unable to find voltage corresponding"
>>> +			"to the bootup OPP for vdd_%s\n", __func__, vdd_name);
>>> +		goto exit;
>>> +	}
>>> +
>>> +	omap_voltage_scale_vdd(voltdm, bootup_volt);
>>> +
>>> +	return 0;
>>> +
>>> +exit:
>>> +	printk(KERN_ERR "%s: Unable to put vdd_%s to its init voltage\n\n",
>>> +		__func__, vdd_name);
>>> +	return -EINVAL;
>>> +}
>>> +
>>>  static int __init omap2_common_pm_init(void)
>>>  {
>>>  	omap2_init_processor_devices();
>>>
>>> -	if (cpu_is_omap34xx())
>>> +	if (cpu_is_omap34xx()) {
>>>  		omap3_pm_init_opp_table();
>>> +		omap2_set_init_voltage("mpu", "dpll1_ck", mpu_dev);
>>> +		omap2_set_init_voltage("core", "l3_ick", l3_dev);
>>> +	}
>>>
>>>  	omap_pm_if_init();

  reply	other threads:[~2010-10-22 14:44 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-22 14:45 [PATCH v3 00/11] OMAP3: Adding Smartreflex and Voltage driver support Thara Gopinath
2010-09-22 14:45 ` [PATCH v3 01/11] OMAP: PM: Export the main pm debugfs directory Thara Gopinath
2010-10-25  9:29   ` Cousson, Benoit
2010-10-25  9:30     ` Gopinath, Thara
2010-09-22 14:45 ` [PATCH v3 02/11] OMAP3: PM: Adding voltage driver support for OMAP3 Thara Gopinath
2010-09-29 21:21   ` Kevin Hilman
2010-09-30  0:27   ` Kevin Hilman
     [not found]   ` <87bp7gm3dq.fsf@deeprootsystems.com>
2010-09-30 17:39     ` Paul Walmsley
2010-10-15 13:47       ` Cousson, Benoit
2010-10-14 18:05   ` Kevin Hilman
2010-10-22 14:23     ` Gopinath, Thara
2010-10-22 16:18       ` Kevin Hilman
2010-09-22 14:45 ` [PATCH v3 03/11] OMAP3: PM: Adding smartreflex driver support Thara Gopinath
2010-09-28 23:30   ` Kevin Hilman
2010-09-29 14:41     ` Gopinath, Thara
2010-10-14  0:04   ` Kevin Hilman
2010-10-22 14:21     ` Gopinath, Thara
2010-10-22 16:17       ` Kevin Hilman
2010-10-25 11:12       ` Grazvydas Ignotas
2010-09-22 14:45 ` [PATCH v3 04/11] OMAP3: PM: Adding smartreflex device file Thara Gopinath
2010-10-14 19:29   ` Kevin Hilman
2010-10-22 14:36     ` Gopinath, Thara
2010-10-22 16:32       ` Kevin Hilman
2010-10-23 10:55         ` Gopinath, Thara
2010-11-10 18:55           ` Kevin Hilman
2010-09-22 14:45 ` [PATCH v3 05/11] OMAP3: PM: Adding smartreflex hwmod data Thara Gopinath
2010-09-22 14:45 ` [PATCH v3 06/11] OMAP3: PM: Adding smartreflex class3 driver Thara Gopinath
2010-10-14 23:09   ` Kevin Hilman
2010-10-22 14:37     ` Gopinath, Thara
2010-09-22 14:45 ` [PATCH v3 07/11] OMAP3: PM: Adding T2 enabling of smartreflex support Thara Gopinath
2010-09-29  0:08   ` Kevin Hilman
2010-09-29 14:41     ` Gopinath, Thara
2010-09-29 23:16       ` Kevin Hilman
2010-09-22 14:45 ` [PATCH v3 08/11] OMAP3: PM: Adding debug support to Voltage and Smartreflex drivers Thara Gopinath
2010-09-29 23:20   ` Kevin Hilman
2010-09-30  5:58     ` Gopinath, Thara
2010-10-14 19:20   ` Kevin Hilman
2010-10-22 14:47     ` Gopinath, Thara
2010-10-14 23:46   ` Kevin Hilman
2010-10-22 14:41     ` Gopinath, Thara
2010-10-22 16:52       ` Kevin Hilman
2010-10-25  9:00         ` Gopinath, Thara
2010-10-25 16:19           ` Kevin Hilman
2010-10-25  9:28   ` Cousson, Benoit
2010-09-22 14:45 ` [PATCH v3 09/11] OMAP3: PM: Smartreflex Class3 initialization from board files Thara Gopinath
2010-10-14 23:50   ` Kevin Hilman
2010-10-22 14:43     ` Gopinath, Thara
2010-10-22 16:37       ` Kevin Hilman
2010-10-25  9:16         ` Gopinath, Thara
2010-09-22 14:45 ` [PATCH v3 10/11] OMAP3: PM: Program correct init voltages for VDD1 and VDD2 Thara Gopinath
2010-10-14 23:53   ` Kevin Hilman
2010-10-22 14:44     ` Gopinath, Thara [this message]
2010-10-22 16:44       ` Kevin Hilman
2010-09-22 14:45 ` [PATCH v3 11/11] OMAP3: PM: Register TWL4030 pmic info with the voltage driver Thara Gopinath
2010-09-29  0:31 ` [PATCH v3 00/11] OMAP3: Adding Smartreflex and Voltage driver support Kevin Hilman
2010-09-29  1:02   ` 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=5A47E75E594F054BAF48C5E4FC4B92AB035EB95EAD@dbde02.ent.ti.com \
    --to=thara@ti.com \
    --cc=b-cousson@ti.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=paul@pwsan.com \
    --cc=sawant@ti.com \
    --cc=vishwanath.bs@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.