summaryrefslogtreecommitdiff
path: root/firmware/target/arm/i2c-pp.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/i2c-pp.c')
-rw-r--r--firmware/target/arm/i2c-pp.c16
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 */
135static struct mutex i2c_mutex; 135struct spinlock i2c_spin NOCACHEBSS_ATTR;
136 136
137int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data) { 137int 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}