• Home
  • Raw
  • Download

Lines Matching +full:tuning +full:- +full:capacitor +full:- +full:pf

1 // SPDX-License-Identifier: GPL-2.0+
3 * as3935.c - Support for AS3935 Franklin lightning sensor
5 * Copyright (C) 2014, 2017-2018
93 ret = spi_w8r8(st->spi, cmd); in as3935_read()
105 u8 *buf = st->buf; in as3935_write()
110 return spi_write(st->spi, buf, 2); in as3935_write()
138 return -EINVAL; in as3935_sensor_sensitivity_store()
141 return -EINVAL; in as3935_sensor_sensitivity_store()
155 mutex_lock(&st->lock); in as3935_noise_level_tripped_show()
156 ret = sprintf(buf, "%d\n", !time_after(jiffies, st->noise_tripped + HZ)); in as3935_noise_level_tripped_show()
157 mutex_unlock(&st->lock); in as3935_noise_level_tripped_show()
198 return -EINVAL; in as3935_read_raw()
210 return -EINVAL; in as3935_read_raw()
223 struct iio_poll_func *pf = private; in as3935_trigger_handler() local
224 struct iio_dev *indio_dev = pf->indio_dev; in as3935_trigger_handler()
232 st->scan.chan = val & AS3935_DATA_MASK; in as3935_trigger_handler()
233 iio_push_to_buffers_with_timestamp(indio_dev, &st->scan, in as3935_trigger_handler()
236 iio_trigger_notify_done(indio_dev->trig); in as3935_trigger_handler()
254 dev_warn(&st->spi->dev, "read error\n"); in as3935_event_work()
262 iio_trigger_poll_chained(st->trig); in as3935_event_work()
266 mutex_lock(&st->lock); in as3935_event_work()
267 st->noise_tripped = jiffies; in as3935_event_work()
268 mutex_unlock(&st->lock); in as3935_event_work()
269 dev_warn(&st->spi->dev, "noise level is too high\n"); in as3935_event_work()
284 schedule_delayed_work(&st->work, msecs_to_jiffies(3)); in as3935_interrupt_handler()
294 BIT(5) | (st->tune_cap / TUNE_CAP_DIV)); in calibrate_as3935()
297 as3935_write(st, AS3935_TUNE_CAP, (st->tune_cap / TUNE_CAP_DIV)); in calibrate_as3935()
298 as3935_write(st, AS3935_NFLWDTH, st->nflwdth_reg); in calibrate_as3935()
308 mutex_lock(&st->lock); in as3935_suspend()
317 mutex_unlock(&st->lock); in as3935_suspend()
328 mutex_lock(&st->lock); in as3935_resume()
338 mutex_unlock(&st->lock); in as3935_resume()
355 cancel_delayed_work_sync(&st->work); in as3935_stop_work()
360 struct device *dev = &spi->dev; in as3935_probe()
367 if (!spi->irq) { in as3935_probe()
369 return -EINVAL; in as3935_probe()
374 return -ENOMEM; in as3935_probe()
377 st->spi = spi; in as3935_probe()
380 mutex_init(&st->lock); in as3935_probe()
383 "ams,tuning-capacitor-pf", &st->tune_cap); in as3935_probe()
385 st->tune_cap = 0; in as3935_probe()
386 dev_warn(dev, "no tuning-capacitor-pf set, defaulting to %d", in as3935_probe()
387 st->tune_cap); in as3935_probe()
390 if (st->tune_cap > MAX_PF_CAP) { in as3935_probe()
391 dev_err(dev, "wrong tuning-capacitor-pf setting of %d\n", in as3935_probe()
392 st->tune_cap); in as3935_probe()
393 return -EINVAL; in as3935_probe()
397 "ams,nflwdth", &st->nflwdth_reg); in as3935_probe()
398 if (!ret && st->nflwdth_reg > AS3935_NFLWDTH_MASK) { in as3935_probe()
400 st->nflwdth_reg); in as3935_probe()
401 return -EINVAL; in as3935_probe()
404 indio_dev->name = spi_get_device_id(spi)->name; in as3935_probe()
405 indio_dev->channels = as3935_channels; in as3935_probe()
406 indio_dev->num_channels = ARRAY_SIZE(as3935_channels); in as3935_probe()
407 indio_dev->modes = INDIO_DIRECT_MODE; in as3935_probe()
408 indio_dev->info = &as3935_info; in as3935_probe()
410 trig = devm_iio_trigger_alloc(dev, "%s-dev%d", in as3935_probe()
411 indio_dev->name, indio_dev->id); in as3935_probe()
414 return -ENOMEM; in as3935_probe()
416 st->trig = trig; in as3935_probe()
417 st->noise_tripped = jiffies - HZ; in as3935_probe()
418 trig->dev.parent = indio_dev->dev.parent; in as3935_probe()
420 trig->ops = &iio_interrupt_trigger_ops; in as3935_probe()
439 INIT_DELAYED_WORK(&st->work, as3935_event_work); in as3935_probe()
444 ret = devm_request_irq(dev, spi->irq, in as3935_probe()