xref: /dpdk/drivers/common/cnxk/roc_idev.c (revision 318ee1b0468299e92411ea8616073c477743b34e)
1665ff1ccSJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause
2665ff1ccSJerin Jacob  * Copyright(C) 2021 Marvell.
3665ff1ccSJerin Jacob  */
4665ff1ccSJerin Jacob 
5665ff1ccSJerin Jacob #include "roc_api.h"
6665ff1ccSJerin Jacob #include "roc_priv.h"
7665ff1ccSJerin Jacob 
8665ff1ccSJerin Jacob struct idev_cfg *
9665ff1ccSJerin Jacob idev_get_cfg(void)
10665ff1ccSJerin Jacob {
11665ff1ccSJerin Jacob 	static const char name[] = "roc_cn10k_intra_device_conf";
12665ff1ccSJerin Jacob 	const struct plt_memzone *mz;
13665ff1ccSJerin Jacob 	struct idev_cfg *idev;
14665ff1ccSJerin Jacob 
15665ff1ccSJerin Jacob 	mz = plt_memzone_lookup(name);
16665ff1ccSJerin Jacob 	if (mz != NULL)
17665ff1ccSJerin Jacob 		return mz->addr;
18665ff1ccSJerin Jacob 
19665ff1ccSJerin Jacob 	/* Request for the first time */
20665ff1ccSJerin Jacob 	mz = plt_memzone_reserve_cache_align(name, sizeof(struct idev_cfg));
21665ff1ccSJerin Jacob 	if (mz != NULL) {
22665ff1ccSJerin Jacob 		idev = mz->addr;
23665ff1ccSJerin Jacob 		idev_set_defaults(idev);
24665ff1ccSJerin Jacob 		return idev;
25665ff1ccSJerin Jacob 	}
26665ff1ccSJerin Jacob 	return NULL;
27665ff1ccSJerin Jacob }
28665ff1ccSJerin Jacob 
29665ff1ccSJerin Jacob void
30665ff1ccSJerin Jacob idev_set_defaults(struct idev_cfg *idev)
31665ff1ccSJerin Jacob {
329b727f85SPavan Nikhilesh 	idev->sso_pf_func = 0;
33124ff1a4SAshwin Sekhar T K 	idev->npa = NULL;
34124ff1a4SAshwin Sekhar T K 	idev->npa_pf_func = 0;
35124ff1a4SAshwin Sekhar T K 	idev->max_pools = 128;
36665ff1ccSJerin Jacob 	idev->lmt_pf_func = 0;
37665ff1ccSJerin Jacob 	idev->lmt_base_addr = 0;
38665ff1ccSJerin Jacob 	idev->num_lmtlines = 0;
394ced2b04STomasz Duszynski 	idev->bphy = NULL;
400a2879b2SAnoob Joseph 	idev->cpt = NULL;
41*318ee1b0SAkhil Goyal 	TAILQ_INIT(&idev->rvu_lf_list);
42f752780fSAkhil Goyal 	TAILQ_INIT(&idev->mcs_list);
43bbcd191cSNithin Dabilpuram 	idev->nix_inl_dev = NULL;
44ec7c2f5aSShijith Thotton 	TAILQ_INIT(&idev->roc_nix_list);
45bbcd191cSNithin Dabilpuram 	plt_spinlock_init(&idev->nix_inl_dev_lock);
4644a9307cSRakesh Kudurumalla 	plt_spinlock_init(&idev->npa_dev_lock);
47124ff1a4SAshwin Sekhar T K 	__atomic_store_n(&idev->npa_refcnt, 0, __ATOMIC_RELEASE);
48124ff1a4SAshwin Sekhar T K }
49124ff1a4SAshwin Sekhar T K 
50124ff1a4SAshwin Sekhar T K uint16_t
519b727f85SPavan Nikhilesh idev_sso_pffunc_get(void)
529b727f85SPavan Nikhilesh {
539b727f85SPavan Nikhilesh 	struct idev_cfg *idev;
549b727f85SPavan Nikhilesh 	uint16_t sso_pf_func;
559b727f85SPavan Nikhilesh 
569b727f85SPavan Nikhilesh 	idev = idev_get_cfg();
579b727f85SPavan Nikhilesh 	sso_pf_func = 0;
589b727f85SPavan Nikhilesh 	if (idev != NULL)
599b727f85SPavan Nikhilesh 		sso_pf_func = __atomic_load_n(&idev->sso_pf_func,
609b727f85SPavan Nikhilesh 					      __ATOMIC_ACQUIRE);
619b727f85SPavan Nikhilesh 
629b727f85SPavan Nikhilesh 	return sso_pf_func;
639b727f85SPavan Nikhilesh }
649b727f85SPavan Nikhilesh 
659b727f85SPavan Nikhilesh void
669b727f85SPavan Nikhilesh idev_sso_pffunc_set(uint16_t sso_pf_func)
679b727f85SPavan Nikhilesh {
689b727f85SPavan Nikhilesh 	struct idev_cfg *idev;
699b727f85SPavan Nikhilesh 
709b727f85SPavan Nikhilesh 	idev = idev_get_cfg();
719b727f85SPavan Nikhilesh 	if (idev != NULL)
729b727f85SPavan Nikhilesh 		__atomic_store_n(&idev->sso_pf_func, sso_pf_func,
739b727f85SPavan Nikhilesh 				 __ATOMIC_RELEASE);
749b727f85SPavan Nikhilesh }
759b727f85SPavan Nikhilesh 
769b727f85SPavan Nikhilesh uint16_t
77124ff1a4SAshwin Sekhar T K idev_npa_pffunc_get(void)
78124ff1a4SAshwin Sekhar T K {
79124ff1a4SAshwin Sekhar T K 	struct idev_cfg *idev;
80124ff1a4SAshwin Sekhar T K 	uint16_t npa_pf_func;
81124ff1a4SAshwin Sekhar T K 
82124ff1a4SAshwin Sekhar T K 	idev = idev_get_cfg();
83124ff1a4SAshwin Sekhar T K 	npa_pf_func = 0;
84124ff1a4SAshwin Sekhar T K 	if (idev != NULL)
85124ff1a4SAshwin Sekhar T K 		npa_pf_func = idev->npa_pf_func;
86124ff1a4SAshwin Sekhar T K 
87124ff1a4SAshwin Sekhar T K 	return npa_pf_func;
88124ff1a4SAshwin Sekhar T K }
89124ff1a4SAshwin Sekhar T K 
90124ff1a4SAshwin Sekhar T K struct npa_lf *
91124ff1a4SAshwin Sekhar T K idev_npa_obj_get(void)
92124ff1a4SAshwin Sekhar T K {
93124ff1a4SAshwin Sekhar T K 	struct idev_cfg *idev;
94124ff1a4SAshwin Sekhar T K 
95124ff1a4SAshwin Sekhar T K 	idev = idev_get_cfg();
96124ff1a4SAshwin Sekhar T K 	if (idev && __atomic_load_n(&idev->npa_refcnt, __ATOMIC_ACQUIRE))
97124ff1a4SAshwin Sekhar T K 		return idev->npa;
98124ff1a4SAshwin Sekhar T K 
99124ff1a4SAshwin Sekhar T K 	return NULL;
100124ff1a4SAshwin Sekhar T K }
101124ff1a4SAshwin Sekhar T K 
102124ff1a4SAshwin Sekhar T K uint32_t
103124ff1a4SAshwin Sekhar T K roc_idev_npa_maxpools_get(void)
104124ff1a4SAshwin Sekhar T K {
105124ff1a4SAshwin Sekhar T K 	struct idev_cfg *idev;
106124ff1a4SAshwin Sekhar T K 	uint32_t max_pools;
107124ff1a4SAshwin Sekhar T K 
108124ff1a4SAshwin Sekhar T K 	idev = idev_get_cfg();
109124ff1a4SAshwin Sekhar T K 	max_pools = 0;
110124ff1a4SAshwin Sekhar T K 	if (idev != NULL)
111124ff1a4SAshwin Sekhar T K 		max_pools = idev->max_pools;
112124ff1a4SAshwin Sekhar T K 
113124ff1a4SAshwin Sekhar T K 	return max_pools;
114124ff1a4SAshwin Sekhar T K }
115124ff1a4SAshwin Sekhar T K 
116124ff1a4SAshwin Sekhar T K void
117124ff1a4SAshwin Sekhar T K roc_idev_npa_maxpools_set(uint32_t max_pools)
118124ff1a4SAshwin Sekhar T K {
119124ff1a4SAshwin Sekhar T K 	struct idev_cfg *idev;
120124ff1a4SAshwin Sekhar T K 
121124ff1a4SAshwin Sekhar T K 	idev = idev_get_cfg();
122124ff1a4SAshwin Sekhar T K 	if (idev != NULL)
123124ff1a4SAshwin Sekhar T K 		__atomic_store_n(&idev->max_pools, max_pools, __ATOMIC_RELEASE);
124124ff1a4SAshwin Sekhar T K }
125124ff1a4SAshwin Sekhar T K 
126124ff1a4SAshwin Sekhar T K uint16_t
127124ff1a4SAshwin Sekhar T K idev_npa_lf_active(struct dev *dev)
128124ff1a4SAshwin Sekhar T K {
129124ff1a4SAshwin Sekhar T K 	struct idev_cfg *idev;
130124ff1a4SAshwin Sekhar T K 
131124ff1a4SAshwin Sekhar T K 	/* Check if npalf is actively used on this dev */
132124ff1a4SAshwin Sekhar T K 	idev = idev_get_cfg();
133124ff1a4SAshwin Sekhar T K 	if (!idev || !idev->npa || idev->npa->mbox != dev->mbox)
134124ff1a4SAshwin Sekhar T K 		return 0;
135124ff1a4SAshwin Sekhar T K 
136124ff1a4SAshwin Sekhar T K 	return __atomic_load_n(&idev->npa_refcnt, __ATOMIC_ACQUIRE);
137665ff1ccSJerin Jacob }
138665ff1ccSJerin Jacob 
139665ff1ccSJerin Jacob uint16_t
140665ff1ccSJerin Jacob idev_lmt_pffunc_get(void)
141665ff1ccSJerin Jacob {
142665ff1ccSJerin Jacob 	struct idev_cfg *idev;
143665ff1ccSJerin Jacob 	uint16_t lmt_pf_func;
144665ff1ccSJerin Jacob 
145665ff1ccSJerin Jacob 	idev = idev_get_cfg();
146665ff1ccSJerin Jacob 	lmt_pf_func = 0;
147665ff1ccSJerin Jacob 	if (idev != NULL)
148665ff1ccSJerin Jacob 		lmt_pf_func = idev->lmt_pf_func;
149665ff1ccSJerin Jacob 
150665ff1ccSJerin Jacob 	return lmt_pf_func;
151665ff1ccSJerin Jacob }
152665ff1ccSJerin Jacob 
153665ff1ccSJerin Jacob uint64_t
154665ff1ccSJerin Jacob roc_idev_lmt_base_addr_get(void)
155665ff1ccSJerin Jacob {
156665ff1ccSJerin Jacob 	uint64_t lmt_base_addr;
157665ff1ccSJerin Jacob 	struct idev_cfg *idev;
158665ff1ccSJerin Jacob 
159665ff1ccSJerin Jacob 	idev = idev_get_cfg();
160665ff1ccSJerin Jacob 	lmt_base_addr = 0;
161665ff1ccSJerin Jacob 	if (idev != NULL)
162665ff1ccSJerin Jacob 		lmt_base_addr = idev->lmt_base_addr;
163665ff1ccSJerin Jacob 
164665ff1ccSJerin Jacob 	return lmt_base_addr;
165665ff1ccSJerin Jacob }
166665ff1ccSJerin Jacob 
167665ff1ccSJerin Jacob uint16_t
168665ff1ccSJerin Jacob roc_idev_num_lmtlines_get(void)
169665ff1ccSJerin Jacob {
170665ff1ccSJerin Jacob 	struct idev_cfg *idev;
171665ff1ccSJerin Jacob 	uint16_t num_lmtlines;
172665ff1ccSJerin Jacob 
173665ff1ccSJerin Jacob 	idev = idev_get_cfg();
174665ff1ccSJerin Jacob 	num_lmtlines = 0;
175665ff1ccSJerin Jacob 	if (idev != NULL)
176665ff1ccSJerin Jacob 		num_lmtlines = idev->num_lmtlines;
177665ff1ccSJerin Jacob 
178665ff1ccSJerin Jacob 	return num_lmtlines;
179665ff1ccSJerin Jacob }
1808dcdf319SJerin Jacob 
1810a2879b2SAnoob Joseph struct roc_cpt *
1820a2879b2SAnoob Joseph roc_idev_cpt_get(void)
1830a2879b2SAnoob Joseph {
1840a2879b2SAnoob Joseph 	struct idev_cfg *idev = idev_get_cfg();
1850a2879b2SAnoob Joseph 
1860a2879b2SAnoob Joseph 	if (idev != NULL)
1870a2879b2SAnoob Joseph 		return idev->cpt;
1880a2879b2SAnoob Joseph 
1890a2879b2SAnoob Joseph 	return NULL;
1900a2879b2SAnoob Joseph }
1910a2879b2SAnoob Joseph 
192*318ee1b0SAkhil Goyal struct roc_rvu_lf *
193*318ee1b0SAkhil Goyal roc_idev_rvu_lf_get(uint8_t rvu_lf_idx)
194*318ee1b0SAkhil Goyal {
195*318ee1b0SAkhil Goyal 	struct idev_cfg *idev = idev_get_cfg();
196*318ee1b0SAkhil Goyal 	struct roc_rvu_lf *rvu_lf = NULL;
197*318ee1b0SAkhil Goyal 
198*318ee1b0SAkhil Goyal 	if (idev != NULL) {
199*318ee1b0SAkhil Goyal 		TAILQ_FOREACH(rvu_lf, &idev->rvu_lf_list, next) {
200*318ee1b0SAkhil Goyal 			if (rvu_lf->idx == rvu_lf_idx)
201*318ee1b0SAkhil Goyal 				return rvu_lf;
202*318ee1b0SAkhil Goyal 		}
203*318ee1b0SAkhil Goyal 	}
204*318ee1b0SAkhil Goyal 
205*318ee1b0SAkhil Goyal 	return NULL;
206*318ee1b0SAkhil Goyal }
207*318ee1b0SAkhil Goyal 
208*318ee1b0SAkhil Goyal void
209*318ee1b0SAkhil Goyal roc_idev_rvu_lf_set(struct roc_rvu_lf *rvu)
210*318ee1b0SAkhil Goyal {
211*318ee1b0SAkhil Goyal 	struct idev_cfg *idev = idev_get_cfg();
212*318ee1b0SAkhil Goyal 	struct roc_rvu_lf *rvu_lf_iter = NULL;
213*318ee1b0SAkhil Goyal 
214*318ee1b0SAkhil Goyal 	if (idev != NULL) {
215*318ee1b0SAkhil Goyal 		TAILQ_FOREACH(rvu_lf_iter, &idev->rvu_lf_list, next) {
216*318ee1b0SAkhil Goyal 			if (rvu_lf_iter->idx == rvu->idx)
217*318ee1b0SAkhil Goyal 				return;
218*318ee1b0SAkhil Goyal 		}
219*318ee1b0SAkhil Goyal 		TAILQ_INSERT_TAIL(&idev->rvu_lf_list, rvu, next);
220*318ee1b0SAkhil Goyal 	}
221*318ee1b0SAkhil Goyal }
222*318ee1b0SAkhil Goyal 
223*318ee1b0SAkhil Goyal void
224*318ee1b0SAkhil Goyal roc_idev_rvu_lf_free(struct roc_rvu_lf *rvu)
225*318ee1b0SAkhil Goyal {
226*318ee1b0SAkhil Goyal 	struct idev_cfg *idev = idev_get_cfg();
227*318ee1b0SAkhil Goyal 	struct roc_rvu_lf *rvu_lf_iter = NULL;
228*318ee1b0SAkhil Goyal 
229*318ee1b0SAkhil Goyal 	if (idev != NULL) {
230*318ee1b0SAkhil Goyal 		TAILQ_FOREACH(rvu_lf_iter, &idev->rvu_lf_list, next) {
231*318ee1b0SAkhil Goyal 			if (rvu_lf_iter->idx == rvu->idx)
232*318ee1b0SAkhil Goyal 				TAILQ_REMOVE(&idev->rvu_lf_list, rvu, next);
233*318ee1b0SAkhil Goyal 		}
234*318ee1b0SAkhil Goyal 	}
235*318ee1b0SAkhil Goyal }
236*318ee1b0SAkhil Goyal 
237f752780fSAkhil Goyal struct roc_mcs *
238f752780fSAkhil Goyal roc_idev_mcs_get(uint8_t mcs_idx)
239f752780fSAkhil Goyal {
240f752780fSAkhil Goyal 	struct idev_cfg *idev = idev_get_cfg();
241f752780fSAkhil Goyal 	struct roc_mcs *mcs = NULL;
242f752780fSAkhil Goyal 
243f752780fSAkhil Goyal 	if (idev != NULL) {
244f752780fSAkhil Goyal 		TAILQ_FOREACH(mcs, &idev->mcs_list, next) {
245f752780fSAkhil Goyal 			if (mcs->idx == mcs_idx)
246f752780fSAkhil Goyal 				return mcs;
247f752780fSAkhil Goyal 		}
248f752780fSAkhil Goyal 	}
249f752780fSAkhil Goyal 
250f752780fSAkhil Goyal 	return NULL;
251f752780fSAkhil Goyal }
252f752780fSAkhil Goyal 
253f752780fSAkhil Goyal void
254f752780fSAkhil Goyal roc_idev_mcs_set(struct roc_mcs *mcs)
255f752780fSAkhil Goyal {
256f752780fSAkhil Goyal 	struct idev_cfg *idev = idev_get_cfg();
257f752780fSAkhil Goyal 	struct roc_mcs *mcs_iter = NULL;
258f752780fSAkhil Goyal 
259f752780fSAkhil Goyal 	if (idev != NULL) {
260f752780fSAkhil Goyal 		TAILQ_FOREACH(mcs_iter, &idev->mcs_list, next) {
261f752780fSAkhil Goyal 			if (mcs_iter->idx == mcs->idx)
262f752780fSAkhil Goyal 				return;
263f752780fSAkhil Goyal 		}
264f752780fSAkhil Goyal 		TAILQ_INSERT_TAIL(&idev->mcs_list, mcs, next);
265f752780fSAkhil Goyal 	}
266f752780fSAkhil Goyal }
267f752780fSAkhil Goyal 
268f752780fSAkhil Goyal void
269f752780fSAkhil Goyal roc_idev_mcs_free(struct roc_mcs *mcs)
270f752780fSAkhil Goyal {
271f752780fSAkhil Goyal 	struct idev_cfg *idev = idev_get_cfg();
272f752780fSAkhil Goyal 	struct roc_mcs *mcs_iter = NULL;
273f752780fSAkhil Goyal 
274f752780fSAkhil Goyal 	if (idev != NULL) {
275f752780fSAkhil Goyal 		TAILQ_FOREACH(mcs_iter, &idev->mcs_list, next) {
276f752780fSAkhil Goyal 			if (mcs_iter->idx == mcs->idx)
277f752780fSAkhil Goyal 				TAILQ_REMOVE(&idev->mcs_list, mcs, next);
278f752780fSAkhil Goyal 		}
279f752780fSAkhil Goyal 	}
280f752780fSAkhil Goyal }
281f752780fSAkhil Goyal 
282bea5d990SVamsi Attunuru uint64_t *
283bea5d990SVamsi Attunuru roc_nix_inl_outb_ring_base_get(struct roc_nix *roc_nix)
284bea5d990SVamsi Attunuru {
285bea5d990SVamsi Attunuru 	struct nix *nix = roc_nix_to_nix_priv(roc_nix);
286bea5d990SVamsi Attunuru 	struct idev_cfg *idev = idev_get_cfg();
287bea5d990SVamsi Attunuru 	struct nix_inl_dev *inl_dev;
288bea5d990SVamsi Attunuru 
289bea5d990SVamsi Attunuru 	if (!idev || !idev->nix_inl_dev)
290bea5d990SVamsi Attunuru 		return NULL;
291bea5d990SVamsi Attunuru 
292bea5d990SVamsi Attunuru 	inl_dev = idev->nix_inl_dev;
293bea5d990SVamsi Attunuru 
294bea5d990SVamsi Attunuru 	return (uint64_t *)&inl_dev->sa_soft_exp_ring[nix->outb_se_ring_base];
295bea5d990SVamsi Attunuru }
296bea5d990SVamsi Attunuru 
297ec7c2f5aSShijith Thotton struct roc_nix_list *
298ec7c2f5aSShijith Thotton roc_idev_nix_list_get(void)
299ec7c2f5aSShijith Thotton {
300ec7c2f5aSShijith Thotton 	struct idev_cfg *idev;
301ec7c2f5aSShijith Thotton 
302ec7c2f5aSShijith Thotton 	idev = idev_get_cfg();
303ec7c2f5aSShijith Thotton 	if (idev != NULL)
304ec7c2f5aSShijith Thotton 		return &idev->roc_nix_list;
305ec7c2f5aSShijith Thotton 	return NULL;
306ec7c2f5aSShijith Thotton }
307ec7c2f5aSShijith Thotton 
3080a2879b2SAnoob Joseph void
3090a2879b2SAnoob Joseph roc_idev_cpt_set(struct roc_cpt *cpt)
3100a2879b2SAnoob Joseph {
3110a2879b2SAnoob Joseph 	struct idev_cfg *idev = idev_get_cfg();
3120a2879b2SAnoob Joseph 
3130a2879b2SAnoob Joseph 	if (idev != NULL)
3140a2879b2SAnoob Joseph 		__atomic_store_n(&idev->cpt, cpt, __ATOMIC_RELEASE);
3150a2879b2SAnoob Joseph }
3160a2879b2SAnoob Joseph 
3178dcdf319SJerin Jacob struct roc_nix *
3188dcdf319SJerin Jacob roc_idev_npa_nix_get(void)
3198dcdf319SJerin Jacob {
3208dcdf319SJerin Jacob 	struct npa_lf *npa_lf = idev_npa_obj_get();
3218dcdf319SJerin Jacob 	struct dev *dev;
3228dcdf319SJerin Jacob 
3238dcdf319SJerin Jacob 	if (!npa_lf)
3248dcdf319SJerin Jacob 		return NULL;
3258dcdf319SJerin Jacob 
3268dcdf319SJerin Jacob 	dev = container_of(npa_lf, struct dev, npa);
3278dcdf319SJerin Jacob 	return dev->roc_nix;
3288dcdf319SJerin Jacob }
329cb0e45cbSPavan Nikhilesh 
330cb0e45cbSPavan Nikhilesh struct roc_sso *
331cb0e45cbSPavan Nikhilesh idev_sso_get(void)
332cb0e45cbSPavan Nikhilesh {
333cb0e45cbSPavan Nikhilesh 	struct idev_cfg *idev = idev_get_cfg();
334cb0e45cbSPavan Nikhilesh 
335cb0e45cbSPavan Nikhilesh 	if (idev != NULL)
336cb0e45cbSPavan Nikhilesh 		return __atomic_load_n(&idev->sso, __ATOMIC_ACQUIRE);
337cb0e45cbSPavan Nikhilesh 
338cb0e45cbSPavan Nikhilesh 	return NULL;
339cb0e45cbSPavan Nikhilesh }
340cb0e45cbSPavan Nikhilesh 
341cb0e45cbSPavan Nikhilesh void
342cb0e45cbSPavan Nikhilesh idev_sso_set(struct roc_sso *sso)
343cb0e45cbSPavan Nikhilesh {
344cb0e45cbSPavan Nikhilesh 	struct idev_cfg *idev = idev_get_cfg();
345cb0e45cbSPavan Nikhilesh 
346cb0e45cbSPavan Nikhilesh 	if (idev != NULL)
347cb0e45cbSPavan Nikhilesh 		__atomic_store_n(&idev->sso, sso, __ATOMIC_RELEASE);
348cb0e45cbSPavan Nikhilesh }
3490f3f3ad8SNithin Dabilpuram 
35094163794SAmit Prakash Shukla void
35194163794SAmit Prakash Shukla idev_dma_cs_offset_set(uint8_t offset)
35294163794SAmit Prakash Shukla {
35394163794SAmit Prakash Shukla 	struct idev_cfg *idev = idev_get_cfg();
35494163794SAmit Prakash Shukla 
35594163794SAmit Prakash Shukla 	if (idev != NULL)
35694163794SAmit Prakash Shukla 		idev->dma_cs_offset = offset;
35794163794SAmit Prakash Shukla }
35894163794SAmit Prakash Shukla 
35994163794SAmit Prakash Shukla uint8_t
36094163794SAmit Prakash Shukla idev_dma_cs_offset_get(void)
36194163794SAmit Prakash Shukla {
36294163794SAmit Prakash Shukla 	struct idev_cfg *idev = idev_get_cfg();
36394163794SAmit Prakash Shukla 
36494163794SAmit Prakash Shukla 	if (idev != NULL)
36594163794SAmit Prakash Shukla 		return idev->dma_cs_offset;
36694163794SAmit Prakash Shukla 
36794163794SAmit Prakash Shukla 	return 0;
36894163794SAmit Prakash Shukla }
36994163794SAmit Prakash Shukla 
3700f3f3ad8SNithin Dabilpuram uint64_t
3710f3f3ad8SNithin Dabilpuram roc_idev_nix_inl_meta_aura_get(void)
3720f3f3ad8SNithin Dabilpuram {
3730f3f3ad8SNithin Dabilpuram 	struct idev_cfg *idev = idev_get_cfg();
3740f3f3ad8SNithin Dabilpuram 
3750f3f3ad8SNithin Dabilpuram 	if (idev != NULL)
3760f3f3ad8SNithin Dabilpuram 		return idev->inl_cfg.meta_aura;
3770f3f3ad8SNithin Dabilpuram 	return 0;
3780f3f3ad8SNithin Dabilpuram }
379b77d160fSRahul Bhansali 
380b77d160fSRahul Bhansali uint8_t
381b77d160fSRahul Bhansali roc_idev_nix_rx_inject_get(uint16_t port)
382b77d160fSRahul Bhansali {
383b77d160fSRahul Bhansali 	struct idev_cfg *idev;
384b77d160fSRahul Bhansali 
385b77d160fSRahul Bhansali 	idev = idev_get_cfg();
386b77d160fSRahul Bhansali 	if (idev != NULL && port < PLT_MAX_ETHPORTS)
387b77d160fSRahul Bhansali 		return idev->inl_rx_inj_cfg.rx_inject_en[port];
388b77d160fSRahul Bhansali 
389b77d160fSRahul Bhansali 	return 0;
390b77d160fSRahul Bhansali }
391b77d160fSRahul Bhansali 
392b77d160fSRahul Bhansali void
393b77d160fSRahul Bhansali roc_idev_nix_rx_inject_set(uint16_t port, uint8_t enable)
394b77d160fSRahul Bhansali {
395b77d160fSRahul Bhansali 	struct idev_cfg *idev;
396b77d160fSRahul Bhansali 
397b77d160fSRahul Bhansali 	idev = idev_get_cfg();
398b77d160fSRahul Bhansali 	if (idev != NULL && port < PLT_MAX_ETHPORTS)
399b77d160fSRahul Bhansali 		__atomic_store_n(&idev->inl_rx_inj_cfg.rx_inject_en[port], enable,
400b77d160fSRahul Bhansali 				 __ATOMIC_RELEASE);
401b77d160fSRahul Bhansali }
402b77d160fSRahul Bhansali 
403b77d160fSRahul Bhansali uint16_t *
404b77d160fSRahul Bhansali roc_idev_nix_rx_chan_base_get(void)
405b77d160fSRahul Bhansali {
406b77d160fSRahul Bhansali 	struct idev_cfg *idev = idev_get_cfg();
407b77d160fSRahul Bhansali 
408b77d160fSRahul Bhansali 	if (idev != NULL)
409b77d160fSRahul Bhansali 		return (uint16_t *)&idev->inl_rx_inj_cfg.chan;
410b77d160fSRahul Bhansali 
411b77d160fSRahul Bhansali 	return NULL;
412b77d160fSRahul Bhansali }
413b77d160fSRahul Bhansali 
414b77d160fSRahul Bhansali void
415b77d160fSRahul Bhansali roc_idev_nix_rx_chan_set(uint16_t port, uint16_t chan)
416b77d160fSRahul Bhansali {
417b77d160fSRahul Bhansali 	struct idev_cfg *idev;
418b77d160fSRahul Bhansali 
419b77d160fSRahul Bhansali 	idev = idev_get_cfg();
420b77d160fSRahul Bhansali 	if (idev != NULL && port < PLT_MAX_ETHPORTS)
421b77d160fSRahul Bhansali 		__atomic_store_n(&idev->inl_rx_inj_cfg.chan[port], chan, __ATOMIC_RELEASE);
422b77d160fSRahul Bhansali }
42325ca149bSAnoob Joseph 
42425ca149bSAnoob Joseph uint16_t
42525ca149bSAnoob Joseph roc_idev_nix_inl_dev_pffunc_get(void)
42625ca149bSAnoob Joseph {
42725ca149bSAnoob Joseph 	return nix_inl_dev_pffunc_get();
42825ca149bSAnoob Joseph }
429