04.02.2020 12:30, David Heidelberg пишет: ... > #define AL3320A_CONFIG_DISABLE 0x00 > #define AL3320A_CONFIG_ENABLE 0x01 > > -#define AL3320A_GAIN_SHIFT 1 > -#define AL3320A_GAIN_MASK (BIT(2) | BIT(1)) > +#define AL3320A_GAIN_MASK GENMASK(2, 1) Looks like you forgot to compile-test this driver because the AL3320A_GAIN_SHIFT is removed above, while it's still in-use below. > /* chip params default values */ > #define AL3320A_DEFAULT_MEAN_TIME 4 > @@ -90,7 +89,8 @@ static int al3320a_init(struct al3320a_data *data) > return ret; > > ret = i2c_smbus_write_byte_data(data->client, AL3320A_REG_CONFIG_RANGE, > - AL3320A_RANGE_3 << AL3320A_GAIN_SHIFT); > + FIELD_PREP(AL3320A_GAIN_MASK, > + AL3320A_RANGE_3)); ...