IIO: Change msleep to usleep_range for small msecs
authorAniroop Mathur <a.mathur@samsung.com>
Sat, 26 Nov 2016 03:47:26 +0000 (09:17 +0530)
committerJonathan Cameron <jic23@kernel.org>
Sat, 3 Dec 2016 08:58:40 +0000 (08:58 +0000)
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>
12 files changed:
drivers/iio/adc/exynos_adc.c
drivers/iio/pressure/bmp280-core.c
drivers/staging/iio/meter/ade7753.c
drivers/staging/iio/meter/ade7753.h
drivers/staging/iio/meter/ade7754.c
drivers/staging/iio/meter/ade7754.h
drivers/staging/iio/meter/ade7758.h
drivers/staging/iio/meter/ade7758_core.c
drivers/staging/iio/meter/ade7759.c
drivers/staging/iio/meter/ade7759.h
drivers/staging/iio/meter/ade7854.c
drivers/staging/iio/meter/ade7854.h

index c15756d7bf7f449c9c6dbf52569fbb2dd4ab2863..ad1775b5f83c30fd3d1dec35c551483ceb3b434f 100644 (file)
@@ -632,7 +632,7 @@ static irqreturn_t exynos_ts_isr(int irq, void *dev_id)
                input_report_key(info->input, BTN_TOUCH, 1);
                input_sync(info->input);
 
-               msleep(1);
+               usleep_range(1000, 1100);
        };
 
        writel(0, ADC_V1_CLRINTPNDNUP(info->regs));
index e5a533cbd53fa58bbee3de2a7c624e2b252c62cc..4d18826ac63c2eca6bde3c03e18600961a885c11 100644 (file)
@@ -65,7 +65,7 @@ struct bmp280_data {
        struct bmp180_calib calib;
        struct regulator *vddd;
        struct regulator *vdda;
-       unsigned int start_up_time; /* in milliseconds */
+       unsigned int start_up_time; /* in microseconds */
 
        /* log of base 2 of oversampling rate */
        u8 oversampling_press;
@@ -935,14 +935,14 @@ int bmp280_common_probe(struct device *dev,
                data->chip_info = &bmp180_chip_info;
                data->oversampling_press = ilog2(8);
                data->oversampling_temp = ilog2(1);
-               data->start_up_time = 10;
+               data->start_up_time = 10000;
                break;
        case BMP280_CHIP_ID:
                indio_dev->num_channels = 2;
                data->chip_info = &bmp280_chip_info;
                data->oversampling_press = ilog2(16);
                data->oversampling_temp = ilog2(2);
-               data->start_up_time = 2;
+               data->start_up_time = 2000;
                break;
        case BME280_CHIP_ID:
                indio_dev->num_channels = 3;
@@ -950,7 +950,7 @@ int bmp280_common_probe(struct device *dev,
                data->oversampling_press = ilog2(16);
                data->oversampling_humid = ilog2(16);
                data->oversampling_temp = ilog2(2);
-               data->start_up_time = 2;
+               data->start_up_time = 2000;
                break;
        default:
                return -EINVAL;
@@ -979,7 +979,7 @@ int bmp280_common_probe(struct device *dev,
                goto out_disable_vddd;
        }
        /* Wait to make sure we started up properly */
-       mdelay(data->start_up_time);
+       usleep_range(data->start_up_time, data->start_up_time + 100);
 
        /* Bring chip out of reset if there is an assigned GPIO line */
        gpiod = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
@@ -1038,7 +1038,7 @@ int bmp280_common_probe(struct device *dev,
         * Set autosuspend to two orders of magnitude larger than the
         * start-up time.
         */
-       pm_runtime_set_autosuspend_delay(dev, data->start_up_time *100);
+       pm_runtime_set_autosuspend_delay(dev, data->start_up_time / 10);
        pm_runtime_use_autosuspend(dev);
        pm_runtime_put(dev);
 
@@ -1101,7 +1101,7 @@ static int bmp280_runtime_resume(struct device *dev)
        ret = regulator_enable(data->vdda);
        if (ret)
                return ret;
-       msleep(data->start_up_time);
+       usleep_range(data->start_up_time, data->start_up_time + 100);
        return data->chip_info->chip_config(data);
 }
 #endif /* CONFIG_PM */
index 4b5f05fdadcdf209774afc7582f8478b309f3d5c..671dc9971610adf33a38b1da9438f74458c833b1 100644 (file)
@@ -377,7 +377,7 @@ static int ade7753_initial_setup(struct iio_dev *indio_dev)
        }
 
        ade7753_reset(dev);
-       msleep(ADE7753_STARTUP_DELAY);
+       usleep_range(ADE7753_STARTUP_DELAY, ADE7753_STARTUP_DELAY + 100);
 
 err_ret:
        return ret;
index a9d93cc1c414dc0826f348208aae0ef285b8ccb0..bfe749156bce77ae8d2561ce456495cfed87c6c8 100644 (file)
@@ -49,7 +49,7 @@
 
 #define ADE7753_MAX_TX    4
 #define ADE7753_MAX_RX    4
-#define ADE7753_STARTUP_DELAY 1
+#define ADE7753_STARTUP_DELAY 1000
 
 #define ADE7753_SPI_SLOW       (u32)(300 * 1000)
 #define ADE7753_SPI_BURST      (u32)(1000 * 1000)
index 17309591ca5718a015745f58278eb6133ff93d8b..024463a11c47b6c19d6d9da7c68994e12a8ad9df 100644 (file)
@@ -389,7 +389,7 @@ static int ade7754_initial_setup(struct iio_dev *indio_dev)
        }
 
        ade7754_reset(dev);
-       msleep(ADE7754_STARTUP_DELAY);
+       usleep_range(ADE7754_STARTUP_DELAY, ADE7754_STARTUP_DELAY + 100);
 
 err_ret:
        return ret;
index e42ffc387a1468ecb6a375d0620c0b1f4bbb1624..28f71c2cde0c3d8ddf0d1b7b0bd8b0e2a0fdefd3 100644 (file)
@@ -67,7 +67,7 @@
 
 #define ADE7754_MAX_TX    4
 #define ADE7754_MAX_RX    4
-#define ADE7754_STARTUP_DELAY 1
+#define ADE7754_STARTUP_DELAY 1000
 
 #define ADE7754_SPI_SLOW       (u32)(300 * 1000)
 #define ADE7754_SPI_BURST      (u32)(1000 * 1000)
index 1d04ec9524c8b99e23b4a8107b764650a87c8321..6ae78d8aa24f7eaeb5a3c9f1558d20a38d1fd882 100644 (file)
@@ -89,7 +89,7 @@
 
 #define ADE7758_MAX_TX    8
 #define ADE7758_MAX_RX    4
-#define ADE7758_STARTUP_DELAY 1
+#define ADE7758_STARTUP_DELAY 1000
 
 #define AD7758_NUM_WAVSEL      5
 #define AD7758_NUM_PHSEL       3
index 3af8f77b8e4194e63cfe1c75d44eaf4ece9327ca..99c89e606c8d8b8090f4aa9207b9872fae6dceaf 100644 (file)
@@ -459,7 +459,7 @@ static int ade7758_initial_setup(struct iio_dev *indio_dev)
        }
 
        ade7758_reset(dev);
-       msleep(ADE7758_STARTUP_DELAY);
+       usleep_range(ADE7758_STARTUP_DELAY, ADE7758_STARTUP_DELAY + 100);
 
 err_ret:
        return ret;
index 80144d40d9cac9f6a6d78d8a113c3ed32abd0740..944ee3401029d90c365ce1b04000a659f5970e0c 100644 (file)
@@ -338,7 +338,7 @@ static int ade7759_initial_setup(struct iio_dev *indio_dev)
        }
 
        ade7759_reset(dev);
-       msleep(ADE7759_STARTUP_DELAY);
+       usleep_range(ADE7759_STARTUP_DELAY, ADE7759_STARTUP_DELAY + 100);
 
 err_ret:
        return ret;
index f9ff1f8e7372ca83e5987e57172f7faad4d961b1..f0716d2fdf8e5ad62d69a5263d9176acf957725e 100644 (file)
@@ -30,7 +30,7 @@
 
 #define ADE7759_MAX_TX    6
 #define ADE7759_MAX_RX    6
-#define ADE7759_STARTUP_DELAY 1
+#define ADE7759_STARTUP_DELAY 1000
 
 #define ADE7759_SPI_SLOW       (u32)(300 * 1000)
 #define ADE7759_SPI_BURST      (u32)(1000 * 1000)
index 24edbc39ab4e7fb3a3ec80d1329e426158f506fa..e8007f0c5186cd1835423574160bfb1c306e832a 100644 (file)
@@ -444,7 +444,7 @@ static int ade7854_initial_setup(struct iio_dev *indio_dev)
        }
 
        ade7854_reset(dev);
-       msleep(ADE7854_STARTUP_DELAY);
+       usleep_range(ADE7854_STARTUP_DELAY, ADE7854_STARTUP_DELAY + 100);
 
 err_ret:
        return ret;
index 52f4195cf6f4bb25acea9cf93b3b6af063d3d373..dbd97def9cd80aaf9a2539f9925b54d015f939f6 100644 (file)
 
 #define ADE7854_MAX_TX    7
 #define ADE7854_MAX_RX    7
-#define ADE7854_STARTUP_DELAY 1
+#define ADE7854_STARTUP_DELAY 1000
 
 #define ADE7854_SPI_SLOW       (u32)(300 * 1000)
 #define ADE7854_SPI_BURST      (u32)(1000 * 1000)