blob: cf8c878fd279627baa9ec1b5bc1e0c3e19c3f292 [file] [log] [blame]
/*
* 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;
}