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);
