diff options
Diffstat (limited to 'firmware/target/arm/i2c-pp.c')
-rw-r--r-- | firmware/target/arm/i2c-pp.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/firmware/target/arm/i2c-pp.c b/firmware/target/arm/i2c-pp.c index 1cc25a1a10..e5813f9f9a 100644 --- a/firmware/target/arm/i2c-pp.c +++ b/firmware/target/arm/i2c-pp.c | |||
@@ -132,18 +132,18 @@ static int pp_i2c_send_byte(unsigned int addr, int data0) | |||
132 | } | 132 | } |
133 | 133 | ||
134 | /* Public functions */ | 134 | /* Public functions */ |
135 | static struct mutex i2c_mutex; | 135 | struct spinlock i2c_spin NOCACHEBSS_ATTR; |
136 | 136 | ||
137 | int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data) { | 137 | int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data) { |
138 | unsigned int temp; | 138 | unsigned int temp; |
139 | int i; | 139 | int i; |
140 | spinlock_lock(&i2c_mutex); | 140 | spinlock_lock(&i2c_spin); |
141 | pp_i2c_send_byte(dev_addr, addr); | 141 | pp_i2c_send_byte(dev_addr, addr); |
142 | for (i = 0; i < len; i++) { | 142 | for (i = 0; i < len; i++) { |
143 | pp_i2c_read_byte(dev_addr, &temp); | 143 | pp_i2c_read_byte(dev_addr, &temp); |
144 | data[i] = temp; | 144 | data[i] = temp; |
145 | } | 145 | } |
146 | spinlock_unlock(&i2c_mutex); | 146 | spinlock_unlock(&i2c_spin); |
147 | return i; | 147 | return i; |
148 | } | 148 | } |
149 | 149 | ||
@@ -151,10 +151,10 @@ int i2c_readbyte(unsigned int dev_addr, int addr) | |||
151 | { | 151 | { |
152 | int data; | 152 | int data; |
153 | 153 | ||
154 | spinlock_lock(&i2c_mutex); | 154 | spinlock_lock(&i2c_spin); |
155 | pp_i2c_send_byte(dev_addr, addr); | 155 | pp_i2c_send_byte(dev_addr, addr); |
156 | pp_i2c_read_byte(dev_addr, &data); | 156 | pp_i2c_read_byte(dev_addr, &data); |
157 | spinlock_unlock(&i2c_mutex); | 157 | spinlock_unlock(&i2c_spin); |
158 | 158 | ||
159 | return data; | 159 | return data; |
160 | } | 160 | } |
@@ -167,9 +167,9 @@ int pp_i2c_send(unsigned int addr, int data0, int data1) | |||
167 | data[0] = data0; | 167 | data[0] = data0; |
168 | data[1] = data1; | 168 | data[1] = data1; |
169 | 169 | ||
170 | spinlock_lock(&i2c_mutex); | 170 | spinlock_lock(&i2c_spin); |
171 | retval = pp_i2c_send_bytes(addr, 2, data); | 171 | retval = pp_i2c_send_bytes(addr, 2, data); |
172 | spinlock_unlock(&i2c_mutex); | 172 | spinlock_unlock(&i2c_spin); |
173 | 173 | ||
174 | return retval; | 174 | return retval; |
175 | } | 175 | } |
@@ -221,7 +221,7 @@ void i2c_init(void) | |||
221 | #endif | 221 | #endif |
222 | #endif | 222 | #endif |
223 | 223 | ||
224 | spinlock_init(&i2c_mutex); | 224 | spinlock_init(&i2c_spin IF_COP(, SPINLOCK_TASK_SWITCH)); |
225 | 225 | ||
226 | i2c_readbyte(0x8, 0); | 226 | i2c_readbyte(0x8, 0); |
227 | } | 227 | } |