aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/ergodox_ez/config.h2
-rw-r--r--keyboards/ergodox_ez/ergodox_ez.c36
-rw-r--r--keyboards/ergodox_ez/ergodox_ez.h2
-rw-r--r--keyboards/ergodox_ez/matrix.c20
4 files changed, 29 insertions, 31 deletions
diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h
index ec1620030..1285cbe1c 100644
--- a/keyboards/ergodox_ez/config.h
+++ b/keyboards/ergodox_ez/config.h
@@ -138,6 +138,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
138//#define NO_ACTION_FUNCTION 138//#define NO_ACTION_FUNCTION
139//#define DEBUG_MATRIX_SCAN_RATE 139//#define DEBUG_MATRIX_SCAN_RATE
140 140
141#define I2C_TIMEOUT 1000
142
143#endif 141#endif
diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c
index 3a2d1273f..65671b38f 100644
--- a/keyboards/ergodox_ez/ergodox_ez.c
+++ b/keyboards/ergodox_ez/ergodox_ez.c
@@ -24,7 +24,7 @@ extern inline void ergodox_led_all_set(uint8_t n);
24 24
25 25
26bool i2c_initialized = 0; 26bool i2c_initialized = 0;
27uint8_t mcp23018_status = 0x20; 27i2c_status_t mcp23018_status = 0x20;
28 28
29void matrix_init_kb(void) { 29void matrix_init_kb(void) {
30 // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md") 30 // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
@@ -125,23 +125,23 @@ uint8_t init_mcp23018(void) {
125 // - unused : input : 1 125 // - unused : input : 1
126 // - input : input : 1 126 // - input : input : 1
127 // - driving : output : 0 127 // - driving : output : 0
128 mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out; 128 mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0); if (mcp23018_status) goto out;
129 mcp23018_status = i2c_write(IODIRA); if (mcp23018_status) goto out; 129 mcp23018_status = i2c_write(IODIRA, 0); if (mcp23018_status) goto out;
130 mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out; 130 mcp23018_status = i2c_write(0b00000000, 0); if (mcp23018_status) goto out;
131 mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out; 131 mcp23018_status = i2c_write(0b00111111, 0); if (mcp23018_status) goto out;
132 i2c_stop(); 132 i2c_stop(0);
133 133
134 // set pull-up 134 // set pull-up
135 // - unused : on : 1 135 // - unused : on : 1
136 // - input : on : 1 136 // - input : on : 1
137 // - driving : off : 0 137 // - driving : off : 0
138 mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out; 138 mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0); if (mcp23018_status) goto out;
139 mcp23018_status = i2c_write(GPPUA); if (mcp23018_status) goto out; 139 mcp23018_status = i2c_write(GPPUA, 0); if (mcp23018_status) goto out;
140 mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out; 140 mcp23018_status = i2c_write(0b00000000, 0); if (mcp23018_status) goto out;
141 mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out; 141 mcp23018_status = i2c_write(0b00111111, 0); if (mcp23018_status) goto out;
142 142
143out: 143out:
144 i2c_stop(); 144 i2c_stop(0);
145 145
146#ifdef LEFT_LEDS 146#ifdef LEFT_LEDS
147 if (!mcp23018_status) mcp23018_status = ergodox_left_leds_update(); 147 if (!mcp23018_status) mcp23018_status = ergodox_left_leds_update();
@@ -165,22 +165,22 @@ uint8_t ergodox_left_leds_update(void) {
165 // - unused : hi-Z : 1 165 // - unused : hi-Z : 1
166 // - input : hi-Z : 1 166 // - input : hi-Z : 1
167 // - driving : hi-Z : 1 167 // - driving : hi-Z : 1
168 mcp23018_status = i2c_start(I2C_ADDR_WRITE); 168 mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0);
169 if (mcp23018_status) goto out; 169 if (mcp23018_status) goto out;
170 mcp23018_status = i2c_write(OLATA); 170 mcp23018_status = i2c_write(OLATA, 0);
171 if (mcp23018_status) goto out; 171 if (mcp23018_status) goto out;
172 mcp23018_status = i2c_write(0b11111111 172 mcp23018_status = i2c_write(0b11111111
173 & ~(ergodox_left_led_3<<LEFT_LED_3_SHIFT) 173 & ~(ergodox_left_led_3<<LEFT_LED_3_SHIFT),
174 ); 174 0);
175 if (mcp23018_status) goto out; 175 if (mcp23018_status) goto out;
176 mcp23018_status = i2c_write(0b11111111 176 mcp23018_status = i2c_write(0b11111111
177 & ~(ergodox_left_led_2<<LEFT_LED_2_SHIFT) 177 & ~(ergodox_left_led_2<<LEFT_LED_2_SHIFT)
178 & ~(ergodox_left_led_1<<LEFT_LED_1_SHIFT) 178 & ~(ergodox_left_led_1<<LEFT_LED_1_SHIFT),
179 ); 179 0);
180 if (mcp23018_status) goto out; 180 if (mcp23018_status) goto out;
181 181
182 out: 182 out:
183 i2c_stop(); 183 i2c_stop(0);
184 return mcp23018_status; 184 return mcp23018_status;
185} 185}
186#endif 186#endif
diff --git a/keyboards/ergodox_ez/ergodox_ez.h b/keyboards/ergodox_ez/ergodox_ez.h
index 3ffc32553..9086db2fb 100644
--- a/keyboards/ergodox_ez/ergodox_ez.h
+++ b/keyboards/ergodox_ez/ergodox_ez.h
@@ -23,7 +23,7 @@
23#define OLATA 0x14 // output latch register 23#define OLATA 0x14 // output latch register
24#define OLATB 0x15 24#define OLATB 0x15
25 25
26extern uint8_t mcp23018_status; 26extern i2c_status_t mcp23018_status;
27 27
28void init_ergodox(void); 28void init_ergodox(void);
29void ergodox_blink_all_leds(void); 29void ergodox_blink_all_leds(void);
diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c
index 8b117166f..d8b708a16 100644
--- a/keyboards/ergodox_ez/matrix.c
+++ b/keyboards/ergodox_ez/matrix.c
@@ -295,13 +295,13 @@ 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); if (mcp23018_status) goto out; 298 mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0); if (mcp23018_status) goto out;
299 mcp23018_status = i2c_write(GPIOB); if (mcp23018_status) goto out; 299 mcp23018_status = i2c_write(GPIOB, 0); if (mcp23018_status) goto out;
300 mcp23018_status = i2c_start(I2C_ADDR_READ); if (mcp23018_status) goto out; 300 mcp23018_status = i2c_start(I2C_ADDR_READ, 0); if (mcp23018_status) goto out;
301 data = i2c_read_nack(); 301 mcp23018_status = i2c_read_nack(0); if (mcp23018_status < 0) goto out;
302 data = ~data; 302 data = ~((uint8_t)mcp23018_status);
303 out: 303 out:
304 i2c_stop(); 304 i2c_stop(0);
305 return data; 305 return data;
306 } 306 }
307 } else { 307 } else {
@@ -350,11 +350,11 @@ static void select_row(uint8_t row)
350 } else { 350 } else {
351 // set active row low : 0 351 // set active row low : 0
352 // set other rows hi-Z : 1 352 // set other rows hi-Z : 1
353 mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out; 353 mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0); if (mcp23018_status) goto out;
354 mcp23018_status = i2c_write(GPIOA); if (mcp23018_status) goto out; 354 mcp23018_status = i2c_write(GPIOA, 0); if (mcp23018_status) goto out;
355 mcp23018_status = i2c_write(0xFF & ~(1<<row)); if (mcp23018_status) goto out; 355 mcp23018_status = i2c_write(0xFF & ~(1<<row), 0); if (mcp23018_status) goto out;
356 out: 356 out:
357 i2c_stop(); 357 i2c_stop(0);
358 } 358 }
359 } else { 359 } else {
360 // select on teensy 360 // select on teensy