summaryrefslogtreecommitdiff
path: root/Kernel/Arch/aarch64/RPi/Timer.h
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/Arch/aarch64/RPi/Timer.h')
-rw-r--r--Kernel/Arch/aarch64/RPi/Timer.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/Kernel/Arch/aarch64/RPi/Timer.h b/Kernel/Arch/aarch64/RPi/Timer.h
new file mode 100644
index 0000000000..27762930bf
--- /dev/null
+++ b/Kernel/Arch/aarch64/RPi/Timer.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2021, Nico Weber <thakis@chromium.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/Types.h>
+
+namespace Prekernel {
+
+struct TimerRegisters;
+
+class Timer {
+public:
+ static Timer& the();
+
+ u64 microseconds_since_boot();
+
+ enum class ClockID {
+ Reserved = 0,
+ EMMC = 1,
+ UART = 2,
+ ARM = 3,
+ CORE = 4,
+ V3D = 5,
+ H264 = 6,
+ ISP = 7,
+ SDRAM = 8,
+ PIXEL = 9,
+ PWM = 10,
+ HEVC = 11,
+ EMMC2 = 12,
+ M2MC = 13,
+ PIXEL_BVB = 14,
+ };
+ u32 set_clock_rate(ClockID, u32 rate_hz, bool skip_setting_turbo = true);
+
+private:
+ Timer();
+
+ TimerRegisters volatile* m_registers;
+};
+
+}