mirror of https://github.com/F-Stack/f-stack.git
44 lines
1.2 KiB
C
44 lines
1.2 KiB
C
|
/* SPDX-License-Identifier: BSD-3-Clause
|
||
|
* Copyright(C) 2021 Marvell.
|
||
|
*/
|
||
|
|
||
|
#ifndef _ROC_TIM_H_
|
||
|
#define _ROC_TIM_H_
|
||
|
|
||
|
enum roc_tim_clk_src {
|
||
|
ROC_TIM_CLK_SRC_10NS = 0,
|
||
|
ROC_TIM_CLK_SRC_GPIO,
|
||
|
ROC_TIM_CLK_SRC_GTI,
|
||
|
ROC_TIM_CLK_SRC_PTP,
|
||
|
ROC_TIM_CLK_SRC_INVALID,
|
||
|
};
|
||
|
|
||
|
struct roc_tim {
|
||
|
struct roc_sso *roc_sso;
|
||
|
/* Public data. */
|
||
|
uint16_t nb_lfs;
|
||
|
/* Private data. */
|
||
|
#define TIM_MEM_SZ (1 * 1024)
|
||
|
uint8_t reserved[TIM_MEM_SZ] __plt_cache_aligned;
|
||
|
} __plt_cache_aligned;
|
||
|
|
||
|
int __roc_api roc_tim_init(struct roc_tim *roc_tim);
|
||
|
void __roc_api roc_tim_fini(struct roc_tim *roc_tim);
|
||
|
|
||
|
/* TIM config */
|
||
|
int __roc_api roc_tim_lf_enable(struct roc_tim *roc_tim, uint8_t ring_id,
|
||
|
uint64_t *start_tsc, uint32_t *cur_bkt);
|
||
|
int __roc_api roc_tim_lf_disable(struct roc_tim *roc_tim, uint8_t ring_id);
|
||
|
int __roc_api roc_tim_lf_config(struct roc_tim *roc_tim, uint8_t ring_id,
|
||
|
enum roc_tim_clk_src clk_src,
|
||
|
uint8_t ena_periodic, uint8_t ena_dfb,
|
||
|
uint32_t bucket_sz, uint32_t chunk_sz,
|
||
|
uint32_t interval);
|
||
|
int __roc_api roc_tim_lf_alloc(struct roc_tim *roc_tim, uint8_t ring_id,
|
||
|
uint64_t *clk);
|
||
|
int __roc_api roc_tim_lf_free(struct roc_tim *roc_tim, uint8_t ring_id);
|
||
|
uintptr_t __roc_api roc_tim_lf_base_get(struct roc_tim *roc_tim,
|
||
|
uint8_t ring_id);
|
||
|
|
||
|
#endif
|