17812b7a7SSerhii Iliushyk /* 27812b7a7SSerhii Iliushyk * SPDX-License-Identifier: BSD-3-Clause 37812b7a7SSerhii Iliushyk * Copyright(c) 2023 Napatech A/S 47812b7a7SSerhii Iliushyk */ 57812b7a7SSerhii Iliushyk 67812b7a7SSerhii Iliushyk #ifndef __NTHW_DRV_H__ 77812b7a7SSerhii Iliushyk #define __NTHW_DRV_H__ 87812b7a7SSerhii Iliushyk 90d9bca48SSerhii Iliushyk #include "nthw_core.h" 10b0cd36e9SDanylo Vodopianov #include "ntnic_dbs.h" 117812b7a7SSerhii Iliushyk 127812b7a7SSerhii Iliushyk typedef enum nt_meta_port_type_e { 137812b7a7SSerhii Iliushyk PORT_TYPE_PHYSICAL, 147812b7a7SSerhii Iliushyk PORT_TYPE_VIRTUAL, 157812b7a7SSerhii Iliushyk PORT_TYPE_OVERRIDE, 167812b7a7SSerhii Iliushyk } nt_meta_port_type_t; 177812b7a7SSerhii Iliushyk 18e3723ca6SOleksandr Kolomeiets #include "nthw_helper.h" 19e3723ca6SOleksandr Kolomeiets 207812b7a7SSerhii Iliushyk enum fpga_info_profile { 217812b7a7SSerhii Iliushyk FPGA_INFO_PROFILE_UNKNOWN = 0, 227812b7a7SSerhii Iliushyk FPGA_INFO_PROFILE_VSWITCH = 1, 237812b7a7SSerhii Iliushyk FPGA_INFO_PROFILE_INLINE = 2, 247812b7a7SSerhii Iliushyk FPGA_INFO_PROFILE_CAPTURE = 3, 257812b7a7SSerhii Iliushyk }; 267812b7a7SSerhii Iliushyk 277812b7a7SSerhii Iliushyk typedef struct mcu_info_s { 28ddf184d0SSerhii Iliushyk bool mb_has_mcu; 297812b7a7SSerhii Iliushyk int mn_mcu_type; 307812b7a7SSerhii Iliushyk int mn_mcu_dram_size; 317812b7a7SSerhii Iliushyk } mcu_info_t; 327812b7a7SSerhii Iliushyk 337812b7a7SSerhii Iliushyk typedef struct nthw_hw_info_s { 347812b7a7SSerhii Iliushyk /* From FW */ 357812b7a7SSerhii Iliushyk int hw_id; 367812b7a7SSerhii Iliushyk int hw_id_emulated; 377812b7a7SSerhii Iliushyk char hw_plat_id_str[32]; 387812b7a7SSerhii Iliushyk 397812b7a7SSerhii Iliushyk struct vpd_info_s { 407812b7a7SSerhii Iliushyk int mn_mac_addr_count; 417812b7a7SSerhii Iliushyk uint64_t mn_mac_addr_value; 427812b7a7SSerhii Iliushyk uint8_t ma_mac_addr_octets[6]; 437812b7a7SSerhii Iliushyk } vpd_info; 447812b7a7SSerhii Iliushyk } nthw_hw_info_t; 457812b7a7SSerhii Iliushyk 467812b7a7SSerhii Iliushyk typedef struct fpga_info_s { 477812b7a7SSerhii Iliushyk uint64_t n_fpga_ident; 487812b7a7SSerhii Iliushyk 497812b7a7SSerhii Iliushyk int n_fpga_type_id; 507812b7a7SSerhii Iliushyk int n_fpga_prod_id; 517812b7a7SSerhii Iliushyk int n_fpga_ver_id; 527812b7a7SSerhii Iliushyk int n_fpga_rev_id; 537812b7a7SSerhii Iliushyk 547812b7a7SSerhii Iliushyk int n_fpga_build_time; 557812b7a7SSerhii Iliushyk 567812b7a7SSerhii Iliushyk int n_fpga_debug_mode; 577812b7a7SSerhii Iliushyk 58eaf1ebdcSSerhii Iliushyk int n_nims; 597812b7a7SSerhii Iliushyk int n_phy_ports; 607812b7a7SSerhii Iliushyk int n_phy_quads; 617812b7a7SSerhii Iliushyk int n_rx_ports; 627812b7a7SSerhii Iliushyk int n_tx_ports; 637812b7a7SSerhii Iliushyk int n_vf_offset; 647812b7a7SSerhii Iliushyk 657812b7a7SSerhii Iliushyk enum fpga_info_profile profile; 667812b7a7SSerhii Iliushyk 677812b7a7SSerhii Iliushyk struct nthw_fpga_s *mp_fpga; 687812b7a7SSerhii Iliushyk 697812b7a7SSerhii Iliushyk struct nthw_rac *mp_nthw_rac; 707812b7a7SSerhii Iliushyk struct nthw_hif *mp_nthw_hif; 717812b7a7SSerhii Iliushyk struct nthw_pcie3 *mp_nthw_pcie3; 727812b7a7SSerhii Iliushyk struct nthw_tsm *mp_nthw_tsm; 737812b7a7SSerhii Iliushyk 74*6b0047faSDanylo Vodopianov nthw_dbs_t *mp_nthw_dbs; 75*6b0047faSDanylo Vodopianov 767812b7a7SSerhii Iliushyk uint8_t *bar0_addr; /* Needed for register read/write */ 777812b7a7SSerhii Iliushyk size_t bar0_size; 787812b7a7SSerhii Iliushyk 797812b7a7SSerhii Iliushyk int adapter_no; /* Needed for nthw_rac DMA array indexing */ 807812b7a7SSerhii Iliushyk uint32_t pciident; /* Needed for nthw_rac DMA memzone_reserve */ 817812b7a7SSerhii Iliushyk int numa_node; /* Needed for nthw_rac DMA memzone_reserve */ 827812b7a7SSerhii Iliushyk 837812b7a7SSerhii Iliushyk char *mp_adapter_id_str;/* Pointer to string literal used in nthw log messages */ 847812b7a7SSerhii Iliushyk 857812b7a7SSerhii Iliushyk struct mcu_info_s mcu_info; 867812b7a7SSerhii Iliushyk 877812b7a7SSerhii Iliushyk struct nthw_hw_info_s nthw_hw_info; 887812b7a7SSerhii Iliushyk 897812b7a7SSerhii Iliushyk nthw_adapter_id_t n_nthw_adapter_id; 907812b7a7SSerhii Iliushyk 917812b7a7SSerhii Iliushyk } fpga_info_t; 927812b7a7SSerhii Iliushyk 937812b7a7SSerhii Iliushyk 947812b7a7SSerhii Iliushyk #endif /* __NTHW_DRV_H__ */ 95