bus/pci: support IOVA as VA in PowerVM LPARs
[dpdk.git] / drivers / raw / ifpga / ifpga_rawdev.h
index e153dba..61c8366 100644 (file)
@@ -7,6 +7,8 @@
 
 extern int ifpga_rawdev_logtype;
 
+#define IFPGA_RAWDEV_NAME_FMT "IFPGA:%02x:%02x.%x"
+
 #define IFPGA_RAWDEV_PMD_LOG(level, fmt, args...) \
        rte_log(RTE_LOG_ ## level, ifpga_rawdev_logtype, "%s(): " fmt "\n", \
                                __func__, ##args)
@@ -43,7 +45,42 @@ enum ifpga_rawdev_device_state {
 static inline struct opae_adapter *
 ifpga_rawdev_get_priv(const struct rte_rawdev *rawdev)
 {
-       return rawdev->dev_private;
+       return (struct opae_adapter *)rawdev->dev_private;
 }
 
+#define IFPGA_RAWDEV_MSIX_IRQ_NUM 7
+#define IFPGA_RAWDEV_NUM 32
+
+struct ifpga_rawdev {
+       int dev_id;
+       struct rte_rawdev *rawdev;
+       int aer_enable;
+       int intr_fd[IFPGA_RAWDEV_MSIX_IRQ_NUM+1];
+       uint32_t aer_old[2];
+       char fvl_bdf[8][16];
+       char parent_bdf[16];
+};
+
+struct ifpga_rawdev *
+ifpga_rawdev_get(const struct rte_rawdev *rawdev);
+
+enum ifpga_irq_type {
+       IFPGA_FME_IRQ = 0,
+       IFPGA_AFU_IRQ = 1,
+};
+
+int
+ifpga_register_msix_irq(struct rte_rawdev *dev, int port_id,
+               enum ifpga_irq_type type, int vec_start, int count,
+               rte_intr_callback_fn handler, const char *name,
+               void *arg);
+int
+ifpga_unregister_msix_irq(enum ifpga_irq_type type,
+               int vec_start, rte_intr_callback_fn handler, void *arg);
+
+struct rte_pci_bus *ifpga_get_pci_bus(void);
+int ifpga_rawdev_partial_reconfigure(struct rte_rawdev *dev, int port,
+       const char *file);
+void ifpga_rawdev_cleanup(void);
+
 #endif /* _IFPGA_RAWDEV_H_ */