cortexelf-v1: Hook up hex keypad using matrix input driver
[fw/altos] / src / cortexelf-v1 / ao_pins.h
index 9721c56de6648aebf02fea22133846b951e0b60d..034c2d5afaf277fd8c9729a4359a1560e5912fff 100644 (file)
 
 /* Buttons */
 
-#define AO_EVENT       1
+#define AO_EVENT               1
 
 #define AO_BUTTON_COUNT                4
 #define AO_BUTTON_MODE         AO_EXTI_MODE_PULL_DOWN
+#define AO_BUTTON_INVERTED     0
 
 /* INPUT */
 #define AO_BUTTON_0_PORT       (&stm_gpioc)
 
 /* Set the hex digits up for decode, leave the extra leds alone */
 
-#define AO_AS1107_DECODE       ((1 << 7) | \
-                                (1 << 6) | \
-                                (1 << 4) | \
-                                (1 << 3) | \
-                                (1 << 1) | \
+#define AO_AS1107_DECODE       ((1 << 7) |     \
+                                (1 << 6) |     \
+                                (1 << 4) |     \
+                                (1 << 3) |     \
+                                (1 << 1) |     \
                                 (1 << 0))
 
 #define AO_AS1107_SPI_INDEX    AO_SPI_2_PD1_PD3_PD4
 #define AO_AS1107_CS_PORT      (&stm_gpiod)
 #define AO_AS1107_CS_PIN       0
 
+/* Hex keypad */
+
+#define AO_MATRIX_ROWS 4
+#define AO_MATRIX_COLS 4
+
+#define AO_MATRIX_KEYCODES {                   \
+               { 0x0, 0x1, 0x2, 0x3 },         \
+               { 0x4, 0x5, 0x6, 0x7 },         \
+               { 0x8, 0x9, 0xa, 0xb },         \
+               { 0xc, 0xd, 0xe, 0xf }          \
+       }
+
+#include <ao_matrix.h>
+
+#define AO_TIMER_HOOK  ao_matrix_poll()
+
+#define AO_MATRIX_ROW_0_PORT   (&stm_gpioc)
+#define AO_MATRIX_ROW_0_PIN    4
+
+#define AO_MATRIX_ROW_1_PORT   (&stm_gpioc)
+#define AO_MATRIX_ROW_1_PIN    1
+
+#define AO_MATRIX_ROW_2_PORT   (&stm_gpioc)
+#define AO_MATRIX_ROW_2_PIN    7
+
+#define AO_MATRIX_ROW_3_PORT   (&stm_gpioc)
+#define AO_MATRIX_ROW_3_PIN    0
+
+#define AO_MATRIX_COL_0_PORT   (&stm_gpioc)
+#define AO_MATRIX_COL_0_PIN    2
+
+#define AO_MATRIX_COL_1_PORT   (&stm_gpioc)
+#define AO_MATRIX_COL_1_PIN    3
+
+#define AO_MATRIX_COL_2_PORT   (&stm_gpioc)
+#define AO_MATRIX_COL_2_PIN    5
+
+#define AO_MATRIX_COL_3_PORT   (&stm_gpioc)
+#define AO_MATRIX_COL_3_PIN    6
+
 #endif /* _AO_PINS_H_ */