xref: /kvm-unit-tests/lib/pci.h (revision d3a8ad4971a108f5ab29224c7585d57e7a913083)
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