Lines Matching +full:quad +full:- +full:se +full:- +full:mode

1 // SPDX-License-Identifier: GPL-2.0-only
111 st->data[0] = ADMV1013_READ | FIELD_PREP(ADMV1013_REG_ADDR_READ_MSK, reg); in __admv1013_spi_read()
112 st->data[1] = 0x0; in __admv1013_spi_read()
113 st->data[2] = 0x0; in __admv1013_spi_read()
115 t.rx_buf = &st->data[0]; in __admv1013_spi_read()
116 t.tx_buf = &st->data[0]; in __admv1013_spi_read()
119 ret = spi_sync_transfer(st->spi, &t, 1); in __admv1013_spi_read()
123 *val = FIELD_GET(ADMV1013_REG_DATA_MSK, get_unaligned_be24(&st->data[0])); in __admv1013_spi_read()
133 mutex_lock(&st->lock); in admv1013_spi_read()
135 mutex_unlock(&st->lock); in admv1013_spi_read()
145 FIELD_PREP(ADMV1013_REG_ADDR_WRITE_MSK, reg), &st->data[0]); in __admv1013_spi_write()
147 return spi_write(st->spi, &st->data[0], 3); in __admv1013_spi_write()
155 mutex_lock(&st->lock); in admv1013_spi_write()
157 mutex_unlock(&st->lock); in admv1013_spi_write()
182 mutex_lock(&st->lock); in admv1013_spi_update_bits()
184 mutex_unlock(&st->lock); in admv1013_spi_update_bits()
199 switch (chan->channel) { in admv1013_read_raw()
207 return -EINVAL; in admv1013_read_raw()
214 if (!chan->channel) in admv1013_read_raw()
221 return -EINVAL; in admv1013_read_raw()
234 switch (chan->channel2) { in admv1013_write_raw()
242 return -EINVAL; in admv1013_write_raw()
245 if (!chan->channel) { in admv1013_write_raw()
255 return -EINVAL; in admv1013_write_raw()
276 return -EINVAL; in admv1013_read()
319 return -EINVAL; in admv1013_write()
328 u64 rate = clk_get_rate(st->clkin); in admv1013_update_quad_filters()
353 return -EINVAL; in admv1013_update_mixer_vgate()
380 "vcc-drv", "vcc2-drv", "vcc-vva", "vcc-amp1", "vcc-amp2",
381 "vcc-env", "vcc-bg", "vcc-bg2", "vcc-mixer", "vcc-quad"
390 mutex_lock(&st->lock); in admv1013_freq_change()
392 mutex_unlock(&st->lock); in admv1013_freq_change()
444 struct spi_device *spi = st->spi; in admv1013_init()
465 dev_err(&spi->dev, "Invalid Chip ID.\n"); in admv1013_init()
466 return -EINVAL; in admv1013_init()
473 data = FIELD_PREP(ADMV1013_QUAD_SE_MODE_MSK, st->quad_se_mode); in admv1013_init()
491 st->det_en | in admv1013_init()
492 st->input_mode); in admv1013_init()
521 struct spi_device *spi = st->spi; in admv1013_properties_parse()
523 st->det_en = device_property_read_bool(&spi->dev, "adi,detector-enable"); in admv1013_properties_parse()
525 ret = device_property_read_string(&spi->dev, "adi,input-mode", &str); in admv1013_properties_parse()
527 st->input_mode = ADMV1013_IQ_MODE; in admv1013_properties_parse()
530 st->input_mode = ADMV1013_IQ_MODE; in admv1013_properties_parse()
532 st->input_mode = ADMV1013_IF_MODE; in admv1013_properties_parse()
534 return -EINVAL; in admv1013_properties_parse()
536 ret = device_property_read_string(&spi->dev, "adi,quad-se-mode", &str); in admv1013_properties_parse()
538 st->quad_se_mode = ADMV1013_SE_MODE_DIFF; in admv1013_properties_parse()
541 st->quad_se_mode = ADMV1013_SE_MODE_DIFF; in admv1013_properties_parse()
542 else if (!strcmp(str, "se-pos")) in admv1013_properties_parse()
543 st->quad_se_mode = ADMV1013_SE_MODE_POS; in admv1013_properties_parse()
544 else if (!strcmp(str, "se-neg")) in admv1013_properties_parse()
545 st->quad_se_mode = ADMV1013_SE_MODE_NEG; in admv1013_properties_parse()
547 return -EINVAL; in admv1013_properties_parse()
549 ret = devm_regulator_bulk_get_enable(&st->spi->dev, in admv1013_properties_parse()
553 dev_err_probe(&spi->dev, ret, in admv1013_properties_parse()
567 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); in admv1013_probe()
569 return -ENOMEM; in admv1013_probe()
573 indio_dev->info = &admv1013_info; in admv1013_probe()
574 indio_dev->name = "admv1013"; in admv1013_probe()
575 indio_dev->channels = admv1013_channels; in admv1013_probe()
576 indio_dev->num_channels = ARRAY_SIZE(admv1013_channels); in admv1013_probe()
578 st->spi = spi; in admv1013_probe()
584 ret = devm_regulator_get_enable_read_voltage(&spi->dev, "vcm"); in admv1013_probe()
586 return dev_err_probe(&spi->dev, ret, in admv1013_probe()
587 "failed to get the common-mode voltage\n"); in admv1013_probe()
591 st->clkin = devm_clk_get_enabled(&spi->dev, "lo_in"); in admv1013_probe()
592 if (IS_ERR(st->clkin)) in admv1013_probe()
593 return dev_err_probe(&spi->dev, PTR_ERR(st->clkin), in admv1013_probe()
596 st->nb.notifier_call = admv1013_freq_change; in admv1013_probe()
597 ret = devm_clk_notifier_register(&spi->dev, st->clkin, &st->nb); in admv1013_probe()
601 mutex_init(&st->lock); in admv1013_probe()
605 dev_err(&spi->dev, "admv1013 init failed\n"); in admv1013_probe()
609 ret = devm_add_action_or_reset(&spi->dev, admv1013_powerdown, st); in admv1013_probe()
613 return devm_iio_device_register(&spi->dev, indio_dev); in admv1013_probe()