![Linus Walleij](/assets/img/avatar_default.png)
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>
13 lines
309 B
C
13 lines
309 B
C
#include <linux/device.h>
|
|
#include <linux/kernel.h>
|
|
|
|
#define KXSD9_STATE_RX_SIZE 2
|
|
#define KXSD9_STATE_TX_SIZE 2
|
|
|
|
int kxsd9_common_probe(struct device *dev,
|
|
struct regmap *map,
|
|
const char *name);
|
|
int kxsd9_common_remove(struct device *dev);
|
|
|
|
extern const struct dev_pm_ops kxsd9_dev_pm_ops;
|