On Wed, May 4, 2022 at 3:36 PM LI Qingwu <Qing-wu.Li@xxxxxxxxxxxxxxxxxxxxxxx> wrote: > > The drive support sca3300 only. driver supports > There are some other similar chips, for instance, SCL3300. > Prepare the way for multiple chips and additional channels. > Modify the driver to read the device id. > Add the tables for the corresponding id to support multiple chips. > Add prepares for the addition of extra channels. > Add prepares for handling the operation modes for multiple chips. It seems you need to work more on the commit messages in all patches. ... > +struct sca3300_chip_info { > + const struct iio_chan_spec *channels; > + const int (*accel_scale_table)[2]; > + const int *accel_scale_modes_map; > + const unsigned long *scan_masks; > + const int *avail_modes_table; > + const int *freq_modes_map; > + const int *freq_table; > + const u8 num_accel_scales; > + const u8 num_avail_modes; > + const u8 num_channels; > + const u8 num_freqs; > + const u8 chip_id; Why do you have const qualifier on all members? The last one is understandable, but the rest, esp. pointers should be justified. > + const char *name; > +}; ... > +static int sca3300_set_op_mode(struct sca3300_data *sca_data, int index) > +{ > + int mode; > + > + if ((index < 0) || (index >= sca_data->chip->num_avail_modes)) Too many parentheses. > + return -EINVAL; > + > + mode = sca_data->chip->avail_modes_table[index]; > + > + return sca3300_write_reg(sca_data, SCA3300_REG_MODE, mode); > +} -- With Best Regards, Andy Shevchenko