Merge tag 'char-misc-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[firefly-linux-kernel-4.4.55.git] / drivers / misc / bmp085.c
index b29a2be245911c62cc67a3b6e6aed3864b03242b..76c3064629f1c802ef38c0f3ad4ae15f5a1142cb 100644 (file)
@@ -87,7 +87,7 @@ struct bmp085_data {
        u32 raw_temperature;
        u32 raw_pressure;
        unsigned char oversampling_setting;
-       u32 last_temp_measurement;
+       unsigned long last_temp_measurement;
        s32 b6; /* calculated temperature correction coefficient */
 };
 
@@ -234,7 +234,8 @@ static s32 bmp085_get_pressure(struct bmp085_data *data, int *pressure)
        int status;
 
        /* alt least every second force an update of the ambient temperature */
-       if (data->last_temp_measurement + 1*HZ < jiffies) {
+       if (data->last_temp_measurement == 0 ||
+                       time_is_before_jiffies(data->last_temp_measurement + 1*HZ)) {
                status = bmp085_get_temperature(data, NULL);
                if (status != 0)
                        goto exit;
@@ -464,20 +465,8 @@ static struct i2c_driver bmp085_driver = {
        .address_list   = normal_i2c
 };
 
-static int __init bmp085_init(void)
-{
-       return i2c_add_driver(&bmp085_driver);
-}
-
-static void __exit bmp085_exit(void)
-{
-       i2c_del_driver(&bmp085_driver);
-}
-
+module_i2c_driver(bmp085_driver);
 
 MODULE_AUTHOR("Christoph Mair <christoph.mair@gmail.com");
 MODULE_DESCRIPTION("BMP085 driver");
 MODULE_LICENSE("GPL");
-
-module_init(bmp085_init);
-module_exit(bmp085_exit);