From b609a07b45ccb1954054f85b8fdd53e03c76de90 Mon Sep 17 00:00:00 2001
From: Joel Challis <git@zvecr.com>
Date: Fri, 8 Jan 2021 02:26:39 +0000
Subject: [PATCH] Implement matrix_io_delay abstraction for Drop boards
 (#11472)

---
 keyboards/massdrop/alt/matrix.c  | 8 +++++++-
 keyboards/massdrop/ctrl/matrix.c | 8 +++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/keyboards/massdrop/alt/matrix.c b/keyboards/massdrop/alt/matrix.c
index 3141155712..f635f37f23 100644
--- a/keyboards/massdrop/alt/matrix.c
+++ b/keyboards/massdrop/alt/matrix.c
@@ -22,6 +22,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "clks.h"
 #include <string.h>
 
+#ifndef MATRIX_IO_DELAY
+#    define MATRIX_IO_DELAY 1
+#endif
+
 matrix_row_t mlatest[MATRIX_ROWS];
 matrix_row_t mlast[MATRIX_ROWS];
 matrix_row_t mdebounced[MATRIX_ROWS];
@@ -32,6 +36,8 @@ uint8_t col_ports[] = { MATRIX_COL_PORTS };
 uint8_t col_pins[] = { MATRIX_COL_PINS };
 uint32_t row_masks[2]; //NOTE: If more than PA PB used in the future, adjust code to accomodate
 
+__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); }
+
 __attribute__ ((weak))
 void matrix_init_kb(void) {
     matrix_init_user();
@@ -95,7 +101,7 @@ uint8_t matrix_scan(void)
     {
         PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output
 
-        wait_us(1); //Delay for output
+        matrix_io_delay(); //Delay for output
 
         scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data
         scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data
diff --git a/keyboards/massdrop/ctrl/matrix.c b/keyboards/massdrop/ctrl/matrix.c
index f3529fe72a..713fb89f64 100644
--- a/keyboards/massdrop/ctrl/matrix.c
+++ b/keyboards/massdrop/ctrl/matrix.c
@@ -22,6 +22,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "clks.h"
 #include <string.h>
 
+#ifndef MATRIX_IO_DELAY
+#    define MATRIX_IO_DELAY 1
+#endif
+
 matrix_row_t mlatest[MATRIX_ROWS];
 matrix_row_t mlast[MATRIX_ROWS];
 matrix_row_t mdebounced[MATRIX_ROWS];
@@ -32,6 +36,8 @@ uint8_t col_ports[] = { MATRIX_COL_PORTS };
 uint8_t col_pins[] = { MATRIX_COL_PINS };
 uint32_t row_masks[2]; //NOTE: If more than PA PB used in the future, adjust code to accomodate
 
+__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); }
+
 __attribute__ ((weak))
 void matrix_init_kb(void) {
     matrix_init_user();
@@ -95,7 +101,7 @@ uint8_t matrix_scan(void)
     {
         PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output
 
-        wait_us(1); //Delay for output
+        matrix_io_delay(); //Delay for output
 
         scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data
         scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data