1
0
Fork 0
forked from len0rd/rockbox

Further lockdown of multipart i2c operations that must be done without intrusion.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15823 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Michael Sevakis 2007-11-27 00:35:41 +00:00
parent b9b736fa39
commit 7126d64820

View file

@ -24,6 +24,7 @@
#include "string.h" #include "string.h"
#include "adc.h" #include "adc.h"
#include "pcf50605.h" #include "pcf50605.h"
#include "i2c-pp.h"
struct adc_struct { struct adc_struct {
long timeout; long timeout;
@ -39,6 +40,9 @@ static unsigned short _adc_read(struct adc_struct *adc)
if (adc->timeout < current_tick) { if (adc->timeout < current_tick) {
unsigned char data[2]; unsigned char data[2];
unsigned short value; unsigned short value;
i2c_lock();
/* 5x per 2 seconds */ /* 5x per 2 seconds */
adc->timeout = current_tick + (HZ * 2 / 5); adc->timeout = current_tick + (HZ * 2 / 5);
@ -53,6 +57,8 @@ static unsigned short _adc_read(struct adc_struct *adc)
adc->conversion(&value); adc->conversion(&value);
} }
adc->data = value; adc->data = value;
i2c_unlock();
return value; return value;
} else } else
{ {