Lines Matching +full:autosuspend +full:- +full:delay +full:- +full:ms
5 * Copyright (c) 2008-2009 Jonathan Cameron <jic23@kernel.org>
24 #include <linux/delay.h>
63 #define KXSD9_CTRL_B_ST BIT(5) /* Self-test */
68 * struct kxsd9_state - device related storage
91 #define KXSD9_ZERO_G_OFFSET -2048
111 return -EINVAL; in kxsd9_write_scale()
113 ret = regmap_update_bits(st->map, in kxsd9_write_scale()
121 st->scale = i; in kxsd9_write_scale()
144 int ret = -EINVAL; in kxsd9_write_raw()
147 pm_runtime_get_sync(st->dev); in kxsd9_write_raw()
152 return -EINVAL; in kxsd9_write_raw()
156 pm_runtime_mark_last_busy(st->dev); in kxsd9_write_raw()
157 pm_runtime_put_autosuspend(st->dev); in kxsd9_write_raw()
166 int ret = -EINVAL; in kxsd9_read_raw()
172 pm_runtime_get_sync(st->dev); in kxsd9_read_raw()
176 ret = regmap_bulk_read(st->map, chan->address, &raw_val, in kxsd9_read_raw()
187 /* This has a bias of -2048 */ in kxsd9_read_raw()
192 ret = regmap_read(st->map, in kxsd9_read_raw()
204 pm_runtime_mark_last_busy(st->dev); in kxsd9_read_raw()
205 pm_runtime_put_autosuspend(st->dev); in kxsd9_read_raw()
213 struct iio_dev *indio_dev = pf->indio_dev; in kxsd9_trigger_handler()
225 ret = regmap_bulk_read(st->map, in kxsd9_trigger_handler()
230 dev_err(st->dev, in kxsd9_trigger_handler()
238 iio_trigger_notify_done(indio_dev->trig); in kxsd9_trigger_handler()
247 pm_runtime_get_sync(st->dev); in kxsd9_buffer_preenable()
256 pm_runtime_mark_last_busy(st->dev); in kxsd9_buffer_postdisable()
257 pm_runtime_put_autosuspend(st->dev); in kxsd9_buffer_postdisable()
275 return &st->orientation; in kxsd9_get_mount_matrix()
333 ret = regulator_bulk_enable(ARRAY_SIZE(st->regs), st->regs); in kxsd9_power_up()
335 dev_err(st->dev, "Cannot enable regulators\n"); in kxsd9_power_up()
340 ret = regmap_write(st->map, in kxsd9_power_up()
350 ret = regmap_write(st->map, in kxsd9_power_up()
355 st->scale); in kxsd9_power_up()
360 * Power-up time depends on the LPF setting, but typ 15.9 ms, let's in kxsd9_power_up()
361 * set 20 ms to allow for some slack. in kxsd9_power_up()
373 * Set into low power mode - since there may be more users of the in kxsd9_power_down()
378 ret = regmap_update_bits(st->map, in kxsd9_power_down()
386 ret = regulator_bulk_disable(ARRAY_SIZE(st->regs), st->regs); in kxsd9_power_down()
388 dev_err(st->dev, "Cannot disable regulators\n"); in kxsd9_power_down()
414 return -ENOMEM; in kxsd9_common_probe()
417 st->dev = dev; in kxsd9_common_probe()
418 st->map = map; in kxsd9_common_probe()
420 indio_dev->channels = kxsd9_channels; in kxsd9_common_probe()
421 indio_dev->num_channels = ARRAY_SIZE(kxsd9_channels); in kxsd9_common_probe()
422 indio_dev->name = name; in kxsd9_common_probe()
423 indio_dev->dev.parent = dev; in kxsd9_common_probe()
424 indio_dev->info = &kxsd9_info; in kxsd9_common_probe()
425 indio_dev->modes = INDIO_DIRECT_MODE; in kxsd9_common_probe()
426 indio_dev->available_scan_masks = kxsd9_scan_masks; in kxsd9_common_probe()
430 "mount-matrix", in kxsd9_common_probe()
431 &st->orientation); in kxsd9_common_probe()
436 st->regs[0].supply = kxsd9_reg_vdd; in kxsd9_common_probe()
437 st->regs[1].supply = kxsd9_reg_iovdd; in kxsd9_common_probe()
439 ARRAY_SIZE(st->regs), in kxsd9_common_probe()
440 st->regs); in kxsd9_common_probe()
446 st->scale = KXSD9_CTRL_C_FS_2G; in kxsd9_common_probe()
470 * Set autosuspend to two orders of magnitude larger than the in kxsd9_common_probe()
471 * start-up time. 20ms start-up time means 2000ms autosuspend, in kxsd9_common_probe()