Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

IIO: Change msleep to usleep_range for small msecs

msleep(1~20) may not do what the caller intends, and will often sleep longer.
(~20 ms actual sleep for any value given in the 1~20ms range)
This is not the desired behaviour for many cases like device resume time,
device suspend time, device enable time, data reading time, etc.
Thus, change msleep to usleep_range for precise wakeups.

Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>

authored by

Aniroop Mathur and committed by
Jonathan Cameron
071cf249 160d9587

+18 -18
+1 -1
drivers/iio/adc/exynos_adc.c
··· 632 632 input_report_key(info->input, BTN_TOUCH, 1); 633 633 input_sync(info->input); 634 634 635 - msleep(1); 635 + usleep_range(1000, 1100); 636 636 }; 637 637 638 638 writel(0, ADC_V1_CLRINTPNDNUP(info->regs));
+7 -7
drivers/iio/pressure/bmp280-core.c
··· 65 65 struct bmp180_calib calib; 66 66 struct regulator *vddd; 67 67 struct regulator *vdda; 68 - unsigned int start_up_time; /* in milliseconds */ 68 + unsigned int start_up_time; /* in microseconds */ 69 69 70 70 /* log of base 2 of oversampling rate */ 71 71 u8 oversampling_press; ··· 935 935 data->chip_info = &bmp180_chip_info; 936 936 data->oversampling_press = ilog2(8); 937 937 data->oversampling_temp = ilog2(1); 938 - data->start_up_time = 10; 938 + data->start_up_time = 10000; 939 939 break; 940 940 case BMP280_CHIP_ID: 941 941 indio_dev->num_channels = 2; 942 942 data->chip_info = &bmp280_chip_info; 943 943 data->oversampling_press = ilog2(16); 944 944 data->oversampling_temp = ilog2(2); 945 - data->start_up_time = 2; 945 + data->start_up_time = 2000; 946 946 break; 947 947 case BME280_CHIP_ID: 948 948 indio_dev->num_channels = 3; ··· 950 950 data->oversampling_press = ilog2(16); 951 951 data->oversampling_humid = ilog2(16); 952 952 data->oversampling_temp = ilog2(2); 953 - data->start_up_time = 2; 953 + data->start_up_time = 2000; 954 954 break; 955 955 default: 956 956 return -EINVAL; ··· 979 979 goto out_disable_vddd; 980 980 } 981 981 /* Wait to make sure we started up properly */ 982 - mdelay(data->start_up_time); 982 + usleep_range(data->start_up_time, data->start_up_time + 100); 983 983 984 984 /* Bring chip out of reset if there is an assigned GPIO line */ 985 985 gpiod = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); ··· 1038 1038 * Set autosuspend to two orders of magnitude larger than the 1039 1039 * start-up time. 1040 1040 */ 1041 - pm_runtime_set_autosuspend_delay(dev, data->start_up_time *100); 1041 + pm_runtime_set_autosuspend_delay(dev, data->start_up_time / 10); 1042 1042 pm_runtime_use_autosuspend(dev); 1043 1043 pm_runtime_put(dev); 1044 1044 ··· 1101 1101 ret = regulator_enable(data->vdda); 1102 1102 if (ret) 1103 1103 return ret; 1104 - msleep(data->start_up_time); 1104 + usleep_range(data->start_up_time, data->start_up_time + 100); 1105 1105 return data->chip_info->chip_config(data); 1106 1106 } 1107 1107 #endif /* CONFIG_PM */
+1 -1
drivers/staging/iio/meter/ade7753.c
··· 377 377 } 378 378 379 379 ade7753_reset(dev); 380 - msleep(ADE7753_STARTUP_DELAY); 380 + usleep_range(ADE7753_STARTUP_DELAY, ADE7753_STARTUP_DELAY + 100); 381 381 382 382 err_ret: 383 383 return ret;
+1 -1
drivers/staging/iio/meter/ade7753.h
··· 49 49 50 50 #define ADE7753_MAX_TX 4 51 51 #define ADE7753_MAX_RX 4 52 - #define ADE7753_STARTUP_DELAY 1 52 + #define ADE7753_STARTUP_DELAY 1000 53 53 54 54 #define ADE7753_SPI_SLOW (u32)(300 * 1000) 55 55 #define ADE7753_SPI_BURST (u32)(1000 * 1000)
+1 -1
drivers/staging/iio/meter/ade7754.c
··· 389 389 } 390 390 391 391 ade7754_reset(dev); 392 - msleep(ADE7754_STARTUP_DELAY); 392 + usleep_range(ADE7754_STARTUP_DELAY, ADE7754_STARTUP_DELAY + 100); 393 393 394 394 err_ret: 395 395 return ret;
+1 -1
drivers/staging/iio/meter/ade7754.h
··· 67 67 68 68 #define ADE7754_MAX_TX 4 69 69 #define ADE7754_MAX_RX 4 70 - #define ADE7754_STARTUP_DELAY 1 70 + #define ADE7754_STARTUP_DELAY 1000 71 71 72 72 #define ADE7754_SPI_SLOW (u32)(300 * 1000) 73 73 #define ADE7754_SPI_BURST (u32)(1000 * 1000)
+1 -1
drivers/staging/iio/meter/ade7758.h
··· 89 89 90 90 #define ADE7758_MAX_TX 8 91 91 #define ADE7758_MAX_RX 4 92 - #define ADE7758_STARTUP_DELAY 1 92 + #define ADE7758_STARTUP_DELAY 1000 93 93 94 94 #define AD7758_NUM_WAVSEL 5 95 95 #define AD7758_NUM_PHSEL 3
+1 -1
drivers/staging/iio/meter/ade7758_core.c
··· 459 459 } 460 460 461 461 ade7758_reset(dev); 462 - msleep(ADE7758_STARTUP_DELAY); 462 + usleep_range(ADE7758_STARTUP_DELAY, ADE7758_STARTUP_DELAY + 100); 463 463 464 464 err_ret: 465 465 return ret;
+1 -1
drivers/staging/iio/meter/ade7759.c
··· 338 338 } 339 339 340 340 ade7759_reset(dev); 341 - msleep(ADE7759_STARTUP_DELAY); 341 + usleep_range(ADE7759_STARTUP_DELAY, ADE7759_STARTUP_DELAY + 100); 342 342 343 343 err_ret: 344 344 return ret;
+1 -1
drivers/staging/iio/meter/ade7759.h
··· 30 30 31 31 #define ADE7759_MAX_TX 6 32 32 #define ADE7759_MAX_RX 6 33 - #define ADE7759_STARTUP_DELAY 1 33 + #define ADE7759_STARTUP_DELAY 1000 34 34 35 35 #define ADE7759_SPI_SLOW (u32)(300 * 1000) 36 36 #define ADE7759_SPI_BURST (u32)(1000 * 1000)
+1 -1
drivers/staging/iio/meter/ade7854.c
··· 444 444 } 445 445 446 446 ade7854_reset(dev); 447 - msleep(ADE7854_STARTUP_DELAY); 447 + usleep_range(ADE7854_STARTUP_DELAY, ADE7854_STARTUP_DELAY + 100); 448 448 449 449 err_ret: 450 450 return ret;
+1 -1
drivers/staging/iio/meter/ade7854.h
··· 136 136 137 137 #define ADE7854_MAX_TX 7 138 138 #define ADE7854_MAX_RX 7 139 - #define ADE7854_STARTUP_DELAY 1 139 + #define ADE7854_STARTUP_DELAY 1000 140 140 141 141 #define ADE7854_SPI_SLOW (u32)(300 * 1000) 142 142 #define ADE7854_SPI_BURST (u32)(1000 * 1000)