Skip to content

Commit

Permalink
OMAP3+: VP: move voltage scale function pointer into struct voltagedo…
Browse files Browse the repository at this point in the history
…main

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: Kevin Hilman <khilman@ti.com>
  • Loading branch information
Kevin Hilman committed Sep 15, 2011
1 parent 667216d commit 0f01565
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 21 deletions.
24 changes: 7 additions & 17 deletions arch/arm/mach-omap2/voltage.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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);
}

/**
Expand Down Expand Up @@ -258,23 +252,19 @@ int omap_voltage_register_pmic(struct voltagedomain *voltdm,
* defined in voltage.h
*/
void omap_change_voltscale_method(struct voltagedomain *voltdm,
int voltscale_method)
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"
Expand Down Expand Up @@ -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);
}

Expand Down
8 changes: 4 additions & 4 deletions arch/arm/mach-omap2/voltage.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -82,6 +83,9 @@ struct voltagedomain {
u32 rate;
} sys_clk;

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

struct omap_vdd_info *vdd;
};

Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit 0f01565

Please sign in to comment.