From 8c1478b55f5dbe9711b31a34d4f5e3563f1f42d2 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 2 Apr 2017 19:32:17 -0700 Subject: [PATCH] cortexelf-v1: Hook up hex keypad using matrix input driver Signed-off-by: Keith Packard --- src/cortexelf-v1/Makefile | 1 + src/cortexelf-v1/ao_pins.h | 53 +++++++++++++++++++++++++++++++++----- 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 + +#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_ */ -- 2.30.2