blob: f6355d61acd481530e8f143fe0d80f7e4364dacd [file] [log] [blame]
#ifndef VNPLUG_DEV_H
#define VNPLUG_DEV_H
#define PCI_VENDOR_ID_SILICOM 0x1374
#define PCI_DEVICE_ID_VNPLUG_DEV 0x00ff
#define VNPLUGDEV_REG_BAR_SIZE TARGET_PAGE_SIZE
#define VNPLUGDEV_REG_OFF_ID 0x00
#define VNPLUGDEV_REG_OFF_DOORBELL 0x04
#define VNPLUGDEV_REG_OFF_BASE_MM_SIZE 0x08
#define VNPLUGDEV_BASE_MM_BAR 2
#define VNPLUGDEV_MAX_MM_BARS 4
struct EventfdEntry {
PCIDevice *pdev;
int32_t vector;
};
struct vNPlugDev {
PCIDevice dev;
uint32_t dev_id;
uint32_t doorbell;
uint32_t dev_size[VNPLUGDEV_MAX_MM_BARS];
uint64_t /* void* */ dev_vma_ptr[VNPLUGDEV_MAX_MM_BARS];
uint64_t dev_offset[VNPLUGDEV_MAX_MM_BARS];
pcibus_t mm_pci_addr[VNPLUGDEV_MAX_MM_BARS];
/* close your eyes (qdev properties) */
uint32_t dev_size_0;
uint64_t dev_vma_ptr_0;
uint32_t dev_size_1;
uint64_t dev_vma_ptr_1;
uint32_t dev_size_2;
uint64_t dev_vma_ptr_2;
uint32_t dev_size_3;
uint64_t dev_vma_ptr_3;
/* reopen your eyes */
uint32_t vectors;
int dev_mmio_io_addr;
pcibus_t mmio_addr;
uint32_t backend_events_n;
int *backend_eventfds;
uint32_t guest_events_n;
int *guest_eventfds;
uint64_t /* struct vNPlugDevClientInfo* */ dev_client;
};
#endif /* VNPLUG_DEV_H */