diff options
-rw-r--r-- | drivers/iio/magnetometer/st_magn_core.c | 19 |
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 = { | |||
348 | int st_magn_common_probe(struct iio_dev *indio_dev, | 348 | int 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 | ||
390 | st_magn_device_register_error: | 391 | st_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); |
393 | st_magn_probe_trigger_error: | 394 | st_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); |
396 | st_magn_common_probe_error: | 397 | |
397 | return err; | 398 | return err; |
398 | } | 399 | } |
399 | EXPORT_SYMBOL(st_magn_common_probe); | 400 | EXPORT_SYMBOL(st_magn_common_probe); |