public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Vishwanath Sripathy <vishwanath.bs@ti.com>
To: Shweta Gulati <shweta.gulati@ti.com>,
	linux-omap@vger.kernel.org, Kevin Hilman <khilman@ti.com>
Subject: RE: Smartreflex on 'pm-wip/voltdm' Branch
Date: Mon, 28 Mar 2011 19:10:01 +0530	[thread overview]
Message-ID: <e3b58bb0f126f8849c7358c8f7e67222@mail.gmail.com> (raw)
In-Reply-To: <AANLkTi=czLooLOFEZq-TYKLOqwFxn8eB6aTs7-3k_YSY@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2635 bytes --]

> -----Original Message-----
> From: linux-omap-owner@vger.kernel.org [mailto:linux-omap-
> owner@vger.kernel.org] On Behalf Of Gulati, Shweta
> Sent: Monday, March 28, 2011 4:23 PM
> To: linux-omap@vger.kernel.org; Kevin Hilman
> Subject: Smartreflex on 'pm-wip/voltdm' Branch
>
> Kevin,
>
> I am testing Smartreflex on your Branch 'pm-wip/voltdm'. There seems
> an issue with reading VP registers.
> For OMAP3 and OMAP4 reading debugfs entries shows constant voltage.
> Logs are:
>
> OMAP3:
> # cat /debug/voltage/vdd_mpu_iva/curr_nominal_volt
> 1200000
> # cat /debug/voltage/vdd_core/curr_nominal_volt
> 1200000
> # echo 1 > /debug/voltage/vdd_mpu_iva/smartreflex/autocomp
> [  311.680816] omap_device: smartreflex.0: new worst case activate
> latency 0: 91552
> # echo 1 > /debug/voltage/vdd_core/smartreflex/autocomp
> # cat /debug/voltage/vdd_core/vp/curr_volt
> 900000
> # cat /debug/voltage/vdd_mpu_iva/vp/curr_volt
> 900000
>
>
> OMAP4:
>  # cat /debug/voltage/vdd_core/curr_nominal_volt
> 1200000
> # cat /debug/voltage/vdd_mpu/curr_nominal_volt
> 1375000
> # cat /debug/voltage/vdd_iva/curr_nominal_volt
> 1188000
> #
> # echo 1 > /debug/voltage/vdd_mpu/smartreflex/autocomp
> [   61.514038] omap_device: smartreflex.2: new worst case activate
> latency 0: 30517
> # echo 1 > /debug/voltage/vdd_core/smartreflex/autocomp
> # echo 1 > /debug/voltage/vdd_mpu/smartreflex/autocomp
> #
> # cat /debug/voltage/vdd_iva/curr_nominal_volt
> 1188000
> # cat /debug/voltage/vdd_iva/vp/curr_volt
> 1200000
> #
> # echo 1 > /debug/voltage/vdd_iva/smartreflex/autocomp
> # cat /debug/voltage/vdd_iva/vp/curr_volt
> 812500
> #
> # cat /debug/voltage/vdd_mpu/vp/curr_volt
> 812500
> # cat /debug/voltage/vdd_core/vp/curr_volt
> 812500
> #
>
> This Issue is not reproduced on 'pm-core' branch, seems in the voltage
> Layer Clean up Patches somewhere some thing is goofed up.
I did a quick debug on this and found that the root cause of the issue is
in usage of ffs (because of this, i2c slave address was configured wrongly
in vc).
Basically ffs returns the position of the first (least significant) bit
set in the word and the least significant bit is position 1 where as our
bit operation assumes that least significant position is 0.
I tested the attached patch on OMAP3 and it seems to work fine.

Kevin,
You may want to incorporate this change in your next version if this seems
OK to you.

Vishwa
>
>
> Thanks,
> Regards,
> Shweta
> --
> 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

[-- Attachment #2: vc_fix.patch --]
[-- Type: application/octet-stream, Size: 2308 bytes --]

diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.c b/arch/arm/mach-omap2/prm2xxx_3xxx.c
index 4d7fe1a..ea27c9c
--- a/arch/arm/mach-omap2/prm2xxx_3xxx.c
+++ b/arch/arm/mach-omap2/prm2xxx_3xxx.c
@@ -189,7 +189,7 @@ int omap3_prm_vc_set_i2c_slave_addr(u8 vc_id, u8 slave_addr)
 		return -EINVAL;
 
 	omap2_prm_rmw_mod_reg_bits(vc->smps_sa_mask, 
-				   slave_addr << ffs(vc->smps_sa_mask),
+				   slave_addr << (ffs(vc->smps_sa_mask)-1),
 				   OMAP3430_GR_MOD,
 				   OMAP3_PRM_VC_SMPS_SA_OFFSET);
 
@@ -213,13 +213,13 @@ static int omap3_prm_vc_set_pmic_reg_addrs(u8 vc_id, u8 volt_addr, u8 cmd_addr)
 	struct omap3_prm_vc *vc = &vc_channels[vc_id];
 
 	omap2_prm_rmw_mod_reg_bits(vc->smps_vol_ra_mask, 
-				   volt_addr << ffs(vc->smps_vol_ra_mask),
+				   volt_addr << (ffs(vc->smps_vol_ra_mask)-1),
 				   OMAP3430_GR_MOD,
 				   OMAP3_PRM_VC_SMPS_VOL_RA_OFFSET);
 
 	if (cmd_addr)
 		omap2_prm_rmw_mod_reg_bits(vc->smps_cmd_ra_mask, 
-					cmd_addr << ffs(vc->smps_cmd_ra_mask),
+					cmd_addr << (ffs(vc->smps_cmd_ra_mask)-1),
 					OMAP3430_GR_MOD,
 					OMAP3_PRM_VC_SMPS_CMD_RA_OFFSET);
 	
diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c
old mode 100644
new mode 100755
index 2758b75..76bf6d3
--- a/arch/arm/mach-omap2/prm44xx.c
+++ b/arch/arm/mach-omap2/prm44xx.c
@@ -234,7 +234,7 @@ int omap4_prm_vc_set_i2c_slave_addr(u8 vc_id, u8 slave_addr)
 		return -EINVAL;
 
 	omap4_prminst_rmw_inst_reg_bits(vc->smps_sa_mask, 
-					slave_addr << ffs(vc->smps_sa_mask),
+					slave_addr << (ffs(vc->smps_sa_mask)-1),
 					OMAP4430_PRM_PARTITION,
 					OMAP4430_PRM_DEVICE_INST,
 					OMAP4_PRM_VC_SMPS_SA_OFFSET);
@@ -260,14 +260,14 @@ static int omap4_prm_vc_set_pmic_reg_addrs(u8 vc_id,
 	struct omap4_prm_vc *vc = &vc_channels[vc_id];
 
 	omap4_prminst_rmw_inst_reg_bits(vc->smps_vol_ra_mask, 
-					volt_addr << ffs(vc->smps_vol_ra_mask),
+					volt_addr << (ffs(vc->smps_vol_ra_mask)-1),
 					OMAP4430_PRM_PARTITION,
 					OMAP4430_PRM_DEVICE_INST,
 					OMAP4_PRM_VC_VAL_SMPS_RA_VOL_OFFSET);
 
 	if (cmd_addr)
 		omap4_prminst_rmw_inst_reg_bits(vc->smps_cmd_ra_mask, 
-					cmd_addr << ffs(vc->smps_cmd_ra_mask),
+					cmd_addr << (ffs(vc->smps_cmd_ra_mask)-1),
 					OMAP4430_PRM_PARTITION,
 					OMAP4430_PRM_DEVICE_INST,
 					OMAP4_PRM_VC_VAL_SMPS_RA_CMD_OFFSET);

  reply	other threads:[~2011-03-28 13:40 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-28 10:53 Smartreflex on 'pm-wip/voltdm' Branch Gulati, Shweta
2011-03-28 13:40 ` Vishwanath Sripathy [this message]
2011-03-28 16:27   ` Kevin Hilman
2011-03-30  6:21     ` Gulati, Shweta
2011-03-30 14:52       ` 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=e3b58bb0f126f8849c7358c8f7e67222@mail.gmail.com \
    --to=vishwanath.bs@ti.com \
    --cc=khilman@ti.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=shweta.gulati@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox