From 5a627634ef532ef6f23fe7a821e833c4948334dc Mon Sep 17 00:00:00 2001
From: Fabrizio Monti <fabrizio.monti@skywarder.eu>
Date: Thu, 6 Feb 2025 21:21:37 +0100
Subject: [PATCH] [DMA] Now timeouts use std chrono.

---
 src/shared/drivers/dma/DMA.cpp | 9 +++++----
 src/shared/drivers/dma/DMA.h   | 5 +++--
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/shared/drivers/dma/DMA.cpp b/src/shared/drivers/dma/DMA.cpp
index 07679e4f9..fef96ad56 100644
--- a/src/shared/drivers/dma/DMA.cpp
+++ b/src/shared/drivers/dma/DMA.cpp
@@ -499,22 +499,23 @@ void DMAStream::waitForTransferComplete()
         transferCompleteFlag, -1);
 }
 
-bool DMAStream::timedWaitForHalfTransfer(uint64_t timeout_ns)
+bool DMAStream::timedWaitForHalfTransfer(std::chrono::nanoseconds timeout_ns)
 {
     return waitForInterruptEventImpl(
         currentSetup.enableHalfTransferInterrupt,
         std::bind(&DMAStream::getHalfTransferFlagStatus, this),
         std::bind(&DMAStream::clearHalfTransferFlag, this), halfTransferFlag,
-        timeout_ns);
+        timeout_ns.count());
 }
 
-bool DMAStream::timedWaitForTransferComplete(uint64_t timeout_ns)
+bool DMAStream::timedWaitForTransferComplete(
+    std::chrono::nanoseconds timeout_ns)
 {
     return waitForInterruptEventImpl(
         currentSetup.enableTransferCompleteInterrupt,
         std::bind(&DMAStream::getTransferCompleteFlagStatus, this),
         std::bind(&DMAStream::clearTransferCompleteFlag, this),
-        transferCompleteFlag, timeout_ns);
+        transferCompleteFlag, timeout_ns.count());
 }
 
 void DMAStream::setHalfTransferCallback(std::function<void()> callback)
diff --git a/src/shared/drivers/dma/DMA.h b/src/shared/drivers/dma/DMA.h
index 8fda416db..754e9ba8f 100644
--- a/src/shared/drivers/dma/DMA.h
+++ b/src/shared/drivers/dma/DMA.h
@@ -27,6 +27,7 @@
 #include <kernel/sync.h>
 #include <utils/TimedPollingFlag.h>
 
+#include <chrono>
 #include <functional>
 #include <map>
 
@@ -187,9 +188,9 @@ public:
 
     void waitForTransferComplete();
 
-    bool timedWaitForHalfTransfer(uint64_t timeout_ns);
+    bool timedWaitForHalfTransfer(std::chrono::nanoseconds timeout_ns);
 
-    bool timedWaitForTransferComplete(uint64_t timeout_ns);
+    bool timedWaitForTransferComplete(std::chrono::nanoseconds timeout_ns);
 
     void setHalfTransferCallback(std::function<void()> callback);
 
-- 
GitLab