Lines Matching +full:spi +full:- +full:lsb +full:- +full:first

1 // SPDX-License-Identifier: GPL-2.0
6 * Copyright (C) 2016-17 Renesas Electronics Corporation
7 * Copyright (C) 2016-17 Jacopo Mondi
14 #include <linux/spi/spi.h>
20 * LSB is the ADC single digital step
21 * 1 LSB = (vref_mv / 2 ^ 16)
23 * LSB is used to calculate analog voltage value
26 * Ain = (count * LSB)
32 struct spi_device *spi; member
54 ret = spi_read(state->spi, state->buffer, sizeof(state->buffer)); in max11100_read_single()
56 dev_err(&indio_dev->dev, "SPI transfer failed\n"); in max11100_read_single()
60 /* the first 8 bits sent out from ADC must be 0s */ in max11100_read_single()
61 if (state->buffer[0]) { in max11100_read_single()
62 dev_err(&indio_dev->dev, "Invalid value: buffer[0] != 0\n"); in max11100_read_single()
63 return -EINVAL; in max11100_read_single()
66 *val = (state->buffer[1] << 8) | state->buffer[2]; in max11100_read_single()
87 vref_uv = regulator_get_voltage(state->vref_reg); in max11100_read_raw()
89 /* dummy regulator "get_voltage" returns -EINVAL */ in max11100_read_raw()
90 return -EINVAL; in max11100_read_raw()
97 return -EINVAL; in max11100_read_raw()
104 static int max11100_probe(struct spi_device *spi) in max11100_probe() argument
110 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*state)); in max11100_probe()
112 return -ENOMEM; in max11100_probe()
114 spi_set_drvdata(spi, indio_dev); in max11100_probe()
117 state->spi = spi; in max11100_probe()
119 indio_dev->name = "max11100"; in max11100_probe()
120 indio_dev->info = &max11100_info; in max11100_probe()
121 indio_dev->modes = INDIO_DIRECT_MODE; in max11100_probe()
122 indio_dev->channels = max11100_channels; in max11100_probe()
123 indio_dev->num_channels = ARRAY_SIZE(max11100_channels); in max11100_probe()
125 state->vref_reg = devm_regulator_get(&spi->dev, "vref"); in max11100_probe()
126 if (IS_ERR(state->vref_reg)) in max11100_probe()
127 return PTR_ERR(state->vref_reg); in max11100_probe()
129 ret = regulator_enable(state->vref_reg); in max11100_probe()
140 regulator_disable(state->vref_reg); in max11100_probe()
145 static int max11100_remove(struct spi_device *spi) in max11100_remove() argument
147 struct iio_dev *indio_dev = spi_get_drvdata(spi); in max11100_remove()
151 regulator_disable(state->vref_reg); in max11100_remove()