aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/iio/Documentation/iio_utils.h24
-rw-r--r--drivers/staging/iio/accel/adis16204_core.c2
-rw-r--r--drivers/staging/iio/accel/adis16240_core.c9
-rw-r--r--drivers/staging/iio/adc/ad7793.c4
4 files changed, 28 insertions, 11 deletions
diff --git a/drivers/staging/iio/Documentation/iio_utils.h b/drivers/staging/iio/Documentation/iio_utils.h
index c0448b3e20de..5244fa0dfd2f 100644
--- a/drivers/staging/iio/Documentation/iio_utils.h
+++ b/drivers/staging/iio/Documentation/iio_utils.h
@@ -158,7 +158,8 @@ inline int iioutils_get_type(unsigned *is_signed,
158 &padint, shift); 158 &padint, shift);
159 if (ret < 0) { 159 if (ret < 0) {
160 printf("failed to pass scan type description\n"); 160 printf("failed to pass scan type description\n");
161 return ret; 161 ret = -errno;
162 goto error_close_sysfsfp;
162 } 163 }
163 *be = (endianchar == 'b'); 164 *be = (endianchar == 'b');
164 *bytes = padint / 8; 165 *bytes = padint / 8;
@@ -174,7 +175,11 @@ inline int iioutils_get_type(unsigned *is_signed,
174 free(filename); 175 free(filename);
175 176
176 filename = 0; 177 filename = 0;
178 sysfsfp = 0;
177 } 179 }
180error_close_sysfsfp:
181 if (sysfsfp)
182 fclose(sysfsfp);
178error_free_filename: 183error_free_filename:
179 if (filename) 184 if (filename)
180 free(filename); 185 free(filename);
@@ -468,23 +473,30 @@ inline int find_type_by_name(const char *name, const char *type)
468 + strlen(type) 473 + strlen(type)
469 + numstrlen 474 + numstrlen
470 + 6); 475 + 6);
471 if (filename == NULL) 476 if (filename == NULL) {
477 closedir(dp);
472 return -ENOMEM; 478 return -ENOMEM;
479 }
473 sprintf(filename, "%s%s%d/name", 480 sprintf(filename, "%s%s%d/name",
474 iio_dir, 481 iio_dir,
475 type, 482 type,
476 number); 483 number);
477 nameFile = fopen(filename, "r"); 484 nameFile = fopen(filename, "r");
478 if (!nameFile) 485 if (!nameFile) {
486 free(filename);
479 continue; 487 continue;
488 }
480 free(filename); 489 free(filename);
481 fscanf(nameFile, "%s", thisname); 490 fscanf(nameFile, "%s", thisname);
482 if (strcmp(name, thisname) == 0)
483 return number;
484 fclose(nameFile); 491 fclose(nameFile);
492 if (strcmp(name, thisname) == 0) {
493 closedir(dp);
494 return number;
495 }
485 } 496 }
486 } 497 }
487 } 498 }
499 closedir(dp);
488 return -ENODEV; 500 return -ENODEV;
489} 501}
490 502
@@ -513,6 +525,7 @@ inline int _write_sysfs_int(char *filename, char *basedir, int val, int verify)
513 goto error_free; 525 goto error_free;
514 } 526 }
515 fscanf(sysfsfp, "%d", &test); 527 fscanf(sysfsfp, "%d", &test);
528 fclose(sysfsfp);
516 if (test != val) { 529 if (test != val) {
517 printf("Possible failure in int write %d to %s%s\n", 530 printf("Possible failure in int write %d to %s%s\n",
518 val, 531 val,
@@ -562,6 +575,7 @@ int _write_sysfs_string(char *filename, char *basedir, char *val, int verify)
562 goto error_free; 575 goto error_free;
563 } 576 }
564 fscanf(sysfsfp, "%s", temp); 577 fscanf(sysfsfp, "%s", temp);
578 fclose(sysfsfp);
565 if (strcmp(temp, val) != 0) { 579 if (strcmp(temp, val) != 0) {
566 printf("Possible failure in string write of %s " 580 printf("Possible failure in string write of %s "
567 "Should be %s " 581 "Should be %s "
diff --git a/drivers/staging/iio/accel/adis16204_core.c b/drivers/staging/iio/accel/adis16204_core.c
index ac9d95e4ea47..457982bf7eac 100644
--- a/drivers/staging/iio/accel/adis16204_core.c
+++ b/drivers/staging/iio/accel/adis16204_core.c
@@ -381,7 +381,7 @@ static int adis16204_read_raw(struct iio_dev *indio_dev,
381 return IIO_VAL_INT_PLUS_MICRO; 381 return IIO_VAL_INT_PLUS_MICRO;
382 case IIO_ACCEL: 382 case IIO_ACCEL:
383 *val = 0; 383 *val = 0;
384 if (chan->channel == 'x') 384 if (chan->channel2 == IIO_MOD_X)
385 *val2 = 17125; 385 *val2 = 17125;
386 else 386 else
387 *val2 = 8407; 387 *val2 = 8407;
diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c
index 2f59f83d002d..1a51f03d3d76 100644
--- a/drivers/staging/iio/accel/adis16240_core.c
+++ b/drivers/staging/iio/accel/adis16240_core.c
@@ -500,7 +500,8 @@ static struct iio_chan_spec adis16240_channels[] = {
500 .channel2 = IIO_MOD_X, 500 .channel2 = IIO_MOD_X,
501 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT | 501 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
502 IIO_CHAN_INFO_SCALE_SHARED_BIT | 502 IIO_CHAN_INFO_SCALE_SHARED_BIT |
503 IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT, 503 IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
504 IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
504 .address = accel_x, 505 .address = accel_x,
505 .scan_index = ADIS16240_SCAN_ACC_X, 506 .scan_index = ADIS16240_SCAN_ACC_X,
506 .scan_type = { 507 .scan_type = {
@@ -514,7 +515,8 @@ static struct iio_chan_spec adis16240_channels[] = {
514 .channel2 = IIO_MOD_Y, 515 .channel2 = IIO_MOD_Y,
515 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT | 516 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
516 IIO_CHAN_INFO_SCALE_SHARED_BIT | 517 IIO_CHAN_INFO_SCALE_SHARED_BIT |
517 IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT, 518 IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
519 IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
518 .address = accel_y, 520 .address = accel_y,
519 .scan_index = ADIS16240_SCAN_ACC_Y, 521 .scan_index = ADIS16240_SCAN_ACC_Y,
520 .scan_type = { 522 .scan_type = {
@@ -528,7 +530,8 @@ static struct iio_chan_spec adis16240_channels[] = {
528 .channel2 = IIO_MOD_Z, 530 .channel2 = IIO_MOD_Z,
529 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT | 531 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
530 IIO_CHAN_INFO_SCALE_SHARED_BIT | 532 IIO_CHAN_INFO_SCALE_SHARED_BIT |
531 IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT, 533 IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
534 IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
532 .address = accel_z, 535 .address = accel_z,
533 .scan_index = ADIS16240_SCAN_ACC_Z, 536 .scan_index = ADIS16240_SCAN_ACC_Z,
534 .scan_type = { 537 .scan_type = {
diff --git a/drivers/staging/iio/adc/ad7793.c b/drivers/staging/iio/adc/ad7793.c
index 2bb9f68d66a4..eaa0cc939165 100644
--- a/drivers/staging/iio/adc/ad7793.c
+++ b/drivers/staging/iio/adc/ad7793.c
@@ -758,7 +758,7 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = {
758 .address = AD7793_CH_AIN1M_AIN1M, 758 .address = AD7793_CH_AIN1M_AIN1M,
759 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT | 759 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
760 IIO_CHAN_INFO_SCALE_SHARED_BIT, 760 IIO_CHAN_INFO_SCALE_SHARED_BIT,
761 .scan_index = 2, 761 .scan_index = 3,
762 .scan_type = IIO_ST('s', 24, 32, 0) 762 .scan_type = IIO_ST('s', 24, 32, 0)
763 }, 763 },
764 .channel[4] = { 764 .channel[4] = {
@@ -831,7 +831,7 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = {
831 .address = AD7793_CH_AIN1M_AIN1M, 831 .address = AD7793_CH_AIN1M_AIN1M,
832 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT | 832 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
833 IIO_CHAN_INFO_SCALE_SHARED_BIT, 833 IIO_CHAN_INFO_SCALE_SHARED_BIT,
834 .scan_index = 2, 834 .scan_index = 3,
835 .scan_type = IIO_ST('s', 16, 32, 0) 835 .scan_type = IIO_ST('s', 16, 32, 0)
836 }, 836 },
837 .channel[4] = { 837 .channel[4] = {