Add socket character device
[qemu/aliguori.git] / devices / pc / pci.h
blobf49f52cd31eb2c519983179063c15d7efa6e9707
1 #ifndef PCI_DEVICE_H
2 #define PCI_DEVICE_H
4 #include "device.h"
6 typedef struct PCIDevice
8 Device parent;
10 struct PCIBus *bus;
12 uint8_t config[256];
13 uint8_t wmask[256];
14 uint8_t w1mask[256];
15 } PCIDevice;
17 typedef uint64_t (PCIDeviceRead)(PCIDevice *device, int region, uint64_t offset, int size);
18 typedef void (PCIDeviceWrite)(PCIDevice *device, int region, uint64_t offset, int size, uint64_t value);
20 typedef struct PCIDeviceClass
22 DeviceClass parent_class;
24 PCIDeviceRead *read;
25 PCIDeviceWrite *write;
26 } PCIDeviceClass;
28 void pci_device_initialize(PCIDevice *obj, const char *id);
29 void pci_device_finalize(PCIDevice *obj);
30 void pci_device_visit(PCIDevice *device, Visitor *v, const char *name, Error **errp);
32 uint32_t pci_device_config_read(PCIDevice *device, uint8_t offset, int size);
33 void pci_device_config_write(PCIDevice *device, uint8_t offset, int size, uint8_t value);
35 uint64_t pci_device_region_read(PCIDevice *device, int region, uint64_t offset, int size);
36 void pci_device_region_write(PCIDevice *device, int region, uint64_t offset, int size, uint64_t value);
38 /* Config space accessors */
39 void pci_device_set_vendor_id(PCIDevice *device, uint16_t value);
40 uint16_t pci_device_get_vendor_id(PCIDevice *device);
42 void pci_device_set_device_id(PCIDevice *device, uint16_t value);
43 uint16_t pci_device_get_device_id(PCIDevice *device);
45 void pci_device_set_command(PCIDevice *device, uint16_t value);
46 uint16_t pci_device_get_command(PCIDevice *device);
48 void pci_device_set_status(PCIDevice *device, uint16_t value);
49 uint16_t pci_device_get_status(PCIDevice *device);
51 void pci_device_set_class_revision(PCIDevice *device, uint8_t value);
52 uint8_t pci_device_get_class_revision(PCIDevice *device);
54 void pci_device_set_class_prog(PCIDevice *device, uint8_t value);
55 uint8_t pci_device_get_class_prog(PCIDevice *device);
57 void pci_device_set_class_device(PCIDevice *device, uint16_t value);
58 uint16_t pci_device_get_class_device(PCIDevice *device);
60 void pci_device_set_cache_line_size(PCIDevice *device, uint8_t value);
61 uint8_t pci_device_get_cache_line_size(PCIDevice *device);
63 void pci_device_set_latency_timer(PCIDevice *device, uint8_t value);
64 uint8_t pci_device_get_latency_timer(PCIDevice *device);
66 void pci_device_set_header_type(PCIDevice *device, uint8_t value);
67 uint8_t pci_device_get_header_type(PCIDevice *device);
69 void pci_device_set_bist(PCIDevice *device, uint8_t value);
70 uint8_t pci_device_get_bist(PCIDevice *device);
72 #endif