/* SPDX-License-Identifier: GPL-2.0-only */

#ifndef __TIMESTAMP_H__
#define __TIMESTAMP_H__

#include <commonlib/timestamp_serialized.h>
#include <stdint.h>

#if CONFIG(COLLECT_TIMESTAMPS)
/*
 * timestamp_init() needs to be called once in *one* of the ENV_ROMSTAGE_OR_BEFORE
 * stages (bootblock, romstage, verstage, etc). It's up to the chipset/arch
 * to make the call in the earliest stage, otherwise some timestamps will be lost.
 * For x86 ENV_ROMSTAGE call must be made before CAR is torn down.
 */
void timestamp_init(uint64_t base);
/*
 * Add a new timestamp. For ENV_ROMSTAGE_OR_BEFORE, this timestamp will be stored
 * inside REGION(timestamp) before cbmem comes online. For later stages, timestamps
 * added before cbmem_[recovery|initialize] calls will be lost.
 */
void timestamp_add(enum timestamp_id id, uint64_t ts_time);
/* Calls timestamp_add with current timestamp. */
void timestamp_add_now(enum timestamp_id id);

/* Apply a factor of N/M to all timestamps recorded so far. */
void timestamp_rescale_table(uint16_t N, uint16_t M);

/*
 * Get the time since boot scaled in microseconds. Therefore use the base time
 * of the timestamps to get the initial value which is subtracted from
 * current timestamp at call time. This will provide a more reliable value even
 * if the TSC is not reset on soft reset or warm start.
 */
uint32_t get_us_since_boot(void);

#else
#define timestamp_init(base)
#define timestamp_add(id, time)
#define timestamp_add_now(id)
#define timestamp_rescale_table(N, M)
#define get_us_since_boot() 0
#endif

/**
 * Workaround for guard combination above.
 */
#if CONFIG(COLLECT_TIMESTAMPS)
/* Implemented by the architecture code */
uint64_t timestamp_get(void);
#else
#define timestamp_get() 0
#endif

uint64_t get_initial_timestamp(void);
/* Returns timestamp tick frequency in MHz. */
int timestamp_tick_freq_mhz(void);

#endif
