Skip to content

Commit

Permalink
staging: omap-thermal: fix context restore function
Browse files Browse the repository at this point in the history
In the context restore function, if the context is lost or
not is being checked by the contents of the counter register.
But this is logic hold good as long as counter reset value is
zero, if the reset value is non-zero then above logic doesn't
hold good. Hence removed checking of the register value and
restoring the context.

Signed-off-by: Radhesh Fadnis <radhesh.fadnis@ti.com>
Signed-off-by: Enric Balletbo i Serra <eballetbo@gmail.com>
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Radhesh Fadnis authored and Greg Kroah-Hartman committed Nov 13, 2012
1 parent 71e303f commit b87ea75
Showing 1 changed file with 21 additions and 36 deletions.
57 changes: 21 additions & 36 deletions drivers/staging/omap-thermal/omap-bandgap.c
Original file line number Diff line number Diff line change
Expand Up @@ -1065,7 +1065,6 @@ static int omap_bandgap_save_ctxt(struct omap_bandgap *bg_ptr)
static int omap_bandgap_restore_ctxt(struct omap_bandgap *bg_ptr)
{
int i;
u32 temp = 0;

for (i = 0; i < bg_ptr->conf->sensor_count; i++) {
struct temp_sensor_registers *tsr;
Expand All @@ -1078,41 +1077,27 @@ static int omap_bandgap_restore_ctxt(struct omap_bandgap *bg_ptr)
if (OMAP_BANDGAP_HAS(bg_ptr, COUNTER))
val = omap_bandgap_readl(bg_ptr, tsr->bgap_counter);

if (val == 0) {
if (OMAP_BANDGAP_HAS(bg_ptr, TSHUT_CONFIG))
omap_bandgap_writel(bg_ptr,
rval->tshut_threshold,
tsr->tshut_threshold);
/* Force immediate temperature measurement and update
* of the DTEMP field
*/
omap_bandgap_force_single_read(bg_ptr, i);

if (OMAP_BANDGAP_HAS(bg_ptr, COUNTER))
omap_bandgap_writel(bg_ptr, rval->bg_counter,
tsr->bgap_counter);
if (OMAP_BANDGAP_HAS(bg_ptr, MODE_CONFIG))
omap_bandgap_writel(bg_ptr, rval->bg_mode_ctrl,
tsr->bgap_mode_ctrl);
if (OMAP_BANDGAP_HAS(bg_ptr, TALERT)) {
omap_bandgap_writel(bg_ptr,
rval->bg_threshold,
tsr->bgap_threshold);
omap_bandgap_writel(bg_ptr, rval->bg_ctrl,
tsr->bgap_mask_ctrl);
}
} else {
temp = omap_bandgap_readl(bg_ptr,
tsr->temp_sensor_ctrl);
temp &= (tsr->bgap_dtemp_mask);
omap_bandgap_force_single_read(bg_ptr, i);
if (temp == 0 && OMAP_BANDGAP_HAS(bg_ptr, TALERT)) {
temp = omap_bandgap_readl(bg_ptr,
tsr->bgap_mask_ctrl);
temp |= 1 << __ffs(tsr->mode_ctrl_mask);
omap_bandgap_writel(bg_ptr, temp,
tsr->bgap_mask_ctrl);
}
if (OMAP_BANDGAP_HAS(bg_ptr, TSHUT_CONFIG))
omap_bandgap_writel(bg_ptr,
rval->tshut_threshold,
tsr->tshut_threshold);
/* Force immediate temperature measurement and update
* of the DTEMP field
*/
omap_bandgap_force_single_read(bg_ptr, i);

if (OMAP_BANDGAP_HAS(bg_ptr, COUNTER))
omap_bandgap_writel(bg_ptr, rval->bg_counter,
tsr->bgap_counter);
if (OMAP_BANDGAP_HAS(bg_ptr, MODE_CONFIG))
omap_bandgap_writel(bg_ptr, rval->bg_mode_ctrl,
tsr->bgap_mode_ctrl);
if (OMAP_BANDGAP_HAS(bg_ptr, TALERT)) {
omap_bandgap_writel(bg_ptr,
rval->bg_threshold,
tsr->bgap_threshold);
omap_bandgap_writel(bg_ptr, rval->bg_ctrl,
tsr->bgap_mask_ctrl);
}
}

Expand Down

0 comments on commit b87ea75

Please sign in to comment.