14932b58aSMichael S. Tsirkin #ifndef PCI_H 24932b58aSMichael S. Tsirkin #define PCI_H 3456c55bcSAndrew Jones /* 4456c55bcSAndrew Jones * API for scanning a PCI bus for a given device, as well to access 5456c55bcSAndrew Jones * BAR registers. 6456c55bcSAndrew Jones * 7456c55bcSAndrew Jones * Copyright (C) 2013, Red Hat Inc, Michael S. Tsirkin <mst@redhat.com> 8456c55bcSAndrew Jones * 9456c55bcSAndrew Jones * This work is licensed under the terms of the GNU LGPL, version 2. 10456c55bcSAndrew Jones */ 114932b58aSMichael S. Tsirkin #include "libcflat.h" 124932b58aSMichael S. Tsirkin 134932b58aSMichael S. Tsirkin typedef uint16_t pcidevaddr_t; 144932b58aSMichael S. Tsirkin enum { 15*d3a8ad49SAndrew Jones PCIDEVADDR_INVALID = 0xffff, 164932b58aSMichael S. Tsirkin }; 174932b58aSMichael S. Tsirkin pcidevaddr_t pci_find_dev(uint16_t vendor_id, uint16_t device_id); 184932b58aSMichael S. Tsirkin unsigned long pci_bar_addr(pcidevaddr_t dev, int bar_num); 194932b58aSMichael S. Tsirkin bool pci_bar_is_memory(pcidevaddr_t dev, int bar_num); 204932b58aSMichael S. Tsirkin bool pci_bar_is_valid(pcidevaddr_t dev, int bar_num); 214932b58aSMichael S. Tsirkin 22289ebf8fSAndrew Jones /* 23289ebf8fSAndrew Jones * pci-testdev is a driver for the pci-testdev qemu pci device. The 24289ebf8fSAndrew Jones * device enables testing mmio and portio exits, and measuring their 25289ebf8fSAndrew Jones * speed. 26289ebf8fSAndrew Jones */ 27289ebf8fSAndrew Jones #define PCI_VENDOR_ID_REDHAT 0x1b36 28289ebf8fSAndrew Jones #define PCI_DEVICE_ID_REDHAT_TEST 0x0005 29289ebf8fSAndrew Jones 30289ebf8fSAndrew Jones #define PCI_TESTDEV_NUM_BARS 2 31289ebf8fSAndrew Jones 32289ebf8fSAndrew Jones struct pci_test_dev_hdr { 33289ebf8fSAndrew Jones uint8_t test; 34289ebf8fSAndrew Jones uint8_t width; 35289ebf8fSAndrew Jones uint8_t pad0[2]; 36289ebf8fSAndrew Jones uint32_t offset; 37289ebf8fSAndrew Jones uint32_t data; 38289ebf8fSAndrew Jones uint32_t count; 39289ebf8fSAndrew Jones uint8_t name[]; 40289ebf8fSAndrew Jones }; 41289ebf8fSAndrew Jones 42289ebf8fSAndrew Jones #endif /* PCI_H */ 43