diff options
author | Denis Ciocca <denis.ciocca@st.com> | 2019-07-19 00:53:48 +0200 |
---|---|---|
committer | Jonathan Cameron <Jonathan.Cameron@huawei.com> | 2019-07-27 23:52:05 +0200 |
commit | feba6b18c926ad59cb7ea97e6023a38c6bf74310 (patch) | |
tree | 8250ff00715c897406a7837798da212b54dff28b /drivers/iio/accel/st_accel_spi.c | |
parent | iio:pressure: introduce st_press_get_settings() function (diff) | |
download | linux-feba6b18c926ad59cb7ea97e6023a38c6bf74310.tar.xz linux-feba6b18c926ad59cb7ea97e6023a38c6bf74310.zip |
iio:accel: device settings are set immediately during probe
This patch set accel settings right after probe start. This is
done in preparation of regmap that needs different configuration
based on multiread bit value.
Signed-off-by: Denis Ciocca <denis.ciocca@st.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Diffstat (limited to 'drivers/iio/accel/st_accel_spi.c')
-rw-r--r-- | drivers/iio/accel/st_accel_spi.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/iio/accel/st_accel_spi.c b/drivers/iio/accel/st_accel_spi.c index 474742e35d92..c0556db9d60a 100644 --- a/drivers/iio/accel/st_accel_spi.c +++ b/drivers/iio/accel/st_accel_spi.c @@ -102,18 +102,28 @@ MODULE_DEVICE_TABLE(of, st_accel_of_match); static int st_accel_spi_probe(struct spi_device *spi) { - struct iio_dev *indio_dev; + const struct st_sensor_settings *settings; struct st_sensor_data *adata; + struct iio_dev *indio_dev; int err; + st_sensors_of_name_probe(&spi->dev, st_accel_of_match, + spi->modalias, sizeof(spi->modalias)); + + settings = st_accel_get_settings(spi->modalias); + if (!settings) { + dev_err(&spi->dev, "device name %s not recognized.\n", + spi->modalias); + return -ENODEV; + } + indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adata)); if (!indio_dev) return -ENOMEM; adata = iio_priv(indio_dev); + adata->sensor_settings = (struct st_sensor_settings *)settings; - st_sensors_of_name_probe(&spi->dev, st_accel_of_match, - spi->modalias, sizeof(spi->modalias)); st_sensors_spi_configure(indio_dev, spi, adata); err = st_accel_common_probe(indio_dev); |