aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);