From cedd49c59b5a822b6879485cdd412c7d803ae14a Mon Sep 17 00:00:00 2001
From: Joel Challis <git@zvecr.com>
Date: Sun, 19 Jan 2025 17:07:11 +0000
Subject: [PATCH] Consolidate timer_elapsed implementations (#24830)

---
 platforms/avr/timer.c               | 28 ----------------------------
 platforms/chibios/timer.c           |  8 --------
 platforms/test/timer.c              |  8 --------
 platforms/timer.c                   |  8 ++++++++
 quantum/debounce/tests/rules.mk     |  1 +
 quantum/os_detection/tests/rules.mk |  1 +
 quantum/sequencer/tests/rules.mk    |  1 +
 7 files changed, 11 insertions(+), 44 deletions(-)

diff --git a/platforms/avr/timer.c b/platforms/avr/timer.c
index 26ba0e29fa..b2230ad84b 100644
--- a/platforms/avr/timer.c
+++ b/platforms/avr/timer.c
@@ -125,34 +125,6 @@ inline uint32_t timer_read32(void) {
     return t;
 }
 
-/** \brief timer elapsed
- *
- * FIXME: needs doc
- */
-inline uint16_t timer_elapsed(uint16_t last) {
-    uint32_t t;
-
-    ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
-        t = timer_count;
-    }
-
-    return TIMER_DIFF_16((t & 0xFFFF), last);
-}
-
-/** \brief timer elapsed32
- *
- * FIXME: needs doc
- */
-inline uint32_t timer_elapsed32(uint32_t last) {
-    uint32_t t;
-
-    ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
-        t = timer_count;
-    }
-
-    return TIMER_DIFF_32(t, last);
-}
-
 // excecuted once per 1ms.(excess for just timer count?)
 #ifndef __AVR_ATmega32A__
 #    define TIMER_INTERRUPT_VECTOR TIMER0_COMPA_vect
diff --git a/platforms/chibios/timer.c b/platforms/chibios/timer.c
index a07cf5714f..9f7eade83f 100644
--- a/platforms/chibios/timer.c
+++ b/platforms/chibios/timer.c
@@ -118,11 +118,3 @@ uint32_t timer_read32(void) {
 
     return (uint32_t)TIME_I2MS(ticks) + ms_offset_copy;
 }
-
-uint16_t timer_elapsed(uint16_t last) {
-    return TIMER_DIFF_16(timer_read(), last);
-}
-
-uint32_t timer_elapsed32(uint32_t last) {
-    return TIMER_DIFF_32(timer_read32(), last);
-}
diff --git a/platforms/test/timer.c b/platforms/test/timer.c
index eb929d7dac..f5ee07fd57 100644
--- a/platforms/test/timer.c
+++ b/platforms/test/timer.c
@@ -60,14 +60,6 @@ uint32_t timer_read32(void) {
     return current_time;
 }
 
-uint16_t timer_elapsed(uint16_t last) {
-    return TIMER_DIFF_16(timer_read(), last);
-}
-
-uint32_t timer_elapsed32(uint32_t last) {
-    return TIMER_DIFF_32(timer_read32(), last);
-}
-
 void set_time(uint32_t t) {
     current_time   = t;
     access_counter = 0;
diff --git a/platforms/timer.c b/platforms/timer.c
index 26038dcda3..ba2cf94d2b 100644
--- a/platforms/timer.c
+++ b/platforms/timer.c
@@ -6,3 +6,11 @@
 // Generate out-of-line copies for inline functions defined in timer.h.
 extern inline fast_timer_t timer_read_fast(void);
 extern inline fast_timer_t timer_elapsed_fast(fast_timer_t last);
+
+uint16_t timer_elapsed(uint16_t last) {
+    return TIMER_DIFF_16(timer_read(), last);
+}
+
+uint32_t timer_elapsed32(uint32_t last) {
+    return TIMER_DIFF_32(timer_read32(), last);
+}
diff --git a/quantum/debounce/tests/rules.mk b/quantum/debounce/tests/rules.mk
index bbc362d4c7..d38b1cd342 100644
--- a/quantum/debounce/tests/rules.mk
+++ b/quantum/debounce/tests/rules.mk
@@ -16,6 +16,7 @@
 DEBOUNCE_COMMON_DEFS := -DMATRIX_ROWS=4 -DMATRIX_COLS=10 -DDEBOUNCE=5
 
 DEBOUNCE_COMMON_SRC := $(QUANTUM_PATH)/debounce/tests/debounce_test_common.cpp \
+	$(PLATFORM_PATH)/timer.c \
 	$(PLATFORM_PATH)/$(PLATFORM_KEY)/timer.c
 
 debounce_none_DEFS := $(DEBOUNCE_COMMON_DEFS)
diff --git a/quantum/os_detection/tests/rules.mk b/quantum/os_detection/tests/rules.mk
index 1b69b71ba9..2f31f5e391 100644
--- a/quantum/os_detection/tests/rules.mk
+++ b/quantum/os_detection/tests/rules.mk
@@ -4,4 +4,5 @@ os_detection_DEFS += -DOS_DETECTION_DEBOUNCE=50
 os_detection_SRC := \
     $(QUANTUM_PATH)/os_detection/tests/os_detection.cpp \
     $(QUANTUM_PATH)/os_detection.c \
+    $(PLATFORM_PATH)/timer.c \
     $(PLATFORM_PATH)/$(PLATFORM_KEY)/timer.c
diff --git a/quantum/sequencer/tests/rules.mk b/quantum/sequencer/tests/rules.mk
index 611459e060..74b680ae31 100644
--- a/quantum/sequencer/tests/rules.mk
+++ b/quantum/sequencer/tests/rules.mk
@@ -8,4 +8,5 @@ sequencer_SRC := \
 	$(QUANTUM_PATH)/sequencer/tests/midi_mock.c \
 	$(QUANTUM_PATH)/sequencer/tests/sequencer_tests.cpp \
 	$(QUANTUM_PATH)/sequencer/sequencer.c \
+	$(PLATFORM_PATH)/timer.c \
 	$(PLATFORM_PATH)/$(PLATFORM_KEY)/timer.c