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;
                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;
                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;
                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);
         * 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);
 
        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 */