X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcommon%2Fcnxk%2Froc_platform.c;h=3999fcec2a4f1ef663953cd11de3f8380120cd1e;hb=50d08d3934ecbd6f2906ff6048b21358e3142db1;hp=6ddbc3b5a879d4a96f26c860598a1a44c4e2cd4c;hpb=fa8f86a14e2e5991c2ff10f5db6dea33f8e355e5;p=dpdk.git diff --git a/drivers/common/cnxk/roc_platform.c b/drivers/common/cnxk/roc_platform.c index 6ddbc3b5a8..3999fcec2a 100644 --- a/drivers/common/cnxk/roc_platform.c +++ b/drivers/common/cnxk/roc_platform.c @@ -2,4 +2,65 @@ * Copyright(C) 2021 Marvell. */ +#include + #include "roc_api.h" + +#define PLT_INIT_CB_MAX 8 + +static int plt_init_cb_num; +static roc_plt_init_cb_t plt_init_cbs[PLT_INIT_CB_MAX]; + +int +roc_plt_init_cb_register(roc_plt_init_cb_t cb) +{ + if (plt_init_cb_num >= PLT_INIT_CB_MAX) + return -ERANGE; + + plt_init_cbs[plt_init_cb_num++] = cb; + return 0; +} + +int +roc_plt_init(void) +{ + const struct rte_memzone *mz; + int i, rc; + + mz = rte_memzone_lookup(PLT_MODEL_MZ_NAME); + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + if (mz == NULL) { + mz = rte_memzone_reserve(PLT_MODEL_MZ_NAME, + sizeof(struct roc_model), + SOCKET_ID_ANY, 0); + if (mz == NULL) { + plt_err("Failed to reserve mem for roc_model"); + return -ENOMEM; + } + roc_model_init(mz->addr); + } + } else { + if (mz == NULL) { + plt_err("Failed to lookup mem for roc_model"); + return -ENOMEM; + } + roc_model = mz->addr; + } + + for (i = 0; i < plt_init_cb_num; i++) { + rc = (*plt_init_cbs[i])(); + if (rc) + return rc; + } + + return 0; +} + +RTE_LOG_REGISTER(cnxk_logtype_base, pmd.cnxk.base, NOTICE); +RTE_LOG_REGISTER(cnxk_logtype_mbox, pmd.cnxk.mbox, NOTICE); +RTE_LOG_REGISTER(cnxk_logtype_npa, pmd.mempool.cnxk, NOTICE); +RTE_LOG_REGISTER(cnxk_logtype_nix, pmd.net.cnxk, NOTICE); +RTE_LOG_REGISTER(cnxk_logtype_npc, pmd.net.cnxk.flow, NOTICE); +RTE_LOG_REGISTER(cnxk_logtype_sso, pmd.event.cnxk, NOTICE); +RTE_LOG_REGISTER(cnxk_logtype_tim, pmd.event.cnxk.timer, NOTICE); +RTE_LOG_REGISTER(cnxk_logtype_tm, pmd.net.cnxk.tm, NOTICE);