summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-04-02 19:32:17 -0700
committerKeith Packard <keithp@keithp.com>2017-04-02 19:32:17 -0700
commit8c1478b55f5dbe9711b31a34d4f5e3563f1f42d2 (patch)
tree6dd9d2a56a267cff7d8903130402613bf66d5182 /src
parent79215de60d3e11b4abd1ecd2fa9575a323b76754 (diff)
cortexelf-v1: Hook up hex keypad using matrix input driver
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r--src/cortexelf-v1/Makefile1
-rw-r--r--src/cortexelf-v1/ao_pins.h53
2 files changed, 48 insertions, 6 deletions
diff --git a/src/cortexelf-v1/Makefile b/src/cortexelf-v1/Makefile
index 65f16c2c..b491c2e4 100644
--- a/src/cortexelf-v1/Makefile
+++ b/src/cortexelf-v1/Makefile
@@ -57,6 +57,7 @@ ALTOS_SRC = \
ao_exti_stm.c \
ao_i2c_stm.c \
ao_as1107.c \
+ ao_matrix.c \
ao_vga.c \
ao_blt.c \
ao_copy.c \
diff --git a/src/cortexelf-v1/ao_pins.h b/src/cortexelf-v1/ao_pins.h
index 9721c56d..034c2d5a 100644
--- a/src/cortexelf-v1/ao_pins.h
+++ b/src/cortexelf-v1/ao_pins.h
@@ -127,10 +127,11 @@
/* 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)
@@ -153,11 +154,11 @@
/* 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
@@ -165,4 +166,44 @@
#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_ */