2012-02-19 17:40:09

by Bernhard Walle

[permalink] [raw]
Subject: [PATCH] misc: bmp085: Handle jiffies overflow correctly

By using the time_is_before_jiffies() macro instead of normal
arithmetic, the jiffies overflow is handled correctly.

Signed-off-by: Bernhard Walle <[email protected]>
---
drivers/misc/bmp085.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/misc/bmp085.c b/drivers/misc/bmp085.c
index b29a2be..7cfc598 100644
--- a/drivers/misc/bmp085.c
+++ b/drivers/misc/bmp085.c
@@ -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;
--
1.7.9.1


2012-02-20 12:11:05

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] misc: bmp085: Handle jiffies overflow correctly

On Sunday 19 February 2012, Bernhard Walle wrote:
> By using the time_is_before_jiffies() macro instead of normal
> arithmetic, the jiffies overflow is handled correctly.
>
> Signed-off-by: Bernhard Walle <[email protected]>

Acked-by: Arnd Bergmann <[email protected]>

BTW, what is the future of this driver? Are there
plans to move it over to the the industrial I/O
framework?

Arnd

2012-02-24 22:18:41

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] misc: bmp085: Handle jiffies overflow correctly

On Sun, Feb 19, 2012 at 06:28:01PM +0100, Bernhard Walle wrote:
> By using the time_is_before_jiffies() macro instead of normal
> arithmetic, the jiffies overflow is handled correctly.
>
> Signed-off-by: Bernhard Walle <[email protected]>
> Acked-by: Arnd Bergmann <[email protected]>
> ---
> drivers/misc/bmp085.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/misc/bmp085.c b/drivers/misc/bmp085.c
> index b29a2be..7cfc598 100644
> --- a/drivers/misc/bmp085.c
> +++ b/drivers/misc/bmp085.c
> @@ -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)) {

This causes a complier warning:
drivers/misc/bmp085.c: In function ‘bmp085_get_pressure’:
drivers/misc/bmp085.c:238:4: warning: comparison of distinct pointer types lacks a cast [enabled by default]

Care to send me a follow-on patch that fixes this?

thanks,

greg k-h

2012-02-25 09:28:23

by Bernhard Walle

[permalink] [raw]
Subject: [PATCH] misc: bmp085: Use unsigned long to store jiffies

This fixes following compilation warning:

drivers/misc/bmp085.c: In function ‘bmp085_get_pressure’:
drivers/misc/bmp085.c:238:4: warning: comparison of distinct pointer
types lacks a cast [enabled by default]

Signed-off-by: Bernhard Walle <[email protected]>
---
drivers/misc/bmp085.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/misc/bmp085.c b/drivers/misc/bmp085.c
index b088abc..76c3064 100644
--- a/drivers/misc/bmp085.c
+++ b/drivers/misc/bmp085.c
@@ -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 */
};

--
1.7.5.4