aboutsummaryrefslogtreecommitdiff
path: root/keyboards/ergodox_ez/matrix.c
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2018-06-23 14:18:47 -0400
committerJack Humbert <jack.humb@gmail.com>2018-06-23 14:18:47 -0400
commit7a44ad83fce391c938d18abcc2125e15c1982078 (patch)
tree1c0db8fbaf33aa1cf408ba418cdb3705b526d618 /keyboards/ergodox_ez/matrix.c
parent6380f8319057d33bb6d07c66789867e49c634504 (diff)
downloadqmk_firmware-7a44ad83fce391c938d18abcc2125e15c1982078.tar.gz
qmk_firmware-7a44ad83fce391c938d18abcc2125e15c1982078.zip
adds immediate i2c return, fixes ez matrix code
Diffstat (limited to 'keyboards/ergodox_ez/matrix.c')
-rw-r--r--keyboards/ergodox_ez/matrix.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c
index d8b708a16..2e95c83b6 100644
--- a/keyboards/ergodox_ez/matrix.c
+++ b/keyboards/ergodox_ez/matrix.c
@@ -295,13 +295,14 @@ static matrix_row_t read_cols(uint8_t row)
295 return 0; 295 return 0;
296 } else { 296 } else {
297 uint8_t data = 0; 297 uint8_t data = 0;
298 mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0); if (mcp23018_status) goto out; 298 mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
299 mcp23018_status = i2c_write(GPIOB, 0); if (mcp23018_status) goto out; 299 mcp23018_status = i2c_write(GPIOB, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
300 mcp23018_status = i2c_start(I2C_ADDR_READ, 0); if (mcp23018_status) goto out; 300 mcp23018_status = i2c_start(I2C_ADDR_READ, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
301 mcp23018_status = i2c_read_nack(0); if (mcp23018_status < 0) goto out; 301 mcp23018_status = i2c_read_nack(ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
302 data = ~((uint8_t)mcp23018_status); 302 data = ~((uint8_t)mcp23018_status);
303 mcp23018_status = I2C_STATUS_SUCCESS;
303 out: 304 out:
304 i2c_stop(0); 305 i2c_stop(ERGODOX_EZ_I2C_TIMEOUT);
305 return data; 306 return data;
306 } 307 }
307 } else { 308 } else {
@@ -350,11 +351,11 @@ static void select_row(uint8_t row)
350 } else { 351 } else {
351 // set active row low : 0 352 // set active row low : 0
352 // set other rows hi-Z : 1 353 // set other rows hi-Z : 1
353 mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0); if (mcp23018_status) goto out; 354 mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
354 mcp23018_status = i2c_write(GPIOA, 0); if (mcp23018_status) goto out; 355 mcp23018_status = i2c_write(GPIOA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
355 mcp23018_status = i2c_write(0xFF & ~(1<<row), 0); if (mcp23018_status) goto out; 356 mcp23018_status = i2c_write(0xFF & ~(1<<row), ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
356 out: 357 out:
357 i2c_stop(0); 358 i2c_stop(ERGODOX_EZ_I2C_TIMEOUT);
358 } 359 }
359 } else { 360 } else {
360 // select on teensy 361 // select on teensy