Wrong threshold cold values may be written with current implementation.
This patch fixes the threshold update function by simplifying the
bitfield manipulation sequence.

Signed-off-by: Eduardo Valentin <eduardo.valen...@ti.com>
---
 drivers/staging/ti-soc-thermal/ti-bandgap.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/ti-soc-thermal/ti-bandgap.c 
b/drivers/staging/ti-soc-thermal/ti-bandgap.c
index d075186..5c946cd 100644
--- a/drivers/staging/ti-soc-thermal/ti-bandgap.c
+++ b/drivers/staging/ti-soc-thermal/ti-bandgap.c
@@ -418,10 +418,10 @@ static int ti_bandgap_update_alert_threshold(struct 
ti_bandgap *bgp, int id,
        }
 
        /* write the new threshold values */
-       reg_val = thresh_val & ~tsr->threshold_thot_mask;
-       reg_val |= (t_hot << __ffs(tsr->threshold_thot_mask));
-       reg_val |= thresh_val & ~tsr->threshold_tcold_mask;
-       reg_val |= (t_cold << __ffs(tsr->threshold_tcold_mask));
+       reg_val = thresh_val &
+                 ~(tsr->threshold_thot_mask | tsr->threshold_tcold_mask);
+       reg_val |= (t_hot << __ffs(tsr->threshold_thot_mask)) |
+                  (t_cold << __ffs(tsr->threshold_tcold_mask));
        ti_bandgap_writel(bgp, reg_val, tsr->bgap_threshold);
 
        if (err) {
-- 
1.7.7.1.488.ge8e1c

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to