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