diff --git a/src/board/system76/common/kbscan.c b/src/board/system76/common/kbscan.c
index 4d3b650e4..272289c1f 100644
--- a/src/board/system76/common/kbscan.c
+++ b/src/board/system76/common/kbscan.c
@@ -23,9 +23,6 @@
 // Debounce time in milliseconds
 #define DEBOUNCE_DELAY 10
 
-// Deselect all columns for reading
-#define KBSCAN_MATRIX_NONE 0xFF
-
 bool kbscan_fn_held = false;
 bool kbscan_esc_held = false;
 
@@ -45,6 +42,27 @@ static inline bool matrix_position_is_fn(uint8_t row, uint8_t col) {
     return (row == MATRIX_FN_OUTPUT) && (col == MATRIX_FN_INPUT);
 }
 
+// Assert the specified column for reading the row.
+static void kbscan_set_column(uint8_t col) {
+    // Assert the specific bit corresponding to the column.
+    uint32_t colbit = ~BIT(col);
+    KSOL = colbit & 0xFF;
+    KSOH1 = (colbit >> 8) & 0xFF;
+    KSOH2 = (colbit >> 16) & 0x03;
+
+    // Wait for matrix to stabilize
+    delay_ticks(20);
+}
+
+// Disable reading from all columns.
+static void kbscan_disable_reading(void) {
+    KSOL = 0xFF;
+    KSOH1 = 0xFF;
+    KSOH2 = 0x3;
+
+    // No need to wait for matrix to stabilize as a read won't happen.
+}
+
 // Initialize the Keyboard Matrix Scan Controller in KBS (Normal) mode for
 // reading keyboard input.
 void kbscan_init(void) {
@@ -53,10 +71,8 @@ void kbscan_init(void) {
     KSOCTRL = BIT(2) | BIT(0);
     KSOHGCTRL = 0;
     KSOLGCTRL = 0;
-    // XXX: Still set outputs low?
-    KSOL = 0;
-    KSOH1 = 0;
-    KSOH2 = 0;
+
+    kbscan_disable_reading();
 
     // KSI[7:0]: Enable pull-up, set to KBS mode
     KSICTRLR = BIT(2);
@@ -74,25 +90,6 @@ static inline uint8_t kbscan_get_row(void) {
     return ~KSI;
 }
 
-// Assert the specified column for reading the row.
-static void kbscan_set_column(uint8_t col) {
-    if (col == KBSCAN_MATRIX_NONE) {
-        // Disable reading from all columns
-        KSOL = 0xFF;
-        KSOH1 = 0xFF;
-        KSOH2 = 0x3;
-    } else {
-        // Assert the specific bit corresponding to the column
-        uint32_t colbit = ~BIT(col);
-        KSOL = colbit & 0xFF;
-        KSOH1 = (colbit >> 8) & 0xFF;
-        KSOH2 = (colbit >> 16) & 0x03;
-    }
-
-    // Wait for matrix to stabilize
-    delay_ticks(20);
-}
-
 #if KM_NKEY
 static bool kbscan_row_has_ghost(uint8_t *matrix, uint8_t col) {
     (void)matrix;
@@ -314,8 +311,7 @@ void kbscan_event(void) {
         kbscan_set_column(i);
         matrix_curr[i] = kbscan_get_row();
     }
-    // Disable reading any keys
-    kbscan_set_column(KBSCAN_MATRIX_NONE);
+    kbscan_disable_reading();
 
     for (uint8_t i = 0; i < KM_OUT; i++) {
         uint8_t new = matrix_curr[i];