diff options
Diffstat (limited to 'arch/arm/mach-omap2/vp.c')
| -rw-r--r-- | arch/arm/mach-omap2/vp.c | 88 | 
1 files changed, 41 insertions, 47 deletions
diff --git a/arch/arm/mach-omap2/vp.c b/arch/arm/mach-omap2/vp.c index a3afcbe741e..53d6018fa67 100644 --- a/arch/arm/mach-omap2/vp.c +++ b/arch/arm/mach-omap2/vp.c @@ -14,7 +14,7 @@ static void __init vp_debugfs_init(struct voltagedomain *voltdm);  static void vp_latch_vsel(struct voltagedomain *voltdm)  { -	struct omap_vp_instance_data *vp = voltdm->vdd->vp_data; +	struct omap_vp_instance *vp = voltdm->vp;  	u32 vpconfig;  	unsigned long uvdc;  	char vsel; @@ -35,14 +35,14 @@ static void vp_latch_vsel(struct voltagedomain *voltdm)  	vsel = voltdm->pmic->uv_to_vsel(uvdc);  	vpconfig = voltdm->read(vp->vpconfig); -	vpconfig &= ~(vp->vp_common->vpconfig_initvoltage_mask | -			vp->vp_common->vpconfig_initvdd); -	vpconfig |= vsel << vp->vp_common->vpconfig_initvoltage_shift; +	vpconfig &= ~(vp->common->vpconfig_initvoltage_mask | +			vp->common->vpconfig_initvdd); +	vpconfig |= vsel << vp->common->vpconfig_initvoltage_shift;  	voltdm->write(vpconfig, vp->vpconfig);  	/* Trigger initVDD value copy to voltage processor */ -	voltdm->write((vpconfig | vp->vp_common->vpconfig_initvdd), +	voltdm->write((vpconfig | vp->common->vpconfig_initvdd),  		       vp->vpconfig);  	/* Clear initVDD copy trigger bit */ @@ -52,7 +52,7 @@ static void vp_latch_vsel(struct voltagedomain *voltdm)  /* Generic voltage init functions */  void __init omap_vp_init(struct voltagedomain *voltdm)  { -	struct omap_vp_instance_data *vp = voltdm->vdd->vp_data; +	struct omap_vp_instance *vp = voltdm->vp;  	struct omap_vdd_info *vdd = voltdm->vdd;  	u32 vp_val; @@ -64,28 +64,28 @@ void __init omap_vp_init(struct voltagedomain *voltdm)  	vp_val = vdd->vp_rt_data.vpconfig_erroroffset |  		(vdd->vp_rt_data.vpconfig_errorgain << -		vp->vp_common->vpconfig_errorgain_shift) | -		vp->vp_common->vpconfig_timeouten; +		vp->common->vpconfig_errorgain_shift) | +		vp->common->vpconfig_timeouten;  	voltdm->write(vp_val, vp->vpconfig);  	vp_val = ((vdd->vp_rt_data.vstepmin_smpswaittimemin << -		vp->vp_common->vstepmin_smpswaittimemin_shift) | +		vp->common->vstepmin_smpswaittimemin_shift) |  		(vdd->vp_rt_data.vstepmin_stepmin << -		vp->vp_common->vstepmin_stepmin_shift)); +		vp->common->vstepmin_stepmin_shift));  	voltdm->write(vp_val, vp->vstepmin);  	vp_val = ((vdd->vp_rt_data.vstepmax_smpswaittimemax << -		vp->vp_common->vstepmax_smpswaittimemax_shift) | +		vp->common->vstepmax_smpswaittimemax_shift) |  		(vdd->vp_rt_data.vstepmax_stepmax << -		vp->vp_common->vstepmax_stepmax_shift)); +		vp->common->vstepmax_stepmax_shift));  	voltdm->write(vp_val, vp->vstepmax);  	vp_val = ((vdd->vp_rt_data.vlimitto_vddmax << -		vp->vp_common->vlimitto_vddmax_shift) | +		vp->common->vlimitto_vddmax_shift) |  		(vdd->vp_rt_data.vlimitto_vddmin << -		vp->vp_common->vlimitto_vddmin_shift) | +		vp->common->vlimitto_vddmin_shift) |  		(vdd->vp_rt_data.vlimitto_timeout << -		vp->vp_common->vlimitto_timeout_shift)); +		vp->common->vlimitto_timeout_shift));  	voltdm->write(vp_val, vp->vlimitto);  	vp_debugfs_init(voltdm); @@ -95,7 +95,7 @@ void __init omap_vp_init(struct voltagedomain *voltdm)  int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,  			      unsigned long target_volt)  { -	struct omap_vp_instance_data *vp = voltdm->vdd->vp_data; +	struct omap_vp_instance *vp = voltdm->vp;  	u32 vpconfig;  	u8 target_vsel, current_vsel;  	int ret, timeout = 0; @@ -109,8 +109,8 @@ int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,  	 * is <3us  	 */  	while (timeout++ < VP_TRANXDONE_TIMEOUT) { -		vp->vp_common->ops->clear_txdone(vp->id); -		if (!vp->vp_common->ops->check_txdone(vp->id)) +		vp->common->ops->clear_txdone(vp->id); +		if (!vp->common->ops->check_txdone(vp->id))  			break;  		udelay(1);  	} @@ -122,19 +122,19 @@ int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,  	/* Configure for VP-Force Update */  	vpconfig = voltdm->read(vp->vpconfig); -	vpconfig &= ~(vp->vp_common->vpconfig_initvdd | -			vp->vp_common->vpconfig_forceupdate | -			vp->vp_common->vpconfig_initvoltage_mask); +	vpconfig &= ~(vp->common->vpconfig_initvdd | +			vp->common->vpconfig_forceupdate | +			vp->common->vpconfig_initvoltage_mask);  	vpconfig |= ((target_vsel << -			vp->vp_common->vpconfig_initvoltage_shift)); +			vp->common->vpconfig_initvoltage_shift));  	voltdm->write(vpconfig, vp->vpconfig);  	/* Trigger initVDD value copy to voltage processor */ -	vpconfig |= vp->vp_common->vpconfig_initvdd; +	vpconfig |= vp->common->vpconfig_initvdd;  	voltdm->write(vpconfig, vp->vpconfig);  	/* Force update of voltage */ -	vpconfig |= vp->vp_common->vpconfig_forceupdate; +	vpconfig |= vp->common->vpconfig_forceupdate;  	voltdm->write(vpconfig, vp->vpconfig);  	/* @@ -142,7 +142,7 @@ int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,  	 * Depends on SMPSWAITTIMEMIN/MAX and voltage change  	 */  	timeout = 0; -	omap_test_timeout(vp->vp_common->ops->check_txdone(vp->id), +	omap_test_timeout(vp->common->ops->check_txdone(vp->id),  			  VP_TRANXDONE_TIMEOUT, timeout);  	if (timeout >= VP_TRANXDONE_TIMEOUT)  		pr_err("%s: vdd_%s TRANXDONE timeout exceeded." @@ -157,8 +157,8 @@ int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,  	 */  	timeout = 0;  	while (timeout++ < VP_TRANXDONE_TIMEOUT) { -		vp->vp_common->ops->clear_txdone(vp->id); -		if (!vp->vp_common->ops->check_txdone(vp->id)) +		vp->common->ops->clear_txdone(vp->id); +		if (!vp->common->ops->check_txdone(vp->id))  			break;  		udelay(1);  	} @@ -170,10 +170,10 @@ int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,  	vpconfig = voltdm->read(vp->vpconfig);  	/* Clear initVDD copy trigger bit */ -	vpconfig &= ~vp->vp_common->vpconfig_initvdd; +	vpconfig &= ~vp->common->vpconfig_initvdd;  	voltdm->write(vpconfig, vp->vpconfig);  	/* Clear force bit */ -	vpconfig &= ~vp->vp_common->vpconfig_forceupdate; +	vpconfig &= ~vp->common->vpconfig_forceupdate;  	voltdm->write(vpconfig, vp->vpconfig);  	return 0; @@ -187,8 +187,7 @@ int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,   */  unsigned long omap_vp_get_curr_volt(struct voltagedomain *voltdm)  { -	struct omap_vp_instance_data *vp = voltdm->vdd->vp_data; -	struct omap_vdd_info *vdd; +	struct omap_vp_instance *vp = voltdm->vp;  	u8 curr_vsel;  	if (!voltdm || IS_ERR(voltdm)) { @@ -196,7 +195,6 @@ unsigned long omap_vp_get_curr_volt(struct voltagedomain *voltdm)  		return 0;  	} -	vdd = voltdm->vdd;  	if (!voltdm->read) {  		pr_err("%s: No read API for reading vdd_%s regs\n",  			__func__, voltdm->name); @@ -223,8 +221,7 @@ unsigned long omap_vp_get_curr_volt(struct voltagedomain *voltdm)   */  void omap_vp_enable(struct voltagedomain *voltdm)  { -	struct omap_vp_instance_data *vp; -	struct omap_vdd_info *vdd; +	struct omap_vp_instance *vp;  	u32 vpconfig;  	if (!voltdm || IS_ERR(voltdm)) { @@ -232,8 +229,7 @@ void omap_vp_enable(struct voltagedomain *voltdm)  		return;  	} -	vdd = voltdm->vdd; -	vp = voltdm->vdd->vp_data; +	vp = voltdm->vp;  	if (!voltdm->read || !voltdm->write) {  		pr_err("%s: No read/write API for accessing vdd_%s regs\n",  			__func__, voltdm->name); @@ -241,16 +237,16 @@ void omap_vp_enable(struct voltagedomain *voltdm)  	}  	/* If VP is already enabled, do nothing. Return */ -	if (vdd->vp_enabled) +	if (vp->enabled)  		return;  	vp_latch_vsel(voltdm);  	/* Enable VP */  	vpconfig = voltdm->read(vp->vpconfig); -	vpconfig |= vp->vp_common->vpconfig_vpenable; +	vpconfig |= vp->common->vpconfig_vpenable;  	voltdm->write(vpconfig, vp->vpconfig); -	vdd->vp_enabled = true; +	vp->enabled = true;  }  /** @@ -262,8 +258,7 @@ void omap_vp_enable(struct voltagedomain *voltdm)   */  void omap_vp_disable(struct voltagedomain *voltdm)  { -	struct omap_vp_instance_data *vp; -	struct omap_vdd_info *vdd; +	struct omap_vp_instance *vp;  	u32 vpconfig;  	int timeout; @@ -272,8 +267,7 @@ void omap_vp_disable(struct voltagedomain *voltdm)  		return;  	} -	vdd = voltdm->vdd; -	vp = voltdm->vdd->vp_data; +	vp = voltdm->vp;  	if (!voltdm->read || !voltdm->write) {  		pr_err("%s: No read/write API for accessing vdd_%s regs\n",  			__func__, voltdm->name); @@ -281,7 +275,7 @@ void omap_vp_disable(struct voltagedomain *voltdm)  	}  	/* If VP is already disabled, do nothing. Return */ -	if (!vdd->vp_enabled) { +	if (!vp->enabled) {  		pr_warning("%s: Trying to disable VP for vdd_%s when"  			"it is already disabled\n", __func__, voltdm->name);  		return; @@ -289,7 +283,7 @@ void omap_vp_disable(struct voltagedomain *voltdm)  	/* Disable VP */  	vpconfig = voltdm->read(vp->vpconfig); -	vpconfig &= ~vp->vp_common->vpconfig_vpenable; +	vpconfig &= ~vp->common->vpconfig_vpenable;  	voltdm->write(vpconfig, vp->vpconfig);  	/* @@ -302,7 +296,7 @@ void omap_vp_disable(struct voltagedomain *voltdm)  		pr_warning("%s: vdd_%s idle timedout\n",  			__func__, voltdm->name); -	vdd->vp_enabled = false; +	vp->enabled = false;  	return;  } @@ -311,7 +305,7 @@ void omap_vp_disable(struct voltagedomain *voltdm)  static int vp_volt_debug_get(void *data, u64 *val)  {  	struct voltagedomain *voltdm = (struct voltagedomain *)data; -	struct omap_vp_instance_data *vp = voltdm->vdd->vp_data; +	struct omap_vp_instance *vp = voltdm->vp;  	struct omap_vdd_info *vdd = voltdm->vdd;  	u8 vsel;  |