1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2010-2018 Intel Corporation 3 */ 4 5 #ifndef _IFPGA_RAWDEV_H_ 6 #define _IFPGA_RAWDEV_H_ 7 8 extern int ifpga_rawdev_logtype; 9 10 #define IFPGA_RAWDEV_PMD_LOG(level, fmt, args...) \ 11 rte_log(RTE_LOG_ ## level, ifpga_rawdev_logtype, "%s(): " fmt "\n", \ 12 __func__, ##args) 13 14 #define IFPGA_RAWDEV_PMD_FUNC_TRACE() IFPGA_RAWDEV_PMD_LOG(DEBUG, ">>") 15 16 #define IFPGA_RAWDEV_PMD_DEBUG(fmt, args...) \ 17 IFPGA_RAWDEV_PMD_LOG(DEBUG, fmt, ## args) 18 #define IFPGA_RAWDEV_PMD_INFO(fmt, args...) \ 19 IFPGA_RAWDEV_PMD_LOG(INFO, fmt, ## args) 20 #define IFPGA_RAWDEV_PMD_ERR(fmt, args...) \ 21 IFPGA_RAWDEV_PMD_LOG(ERR, fmt, ## args) 22 #define IFPGA_RAWDEV_PMD_WARN(fmt, args...) \ 23 IFPGA_RAWDEV_PMD_LOG(WARNING, fmt, ## args) 24 25 enum ifpga_rawdev_device_state { 26 IFPGA_IDLE, 27 IFPGA_READY, 28 IFPGA_ERROR 29 }; 30 31 /** Set a bit in the uint64 variable */ 32 #define IFPGA_BIT_SET(var, pos) \ 33 ((var) |= ((uint64_t)1 << ((pos)))) 34 35 /** Reset the bit in the variable */ 36 #define IFPGA_BIT_RESET(var, pos) \ 37 ((var) &= ~((uint64_t)1 << ((pos)))) 38 39 /** Check the bit is set in the variable */ 40 #define IFPGA_BIT_ISSET(var, pos) \ 41 (((var) & ((uint64_t)1 << ((pos)))) ? 1 : 0) 42 43 static inline struct opae_adapter * 44 ifpga_rawdev_get_priv(const struct rte_rawdev *rawdev) 45 { 46 return (struct opae_adapter *)rawdev->dev_private; 47 } 48 49 #define IFPGA_RAWDEV_MSIX_IRQ_NUM 7 50 #define IFPGA_RAWDEV_NUM 32 51 52 struct ifpga_rawdev { 53 int dev_id; 54 struct rte_rawdev *rawdev; 55 int aer_enable; 56 int intr_fd[IFPGA_RAWDEV_MSIX_IRQ_NUM+1]; 57 uint32_t aer_old[2]; 58 char fvl_bdf[8][16]; 59 char parent_bdf[16]; 60 }; 61 62 struct ifpga_rawdev * 63 ifpga_rawdev_get(const struct rte_rawdev *rawdev); 64 65 enum ifpga_irq_type { 66 IFPGA_FME_IRQ = 0, 67 IFPGA_AFU_IRQ = 1, 68 }; 69 70 int 71 ifpga_register_msix_irq(struct rte_rawdev *dev, int port_id, 72 enum ifpga_irq_type type, int vec_start, int count, 73 rte_intr_callback_fn handler, const char *name, 74 void *arg); 75 int 76 ifpga_unregister_msix_irq(enum ifpga_irq_type type, 77 int vec_start, rte_intr_callback_fn handler, void *arg); 78 79 struct rte_pci_bus *ifpga_get_pci_bus(void); 80 int ifpga_rawdev_partial_reconfigure(struct rte_rawdev *dev, int port, 81 const char *file); 82 void ifpga_rawdev_cleanup(void); 83 84 #endif /* _IFPGA_RAWDEV_H_ */ 85