aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/omap-thermal
diff options
context:
space:
mode:
authorRadhesh Fadnis <radhesh.fadnis@ti.com>2012-11-13 14:10:04 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-11-13 15:08:31 -0800
commitb87ea759a4cc2cae359288f003aae6a027330860 (patch)
treee76f3ca584ae6ae0976431e3e539a63bd6b80d68 /drivers/staging/omap-thermal
parentstaging: omap-thermal: add IRQ debugging messaging (diff)
downloadlinux-dev-b87ea759a4cc2cae359288f003aae6a027330860.tar.xz
linux-dev-b87ea759a4cc2cae359288f003aae6a027330860.zip
staging: omap-thermal: fix context restore function
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>
Diffstat (limited to 'drivers/staging/omap-thermal')
-rw-r--r--drivers/staging/omap-thermal/omap-bandgap.c57
1 files changed, 21 insertions, 36 deletions
diff --git a/drivers/staging/omap-thermal/omap-bandgap.c b/drivers/staging/omap-thermal/omap-bandgap.c
index 3eb726f29d15..c17bc955c553 100644
--- a/drivers/staging/omap-thermal/omap-bandgap.c
+++ b/drivers/staging/omap-thermal/omap-bandgap.c
@@ -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;
@@ -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);
}
}