|
|
|
@ -27,6 +27,7 @@ |
|
|
|
|
|
|
|
|
|
#include <common.h> |
|
|
|
|
#include <s3c2400.h> |
|
|
|
|
#include <div64.h> |
|
|
|
|
#include "tsc2000.h" |
|
|
|
|
|
|
|
|
|
#include "Pt1000_temp_data.h" |
|
|
|
@ -332,6 +333,7 @@ void tsc2000_reg_init (void) |
|
|
|
|
int tsc2000_interpolate(long value, long data[][2], long *result) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
unsigned long long val; |
|
|
|
|
|
|
|
|
|
/* the data is sorted and the first element is upper
|
|
|
|
|
* limit so we can easily check for out-of-band values |
|
|
|
@ -347,10 +349,10 @@ int tsc2000_interpolate(long value, long data[][2], long *result) |
|
|
|
|
result in 'long long'. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
*result = data[i-1][1] + |
|
|
|
|
((unsigned long long)(data[i][1] - data[i-1][1]) |
|
|
|
|
* (unsigned long long)(value - data[i-1][0])) |
|
|
|
|
/ (data[i][0] - data[i-1][0]); |
|
|
|
|
val = ((unsigned long long)(data[i][1] - data[i-1][1]) |
|
|
|
|
* (unsigned long long)(value - data[i-1][0])); |
|
|
|
|
do_div(val, (data[i][0] - data[i-1][0])); |
|
|
|
|
*result = data[i-1][1] + val; |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|