summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-06-24 10:34:24 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-06-24 10:34:24 +0000
commitb922a96ae3c6fb7e117923512108a4b3056469c1 (patch)
treebf736ebb8bcb7b246393d9ff97d6b403d283c3a0 /firmware
parent6a6217a2e580c7fa6cdfe90763d52c3a399d563a (diff)
downloadrockbox-b922a96ae3c6fb7e117923512108a4b3056469c1.tar.gz
rockbox-b922a96ae3c6fb7e117923512108a4b3056469c1.zip
Added functions for exclusive I2C access
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1144 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/i2c.c12
-rw-r--r--firmware/drivers/i2c.h2
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
44static struct mutex i2c_mtx;
45
46void i2c_begin(void)
47{
48 mutex_lock(&i2c_mtx);
49}
50
51void i2c_end(void)
52{
53 mutex_unlock(&i2c_mtx);
54}
55
44void i2c_start(void) 56void 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
22extern void i2c_init(void); 22extern void i2c_init(void);
23extern void i2c_begin(void);
24extern void i2c_end(void);
23extern int i2c_write(int device, unsigned char* buf, int count ); 25extern int i2c_write(int device, unsigned char* buf, int count );
24extern int i2c_read(int device, unsigned char* buf, int count ); 26extern int i2c_read(int device, unsigned char* buf, int count );
25extern int i2c_readmem(int device, int address, unsigned char* buf, int count ); 27extern int i2c_readmem(int device, int address, unsigned char* buf, int count );