@@ -7,6 +7,7 @@
* Lorenzo Bianconi <lorenzo.bianconi@st.com>
*/
+#include <linux/bitfield.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/device.h>
@@ -171,7 +172,7 @@ static int hts221_update_avg(struct hts221_hw *hw,
u16 val)
{
const struct hts221_avg *avg = &hts221_avg_list[type];
- int i, err, data;
+ int i, err;
for (i = 0; i < HTS221_AVG_DEPTH; i++)
if (avg->avg_avl[i] == val)
@@ -180,9 +181,8 @@ static int hts221_update_avg(struct hts221_hw *hw,
if (i == HTS221_AVG_DEPTH)
return -EINVAL;
- data = ((i << __ffs(avg->mask)) & avg->mask);
- err = regmap_update_bits(hw->regmap, avg->addr,
- avg->mask, data);
+ err = regmap_update_bits(hw->regmap, avg->addr, avg->mask,
+ field_prep(avg->mask, i));
if (err < 0)
return err;
Use the field_prep() helper, instead of open-coding the same operation. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> --- Compile-tested only. Marked RFC, as this depends on [PATCH 01/17], but follows a different path to upstream. --- drivers/iio/humidity/hts221_core.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)