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
13 #include <linux/spi/spi.h>
19 * LSB is the ADC single digital step
20 * 1 LSB = (vref_mv / 2 ^ 16)
22 * LSB is used to calculate analog voltage value
25 * Ain = (count * LSB)
31 struct spi_device *spi; member
53 ret = spi_read(state->spi, state->buffer, sizeof(state->buffer)); in max11100_read_single()
55 dev_err(&indio_dev->dev, "SPI transfer failed\n"); in max11100_read_single()
59 /* the first 8 bits sent out from ADC must be 0s */ in max11100_read_single()
60 if (state->buffer[0]) { in max11100_read_single()
61 dev_err(&indio_dev->dev, "Invalid value: buffer[0] != 0\n"); in max11100_read_single()
62 return -EINVAL; in max11100_read_single()
65 *val = (state->buffer[1] << 8) | state->buffer[2]; in max11100_read_single()
86 vref_uv = regulator_get_voltage(state->vref_reg); in max11100_read_raw()
88 /* dummy regulator "get_voltage" returns -EINVAL */ in max11100_read_raw()
89 return -EINVAL; in max11100_read_raw()
96 return -EINVAL; in max11100_read_raw()
103 static int max11100_probe(struct spi_device *spi) in max11100_probe() argument
109 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*state)); in max11100_probe()
111 return -ENOMEM; in max11100_probe()
113 spi_set_drvdata(spi, indio_dev); in max11100_probe()
116 state->spi = spi; in max11100_probe()
118 indio_dev->dev.parent = &spi->dev; in max11100_probe()
119 indio_dev->dev.of_node = spi->dev.of_node; in max11100_probe()
120 indio_dev->name = "max11100"; in max11100_probe()
121 indio_dev->info = &max11100_info; in max11100_probe()
122 indio_dev->modes = INDIO_DIRECT_MODE; in max11100_probe()
123 indio_dev->channels = max11100_channels; in max11100_probe()
124 indio_dev->num_channels = ARRAY_SIZE(max11100_channels); in max11100_probe()
126 state->vref_reg = devm_regulator_get(&spi->dev, "vref"); in max11100_probe()
127 if (IS_ERR(state->vref_reg)) in max11100_probe()
128 return PTR_ERR(state->vref_reg); in max11100_probe()
130 ret = regulator_enable(state->vref_reg); in max11100_probe()
141 regulator_disable(state->vref_reg); in max11100_probe()
146 static int max11100_remove(struct spi_device *spi) in max11100_remove() argument
148 struct iio_dev *indio_dev = spi_get_drvdata(spi); in max11100_remove()
152 regulator_disable(state->vref_reg); in max11100_remove()