diff options
Diffstat (limited to 'keyboards/ktec/ergodone/expander.c')
-rw-r--r-- | keyboards/ktec/ergodone/expander.c | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/keyboards/ktec/ergodone/expander.c b/keyboards/ktec/ergodone/expander.c deleted file mode 100644 index a4d48e9edb..0000000000 --- a/keyboards/ktec/ergodone/expander.c +++ /dev/null @@ -1,104 +0,0 @@ -#include <stdbool.h> -#include "action.h" -#include "i2c_master.h" -#include "expander.h" -#include "debug.h" - -#define I2C_TIMEOUT 100 - -static uint8_t expander_status = 0; -static uint8_t expander_input = 0; - -void expander_config(void); -uint8_t expander_write(uint8_t reg, uint8_t data); -uint8_t expander_read(uint8_t reg, uint8_t *data); - -void expander_init(void) -{ - i2c_init(); - expander_scan(); -} - -void expander_scan(void) -{ - dprintf("expander status: %d ... ", expander_status); - uint8_t ret = i2c_start(EXPANDER_ADDR | I2C_WRITE, I2C_TIMEOUT); - if (ret == 0) { - i2c_stop(); - if (expander_status == 0) { - dprintf("attached\n"); - expander_status = 1; - expander_config(); - clear_keyboard(); - } - } - else { - if (expander_status == 1) { - dprintf("detached\n"); - expander_status = 0; - clear_keyboard(); - } - } - dprintf("%d\n", expander_status); -} - -void expander_read_cols(void) -{ - expander_read(EXPANDER_REG_GPIOA, &expander_input); -} - -uint8_t expander_get_col(uint8_t col) -{ - if (col > 4) { - col++; - } - return expander_input & (1<<col) ? 1 : 0; -} - -matrix_row_t expander_read_row(void) -{ - expander_read_cols(); - - /* make cols */ - matrix_row_t cols = 0; - for (uint8_t col = 0; col < MATRIX_COLS; col++) { - if (expander_get_col(col)) { - cols |= (1UL << (MATRIX_COLS - 1 - col)); - } - } - - return cols; -} - -void expander_unselect_rows(void) -{ - expander_write(EXPANDER_REG_IODIRB, 0xFF); -} - -void expander_select_row(uint8_t row) -{ - expander_write(EXPANDER_REG_IODIRB, ~(1<<(row+1))); -} - -void expander_config(void) -{ - expander_write(EXPANDER_REG_IPOLA, 0xFF); - expander_write(EXPANDER_REG_GPPUA, 0xFF); - expander_write(EXPANDER_REG_IODIRB, 0xFF); -} - -uint8_t expander_write(uint8_t reg, uint8_t data) -{ - if (expander_status == 0) { - return 0; - } - return i2c_writeReg(EXPANDER_ADDR, reg, &data, 1, I2C_TIMEOUT); -} - -uint8_t expander_read(uint8_t reg, uint8_t *data) -{ - if (expander_status == 0) { - return 0; - } - return i2c_readReg(EXPANDER_ADDR, reg, data, 1, I2C_TIMEOUT); -} |