common/cnxk: add roc plt init callback support
authorAshwin Sekhar T K <asekhar@marvell.com>
Tue, 6 Apr 2021 14:40:56 +0000 (20:10 +0530)
committerJerin Jacob <jerinj@marvell.com>
Fri, 9 Apr 2021 06:32:24 +0000 (08:32 +0200)
Add support for registering callbacks for roc plt init.

Signed-off-by: Ashwin Sekhar T K <asekhar@marvell.com>
Acked-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
drivers/common/cnxk/roc_platform.c
drivers/common/cnxk/roc_platform.h
drivers/common/cnxk/version.map

index 5baec95..0aed76b 100644 (file)
@@ -4,10 +4,26 @@
 
 #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) {
@@ -29,5 +45,11 @@ roc_plt_init(void)
                roc_model = mz->addr;
        }
 
+       for (i = 0; i < plt_init_cb_num; i++) {
+               rc = (*plt_init_cbs[i])();
+               if (rc)
+                       return rc;
+       }
+
        return 0;
 }
index 1d06435..2987713 100644 (file)
 __rte_internal
 int roc_plt_init(void);
 
+/* Init callbacks */
+typedef int (*roc_plt_init_cb_t)(void);
+int __roc_api roc_plt_init_cb_register(roc_plt_init_cb_t cb);
+
 #endif /* _ROC_PLATFORM_H_ */
index 1798b48..984feb3 100644 (file)
@@ -4,6 +4,7 @@ INTERNAL {
        roc_error_msg_get;
        roc_model;
        roc_plt_init;
+       roc_plt_init_cb_register;
 
        local: *;
 };