Add stubs for NT400D11 init functions.
These stubs will be replaced with actual implementations in future commits.

Signed-off-by: Serhii Iliushyk <[email protected]>
---
 doc/guides/nics/ntnic.rst                     |  6 +++
 drivers/net/ntnic/adapter/nt4ga_adapter.c     |  3 +-
 drivers/net/ntnic/meson.build                 |  1 +
 .../nthw/core/nt400dxx/nthw_fpga_nt400dxx.c   | 41 +++++++++++++++++++
 .../core/nt400dxx/reset/nthw_fpga_rst9569.c   | 27 ++++++++++++
 drivers/net/ntnic/nthw/core/nthw_fpga.c       |  1 +
 drivers/net/ntnic/nthw/nthw_platform.c        |  3 ++
 drivers/net/ntnic/nthw/nthw_platform_drv.h    |  2 +
 drivers/net/ntnic/ntnic_ethdev.c              |  1 +
 drivers/net/ntnic/ntnic_mod_reg.c             | 15 +++++++
 drivers/net/ntnic/ntnic_mod_reg.h             |  9 ++++
 11 files changed, 108 insertions(+), 1 deletion(-)
 create mode 100644 
drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c

diff --git a/doc/guides/nics/ntnic.rst b/doc/guides/nics/ntnic.rst
index a173eaa2ac..5375d89a2d 100644
--- a/doc/guides/nics/ntnic.rst
+++ b/doc/guides/nics/ntnic.rst
@@ -27,6 +27,10 @@ Supported NICs
 
     - FPGA ID 9563 (Inline Flow Management)
 
+- NT400D11 2x100G SmartNIC
+
+    - FPGA ID 9569 (Inline Flow Management)
+
 - NT400D13 2x100G SmartNIC
 
     - FPGA ID 9574 (Inline Flow Management)
@@ -34,6 +38,8 @@ Supported NICs
 All information about NT200A02 and NT400D13 can be found by links below:
 
 - https://www.napatech.com/products/nt200a02-smartnic-inline/
+- https://www.napatech.com/products/nt400d11-smartnic-programmable/
+- https://www.napatech.com/products/nt400d13-smartnic-programmable/
 - 
https://www.napatech.com/support/resources/data-sheets/link-inline-software-for-napatech/
 
 
diff --git a/drivers/net/ntnic/adapter/nt4ga_adapter.c 
b/drivers/net/ntnic/adapter/nt4ga_adapter.c
index 6d8547483f..4599f78e3f 100644
--- a/drivers/net/ntnic/adapter/nt4ga_adapter.c
+++ b/drivers/net/ntnic/adapter/nt4ga_adapter.c
@@ -172,10 +172,11 @@ static int nt4ga_adapter_init(struct adapter_info_s 
*p_adapter_info)
 
                        res = link_ops->link_init(p_adapter_info, p_fpga);
                        break;
+               case 9569: /* NT400D11 (Intel Agilex FPGA) */
                case 9574: /* NT400D13 (Intel Agilex FPGA) */
                        link_ops = nthw_get_agx_100g_link_ops();
                        if (link_ops == NULL) {
-                               NT_LOG(ERR, NTNIC, "NT400D11 100G link module 
uninitialized");
+                               NT_LOG(ERR, NTNIC, "NT400Dxx 100G link module 
uninitialized");
                                res = -1;
                                break;
                        }
diff --git a/drivers/net/ntnic/meson.build b/drivers/net/ntnic/meson.build
index 785ac4836d..038c7d90f6 100644
--- a/drivers/net/ntnic/meson.build
+++ b/drivers/net/ntnic/meson.build
@@ -47,6 +47,7 @@ sources = files(
         'nthw/core/nt400dxx/nthw_fpga_nt400dxx.c',
         'nthw/core/nt200a0x/reset/nthw_fpga_rst9563.c',
         'nthw/core/nt400dxx/reset/nthw_fpga_rst9574.c',
+        'nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c',
         'nthw/core/nt200a0x/reset/nthw_fpga_rst_nt200a0x.c',
         'nthw/core/nt400dxx/reset/nthw_fpga_rst_nt400dxx.c',
         'nthw/core/nthw_fpga.c',
diff --git a/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c 
b/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c
index cc4bee9d4d..99b317d916 100644
--- a/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c
+++ b/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c
@@ -113,6 +113,7 @@ static int nthw_fpga_nt400dxx_init_sub_systems(struct 
fpga_info_s *p_fpga_info)
 static int nthw_fpga_nt400dxx_init(struct fpga_info_s *p_fpga_info)
 {
        RTE_ASSERT(p_fpga_info);
+       struct rst9569_ops *rst9569_ops = NULL;
        struct rst9574_ops *rst9574_ops = NULL;
 
        const char *const p_adapter_id_str = p_fpga_info->mp_adapter_id_str;
@@ -123,6 +124,29 @@ static int nthw_fpga_nt400dxx_init(struct fpga_info_s 
*p_fpga_info)
        RTE_ASSERT(p_fpga);
 
        switch (p_fpga_info->n_fpga_prod_id) {
+       case 9569:
+               rst9569_ops = nthw_get_rst9569_ops();
+
+               if (rst9569_ops == NULL) {
+                       NT_LOG(ERR, NTHW, "%s: RST 9569 NOT INCLUDED", 
p_adapter_id_str);
+                       return -1;
+               }
+
+               res = rst9569_ops->nthw_fpga_rst9569_setup();
+
+               if (res) {
+                       NT_LOG(ERR,
+                               NTHW,
+                               "%s: %s: FPGA=%04d Failed to create reset 
module res=%d",
+                               p_adapter_id_str,
+                               __func__,
+                               p_fpga_info->n_fpga_prod_id,
+                               res);
+                       return res;
+               }
+
+               break;
+
        case 9574:
                rst9574_ops = nthw_get_rst9574_ops();
 
@@ -183,6 +207,23 @@ static int nthw_fpga_nt400dxx_init(struct fpga_info_s 
*p_fpga_info)
 
                /* reset specific */
        switch (p_fpga_info->n_fpga_prod_id) {
+       case 9569:
+               if (rst9569_ops)
+                       res = rst9569_ops->nthw_fpga_rst9569_init();
+
+               if (res) {
+                       NT_LOG(ERR,
+                               NTHW,
+                               "%s: %s: FPGA=%04d - Failed to reset 9569 
modules res=%d",
+                               p_adapter_id_str,
+                               __func__,
+                               p_fpga_info->n_fpga_prod_id,
+                               res);
+                       return res;
+               }
+
+               break;
+
        case 9574:
                res = rst9574_ops->nthw_fpga_rst9574_init(p_fpga_info, &rst);
 
diff --git a/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c 
b/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c
new file mode 100644
index 0000000000..3d1c09fe2d
--- /dev/null
+++ b/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c
@@ -0,0 +1,27 @@
+/*
+ * SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2025 Napatech A/S
+ */
+
+#include "ntnic_mod_reg.h"
+
+
+static int nthw_fpga_rst9569_setup(void)
+{
+       return 0;
+};
+
+static int nthw_fpga_rst9569_init(void)
+{
+       return 0;
+}
+
+static struct rst9569_ops rst9569_ops = {
+       .nthw_fpga_rst9569_init = nthw_fpga_rst9569_init,
+       .nthw_fpga_rst9569_setup = nthw_fpga_rst9569_setup,
+};
+
+void nthw_rst9569_ops_init(void)
+{
+       nthw_reg_rst9569_ops(&rst9569_ops);
+}
diff --git a/drivers/net/ntnic/nthw/core/nthw_fpga.c 
b/drivers/net/ntnic/nthw/core/nthw_fpga.c
index 24cfb6c284..7ec33aff2d 100644
--- a/drivers/net/ntnic/nthw/core/nthw_fpga.c
+++ b/drivers/net/ntnic/nthw/core/nthw_fpga.c
@@ -440,6 +440,7 @@ int nthw_fpga_init(struct fpga_info_s *p_fpga_info)
                        res = 
nt200a0x_ops->nthw_fpga_nt200a0x_init(p_fpga_info);
                break;
 
+       case NT_HW_ADAPTER_ID_NT400D11:
        case NT_HW_ADAPTER_ID_NT400D13:
                if (nt400dxx_ops != NULL)
                        res = 
nt400dxx_ops->nthw_fpga_nt400dxx_init(p_fpga_info);
diff --git a/drivers/net/ntnic/nthw/nthw_platform.c 
b/drivers/net/ntnic/nthw/nthw_platform.c
index 6f2582d6fe..83e1b38563 100644
--- a/drivers/net/ntnic/nthw/nthw_platform.c
+++ b/drivers/net/ntnic/nthw/nthw_platform.c
@@ -11,6 +11,9 @@ nthw_adapter_id_t nthw_platform_get_adapter_id(const uint16_t 
n_pci_device_id)
        case NT_HW_PCI_DEVICE_ID_NT200A02:
                return NT_HW_ADAPTER_ID_NT200A02;
 
+       case NT_HW_PCI_DEVICE_ID_NT400D11:
+               return NT_HW_ADAPTER_ID_NT400D11;
+
        case NT_HW_PCI_DEVICE_ID_NT400D13:
                return NT_HW_ADAPTER_ID_NT400D13;
 
diff --git a/drivers/net/ntnic/nthw/nthw_platform_drv.h 
b/drivers/net/ntnic/nthw/nthw_platform_drv.h
index db2bc05180..a861c8dd7b 100644
--- a/drivers/net/ntnic/nthw/nthw_platform_drv.h
+++ b/drivers/net/ntnic/nthw/nthw_platform_drv.h
@@ -10,11 +10,13 @@
 
 #define NT_HW_PCI_VENDOR_ID (0x18f4)
 #define NT_HW_PCI_DEVICE_ID_NT200A02 (0x1C5)
+#define NT_HW_PCI_DEVICE_ID_NT400D11 (0x215)
 #define NT_HW_PCI_DEVICE_ID_NT400D13 (0x295)
 
 enum nthw_adapter_id_e {
        NT_HW_ADAPTER_ID_UNKNOWN = 0,
        NT_HW_ADAPTER_ID_NT200A02,
+       NT_HW_ADAPTER_ID_NT400D11,
        NT_HW_ADAPTER_ID_NT400D13,
 };
 
diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c
index 42aa2d4095..01b3fe00ef 100644
--- a/drivers/net/ntnic/ntnic_ethdev.c
+++ b/drivers/net/ntnic/ntnic_ethdev.c
@@ -84,6 +84,7 @@ static const char *const valid_arguments[] = {
 
 static const struct rte_pci_id nthw_pci_id_map[] = {
        { RTE_PCI_DEVICE(NT_HW_PCI_VENDOR_ID, NT_HW_PCI_DEVICE_ID_NT200A02) },
+       { RTE_PCI_DEVICE(NT_HW_PCI_VENDOR_ID, NT_HW_PCI_DEVICE_ID_NT400D11) },
        { RTE_PCI_DEVICE(NT_HW_PCI_VENDOR_ID, NT_HW_PCI_DEVICE_ID_NT400D13) },
        {
                .vendor_id = 0,
diff --git a/drivers/net/ntnic/ntnic_mod_reg.c 
b/drivers/net/ntnic/ntnic_mod_reg.c
index 00eb07f848..ab29a2d816 100644
--- a/drivers/net/ntnic/ntnic_mod_reg.c
+++ b/drivers/net/ntnic/ntnic_mod_reg.c
@@ -193,6 +193,21 @@ struct rst9574_ops *nthw_get_rst9574_ops(void)
        return rst9574_ops;
 }
 
+static struct rst9569_ops *rst9569_ops;
+
+void nthw_reg_rst9569_ops(struct rst9569_ops *ops)
+{
+       rst9569_ops = ops;
+}
+
+struct rst9569_ops *nthw_get_rst9569_ops(void)
+{
+       if (rst9569_ops == NULL)
+               nthw_rst9569_ops_init();
+
+       return rst9569_ops;
+}
+
 static struct rst_nt400dxx_ops *rst_nt400dxx_ops;
 
 void nthw_reg_rst_nt400dxx_ops(struct rst_nt400dxx_ops *ops)
diff --git a/drivers/net/ntnic/ntnic_mod_reg.h 
b/drivers/net/ntnic/ntnic_mod_reg.h
index b534b09234..62f69d239d 100644
--- a/drivers/net/ntnic/ntnic_mod_reg.h
+++ b/drivers/net/ntnic/ntnic_mod_reg.h
@@ -269,6 +269,15 @@ struct rst9574_ops {
                struct nthw_fpga_rst_nt400dxx *const p);
 };
 
+struct rst9569_ops {
+       int (*nthw_fpga_rst9569_init)(void);
+       int (*nthw_fpga_rst9569_setup)(void);
+};
+
+void nthw_reg_rst9569_ops(struct rst9569_ops *ops);
+struct rst9569_ops *nthw_get_rst9569_ops(void);
+void nthw_rst9569_ops_init(void);
+
 void nthw_reg_rst9574_ops(struct rst9574_ops *ops);
 struct rst9574_ops *nthw_get_rst9574_ops(void);
 void nthw_rst9574_ops_init(void);
-- 
2.45.0

Reply via email to