Lines Matching +full:autosuspend +full:- +full:delay

1 // SPDX-License-Identifier: GPL-2.0-only
6 * Copyright (c) 2008-2009 Jonathan Cameron <[email protected]>
22 #include <linux/delay.h>
61 #define KXSD9_CTRL_B_ST BIT(5) /* Self-test */
66 * struct kxsd9_state - device related storage
89 #define KXSD9_ZERO_G_OFFSET -2048
109 return -EINVAL; in kxsd9_write_scale()
111 ret = regmap_update_bits(st->map, in kxsd9_write_scale()
119 st->scale = i; in kxsd9_write_scale()
142 int ret = -EINVAL; in kxsd9_write_raw()
145 pm_runtime_get_sync(st->dev); in kxsd9_write_raw()
150 return -EINVAL; in kxsd9_write_raw()
154 pm_runtime_mark_last_busy(st->dev); in kxsd9_write_raw()
155 pm_runtime_put_autosuspend(st->dev); in kxsd9_write_raw()
164 int ret = -EINVAL; in kxsd9_read_raw()
170 pm_runtime_get_sync(st->dev); in kxsd9_read_raw()
174 ret = regmap_bulk_read(st->map, chan->address, &raw_val, in kxsd9_read_raw()
185 /* This has a bias of -2048 */ in kxsd9_read_raw()
190 ret = regmap_read(st->map, in kxsd9_read_raw()
202 pm_runtime_mark_last_busy(st->dev); in kxsd9_read_raw()
203 pm_runtime_put_autosuspend(st->dev); in kxsd9_read_raw()
211 struct iio_dev *indio_dev = pf->indio_dev; in kxsd9_trigger_handler()
223 ret = regmap_bulk_read(st->map, in kxsd9_trigger_handler()
228 dev_err(st->dev, "error reading data: %d\n", ret); in kxsd9_trigger_handler()
236 iio_trigger_notify_done(indio_dev->trig); in kxsd9_trigger_handler()
245 pm_runtime_get_sync(st->dev); in kxsd9_buffer_preenable()
254 pm_runtime_mark_last_busy(st->dev); in kxsd9_buffer_postdisable()
255 pm_runtime_put_autosuspend(st->dev); in kxsd9_buffer_postdisable()
271 return &st->orientation; in kxsd9_get_mount_matrix()
329 ret = regulator_bulk_enable(ARRAY_SIZE(st->regs), st->regs); in kxsd9_power_up()
331 dev_err(st->dev, "Cannot enable regulators\n"); in kxsd9_power_up()
336 ret = regmap_write(st->map, in kxsd9_power_up()
346 ret = regmap_write(st->map, in kxsd9_power_up()
351 st->scale); in kxsd9_power_up()
356 * Power-up time depends on the LPF setting, but typ 15.9 ms, let's in kxsd9_power_up()
369 * Set into low power mode - since there may be more users of the in kxsd9_power_down()
374 ret = regmap_clear_bits(st->map, KXSD9_REG_CTRL_B, KXSD9_CTRL_B_ENABLE); in kxsd9_power_down()
379 ret = regulator_bulk_disable(ARRAY_SIZE(st->regs), st->regs); in kxsd9_power_down()
381 dev_err(st->dev, "Cannot disable regulators\n"); in kxsd9_power_down()
407 return -ENOMEM; in kxsd9_common_probe()
410 st->dev = dev; in kxsd9_common_probe()
411 st->map = map; in kxsd9_common_probe()
413 indio_dev->channels = kxsd9_channels; in kxsd9_common_probe()
414 indio_dev->num_channels = ARRAY_SIZE(kxsd9_channels); in kxsd9_common_probe()
415 indio_dev->name = name; in kxsd9_common_probe()
416 indio_dev->info = &kxsd9_info; in kxsd9_common_probe()
417 indio_dev->modes = INDIO_DIRECT_MODE; in kxsd9_common_probe()
418 indio_dev->available_scan_masks = kxsd9_scan_masks; in kxsd9_common_probe()
421 ret = iio_read_mount_matrix(dev, &st->orientation); in kxsd9_common_probe()
426 st->regs[0].supply = kxsd9_reg_vdd; in kxsd9_common_probe()
427 st->regs[1].supply = kxsd9_reg_iovdd; in kxsd9_common_probe()
429 ARRAY_SIZE(st->regs), in kxsd9_common_probe()
430 st->regs); in kxsd9_common_probe()
436 st->scale = KXSD9_CTRL_C_FS_2G; in kxsd9_common_probe()
460 * Set autosuspend to two orders of magnitude larger than the in kxsd9_common_probe()
461 * start-up time. 20ms start-up time means 2000ms autosuspend, in kxsd9_common_probe()