| /* | |
| * Copyright 2017, Data61, CSIRO (ABN 41 687 119 230) | |
| * | |
| * SPDX-License-Identifier: BSD-2-Clause | |
| */ | |
| #pragma once | |
| #include <stdint.h> | |
| #include <utils/time.h> | |
| #define KHZ (1000) | |
| #define MHZ (1000 * KHZ) | |
| #define GHZ (1000 * MHZ) | |
| typedef uint64_t freq_t; | |
| static inline uint64_t freq_cycles_and_hz_to_ns(uint64_t ncycles, freq_t hz) | |
| { | |
| if (hz % GHZ == 0) { | |
| return ncycles / (hz / GHZ); | |
| } else if (hz % MHZ == 0) { | |
| return ncycles * MS_IN_S / (hz / MHZ); | |
| } else if (hz % KHZ == 0) { | |
| return ncycles * US_IN_S / (hz / KHZ); | |
| } | |
| return (ncycles * NS_IN_S) / hz; | |
| } | |
| static inline freq_t freq_cycles_and_ns_to_hz(uint64_t ncycles, uint64_t ns) | |
| { | |
| return (ncycles * NS_IN_S) / ns; | |
| } | |
| static inline uint64_t freq_ns_and_hz_to_cycles(uint64_t ns, freq_t hz) | |
| { | |
| return (ns * hz) / NS_IN_S; | |
| } |