xref: /dpdk/drivers/baseband/acc/rte_acc_common_cfg.h (revision c1407bfa053f39bc88e22d87b37fbd1f7ea8daf8)
1dcf43d24SNicolas Chautru /* SPDX-License-Identifier: BSD-3-Clause
2dcf43d24SNicolas Chautru  * Copyright(c) 2022 Intel Corporation
3dcf43d24SNicolas Chautru  */
4dcf43d24SNicolas Chautru 
5dcf43d24SNicolas Chautru #ifndef _RTE_ACC_COMMON_CFG_H_
6dcf43d24SNicolas Chautru #define _RTE_ACC_COMMON_CFG_H_
7dcf43d24SNicolas Chautru 
8dcf43d24SNicolas Chautru /**
9*c1407bfaSNicolas Chautru  * @file rte_acc_common_cfg.h
10dcf43d24SNicolas Chautru  *
11*c1407bfaSNicolas Chautru  * Functions for configuring ACC HW, exposed directly to applications.
12dcf43d24SNicolas Chautru  * Configuration related to encoding/decoding is done through the
13dcf43d24SNicolas Chautru  * librte_bbdev library.
14dcf43d24SNicolas Chautru  *
15dcf43d24SNicolas Chautru  * @warning
16dcf43d24SNicolas Chautru  * @b EXPERIMENTAL: this API may change without prior notice
17dcf43d24SNicolas Chautru  */
18dcf43d24SNicolas Chautru 
19dcf43d24SNicolas Chautru #include <stdint.h>
20dcf43d24SNicolas Chautru #include <stdbool.h>
21dcf43d24SNicolas Chautru 
22dcf43d24SNicolas Chautru #ifdef __cplusplus
23dcf43d24SNicolas Chautru extern "C" {
24dcf43d24SNicolas Chautru #endif
25dcf43d24SNicolas Chautru 
26*c1407bfaSNicolas Chautru /**< Maximum number of Virtual Functions ACC may support */
27dcf43d24SNicolas Chautru #define RTE_ACC_NUM_VFS 64
28dcf43d24SNicolas Chautru 
29dcf43d24SNicolas Chautru /**
30*c1407bfaSNicolas Chautru  * Definition of Queue Topology for ACC Configuration
31dcf43d24SNicolas Chautru  * Some level of details is abstracted out to expose a clean interface
32dcf43d24SNicolas Chautru  * given that comprehensive flexibility is not required
33dcf43d24SNicolas Chautru  */
34dcf43d24SNicolas Chautru struct rte_acc_queue_topology {
35dcf43d24SNicolas Chautru 	/** Number of QGroups in incremental order of priority */
36dcf43d24SNicolas Chautru 	uint16_t num_qgroups;
37dcf43d24SNicolas Chautru 	/**
38dcf43d24SNicolas Chautru 	 * All QGroups have the same number of AQs here.
39dcf43d24SNicolas Chautru 	 * Note : Could be made a 16-array if more flexibility is really
40dcf43d24SNicolas Chautru 	 * required
41dcf43d24SNicolas Chautru 	 */
42dcf43d24SNicolas Chautru 	uint16_t num_aqs_per_groups;
43dcf43d24SNicolas Chautru 	/**
44dcf43d24SNicolas Chautru 	 * Depth of the AQs is the same of all QGroups here. Log2 Enum : 2^N
45dcf43d24SNicolas Chautru 	 * Note : Could be made a 16-array if more flexibility is really
46dcf43d24SNicolas Chautru 	 * required
47dcf43d24SNicolas Chautru 	 */
48dcf43d24SNicolas Chautru 	uint16_t aq_depth_log2;
49dcf43d24SNicolas Chautru 	/**
50dcf43d24SNicolas Chautru 	 * Index of the first Queue Group Index - assuming contiguity
51dcf43d24SNicolas Chautru 	 * Initialized as -1
52dcf43d24SNicolas Chautru 	 */
53dcf43d24SNicolas Chautru 	int8_t first_qgroup_index;
54dcf43d24SNicolas Chautru };
55dcf43d24SNicolas Chautru 
56dcf43d24SNicolas Chautru /**
57*c1407bfaSNicolas Chautru  * Definition of Arbitration related parameters for ACC Configuration
58dcf43d24SNicolas Chautru  */
59dcf43d24SNicolas Chautru struct rte_acc_arbitration {
60dcf43d24SNicolas Chautru 	/** Default Weight for VF Fairness Arbitration */
61dcf43d24SNicolas Chautru 	uint16_t round_robin_weight;
62dcf43d24SNicolas Chautru 	uint32_t gbr_threshold1; /**< Guaranteed Bitrate Threshold 1 */
63dcf43d24SNicolas Chautru 	uint32_t gbr_threshold2; /**< Guaranteed Bitrate Threshold 2 */
64dcf43d24SNicolas Chautru };
65dcf43d24SNicolas Chautru 
66dcf43d24SNicolas Chautru /**
67*c1407bfaSNicolas Chautru  * Structure to pass ACC configuration.
68dcf43d24SNicolas Chautru  * Note: all VF Bundles will have the same configuration.
69dcf43d24SNicolas Chautru  */
70dcf43d24SNicolas Chautru struct rte_acc_conf {
71dcf43d24SNicolas Chautru 	bool pf_mode_en; /**< 1 if PF is used for dataplane, 0 for VFs */
72dcf43d24SNicolas Chautru 	/** 1 if input '1' bit is represented by a positive LLR value, 0 if '1'
73dcf43d24SNicolas Chautru 	 * bit is represented by a negative value.
74dcf43d24SNicolas Chautru 	 */
75dcf43d24SNicolas Chautru 	bool input_pos_llr_1_bit;
76dcf43d24SNicolas Chautru 	/** 1 if output '1' bit is represented by a positive value, 0 if '1'
77dcf43d24SNicolas Chautru 	 * bit is represented by a negative value.
78dcf43d24SNicolas Chautru 	 */
79dcf43d24SNicolas Chautru 	bool output_pos_llr_1_bit;
80dcf43d24SNicolas Chautru 	uint16_t num_vf_bundles; /**< Number of VF bundles to setup */
81dcf43d24SNicolas Chautru 	/** Queue topology for each operation type */
82dcf43d24SNicolas Chautru 	struct rte_acc_queue_topology q_ul_4g;
83dcf43d24SNicolas Chautru 	struct rte_acc_queue_topology q_dl_4g;
84dcf43d24SNicolas Chautru 	struct rte_acc_queue_topology q_ul_5g;
85dcf43d24SNicolas Chautru 	struct rte_acc_queue_topology q_dl_5g;
86dcf43d24SNicolas Chautru 	struct rte_acc_queue_topology q_fft;
87dcf43d24SNicolas Chautru 	struct rte_acc_queue_topology q_mld;
88dcf43d24SNicolas Chautru 	/** Arbitration configuration for each operation type */
89dcf43d24SNicolas Chautru 	struct rte_acc_arbitration arb_ul_4g[RTE_ACC_NUM_VFS];
90dcf43d24SNicolas Chautru 	struct rte_acc_arbitration arb_dl_4g[RTE_ACC_NUM_VFS];
91dcf43d24SNicolas Chautru 	struct rte_acc_arbitration arb_ul_5g[RTE_ACC_NUM_VFS];
92dcf43d24SNicolas Chautru 	struct rte_acc_arbitration arb_dl_5g[RTE_ACC_NUM_VFS];
93dcf43d24SNicolas Chautru 	struct rte_acc_arbitration arb_fft[RTE_ACC_NUM_VFS];
94dcf43d24SNicolas Chautru 	struct rte_acc_arbitration arb_mld[RTE_ACC_NUM_VFS];
95dcf43d24SNicolas Chautru };
96dcf43d24SNicolas Chautru 
97dcf43d24SNicolas Chautru #ifdef __cplusplus
98dcf43d24SNicolas Chautru }
99dcf43d24SNicolas Chautru #endif
100dcf43d24SNicolas Chautru 
101dcf43d24SNicolas Chautru #endif /* _RTE_ACC_COMMON_CFG_H_ */
102