pci: use constants for devices under the 1B36 device ID, document them
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
b8ef62a9b7
commit
5c03a2542f
|
@ -33,3 +33,18 @@ maintained as part of the virtio specification.
|
||||||
1af4:1110 ivshmem device (shared memory, docs/specs/ivshmem_device_spec.txt)
|
1af4:1110 ivshmem device (shared memory, docs/specs/ivshmem_device_spec.txt)
|
||||||
|
|
||||||
All other device IDs are reserved.
|
All other device IDs are reserved.
|
||||||
|
|
||||||
|
1b36 vendor ID
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The 0000 -> 00ff device ID range is used as follows for QEMU-specific
|
||||||
|
PCI devices (other than virtio):
|
||||||
|
|
||||||
|
1b36:0001 PCI-PCI bridge
|
||||||
|
1b36:0002 PCI serial port (16550A) adapter (docs/specs/pci-serial.txt)
|
||||||
|
1b36:0003 PCI Dual-port 16550A adapter (docs/specs/pci-serial.txt)
|
||||||
|
1b36:0004 PCI Quad-port 16550A adapter (docs/specs/pci-serial.txt)
|
||||||
|
|
||||||
|
All these devices are documented in docs/specs.
|
||||||
|
|
||||||
|
The 0100 device ID is used for the QXL video card device.
|
||||||
|
|
|
@ -79,6 +79,13 @@
|
||||||
#define PCI_DEVICE_ID_VIRTIO_RNG 0x1005
|
#define PCI_DEVICE_ID_VIRTIO_RNG 0x1005
|
||||||
#define PCI_DEVICE_ID_VIRTIO_9P 0x1009
|
#define PCI_DEVICE_ID_VIRTIO_9P 0x1009
|
||||||
|
|
||||||
|
#define PCI_VENDOR_ID_REDHAT 0x1b36
|
||||||
|
#define PCI_DEVICE_ID_REDHAT_BRIDGE 0x0001
|
||||||
|
#define PCI_DEVICE_ID_REDHAT_SERIAL 0x0002
|
||||||
|
#define PCI_DEVICE_ID_REDHAT_SERIAL2 0x0003
|
||||||
|
#define PCI_DEVICE_ID_REDHAT_SERIAL4 0x0004
|
||||||
|
#define PCI_DEVICE_ID_REDHAT_QXL 0x0100
|
||||||
|
|
||||||
#define FMT_PCIBUS PRIx64
|
#define FMT_PCIBUS PRIx64
|
||||||
|
|
||||||
typedef void PCIConfigWriteFunc(PCIDevice *pci_dev,
|
typedef void PCIConfigWriteFunc(PCIDevice *pci_dev,
|
||||||
|
|
|
@ -27,10 +27,6 @@
|
||||||
#include "exec/memory.h"
|
#include "exec/memory.h"
|
||||||
#include "pci/pci_bus.h"
|
#include "pci/pci_bus.h"
|
||||||
|
|
||||||
#define REDHAT_PCI_VENDOR_ID 0x1b36
|
|
||||||
#define PCI_BRIDGE_DEV_VENDOR_ID REDHAT_PCI_VENDOR_ID
|
|
||||||
#define PCI_BRIDGE_DEV_DEVICE_ID 0x1
|
|
||||||
|
|
||||||
struct PCIBridgeDev {
|
struct PCIBridgeDev {
|
||||||
PCIBridge bridge;
|
PCIBridge bridge;
|
||||||
MemoryRegion bar;
|
MemoryRegion bar;
|
||||||
|
@ -146,8 +142,8 @@ static void pci_bridge_dev_class_init(ObjectClass *klass, void *data)
|
||||||
k->init = pci_bridge_dev_initfn;
|
k->init = pci_bridge_dev_initfn;
|
||||||
k->exit = pci_bridge_dev_exitfn;
|
k->exit = pci_bridge_dev_exitfn;
|
||||||
k->config_write = pci_bridge_dev_write_config;
|
k->config_write = pci_bridge_dev_write_config;
|
||||||
k->vendor_id = PCI_BRIDGE_DEV_VENDOR_ID;
|
k->vendor_id = PCI_VENDOR_ID_REDHAT;
|
||||||
k->device_id = PCI_BRIDGE_DEV_DEVICE_ID;
|
k->device_id = PCI_DEVICE_ID_REDHAT_BRIDGE;
|
||||||
k->class_id = PCI_CLASS_BRIDGE_PCI;
|
k->class_id = PCI_CLASS_BRIDGE_PCI;
|
||||||
k->is_bridge = 1,
|
k->is_bridge = 1,
|
||||||
dc->desc = "Standard PCI Bridge";
|
dc->desc = "Standard PCI Bridge";
|
||||||
|
|
|
@ -185,8 +185,8 @@ static void serial_pci_class_initfn(ObjectClass *klass, void *data)
|
||||||
PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
|
PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
|
||||||
pc->init = serial_pci_init;
|
pc->init = serial_pci_init;
|
||||||
pc->exit = serial_pci_exit;
|
pc->exit = serial_pci_exit;
|
||||||
pc->vendor_id = 0x1b36; /* Red Hat */
|
pc->vendor_id = PCI_VENDOR_ID_REDHAT;
|
||||||
pc->device_id = 0x0002;
|
pc->device_id = PCI_DEVICE_ID_REDHAT_SERIAL;
|
||||||
pc->revision = 1;
|
pc->revision = 1;
|
||||||
pc->class_id = PCI_CLASS_COMMUNICATION_SERIAL;
|
pc->class_id = PCI_CLASS_COMMUNICATION_SERIAL;
|
||||||
dc->vmsd = &vmstate_pci_serial;
|
dc->vmsd = &vmstate_pci_serial;
|
||||||
|
@ -199,8 +199,8 @@ static void multi_2x_serial_pci_class_initfn(ObjectClass *klass, void *data)
|
||||||
PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
|
PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
|
||||||
pc->init = multi_serial_pci_init;
|
pc->init = multi_serial_pci_init;
|
||||||
pc->exit = multi_serial_pci_exit;
|
pc->exit = multi_serial_pci_exit;
|
||||||
pc->vendor_id = 0x1b36; /* Red Hat */
|
pc->vendor_id = PCI_VENDOR_ID_REDHAT;
|
||||||
pc->device_id = 0x0003;
|
pc->device_id = PCI_DEVICE_ID_REDHAT_SERIAL2;
|
||||||
pc->revision = 1;
|
pc->revision = 1;
|
||||||
pc->class_id = PCI_CLASS_COMMUNICATION_SERIAL;
|
pc->class_id = PCI_CLASS_COMMUNICATION_SERIAL;
|
||||||
dc->vmsd = &vmstate_pci_multi_serial;
|
dc->vmsd = &vmstate_pci_multi_serial;
|
||||||
|
@ -213,8 +213,8 @@ static void multi_4x_serial_pci_class_initfn(ObjectClass *klass, void *data)
|
||||||
PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
|
PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
|
||||||
pc->init = multi_serial_pci_init;
|
pc->init = multi_serial_pci_init;
|
||||||
pc->exit = multi_serial_pci_exit;
|
pc->exit = multi_serial_pci_exit;
|
||||||
pc->vendor_id = 0x1b36; /* Red Hat */
|
pc->vendor_id = PCI_VENDOR_ID_REDHAT;
|
||||||
pc->device_id = 0x0004;
|
pc->device_id = PCI_DEVICE_ID_REDHAT_SERIAL4;
|
||||||
pc->revision = 1;
|
pc->revision = 1;
|
||||||
pc->class_id = PCI_CLASS_COMMUNICATION_SERIAL;
|
pc->class_id = PCI_CLASS_COMMUNICATION_SERIAL;
|
||||||
dc->vmsd = &vmstate_pci_multi_serial;
|
dc->vmsd = &vmstate_pci_multi_serial;
|
||||||
|
|
Loading…
Reference in a new issue