pci: Move bridge data structures from pci_bus.h to pci_bridge.h
include/hw/pci/pci_bus.h contains several data structures related to PCI bridges that aren't needed by most users of pci_bus.h. We already have a pci_bridge.h, so move them there. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
parent
1115ff6d26
commit
791bf3c8f0
|
@ -23,7 +23,7 @@
|
|||
#include "hw/hw.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "hw/pci/pci.h"
|
||||
#include "hw/pci/pci_bus.h"
|
||||
#include "hw/pci/pci_bridge.h"
|
||||
#include "hw/pci/pcie_host.h"
|
||||
|
||||
#define TYPE_XILINX_PCIE_HOST "xilinx-pcie-host"
|
||||
|
|
|
@ -27,6 +27,54 @@
|
|||
#define QEMU_PCI_BRIDGE_H
|
||||
|
||||
#include "hw/pci/pci.h"
|
||||
#include "hw/pci/pci_bus.h"
|
||||
|
||||
typedef struct PCIBridgeWindows PCIBridgeWindows;
|
||||
|
||||
/*
|
||||
* Aliases for each of the address space windows that the bridge
|
||||
* can forward. Mapped into the bridge's parent's address space,
|
||||
* as subregions.
|
||||
*/
|
||||
struct PCIBridgeWindows {
|
||||
MemoryRegion alias_pref_mem;
|
||||
MemoryRegion alias_mem;
|
||||
MemoryRegion alias_io;
|
||||
/*
|
||||
* When bridge control VGA forwarding is enabled, bridges will
|
||||
* provide positive decode on the PCI VGA defined I/O port and
|
||||
* MMIO ranges. When enabled forwarding is only qualified on the
|
||||
* I/O and memory enable bits in the bridge command register.
|
||||
*/
|
||||
MemoryRegion alias_vga[QEMU_PCI_VGA_NUM_REGIONS];
|
||||
};
|
||||
|
||||
#define TYPE_PCI_BRIDGE "base-pci-bridge"
|
||||
#define PCI_BRIDGE(obj) OBJECT_CHECK(PCIBridge, (obj), TYPE_PCI_BRIDGE)
|
||||
|
||||
struct PCIBridge {
|
||||
/*< private >*/
|
||||
PCIDevice parent_obj;
|
||||
/*< public >*/
|
||||
|
||||
/* private member */
|
||||
PCIBus sec_bus;
|
||||
/*
|
||||
* Memory regions for the bridge's address spaces. These regions are not
|
||||
* directly added to system_memory/system_io or its descendants.
|
||||
* Bridge's secondary bus points to these, so that devices
|
||||
* under the bridge see these regions as its address spaces.
|
||||
* The regions are as large as the entire address space -
|
||||
* they don't take into account any windows.
|
||||
*/
|
||||
MemoryRegion address_space_mem;
|
||||
MemoryRegion address_space_io;
|
||||
|
||||
PCIBridgeWindows *windows;
|
||||
|
||||
pci_map_irq_fn map_irq;
|
||||
const char *bus_name;
|
||||
};
|
||||
|
||||
#define PCI_BRIDGE_DEV_PROP_CHASSIS_NR "chassis_nr"
|
||||
#define PCI_BRIDGE_DEV_PROP_MSI "msi"
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
#define QEMU_PCI_BUS_H
|
||||
|
||||
/*
|
||||
* PCI Bus and Bridge datastructures.
|
||||
* PCI Bus datastructures.
|
||||
*
|
||||
* Do not access the following members directly;
|
||||
* use accessor functions in pci.h, pci_bridge.h
|
||||
* use accessor functions in pci.h
|
||||
*/
|
||||
|
||||
typedef struct PCIBusClass {
|
||||
|
@ -44,51 +44,4 @@ struct PCIBus {
|
|||
Notifier machine_done;
|
||||
};
|
||||
|
||||
typedef struct PCIBridgeWindows PCIBridgeWindows;
|
||||
|
||||
/*
|
||||
* Aliases for each of the address space windows that the bridge
|
||||
* can forward. Mapped into the bridge's parent's address space,
|
||||
* as subregions.
|
||||
*/
|
||||
struct PCIBridgeWindows {
|
||||
MemoryRegion alias_pref_mem;
|
||||
MemoryRegion alias_mem;
|
||||
MemoryRegion alias_io;
|
||||
/*
|
||||
* When bridge control VGA forwarding is enabled, bridges will
|
||||
* provide positive decode on the PCI VGA defined I/O port and
|
||||
* MMIO ranges. When enabled forwarding is only qualified on the
|
||||
* I/O and memory enable bits in the bridge command register.
|
||||
*/
|
||||
MemoryRegion alias_vga[QEMU_PCI_VGA_NUM_REGIONS];
|
||||
};
|
||||
|
||||
#define TYPE_PCI_BRIDGE "base-pci-bridge"
|
||||
#define PCI_BRIDGE(obj) OBJECT_CHECK(PCIBridge, (obj), TYPE_PCI_BRIDGE)
|
||||
|
||||
struct PCIBridge {
|
||||
/*< private >*/
|
||||
PCIDevice parent_obj;
|
||||
/*< public >*/
|
||||
|
||||
/* private member */
|
||||
PCIBus sec_bus;
|
||||
/*
|
||||
* Memory regions for the bridge's address spaces. These regions are not
|
||||
* directly added to system_memory/system_io or its descendants.
|
||||
* Bridge's secondary bus points to these, so that devices
|
||||
* under the bridge see these regions as its address spaces.
|
||||
* The regions are as large as the entire address space -
|
||||
* they don't take into account any windows.
|
||||
*/
|
||||
MemoryRegion address_space_mem;
|
||||
MemoryRegion address_space_io;
|
||||
|
||||
PCIBridgeWindows *windows;
|
||||
|
||||
pci_map_irq_fn map_irq;
|
||||
const char *bus_name;
|
||||
};
|
||||
|
||||
#endif /* QEMU_PCI_BUS_H */
|
||||
|
|
Loading…
Reference in a new issue