iio: sensors-core: st: Allow full-scale to be an optional feature
authorLee Jones <lee.jones@linaro.org>
Tue, 10 Sep 2013 12:49:00 +0000 (13:49 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sat, 14 Sep 2013 20:17:15 +0000 (21:17 +0100)
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.jones@linaro.org>
Acked-by: Denis Ciocca <denis.ciocca@st.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/common/st_sensors/st_sensors_core.c
drivers/iio/pressure/st_pressure_core.c

index 965ee22d3ac80ef1ae98d26da17d3a44528b43db..eb261a58fc6862c271094c7a96d2451636b30ae9 100644 (file)
@@ -235,10 +235,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)
index ceebd3c27892b183f6f276b1dbdb4d7a6a5a9a74..16cfbc5307695363c4d0d00730b231214f15074b 100644 (file)
@@ -226,8 +226,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_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;
 
        if (!plat_data)