summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLee Jones <lee.jones@linaro.org>2013-09-10 08:49:00 -0400
committerJonathan Cameron <jic23@kernel.org>2013-09-14 16:17:15 -0400
commit362f2f8647cfa53e36bf910b42ad084674ade9dc (patch)
treefdd383ab58e2d9e28d7bf3466e1e641690c54f39 /drivers
parentaab9ba7eb2633927d0010f00c3bc7960efcd3c23 (diff)
iio: sensors-core: st: Allow full-scale to be an optional feature
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/iio/common/st_sensors/st_sensors_core.c11
-rw-r--r--drivers/iio/pressure/st_pressure_core.c6
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 965ee22d3ac8..eb261a58fc68 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.c
+++ b/drivers/iio/common/st_sensors/st_sensors_core.c
@@ -235,10 +235,13 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev,
235 if (err < 0) 235 if (err < 0)
236 goto init_error; 236 goto init_error;
237 237
238 err = st_sensors_set_fullscale(indio_dev, 238 if (sdata->current_fullscale) {
239 sdata->current_fullscale->num); 239 err = st_sensors_set_fullscale(indio_dev,
240 if (err < 0) 240 sdata->current_fullscale->num);
241 goto init_error; 241 if (err < 0)
242 goto init_error;
243 } else
244 dev_info(&indio_dev->dev, "Full-scale not possible\n");
242 245
243 err = st_sensors_set_odr(indio_dev, sdata->odr); 246 err = st_sensors_set_odr(indio_dev, sdata->odr);
244 if (err < 0) 247 if (err < 0)
diff --git a/drivers/iio/pressure/st_pressure_core.c b/drivers/iio/pressure/st_pressure_core.c
index ceebd3c27892..16cfbc530769 100644
--- a/drivers/iio/pressure/st_pressure_core.c
+++ b/drivers/iio/pressure/st_pressure_core.c
@@ -226,8 +226,10 @@ int st_press_common_probe(struct iio_dev *indio_dev,
226 indio_dev->channels = pdata->sensor->ch; 226 indio_dev->channels = pdata->sensor->ch;
227 indio_dev->num_channels = ARRAY_SIZE(st_press_channels); 227 indio_dev->num_channels = ARRAY_SIZE(st_press_channels);
228 228
229 pdata->current_fullscale = (struct st_sensor_fullscale_avl *) 229 if (pdata->sensor->fs.addr != 0)
230 &pdata->sensor->fs.fs_avl[0]; 230 pdata->current_fullscale = (struct st_sensor_fullscale_avl *)
231 &pdata->sensor->fs.fs_avl[0];
232
231 pdata->odr = pdata->sensor->odr.odr_avl[0].hz; 233 pdata->odr = pdata->sensor->odr.odr_avl[0].hz;
232 234
233 if (!plat_data) 235 if (!plat_data)