/* 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_BOOTBLOCK / ENV_SEPARATE_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, int64_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
