diff options
Diffstat (limited to 'drivers/hwmon/lis3lv02d.c')
-rw-r--r-- | drivers/hwmon/lis3lv02d.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/hwmon/lis3lv02d.c b/drivers/hwmon/lis3lv02d.c index 1095dff9b200..7448411f51ea 100644 --- a/drivers/hwmon/lis3lv02d.c +++ b/drivers/hwmon/lis3lv02d.c | |||
@@ -307,19 +307,22 @@ void lis3lv02d_poweron(struct lis3lv02d *lis3) | |||
307 | 307 | ||
308 | lis3->init(lis3); | 308 | lis3->init(lis3); |
309 | 309 | ||
310 | /* LIS3 power on delay is quite long */ | ||
311 | msleep(lis3->pwron_delay / lis3lv02d_get_odr()); | ||
312 | |||
313 | /* | 310 | /* |
314 | * Common configuration | 311 | * Common configuration |
315 | * BDU: (12 bits sensors only) LSB and MSB values are not updated until | 312 | * BDU: (12 bits sensors only) LSB and MSB values are not updated until |
316 | * both have been read. So the value read will always be correct. | 313 | * both have been read. So the value read will always be correct. |
314 | * Set BOOT bit to refresh factory tuning values. | ||
317 | */ | 315 | */ |
318 | if (lis3->whoami == WAI_12B) { | 316 | lis3->read(lis3, CTRL_REG2, ®); |
319 | lis3->read(lis3, CTRL_REG2, ®); | 317 | if (lis3->whoami == WAI_12B) |
320 | reg |= CTRL2_BDU; | 318 | reg |= CTRL2_BDU | CTRL2_BOOT; |
321 | lis3->write(lis3, CTRL_REG2, reg); | 319 | else |
322 | } | 320 | reg |= CTRL2_BOOT_8B; |
321 | lis3->write(lis3, CTRL_REG2, reg); | ||
322 | |||
323 | /* LIS3 power on delay is quite long */ | ||
324 | msleep(lis3->pwron_delay / lis3lv02d_get_odr()); | ||
325 | |||
323 | if (lis3->reg_ctrl) | 326 | if (lis3->reg_ctrl) |
324 | lis3_context_restore(lis3); | 327 | lis3_context_restore(lis3); |
325 | } | 328 | } |