Message ID | 20220509134629.440965-5-Qing-wu.Li@leica-geosystems.com.cn (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | iio: accel: bmi088: support BMI085 BMI090L | expand |
Hi LI, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on jic23-iio/togreg] [also build test WARNING on v5.18-rc6 next-20220509] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/intel-lab-lkp/linux/commits/LI-Qingwu/iio-accel-bmi088-support-BMI085-BMI090L/20220509-215750 base: https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg config: i386-randconfig-r013-20220509 (https://download.01.org/0day-ci/archive/20220510/202205100100.6k4OJbjS-lkp@intel.com/config) compiler: gcc-11 (Debian 11.2.0-20) 11.2.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/70883e96ff4d7433fa8974815aba932f8bb2e8e7 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review LI-Qingwu/iio-accel-bmi088-support-BMI085-BMI090L/20220509-215750 git checkout 70883e96ff4d7433fa8974815aba932f8bb2e8e7 # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/iio/accel/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): drivers/iio/accel/bmi088-accel-core.c: In function 'bmi088_accel_set_scale': >> drivers/iio/accel/bmi088-accel-core.c:244:13: warning: unused variable 'reg' [-Wunused-variable] 244 | int reg; | ^~~ >> drivers/iio/accel/bmi088-accel-core.c:243:13: warning: unused variable 'ret' [-Wunused-variable] 243 | int ret; | ^~~ vim +/reg +244 drivers/iio/accel/bmi088-accel-core.c 239 240 static int bmi088_accel_set_scale(struct bmi088_accel_data *data, int val, int val2) 241 { 242 unsigned int i; > 243 int ret; > 244 int reg; 245 246 for (i = 0; i < 4; i++) 247 if (val == data->chip_info->scale_table[i][0] && 248 val2 == data->chip_info->scale_table[i][1]) 249 break; 250 251 if (i >= 4) 252 return -EINVAL; 253 254 return regmap_write(data->regmap, BMI088_ACCEL_REG_ACC_RANGE, i); 255 } 256
Hi LI, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on jic23-iio/togreg] [also build test WARNING on v5.18-rc6 next-20220509] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/intel-lab-lkp/linux/commits/LI-Qingwu/iio-accel-bmi088-support-BMI085-BMI090L/20220509-215750 base: https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg config: x86_64-randconfig-a003-20220509 (https://download.01.org/0day-ci/archive/20220510/202205100238.ZzT44bv1-lkp@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project a385645b470e2d3a1534aae618ea56b31177639f) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/70883e96ff4d7433fa8974815aba932f8bb2e8e7 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review LI-Qingwu/iio-accel-bmi088-support-BMI085-BMI090L/20220509-215750 git checkout 70883e96ff4d7433fa8974815aba932f8bb2e8e7 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/iio/accel/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> drivers/iio/accel/bmi088-accel-core.c:243:6: warning: unused variable 'ret' [-Wunused-variable] int ret; ^ >> drivers/iio/accel/bmi088-accel-core.c:244:6: warning: unused variable 'reg' [-Wunused-variable] int reg; ^ 2 warnings generated. vim +/ret +243 drivers/iio/accel/bmi088-accel-core.c 239 240 static int bmi088_accel_set_scale(struct bmi088_accel_data *data, int val, int val2) 241 { 242 unsigned int i; > 243 int ret; > 244 int reg; 245 246 for (i = 0; i < 4; i++) 247 if (val == data->chip_info->scale_table[i][0] && 248 val2 == data->chip_info->scale_table[i][1]) 249 break; 250 251 if (i >= 4) 252 return -EINVAL; 253 254 return regmap_write(data->regmap, BMI088_ACCEL_REG_ACC_RANGE, i); 255 } 256
On Mon, May 9, 2022 at 4:46 PM LI Qingwu <Qing-wu.Li@leica-geosystems.com.cn> wrote: > > All the sensors can set the scales by writing the range register 0x41, > The current driver has no interface to configure it. > The commit adds the interface for config the scales. With the warnings fixed: Reviewed-by: Alexandru Ardelean <ardeleanalex@gmail.com> > > Signed-off-by: LI Qingwu <Qing-wu.Li@leica-geosystems.com.cn> > --- > drivers/iio/accel/bmi088-accel-core.c | 32 +++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/drivers/iio/accel/bmi088-accel-core.c b/drivers/iio/accel/bmi088-accel-core.c > index 44cbe098c093..7c78cfb321ee 100644 > --- a/drivers/iio/accel/bmi088-accel-core.c > +++ b/drivers/iio/accel/bmi088-accel-core.c > @@ -237,6 +237,23 @@ static int bmi088_accel_set_sample_freq(struct bmi088_accel_data *data, int val) > BMI088_ACCEL_MODE_ODR_MASK, regval); > } > > +static int bmi088_accel_set_scale(struct bmi088_accel_data *data, int val, int val2) > +{ > + unsigned int i; > + int ret; > + int reg; > + > + for (i = 0; i < 4; i++) > + if (val == data->chip_info->scale_table[i][0] && > + val2 == data->chip_info->scale_table[i][1]) > + break; > + > + if (i >= 4) > + return -EINVAL; > + > + return regmap_write(data->regmap, BMI088_ACCEL_REG_ACC_RANGE, i); > +} > + > static int bmi088_accel_get_temp(struct bmi088_accel_data *data, int *val) > { > int ret; > @@ -368,7 +385,13 @@ static int bmi088_accel_read_avail(struct iio_dev *indio_dev, > const int **vals, int *type, int *length, > long mask) > { > + struct bmi088_accel_data *data = iio_priv(indio_dev); > switch (mask) { > + case IIO_CHAN_INFO_SCALE: > + *vals = (const int *)data->chip_info->scale_table; > + *length = 8; > + *type = IIO_VAL_INT_PLUS_MICRO; > + return IIO_AVAIL_LIST; > case IIO_CHAN_INFO_SAMP_FREQ: > *type = IIO_VAL_INT_PLUS_MICRO; > *vals = bmi088_sample_freqs; > @@ -388,6 +411,14 @@ static int bmi088_accel_write_raw(struct iio_dev *indio_dev, > int ret; > > switch (mask) { > + case IIO_CHAN_INFO_SCALE: > + ret = pm_runtime_resume_and_get(dev); > + if (ret) > + return ret; > + ret = bmi088_accel_set_scale(data, val, val2); > + pm_runtime_mark_last_busy(dev); > + pm_runtime_put_autosuspend(dev); > + return ret; > case IIO_CHAN_INFO_SAMP_FREQ: > ret = pm_runtime_resume_and_get(dev); > if (ret) > @@ -410,6 +441,7 @@ static int bmi088_accel_write_raw(struct iio_dev *indio_dev, > .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE) | \ > BIT(IIO_CHAN_INFO_SAMP_FREQ), \ > .info_mask_shared_by_type_available = BIT(IIO_CHAN_INFO_SAMP_FREQ), \ > + BIT(IIO_CHAN_INFO_SCALE ), \ > .scan_index = AXIS_##_axis, \ > } > > -- > 2.25.1 >
diff --git a/drivers/iio/accel/bmi088-accel-core.c b/drivers/iio/accel/bmi088-accel-core.c index 44cbe098c093..7c78cfb321ee 100644 --- a/drivers/iio/accel/bmi088-accel-core.c +++ b/drivers/iio/accel/bmi088-accel-core.c @@ -237,6 +237,23 @@ static int bmi088_accel_set_sample_freq(struct bmi088_accel_data *data, int val) BMI088_ACCEL_MODE_ODR_MASK, regval); } +static int bmi088_accel_set_scale(struct bmi088_accel_data *data, int val, int val2) +{ + unsigned int i; + int ret; + int reg; + + for (i = 0; i < 4; i++) + if (val == data->chip_info->scale_table[i][0] && + val2 == data->chip_info->scale_table[i][1]) + break; + + if (i >= 4) + return -EINVAL; + + return regmap_write(data->regmap, BMI088_ACCEL_REG_ACC_RANGE, i); +} + static int bmi088_accel_get_temp(struct bmi088_accel_data *data, int *val) { int ret; @@ -368,7 +385,13 @@ static int bmi088_accel_read_avail(struct iio_dev *indio_dev, const int **vals, int *type, int *length, long mask) { + struct bmi088_accel_data *data = iio_priv(indio_dev); switch (mask) { + case IIO_CHAN_INFO_SCALE: + *vals = (const int *)data->chip_info->scale_table; + *length = 8; + *type = IIO_VAL_INT_PLUS_MICRO; + return IIO_AVAIL_LIST; case IIO_CHAN_INFO_SAMP_FREQ: *type = IIO_VAL_INT_PLUS_MICRO; *vals = bmi088_sample_freqs; @@ -388,6 +411,14 @@ static int bmi088_accel_write_raw(struct iio_dev *indio_dev, int ret; switch (mask) { + case IIO_CHAN_INFO_SCALE: + ret = pm_runtime_resume_and_get(dev); + if (ret) + return ret; + ret = bmi088_accel_set_scale(data, val, val2); + pm_runtime_mark_last_busy(dev); + pm_runtime_put_autosuspend(dev); + return ret; case IIO_CHAN_INFO_SAMP_FREQ: ret = pm_runtime_resume_and_get(dev); if (ret) @@ -410,6 +441,7 @@ static int bmi088_accel_write_raw(struct iio_dev *indio_dev, .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE) | \ BIT(IIO_CHAN_INFO_SAMP_FREQ), \ .info_mask_shared_by_type_available = BIT(IIO_CHAN_INFO_SAMP_FREQ), \ + BIT(IIO_CHAN_INFO_SCALE ), \ .scan_index = AXIS_##_axis, \ }
All the sensors can set the scales by writing the range register 0x41, The current driver has no interface to configure it. The commit adds the interface for config the scales. Signed-off-by: LI Qingwu <Qing-wu.Li@leica-geosystems.com.cn> --- drivers/iio/accel/bmi088-accel-core.c | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)