diff options
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/i2c.c | 12 | ||||
-rw-r--r-- | firmware/drivers/i2c.h | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/firmware/drivers/i2c.c b/firmware/drivers/i2c.c index 5aa822e83b..ccd11e01de 100644 --- a/firmware/drivers/i2c.c +++ b/firmware/drivers/i2c.c | |||
@@ -41,6 +41,18 @@ | |||
41 | /* arbitrary delay loop */ | 41 | /* arbitrary delay loop */ |
42 | #define DELAY do { int _x; for(_x=0;_x<20;_x++);} while (0) | 42 | #define DELAY do { int _x; for(_x=0;_x<20;_x++);} while (0) |
43 | 43 | ||
44 | static struct mutex i2c_mtx; | ||
45 | |||
46 | void i2c_begin(void) | ||
47 | { | ||
48 | mutex_lock(&i2c_mtx); | ||
49 | } | ||
50 | |||
51 | void i2c_end(void) | ||
52 | { | ||
53 | mutex_unlock(&i2c_mtx); | ||
54 | } | ||
55 | |||
44 | void i2c_start(void) | 56 | void i2c_start(void) |
45 | { | 57 | { |
46 | SDA_OUTPUT; | 58 | SDA_OUTPUT; |
diff --git a/firmware/drivers/i2c.h b/firmware/drivers/i2c.h index a16077428c..ed9a5e678d 100644 --- a/firmware/drivers/i2c.h +++ b/firmware/drivers/i2c.h | |||
@@ -20,6 +20,8 @@ | |||
20 | #define I2C_H | 20 | #define I2C_H |
21 | 21 | ||
22 | extern void i2c_init(void); | 22 | extern void i2c_init(void); |
23 | extern void i2c_begin(void); | ||
24 | extern void i2c_end(void); | ||
23 | extern int i2c_write(int device, unsigned char* buf, int count ); | 25 | extern int i2c_write(int device, unsigned char* buf, int count ); |
24 | extern int i2c_read(int device, unsigned char* buf, int count ); | 26 | extern int i2c_read(int device, unsigned char* buf, int count ); |
25 | extern int i2c_readmem(int device, int address, unsigned char* buf, int count ); | 27 | extern int i2c_readmem(int device, int address, unsigned char* buf, int count ); |