Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 296103
b: refs/heads/master
c: ad54c3d
h: refs/heads/master
i:
  296101: b768567
  296099: 5e7d29e
  296095: 126c900
v: v3
  • Loading branch information
Nishanth Menon authored and Kevin Hilman committed Mar 5, 2012
1 parent 695a881 commit 0896485
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 74754cc5e047184588f35b3f9689a9c3e0599483
refs/heads/master: ad54c3ddb472410f05083dbcf03fcec67ab7b2a5
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-omap2/smartreflex-class3.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ static int sr_class3_enable(struct voltagedomain *voltdm)

static int sr_class3_disable(struct voltagedomain *voltdm, int is_volt_reset)
{
sr_disable_errgen(voltdm);
omap_vp_disable(voltdm);
sr_disable(voltdm);
if (is_volt_reset)
Expand Down
44 changes: 44 additions & 0 deletions trunk/arch/arm/mach-omap2/smartreflex.c
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,50 @@ int sr_configure_errgen(struct voltagedomain *voltdm)
return 0;
}

/**
* sr_disable_errgen() - Disables SmartReflex AVS module's errgen component
* @voltdm: VDD pointer to which the SR module to be configured belongs to.
*
* This API is to be called from the smartreflex class driver to
* disable the error generator module inside the smartreflex module.
*
* Returns 0 on success and error value in case of failure.
*/
int sr_disable_errgen(struct voltagedomain *voltdm)
{
u32 errconfig_offs, vpboundint_en;
u32 vpboundint_st;
struct omap_sr *sr = _sr_lookup(voltdm);

if (IS_ERR(sr)) {
pr_warning("%s: omap_sr struct for sr_%s not found\n",
__func__, voltdm->name);
return -EINVAL;
}

if (sr->ip_type == SR_TYPE_V1) {
errconfig_offs = ERRCONFIG_V1;
vpboundint_en = ERRCONFIG_VPBOUNDINTEN_V1;
vpboundint_st = ERRCONFIG_VPBOUNDINTST_V1;
} else if (sr->ip_type == SR_TYPE_V2) {
errconfig_offs = ERRCONFIG_V2;
vpboundint_en = ERRCONFIG_VPBOUNDINTEN_V2;
vpboundint_st = ERRCONFIG_VPBOUNDINTST_V2;
} else {
dev_err(&sr->pdev->dev, "%s: Trying to Configure smartreflex"
"module without specifying the ip\n", __func__);
return -EINVAL;
}

/* Disable the interrupts of ERROR module */
sr_modify_reg(sr, errconfig_offs, vpboundint_en | vpboundint_st, 0);

/* Disable the Sensor and errorgen */
sr_modify_reg(sr, SRCONFIG, SRCONFIG_SENENABLE | SRCONFIG_ERRGEN_EN, 0);

return 0;
}

/**
* sr_configure_minmax() - Configures the smrtreflex to perform AVS using the
* minmaxavg module.
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-omap2/smartreflex.h
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ void omap_sr_register_pmic(struct omap_sr_pmic_data *pmic_data);
int sr_enable(struct voltagedomain *voltdm, unsigned long volt);
void sr_disable(struct voltagedomain *voltdm);
int sr_configure_errgen(struct voltagedomain *voltdm);
int sr_disable_errgen(struct voltagedomain *voltdm);
int sr_configure_minmax(struct voltagedomain *voltdm);

/* API to register the smartreflex class driver with the smartreflex driver */
Expand Down

0 comments on commit 0896485

Please sign in to comment.