On Mon, 12 Sep 2022 02:53:06 +0200 Angel Iglesias <ang.iglesiasg@xxxxxxxxx> wrote: > On Mon, 2022-08-08 at 11:13 +0200, Andy Shevchenko wrote: > > On Sun, Aug 7, 2022 at 2:44 PM Angel Iglesias <ang.iglesiasg@xxxxxxxxx> wrote: > > > > > > Allows sampling frequency and IIR filter coefficients configuration > > > using sysfs ABI. > > > > > > The IIR filter coefficient is configurable using the sysfs attribute > > > "filter_low_pass_3db_frequency". > > > > ... > > > > > +static const int bmp380_odr_table[][2] = { > > > > s32_fract ? > > I modeled this bit and other ODR representations after the adxl355 driver. I see > that s32_fract would be a bit cleaner than having arrays inside arrays, but I'm > failing to see which additional advantages would provide. > Also, technically, these are precomputed frequencies, the first index is the > integer part and the second is the fractional part. The fractions would be > 200/1, 200/2, 200/4 ... 200/131072 > Agreed. Don't use s32_fract for this. It would be misleading. Jonathan > > > + [BMP380_ODR_200HZ] = {200, 0}, > > > + [BMP380_ODR_100HZ] = {100, 0}, > > > + [BMP380_ODR_50HZ] = {50, 0}, > > > + [BMP380_ODR_25HZ] = {25, 0}, > > > + [BMP380_ODR_12_5HZ] = {12, 500000}, > > > + [BMP380_ODR_6_25HZ] = {6, 250000}, > > > + [BMP380_ODR_3_125HZ] = {3, 125000}, > > > + [BMP380_ODR_1_5625HZ] = {1, 562500}, > > > + [BMP380_ODR_0_78HZ] = {0, 781250}, > > > + [BMP380_ODR_0_39HZ] = {0, 390625}, > > > + [BMP380_ODR_0_2HZ] = {0, 195313}, > > > + [BMP380_ODR_0_1HZ] = {0, 97656}, > > > + [BMP380_ODR_0_05HZ] = {0, 48828}, > > > + [BMP380_ODR_0_02HZ] = {0, 24414}, > > > + [BMP380_ODR_0_01HZ] = {0, 12207}, > > > + [BMP380_ODR_0_006HZ] = {0, 6104}, > > > + [BMP380_ODR_0_003HZ] = {0, 3052}, > > > + [BMP380_ODR_0_0015HZ] = {0, 1526}, > > > +}; > > > > ... > > > > > + ret = regmap_write_bits(data->regmap, > > > BMP380_REG_POWER_CONTROL, > > > + BMP380_MODE_MASK, > > > > > + FIELD_PREP(BMP380_MODE_MASK, > > > + BMP380_MODE_SLEEP)); > > > > One line? > > > > ... > > > > > + ret = regmap_write_bits(data->regmap, > > > BMP380_REG_POWER_CONTROL, > > > + BMP380_MODE_MASK, > > > > > + FIELD_PREP(BMP380_MODE_MASK, > > > + BMP380_MODE_NORMAL)); > > > > Ditto. > > > > ... > > > > > +static const int bmp380_iir_filter_coeffs_avail[] = { 0, 1, 3, 7, 15, 31, > > > 63, 127 }; > > > > This seems like a power of two - 1, can it be replaced by a formula in the > > code? > > >