summaryrefslogtreecommitdiffstats
path: root/drivers/iio/accel/st_accel_spi.c
diff options
context:
space:
mode:
authorDenis Ciocca <denis.ciocca@st.com>2019-07-19 00:53:48 +0200
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2019-07-27 23:52:05 +0200
commitfeba6b18c926ad59cb7ea97e6023a38c6bf74310 (patch)
tree8250ff00715c897406a7837798da212b54dff28b /drivers/iio/accel/st_accel_spi.c
parentiio:pressure: introduce st_press_get_settings() function (diff)
downloadlinux-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.c16
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);