From: Kevin Hilman <khilman@deeprootsystems.com>
To: Rajendra Nayak <rnayak@ti.com>
Cc: linux-omap@vger.kernel.org
Subject: Re: [PATCH] OMAP3: SR: Fix SR driver to check for omap-pm return values
Date: Wed, 13 May 2009 07:52:12 -0700 [thread overview]
Message-ID: <87skj9838j.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1240988319-30282-1-git-send-email-rnayak@ti.com> (Rajendra Nayak's message of "Wed\, 29 Apr 2009 12\:28\:39 +0530")
Rajendra Nayak <rnayak@ti.com> writes:
> This patch checks for the return values of omap_pm_vddx_get_opp()
> in SR driver and acts accordingly. With no SRF layer enabled the OMAP-PM layer
> api is unable to return the current OPP.
>
> Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Thanks, pushing to the PM branch.
I preferred this approach to Roger's approach as I don't currently
like the idea of making PM_NONE and PM_NOOP dependent on SRF, even for
just OPPs.
Kevin
> ---
> arch/arm/mach-omap2/smartreflex.c | 42 +++++++++++++++++++++++++++++++++---
> 1 files changed, 38 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c
> index ae5c336..04baa8e 100644
> --- a/arch/arm/mach-omap2/smartreflex.c
> +++ b/arch/arm/mach-omap2/smartreflex.c
> @@ -247,13 +247,19 @@ static void sr_set_nvalues(struct omap_sr *sr)
> static void sr_configure_vp(int srid)
> {
> u32 vpconfig;
> + u32 vsel;
>
> if (srid == SR1) {
> + if (!omap_pm_vdd1_get_opp())
> + /* Assume Nominal OPP as current OPP unknown */
> + vsel = mpu_opps[VDD1_OPP3].vsel;
> + else
> + vsel = mpu_opps[omap_pm_vdd1_get_opp()].vsel;
> +
> vpconfig = PRM_VP1_CONFIG_ERROROFFSET |
> PRM_VP1_CONFIG_ERRORGAIN |
> PRM_VP1_CONFIG_TIMEOUTEN |
> - mpu_opps[omap_pm_vdd1_get_opp()].vsel <<
> - OMAP3430_INITVOLTAGE_SHIFT;
> + vsel << OMAP3430_INITVOLTAGE_SHIFT;
>
> prm_write_mod_reg(vpconfig, OMAP3430_GR_MOD,
> OMAP3_PRM_VP1_CONFIG_OFFSET);
> @@ -289,11 +295,16 @@ static void sr_configure_vp(int srid)
> OMAP3_PRM_VP1_CONFIG_OFFSET);
>
> } else if (srid == SR2) {
> + if (!omap_pm_vdd2_get_opp())
> + /* Assume Nominal OPP */
> + vsel = l3_opps[VDD2_OPP3].vsel;
> + else
> + vsel = l3_opps[omap_pm_vdd2_get_opp()].vsel;
> +
> vpconfig = PRM_VP2_CONFIG_ERROROFFSET |
> PRM_VP2_CONFIG_ERRORGAIN |
> PRM_VP2_CONFIG_TIMEOUTEN |
> - l3_opps[omap_pm_vdd2_get_opp()].vsel <<
> - OMAP3430_INITVOLTAGE_SHIFT;
> + vsel << OMAP3430_INITVOLTAGE_SHIFT;
>
> prm_write_mod_reg(vpconfig, OMAP3430_GR_MOD,
> OMAP3_PRM_VP2_CONFIG_OFFSET);
> @@ -387,10 +398,18 @@ static int sr_reset_voltage(int srid)
>
> if (srid == SR1) {
> target_opp_no = omap_pm_vdd1_get_opp();
> + if (!target_opp_no) {
> + pr_info("Current OPP unknown: Cannot reset voltage\n");
> + return 1;
> + }
> vsel = mpu_opps[target_opp_no].vsel;
> reg_addr = R_VDD1_SR_CONTROL;
> } else if (srid == SR2) {
> target_opp_no = omap_pm_vdd2_get_opp();
> + if (!target_opp_no) {
> + pr_info("Current OPP unknown: Cannot reset voltage\n");
> + return 1;
> + }
> vsel = l3_opps[target_opp_no].vsel;
> reg_addr = R_VDD2_SR_CONTROL;
> }
> @@ -620,6 +639,11 @@ void enable_smartreflex(int srid)
> else if (srid == SR2)
> target_opp_no = omap_pm_vdd2_get_opp();
>
> + if (!target_opp_no) {
> + pr_info("Current OPP unknown \
> + Cannot configure SR\n");
> + }
> +
> sr_configure(sr);
>
> if (!sr_enable(sr, target_opp_no))
> @@ -754,6 +778,11 @@ static ssize_t omap_sr_vdd1_autocomp_store(struct kobject *kobj,
>
> current_vdd1opp_no = omap_pm_vdd1_get_opp();
>
> + if (!current_vdd1opp_no) {
> + pr_err("sr_vdd1_autocomp: Current VDD1 opp unknown\n");
> + return -EINVAL;
> + }
> +
> if (value == 0)
> sr_stop_vddautocomap(SR1);
> else
> @@ -792,6 +821,11 @@ static ssize_t omap_sr_vdd2_autocomp_store(struct kobject *kobj,
>
> current_vdd2opp_no = omap_pm_vdd2_get_opp();
>
> + if (!current_vdd2opp_no) {
> + pr_err("sr_vdd2_autocomp: Current VDD2 opp unknown\n");
> + return -EINVAL;
> + }
> +
> if (value == 0)
> sr_stop_vddautocomap(SR2);
> else
> --
> 1.5.4.7
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
prev parent reply other threads:[~2009-05-13 14:52 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-29 6:58 [PATCH] OMAP3: SR: Fix SR driver to check for omap-pm return values Rajendra Nayak
2009-04-29 7:49 ` Roger Quadros
2009-04-29 11:45 ` Nayak, Rajendra
2009-05-13 14:52 ` Kevin Hilman [this message]
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=87skj9838j.fsf@deeprootsystems.com \
--to=khilman@deeprootsystems.com \
--cc=linux-omap@vger.kernel.org \
--cc=rnayak@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.