xref: /dpdk/drivers/net/ntnic/nthw/nthw_drv.h (revision 6b0047fadf4116f0e714998d0b82aec910ef6ead)
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