Lines Matching defs:data
82 struct srf04_data *data = iio_priv(indio_dev);
85 if (gpiod_get_value(data->gpiod_echo)) {
86 data->ts_rising = now;
87 complete(&data->rising);
89 data->ts_falling = now;
90 complete(&data->falling);
96 static int srf04_read(struct srf04_data *data)
103 if (data->gpiod_power)
104 pm_runtime_get_sync(data->dev);
110 mutex_lock(&data->lock);
112 reinit_completion(&data->rising);
113 reinit_completion(&data->falling);
115 gpiod_set_value(data->gpiod_trig, 1);
116 udelay(data->cfg->trigger_pulse_us);
117 gpiod_set_value(data->gpiod_trig, 0);
119 if (data->gpiod_power) {
120 pm_runtime_mark_last_busy(data->dev);
121 pm_runtime_put_autosuspend(data->dev);
125 ret = wait_for_completion_killable_timeout(&data->rising, HZ/50);
127 mutex_unlock(&data->lock);
130 mutex_unlock(&data->lock);
135 ret = wait_for_completion_killable_timeout(&data->falling, HZ/20);
137 mutex_unlock(&data->lock);
140 mutex_unlock(&data->lock);
144 ktime_dt = ktime_sub(data->ts_falling, data->ts_rising);
146 mutex_unlock(&data->lock);
196 struct srf04_data *data = iio_priv(indio_dev);
204 ret = srf04_read(data);
236 { .compatible = "devantech,srf04", .data = &srf04_cfg},
237 { .compatible = "maxbotix,mb1000", .data = &mb_lv_cfg},
238 { .compatible = "maxbotix,mb1010", .data = &mb_lv_cfg},
239 { .compatible = "maxbotix,mb1020", .data = &mb_lv_cfg},
240 { .compatible = "maxbotix,mb1030", .data = &mb_lv_cfg},
241 { .compatible = "maxbotix,mb1040", .data = &mb_lv_cfg},
250 struct srf04_data *data;
260 data = iio_priv(indio_dev);
261 data->dev = dev;
262 data->cfg = of_match_device(of_srf04_match, dev)->data;
264 mutex_init(&data->lock);
265 init_completion(&data->rising);
266 init_completion(&data->falling);
268 data->gpiod_trig = devm_gpiod_get(dev, "trig", GPIOD_OUT_LOW);
269 if (IS_ERR(data->gpiod_trig)) {
271 PTR_ERR(data->gpiod_trig));
272 return PTR_ERR(data->gpiod_trig);
275 data->gpiod_echo = devm_gpiod_get(dev, "echo", GPIOD_IN);
276 if (IS_ERR(data->gpiod_echo)) {
278 PTR_ERR(data->gpiod_echo));
279 return PTR_ERR(data->gpiod_echo);
282 data->gpiod_power = devm_gpiod_get_optional(dev, "power",
284 if (IS_ERR(data->gpiod_power)) {
286 PTR_ERR(data->gpiod_power));
287 return PTR_ERR(data->gpiod_power);
289 if (data->gpiod_power) {
292 &data->startup_time_ms))
293 data->startup_time_ms = 100;
295 data->startup_time_ms);
298 if (gpiod_cansleep(data->gpiod_echo)) {
299 dev_err(data->dev, "cansleep-GPIOs not supported\n");
303 data->irqnr = gpiod_to_irq(data->gpiod_echo);
304 if (data->irqnr < 0) {
305 dev_err(data->dev, "gpiod_to_irq: %d\n", data->irqnr);
306 return data->irqnr;
309 ret = devm_request_irq(dev, data->irqnr, srf04_handle_irq,
313 dev_err(data->dev, "request_irq: %d\n", ret);
327 dev_err(data->dev, "iio_device_register: %d\n", ret);
331 if (data->gpiod_power) {
332 pm_runtime_set_autosuspend_delay(data->dev, 1000);
333 pm_runtime_use_autosuspend(data->dev);
335 ret = pm_runtime_set_active(data->dev);
337 dev_err(data->dev, "pm_runtime_set_active: %d\n", ret);
341 pm_runtime_enable(data->dev);
342 pm_runtime_idle(data->dev);
351 struct srf04_data *data = iio_priv(indio_dev);
355 if (data->gpiod_power) {
356 pm_runtime_disable(data->dev);
357 pm_runtime_set_suspended(data->dev);
368 struct srf04_data *data = iio_priv(indio_dev);
370 gpiod_set_value(data->gpiod_power, 0);
380 struct srf04_data *data = iio_priv(indio_dev);
382 gpiod_set_value(data->gpiod_power, 1);
383 msleep(data->startup_time_ms);