aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iio/magnetometer
diff options
context:
space:
mode:
authorLee Jones <lee.jones@linaro.org>2013-09-16 12:02:00 -0400
committerJonathan Cameron <jic23@kernel.org>2013-09-21 14:24:07 -0400
commit267a29b957cb28725aef7b9b2ea4c219caefb3b7 (patch)
treea65991b0c62c7a7630bf32d8aef08c512c1d9e51 /drivers/iio/magnetometer
parentf01a140ad30cb99eb3a15a6c43fde80207ce2681 (diff)
iio: magn-core: st: Clean up error handling in probe()
Reduce the amount of those unnecessary goto calls, as in most cases we can simply return immediately. We also only call for the IRQ number once and use that value throughout. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/iio/magnetometer')
-rw-r--r--drivers/iio/magnetometer/st_magn_core.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/iio/magnetometer/st_magn_core.c b/drivers/iio/magnetometer/st_magn_core.c
index e8d2849cc81d..729c71af9400 100644
--- a/drivers/iio/magnetometer/st_magn_core.c
+++ b/drivers/iio/magnetometer/st_magn_core.c
@@ -348,8 +348,9 @@ static const struct iio_info magn_info = {
348int st_magn_common_probe(struct iio_dev *indio_dev, 348int st_magn_common_probe(struct iio_dev *indio_dev,
349 struct st_sensors_platform_data *pdata) 349 struct st_sensors_platform_data *pdata)
350{ 350{
351 int err;
352 struct st_sensor_data *mdata = iio_priv(indio_dev); 351 struct st_sensor_data *mdata = iio_priv(indio_dev);
352 int irq = mdata->get_irq_data_ready(indio_dev);
353 int err;
353 354
354 indio_dev->modes = INDIO_DIRECT_MODE; 355 indio_dev->modes = INDIO_DIRECT_MODE;
355 indio_dev->info = &magn_info; 356 indio_dev->info = &magn_info;
@@ -357,7 +358,7 @@ int st_magn_common_probe(struct iio_dev *indio_dev,
357 err = st_sensors_check_device_support(indio_dev, 358 err = st_sensors_check_device_support(indio_dev,
358 ARRAY_SIZE(st_magn_sensors), st_magn_sensors); 359 ARRAY_SIZE(st_magn_sensors), st_magn_sensors);
359 if (err < 0) 360 if (err < 0)
360 goto st_magn_common_probe_error; 361 return err;
361 362
362 mdata->num_data_channels = ST_MAGN_NUMBER_DATA_CHANNELS; 363 mdata->num_data_channels = ST_MAGN_NUMBER_DATA_CHANNELS;
363 mdata->multiread_bit = mdata->sensor->multi_read_bit; 364 mdata->multiread_bit = mdata->sensor->multi_read_bit;
@@ -370,12 +371,12 @@ int st_magn_common_probe(struct iio_dev *indio_dev,
370 371
371 err = st_sensors_init_sensor(indio_dev, pdata); 372 err = st_sensors_init_sensor(indio_dev, pdata);
372 if (err < 0) 373 if (err < 0)
373 goto st_magn_common_probe_error; 374 return err;
374 375
375 if (mdata->get_irq_data_ready(indio_dev) > 0) { 376 if (irq > 0) {
376 err = st_magn_allocate_ring(indio_dev); 377 err = st_magn_allocate_ring(indio_dev);
377 if (err < 0) 378 if (err < 0)
378 goto st_magn_common_probe_error; 379 return err;
379 err = st_sensors_allocate_trigger(indio_dev, NULL); 380 err = st_sensors_allocate_trigger(indio_dev, NULL);
380 if (err < 0) 381 if (err < 0)
381 goto st_magn_probe_trigger_error; 382 goto st_magn_probe_trigger_error;
@@ -385,15 +386,15 @@ int st_magn_common_probe(struct iio_dev *indio_dev,
385 if (err) 386 if (err)
386 goto st_magn_device_register_error; 387 goto st_magn_device_register_error;
387 388
388 return err; 389 return 0;
389 390
390st_magn_device_register_error: 391st_magn_device_register_error:
391 if (mdata->get_irq_data_ready(indio_dev) > 0) 392 if (irq > 0)
392 st_sensors_deallocate_trigger(indio_dev); 393 st_sensors_deallocate_trigger(indio_dev);
393st_magn_probe_trigger_error: 394st_magn_probe_trigger_error:
394 if (mdata->get_irq_data_ready(indio_dev) > 0) 395 if (irq > 0)
395 st_magn_deallocate_ring(indio_dev); 396 st_magn_deallocate_ring(indio_dev);
396st_magn_common_probe_error: 397
397 return err; 398 return err;
398} 399}
399EXPORT_SYMBOL(st_magn_common_probe); 400EXPORT_SYMBOL(st_magn_common_probe);