提交 b87ea759 编写于 作者: R Radhesh Fadnis 提交者: Greg Kroah-Hartman

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: NRadhesh Fadnis <radhesh.fadnis@ti.com>
Signed-off-by: NEnric Balletbo i Serra <eballetbo@gmail.com>
Signed-off-by: NEduardo Valentin <eduardo.valentin@ti.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 71e303f5
......@@ -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);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册