diff options
author | Eduardo Valentin <eduardo.valentin@ti.com> | 2013-03-19 10:54:27 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-03-25 11:28:31 -0700 |
commit | 0fb3c244fe506d1c0e6138890685c1d5e8cd29e2 (patch) | |
tree | 77d135ac381834e0758456e5d977e37825f7516c /drivers/staging/ti-soc-thermal | |
parent | f5d43b7a51af16977b260c05435d61fc653f584a (diff) |
staging: ti-soc-thermal: fix bitfield writing while updating thresholds
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.valentin@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/ti-soc-thermal')
-rw-r--r-- | 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 d0751863a9c..5c946cd7d67 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) { |