]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
added support for Infinity 1.1a (4th drop) matrix, no LED support yet
authorDepariel <tyler.lear@gmail.com>
Mon, 1 Aug 2016 03:12:16 +0000 (23:12 -0400)
committerDepariel <tyler.lear@gmail.com>
Mon, 1 Aug 2016 03:12:16 +0000 (23:12 -0400)
keyboards/infinity_chibios/config.h
keyboards/infinity_chibios/matrix.c

index bd4becfc54c20838697118ec351703c32a218eef..452cc2a9fb114fe277cbd6b3c29a1cd1507c6095 100644 (file)
@@ -52,8 +52,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 )
 
 /* Keymap for Infinity prototype */
-#define INFINITY_PROTOTYPE
+//#define INFINITY_PROTOTYPE
 
+/* Keymap for Infinity 1.1a (first revision with LED support) */
+//#define INFINITY_LED
 
 /*
  * Feature disable options
index 2c68ea83ab721b50f068dff55ce889c9422bab97..62c165aa5339747179f83b5be3c74f0ab0d82291 100644 (file)
  * Infinity Pinusage:
  * Column pins are input with internal pull-down. Row pins are output and strobe with high.
  * Key is high or 1 when it turns on.
- *
+ *  INFINITY PRODUCTION (NO LED)
  *     col: { PTD1, PTD2, PTD3, PTD4, PTD5, PTD6, PTD7 }
  *     row: { PTB0, PTB1, PTB2, PTB3, PTB16, PTB17, PTC4, PTC5, PTD0 }
+ *  INFINITY PRODUCTION (WITH LED)
+ *     col: { PTD1, PTD2, PTD3, PTD4, PTD5, PTD6, PTD7 }
+ *     row: { PTC0, PTC1, PTC2, PTC3, PTC4, PTC5, PTC6, PTC7, PTD0 }
  */
 /* matrix state(1:on, 0:off) */
 static matrix_row_t matrix[MATRIX_ROWS];
@@ -34,6 +37,18 @@ void matrix_init(void)
     palSetPadMode(GPIOD, 6,  PAL_MODE_INPUT_PULLDOWN);
     palSetPadMode(GPIOD, 7,  PAL_MODE_INPUT_PULLDOWN);
 
+#ifdef INFINITY_LED
+    /* Row(strobe) */
+    palSetPadMode(GPIOC, 0,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 1,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 2,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 3,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 4,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 5,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 6,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 7,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOD, 0,  PAL_MODE_OUTPUT_PUSHPULL);
+#else
     /* Row(strobe) */
     palSetPadMode(GPIOB, 0,  PAL_MODE_OUTPUT_PUSHPULL);
     palSetPadMode(GPIOB, 1,  PAL_MODE_OUTPUT_PUSHPULL);
@@ -44,7 +59,7 @@ void matrix_init(void)
     palSetPadMode(GPIOC, 4,  PAL_MODE_OUTPUT_PUSHPULL);
     palSetPadMode(GPIOC, 5,  PAL_MODE_OUTPUT_PUSHPULL);
     palSetPadMode(GPIOD, 0,  PAL_MODE_OUTPUT_PUSHPULL);
-
+#endif
     memset(matrix, 0, MATRIX_ROWS);
     memset(matrix_debouncing, 0, MATRIX_ROWS);
 }
@@ -53,7 +68,20 @@ uint8_t matrix_scan(void)
 {
     for (int row = 0; row < MATRIX_ROWS; row++) {
         matrix_row_t data = 0;
-
+    #ifdef INFINITY_LED
+        // strobe row
+        switch (row) {
+            case 0: palSetPad(GPIOC, 0);    break;
+            case 1: palSetPad(GPIOC, 1);    break;
+            case 2: palSetPad(GPIOC, 2);    break;
+            case 3: palSetPad(GPIOC, 3);    break;
+            case 4: palSetPad(GPIOC, 4);    break;
+            case 5: palSetPad(GPIOC, 5);    break;
+            case 6: palSetPad(GPIOC, 6);    break;
+            case 7: palSetPad(GPIOC, 7);    break;
+            case 8: palSetPad(GPIOD, 0);    break;
+        }
+    #else
         // strobe row
         switch (row) {
             case 0: palSetPad(GPIOB, 0);    break;
@@ -66,12 +94,26 @@ uint8_t matrix_scan(void)
             case 7: palSetPad(GPIOC, 5);    break;
             case 8: palSetPad(GPIOD, 0);    break;
         }
+    #endif
 
         wait_us(1); // need wait to settle pin state
 
         // read col data
         data = (palReadPort(GPIOD)>>1);
-
+    #ifdef INFINITY_LED
+        // un-strobe row
+        switch (row) {
+            case 0: palClearPad(GPIOC, 0);    break;
+            case 1: palClearPad(GPIOC, 1);    break;
+            case 2: palClearPad(GPIOC, 2);    break;
+            case 3: palClearPad(GPIOC, 3);    break;
+            case 4: palClearPad(GPIOC, 4);    break;
+            case 5: palClearPad(GPIOC, 5);    break;
+            case 6: palClearPad(GPIOC, 6);    break;
+            case 7: palClearPad(GPIOC, 7);    break;
+            case 8: palClearPad(GPIOD, 0);    break;
+        }
+    #else
         // un-strobe row
         switch (row) {
             case 0: palClearPad(GPIOB, 0);    break;
@@ -84,6 +126,7 @@ uint8_t matrix_scan(void)
             case 7: palClearPad(GPIOC, 5);    break;
             case 8: palClearPad(GPIOD, 0);    break;
         }
+    #endif
 
         if (matrix_debouncing[row] != data) {
             matrix_debouncing[row] = data;