Commit 3e2a928472daa839e7be0d71c1d8320334ea76e1
Committed by
Mark Brown
1 parent
7f852e0584
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
regulator: anatop: Fix wrong mask used in anatop_get_voltage_sel
The mask used in anatop_get_voltage_sel does not match the mask used in anatop_set_voltage_sel. We need to do left shift anatop_reg->vol_bit_shift bits for the correct mask. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Showing 1 changed file with 3 additions and 2 deletions Side-by-side Diff
drivers/regulator/anatop-regulator.c
... | ... | @@ -64,14 +64,15 @@ |
64 | 64 | static int anatop_get_voltage_sel(struct regulator_dev *reg) |
65 | 65 | { |
66 | 66 | struct anatop_regulator *anatop_reg = rdev_get_drvdata(reg); |
67 | - u32 val; | |
67 | + u32 val, mask; | |
68 | 68 | |
69 | 69 | if (!anatop_reg->control_reg) |
70 | 70 | return -ENOTSUPP; |
71 | 71 | |
72 | 72 | val = anatop_read_reg(anatop_reg->mfd, anatop_reg->control_reg); |
73 | - val = (val & ((1 << anatop_reg->vol_bit_width) - 1)) >> | |
73 | + mask = ((1 << anatop_reg->vol_bit_width) - 1) << | |
74 | 74 | anatop_reg->vol_bit_shift; |
75 | + val = (val & mask) >> anatop_reg->vol_bit_shift; | |
75 | 76 | |
76 | 77 | return val - anatop_reg->min_bit_val; |
77 | 78 | } |