On Mon, Apr 27, 2020 at 3:56 PM Jishnu Prakash <jprakash@xxxxxxxxxxxxxx> wrote: > On 4/17/2020 3:51 PM, Andy Shevchenko wrote: > On Thu, Apr 16, 2020 at 1:48 AM Jishnu Prakash <jprakash@xxxxxxxxxxxxxx> wrote: Stop using HTML. It breaks badly the reply and discussion. ... > +static const struct adc5_data adc7_data_pmic; > > Global variable? Hmm... > > adc7_data_pmic is referenced twice before its actual definition (which was added along with corresponding adc5_data struct for PMIC5 ADC), so I have given the initial declaration here. Maybe you can realize how to avoid global variable at all? ... > + buf[1] &= 0xff & ~ADC5_USR_FAST_AVG_CTL_SAMPLES_MASK; > > What the point of 0xff & part? > > This was something you suggested in my first post: > > > + buf[1] &= (u8) ~ADC5_USR_FAST_AVG_CTL_SAMPLES_MASK; > > Use '0xFF ^ _MASK' instead of casting. > > ... > > > + buf[3] &= (u8) ~ADC5_USR_HW_SETTLE_DELAY_MASK; > > Ditto. > > I think "0xff &" works as intended here in place of casting to (u8)... Does it work without casting? (Note, I suggested slightly different expression) I.o.w. what the problem casting solves? > + buf[1] |= prop->avg_samples; > + > + /* Select ADC channel */ > + buf[2] = prop->channel; > + > + /* Select HW settle delay for channel */ > + buf[3] &= 0xff & ~ADC5_USR_HW_SETTLE_DELAY_MASK; > > Ditto. > > + buf[3] |= prop->hw_settle_time; -- With Best Regards, Andy Shevchenko