~ruther/qmk_firmware

b609a07b45ccb1954054f85b8fdd53e03c76de90 — Joel Challis 4 years ago 2574bc2
Implement matrix_io_delay abstraction for Drop boards (#11472)

2 files changed, 14 insertions(+), 2 deletions(-)

M keyboards/massdrop/alt/matrix.c
M keyboards/massdrop/ctrl/matrix.c
M keyboards/massdrop/alt/matrix.c => keyboards/massdrop/alt/matrix.c +7 -1
@@ 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

M keyboards/massdrop/ctrl/matrix.c => keyboards/massdrop/ctrl/matrix.c +7 -1
@@ 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