Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f01565a authored by Kevin Hilman's avatar Kevin Hilman
Browse files

OMAP3+: VP: move voltage scale function pointer into struct voltagedomain



Function pointer used for actual voltage scaling (e.g. VP force update
or VC bypass) is moved from omap_vdd_info into struct voltagedomain,
resulting in renames s/vdd->volt_scale/voltdm->scale/

No functional changes.

Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
parent 667216d6
Loading
Loading
Loading
Loading
+7 −17
Original line number Diff line number Diff line
@@ -45,10 +45,8 @@ static LIST_HEAD(voltdm_list);

static int __init _config_common_vdd_data(struct voltagedomain *voltdm)
{
	struct omap_vdd_info *vdd = voltdm->vdd;

	/* Generic voltage parameters */
	vdd->volt_scale = omap_vp_forceupdate_scale;
	voltdm->scale = omap_vp_forceupdate_scale;

	return 0;
}
@@ -107,22 +105,18 @@ unsigned long omap_voltage_get_nom_volt(struct voltagedomain *voltdm)
int omap_voltage_scale_vdd(struct voltagedomain *voltdm,
		unsigned long target_volt)
{
	struct omap_vdd_info *vdd;

	if (!voltdm || IS_ERR(voltdm)) {
		pr_warning("%s: VDD specified does not exist!\n", __func__);
		return -EINVAL;
	}

	vdd = voltdm->vdd;

	if (!vdd->volt_scale) {
	if (!voltdm->scale) {
		pr_err("%s: No voltage scale API registered for vdd_%s\n",
			__func__, voltdm->name);
		return -ENODATA;
	}

	return vdd->volt_scale(voltdm, target_volt);
	return voltdm->scale(voltdm, target_volt);
}

/**
@@ -260,21 +254,17 @@ int omap_voltage_register_pmic(struct voltagedomain *voltdm,
void omap_change_voltscale_method(struct voltagedomain *voltdm,
				  int voltscale_method)
{
	struct omap_vdd_info *vdd;

	if (!voltdm || IS_ERR(voltdm)) {
		pr_warning("%s: VDD specified does not exist!\n", __func__);
		return;
	}

	vdd = voltdm->vdd;

	switch (voltscale_method) {
	case VOLTSCALE_VPFORCEUPDATE:
		vdd->volt_scale = omap_vp_forceupdate_scale;
		voltdm->scale = omap_vp_forceupdate_scale;
		return;
	case VOLTSCALE_VCBYPASS:
		vdd->volt_scale = omap_vc_bypass_scale;
		voltdm->scale = omap_vc_bypass_scale;
		return;
	default:
		pr_warning("%s: Trying to change the method of voltage scaling"
@@ -315,7 +305,7 @@ int __init omap_voltage_late_init(void)
		clk_put(sys_ck);

		if (voltdm->vc) {
			voltdm->vdd->volt_scale = omap_vc_bypass_scale;
			voltdm->scale = omap_vc_bypass_scale;
			omap_vc_init_channel(voltdm);
		}

+4 −4
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ struct omap_vfsm_instance {
 * @read: read-modify-write a VC/VP register
 * @sys_clk: system clock name/frequency, used for various timing calculations
 * @vdd: to be removed
 * @scale: function used to scale the voltage of the voltagedomain
 */
struct voltagedomain {
	char *name;
@@ -82,6 +83,9 @@ struct voltagedomain {
		u32 rate;
	} sys_clk;

	int (*scale) (struct voltagedomain *voltdm,
		      unsigned long target_volt);

	struct omap_vdd_info *vdd;
};

@@ -145,14 +149,10 @@ struct omap_voltdm_pmic {
 * @volt_data		: voltage table having the distinct voltages supported
 *			  by the domain and other associated per voltage data.
 * @curr_volt		: current voltage for this vdd.
 * @volt_scale		: API to scale the voltage of the vdd.
 */
struct omap_vdd_info {
	struct omap_volt_data *volt_data;
	u32 curr_volt;

	int (*volt_scale) (struct voltagedomain *voltdm,
		unsigned long target_volt);
};

int omap_voltage_scale_vdd(struct voltagedomain *voltdm,