On 30/12/16 10:49, Jonathan Cameron wrote: > On 08/12/16 14:22, Marcin Niestroj wrote: >> Datasheet specifies typical and maximum execution times for which CMD >> register is occupied after previous command execution. We took these >> values as minimum and maximum time for usleep_range() call before making >> a new command execution. >> >> To be sure, that the CMD register is no longer occupied we need to wait >> *at least* the maximum time specified by datasheet. >> >> Signed-off-by: Marcin Niestroj <m.niestroj@xxxxxxxxxxxxxxxx> > This looks like a definite bug that we would want to fix in stable as well. > If possible, could you ensure this is the first patch in the updated series? Actually don't worry. It applies cleanly to my fixes-togreg-post-rc1 branch anyway so I'll take it that way and send upstream asap. Applied to the fixes-togreg-post-rc1 branch and marked for stable. Thanks, Jonathan > > Thanks, > > Jonathan >> --- >> Patch introduced in v2 >> >> drivers/iio/imu/bmi160/bmi160_core.c | 25 ++++++------------------- >> 1 file changed, 6 insertions(+), 19 deletions(-) >> >> diff --git a/drivers/iio/imu/bmi160/bmi160_core.c b/drivers/iio/imu/bmi160/bmi160_core.c >> index 095533c..88bcf3f 100644 >> --- a/drivers/iio/imu/bmi160/bmi160_core.c >> +++ b/drivers/iio/imu/bmi160/bmi160_core.c >> @@ -67,10 +67,8 @@ >> >> #define BMI160_REG_DUMMY 0x7F >> >> -#define BMI160_ACCEL_PMU_MIN_USLEEP 3200 >> -#define BMI160_ACCEL_PMU_MAX_USLEEP 3800 >> -#define BMI160_GYRO_PMU_MIN_USLEEP 55000 >> -#define BMI160_GYRO_PMU_MAX_USLEEP 80000 >> +#define BMI160_ACCEL_PMU_MIN_USLEEP 3800 >> +#define BMI160_GYRO_PMU_MIN_USLEEP 80000 >> #define BMI160_SOFTRESET_USLEEP 1000 >> >> #define BMI160_CHANNEL(_type, _axis, _index) { \ >> @@ -153,20 +151,9 @@ static struct bmi160_regs bmi160_regs[] = { >> }, >> }; >> >> -struct bmi160_pmu_time { >> - unsigned long min; >> - unsigned long max; >> -}; >> - >> -static struct bmi160_pmu_time bmi160_pmu_time[] = { >> - [BMI160_ACCEL] = { >> - .min = BMI160_ACCEL_PMU_MIN_USLEEP, >> - .max = BMI160_ACCEL_PMU_MAX_USLEEP >> - }, >> - [BMI160_GYRO] = { >> - .min = BMI160_GYRO_PMU_MIN_USLEEP, >> - .max = BMI160_GYRO_PMU_MIN_USLEEP, >> - }, >> +static unsigned long bmi160_pmu_time[] = { >> + [BMI160_ACCEL] = BMI160_ACCEL_PMU_MIN_USLEEP, >> + [BMI160_GYRO] = BMI160_GYRO_PMU_MIN_USLEEP, >> }; >> >> struct bmi160_scale { >> @@ -293,7 +280,7 @@ int bmi160_set_mode(struct bmi160_data *data, enum bmi160_sensor_type t, >> if (ret < 0) >> return ret; >> >> - usleep_range(bmi160_pmu_time[t].min, bmi160_pmu_time[t].max); >> + usleep_range(bmi160_pmu_time[t], bmi160_pmu_time[t] + 1000); >> >> return 0; >> } >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html