iio: accel: kxsd9: Deploy system and runtime PM
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 1 Sep 2016 09:44:48 +0000 (11:44 +0200)
committerJonathan Cameron <jic23@kernel.org>
Sun, 18 Sep 2016 10:35:59 +0000 (11:35 +0100)
commit9a9a369d6178dd4e263c49085ce1b37e1e8f63a0
tree11561a13081f635b5e84a49cacbb49b52b694efd
parent79383aaec47a0ea0df49728ad0b8e72c4ac58fd0
iio: accel: kxsd9: Deploy system and runtime PM

This deploys runtime and system PM in the KXSD9 driver:

- Use the force_runtime_suspend/resume callbacks as system PM
  operations.

- Add buffer prepare/unprepare callbacks to grab the runtime
  PM while we're using buffered reads and put get/put_autosuspend
  in these.

- Insert get/put_autosuspend calls anywhere the IO is used from
  the raw read/write callbacks.

- Move the fullscale setting to be cached in the state container
  so we can restore it properly when coming back from
  system/runtime suspend.

- Set the autosuspend delay to two orders of magnitude that of
  the sensor start-up time (20ms) so we will autosuspend after
  2s.

- Register the callbacks in both the SPI and I2C subdrivers.

Tested with the I2C KXSD9 on the Qualcomm APQ8060 Dragonboard.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/accel/kxsd9-i2c.c
drivers/iio/accel/kxsd9-spi.c
drivers/iio/accel/kxsd9.c
drivers/iio/accel/kxsd9.h