diff options
Diffstat (limited to 'firmware/target/arm/s3c2440/i2c-s3c2440.c')
-rw-r--r-- | firmware/target/arm/s3c2440/i2c-s3c2440.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/firmware/target/arm/s3c2440/i2c-s3c2440.c b/firmware/target/arm/s3c2440/i2c-s3c2440.c index 155eb2f956..33c4e3180a 100644 --- a/firmware/target/arm/s3c2440/i2c-s3c2440.c +++ b/firmware/target/arm/s3c2440/i2c-s3c2440.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "system.h" | 21 | #include "system.h" |
22 | #include "i2c-s3c2440.h" | 22 | #include "i2c-s3c2440.h" |
23 | 23 | ||
24 | static struct wakeup i2c_wake; /* Transfer completion signal */ | 24 | static struct semaphore i2c_complete; /* Transfer completion signal */ |
25 | static struct mutex i2c_mtx; /* Mutual exclusion */ | 25 | static struct mutex i2c_mtx; /* Mutual exclusion */ |
26 | static unsigned char *buf_ptr; /* Next byte to transfer */ | 26 | static unsigned char *buf_ptr; /* Next byte to transfer */ |
27 | static int buf_count; /* Number of bytes remaining to transfer */ | 27 | static int buf_count; /* Number of bytes remaining to transfer */ |
@@ -64,7 +64,7 @@ void i2c_write(int addr, const unsigned char *buf, int count) | |||
64 | /* Generate START */ | 64 | /* Generate START */ |
65 | IICSTAT = I2C_MODE_MASTER | I2C_MODE_TX | I2C_START | I2C_RXTX_ENB; | 65 | IICSTAT = I2C_MODE_MASTER | I2C_MODE_TX | I2C_START | I2C_RXTX_ENB; |
66 | 66 | ||
67 | if (wakeup_wait(&i2c_wake, HZ) != OBJ_WAIT_SUCCEEDED) | 67 | if (semaphore_wait(&i2c_complete, HZ) != OBJ_WAIT_SUCCEEDED) |
68 | { | 68 | { |
69 | /* Something went wrong - stop transmission */ | 69 | /* Something went wrong - stop transmission */ |
70 | int oldlevel = disable_irq_save(); | 70 | int oldlevel = disable_irq_save(); |
@@ -84,7 +84,7 @@ void i2c_write(int addr, const unsigned char *buf, int count) | |||
84 | void i2c_init(void) | 84 | void i2c_init(void) |
85 | { | 85 | { |
86 | /* Init kernel objects */ | 86 | /* Init kernel objects */ |
87 | wakeup_init(&i2c_wake); | 87 | semaphore_init(&i2c_complete, 1, 0); |
88 | mutex_init(&i2c_mtx); | 88 | mutex_init(&i2c_mtx); |
89 | 89 | ||
90 | /* Clear pending source */ | 90 | /* Clear pending source */ |
@@ -134,7 +134,7 @@ void IIC(void) | |||
134 | i2c_stop(); | 134 | i2c_stop(); |
135 | 135 | ||
136 | /* Signal thread */ | 136 | /* Signal thread */ |
137 | wakeup_signal(&i2c_wake); | 137 | semaphore_release(&i2c_complete); |
138 | break; | 138 | break; |
139 | } | 139 | } |
140 | 140 | ||