summaryrefslogtreecommitdiff
path: root/ports/risc-v64/gnu/example_build/erbium/hwtimer.h
diff options
context:
space:
mode:
Diffstat (limited to 'ports/risc-v64/gnu/example_build/erbium/hwtimer.h')
-rw-r--r--ports/risc-v64/gnu/example_build/erbium/hwtimer.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/ports/risc-v64/gnu/example_build/erbium/hwtimer.h b/ports/risc-v64/gnu/example_build/erbium/hwtimer.h
new file mode 100644
index 00000000..3b9bf4e3
--- /dev/null
+++ b/ports/risc-v64/gnu/example_build/erbium/hwtimer.h
@@ -0,0 +1,41 @@
+/***************************************************************************
+ * Copyright (c) 2026 Eclipse ThreadX contributors
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the MIT License which is available at
+ * https://opensource.org/licenses/MIT.
+ *
+ * AI Disclosure: This file was largely AI-generated by Claude Code (Opus 5.5).
+ * The AI-generated portions may be considered public domain (CC0-1.0)
+ * and not subject to the project's licence. The human contributor has
+ * reviewed and verified that the code is correct.
+ *
+ * SPDX-License-Identifier: MIT and CC0-1.0
+ **************************************************************************/
+
+#ifndef RISCV_HWTIMER_H
+#define RISCV_HWTIMER_H
+
+#include <stdint.h>
+
+/* Erbium machine timer. mtime and a single mtimecmp live in the CPU
+ register block; mtime_local_target selects which harts see the timer
+ interrupt and resets to all harts.
+
+ The mtime rate depends on the reference clock and time_config, which the
+ boot firmware programs. The default is the 2 MHz timebase used by the
+ Zephyr and NuttX Erbium ports; define ERBIUM_MTIME_FREQ_HZ when the
+ firmware selects another rate. */
+#define ERBIUM_MTIME 0x80F40200UL
+#define ERBIUM_MTIMECMP 0x80F40208UL
+
+#ifndef ERBIUM_MTIME_FREQ_HZ
+#define ERBIUM_MTIME_FREQ_HZ 2000000UL
+#endif
+
+#define TICKNUM_PER_TIMER (ERBIUM_MTIME_FREQ_HZ / TX_TIMER_TICKS_PER_SECOND)
+
+int hwtimer_init(void);
+int hwtimer_handler(void);
+
+#endif /* RISCV_HWTIMER_H */