Some chips either don't support it or fail to provide adequate documentation,
so sometimes it's impossible to enable the feature even if it is supported.

Signed-off-by: Lee Jones <lee.jo...@linaro.org>
---
 drivers/iio/common/st_sensors/st_sensors_core.c | 11 +++++++----
 drivers/iio/pressure/st_pressure_core.c         |  6 ++++--
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c 
b/drivers/iio/common/st_sensors/st_sensors_core.c
index 865b178..fc9acb7 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.c
+++ b/drivers/iio/common/st_sensors/st_sensors_core.c
@@ -209,10 +209,13 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev)
        if (err < 0)
                goto init_error;
 
-       err = st_sensors_set_fullscale(indio_dev,
-                                               sdata->current_fullscale->num);
-       if (err < 0)
-               goto init_error;
+       if (sdata->current_fullscale) {
+               err = st_sensors_set_fullscale(indio_dev,
+                                              sdata->current_fullscale->num);
+               if (err < 0)
+                       goto init_error;
+       } else
+               dev_info(&indio_dev->dev, "Full-scale not possible\n");
 
        err = st_sensors_set_odr(indio_dev, sdata->odr);
        if (err < 0)
diff --git a/drivers/iio/pressure/st_pressure_core.c 
b/drivers/iio/pressure/st_pressure_core.c
index 7ba9299..423ed6a 100644
--- a/drivers/iio/pressure/st_pressure_core.c
+++ b/drivers/iio/pressure/st_pressure_core.c
@@ -239,8 +239,10 @@ int st_press_common_probe(struct iio_dev *indio_dev)
        indio_dev->channels = pdata->sensor->ch;
        indio_dev->num_channels = ARRAY_SIZE(st_press_lsp331ap_channels);
 
-       pdata->current_fullscale = (struct st_sensor_fullscale_avl *)
-                                               &pdata->sensor->fs.fs_avl[0];
+       if (pdata->sensor->fs.addr != 0)
+               pdata->current_fullscale = (struct st_sensor_fullscale_avl *)
+                       &pdata->sensor->fs.fs_avl[0];
+
        pdata->odr = pdata->sensor->odr.odr_avl[0].hz;
 
        err = st_sensors_init_sensor(indio_dev);
-- 
1.8.1.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to