| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| |
| #ifndef _F_LIB_RV_TIMER_H__ |
| #define _F_LIB_RV_TIMER_H__ |
| |
| #include <stdbool.h> |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| /** |
| * Set hart timer prescaler |
| * |
| * Program hart timer prescaler to produce 1us ticks |
| * |
| * @param hart hart selection |
| */ |
| void rv_timer_set_us_tick(uint32_t hart); |
| |
| /** |
| * Set hart timer compare value |
| * |
| * Program hart timer compare value. When this value is met, an interrupt will |
| * be triggered. |
| * |
| * @param hart hart selection |
| */ |
| void rv_timer_set_cmp(uint32_t hart, uint64_t cmp); |
| |
| /** |
| * Enable hart timer to begin counting |
| * |
| * @param hart hart selection |
| * @param en 1 enables timer, 0 disables timer |
| */ |
| void rv_timer_ctrl(uint32_t hart, bool en); |
| |
| /** |
| * Set hart timer interrupt enable |
| * |
| * @param hart hart selection |
| * @param en 1 enables interrupt, 0 disables interrupt |
| */ |
| void rv_timer_intr_enable(uint32_t hart, bool en); |
| |
| /** |
| * Clear all active interrupts |
| * Interrupt state clearing is W1C (write-one-clear) |
| */ |
| void rv_timer_clr_all_intrs(void); |
| |
| #endif // _F_LIB_RV_TIMER_H__ |