On Mon, Jan 02, 2023 at 01:28:57PM -0800, Zev Weiss wrote: > Commit 4ef2774511dc ("hwmon: (nct6775) Convert register access to > regmap API") fumbled the shifting & masking of the fan_div values such > that odd-numbered fan divisors would always be set to zero. Fix it so > that we actually OR in the bits we meant to. > > Signed-off-by: Zev Weiss <zev@xxxxxxxxxxxxxxxxx> > Fixes: 4ef2774511dc ("hwmon: (nct6775) Convert register access to regmap API") > Cc: stable@xxxxxxxxxx # v5.19+ Applied. Thanks, Guenter > --- > > This bug got noticed during review [0] and the fix was incorporated > into v3 of the patch series [1], but then I somehow managed to > accidentally revert the fix in v4 [2] that actually got applied. > > I'm fairly confident this is correct, but I don't have any nct6775 > hardware to test on (this code path is only used on that specific > chip, not others in the family). If any one who does can try it out > and report back that would of course be welcome. > > [0] https://lore.kernel.org/linux-hwmon/YiiMfJV3bjUmoUcV@xxxxxxxxxxxxxxxxxxxxxxxx/ > [1] https://lore.kernel.org/linux-hwmon/20220426071848.11619-3-zev@xxxxxxxxxxxxxxxxx/ > [2] https://lore.kernel.org/linux-hwmon/20220427010154.29749-3-zev@xxxxxxxxxxxxxxxxx/ > > drivers/hwmon/nct6775-core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/hwmon/nct6775-core.c b/drivers/hwmon/nct6775-core.c > index da9ec6983e13..c54233f0369b 100644 > --- a/drivers/hwmon/nct6775-core.c > +++ b/drivers/hwmon/nct6775-core.c > @@ -1150,7 +1150,7 @@ static int nct6775_write_fan_div(struct nct6775_data *data, int nr) > if (err) > return err; > reg &= 0x70 >> oddshift; > - reg |= data->fan_div[nr] & (0x7 << oddshift); > + reg |= (data->fan_div[nr] & 0x7) << oddshift; > return nct6775_write_value(data, fandiv_reg, reg); > } >