+/* 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
+
+/* 1802 connections */
+#define MRD_PORT (&stm_gpiob)
+#define MRD_BIT 15
+
+#define MWR_PORT (&stm_gpioa)
+#define MWR_BIT 3
+
+#define TPB_PORT (&stm_gpioa)
+#define TPB_BIT 7
+
+#define TPA_PORT (&stm_gpioa)
+#define TPA_BIT 6
+
+#define MA_PORT (&stm_gpioe)
+#define MA_SHIFT 0
+#define MA_MASK 0xff
+
+#define BUS_PORT (&stm_gpioe)
+#define BUS_SHIFT 8
+#define BUS_MASK 0xff
+
+#define SC_PORT (&stm_gpiob)
+#define SC_SHIFT 13
+#define SC_MASK 3
+
+#define Q_PORT (&stm_gpiob)
+#define Q_BIT 12
+
+#define N_PORT (&stm_gpiod)
+#define N_SHIFT 13
+#define N_MASK 7
+
+#define EF_PORT (&stm_gpiob)
+#define EF_SHIFT 8
+#define EF_MASK 0xf
+
+#define DMA_IN_PORT (&stm_gpioa)
+#define DMA_IN_BIT 0
+
+#define DMA_OUT_PORT (&stm_gpioa)
+#define DMA_OUT_BIT 9
+
+#define INT_PORT (&stm_gpioa)
+#define INT_BIT 2
+
+#define CLEAR_PORT (&stm_gpioa)
+#define CLEAR_BIT 10
+
+#define WAIT_PORT (&stm_gpioa)
+#define WAIT_BIT 4
+
+#define MUX_PORT (&stm_gpiob)
+#define MUX_BIT 1
+