6 typedef struct 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
;
25 PCIDeviceWrite
*write
;
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
);