mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-09-09 08:17:53 -06:00
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
3 changed files with 51 additions and 50 deletions
|
@ -23,7 +23,7 @@
|
||||||
#include "hw/hw.h"
|
#include "hw/hw.h"
|
||||||
#include "hw/sysbus.h"
|
#include "hw/sysbus.h"
|
||||||
#include "hw/pci/pci.h"
|
#include "hw/pci/pci.h"
|
||||||
#include "hw/pci/pci_bus.h"
|
#include "hw/pci/pci_bridge.h"
|
||||||
#include "hw/pci/pcie_host.h"
|
#include "hw/pci/pcie_host.h"
|
||||||
|
|
||||||
#define TYPE_XILINX_PCIE_HOST "xilinx-pcie-host"
|
#define TYPE_XILINX_PCIE_HOST "xilinx-pcie-host"
|
||||||
|
|
|
@ -27,6 +27,54 @@
|
||||||
#define QEMU_PCI_BRIDGE_H
|
#define QEMU_PCI_BRIDGE_H
|
||||||
|
|
||||||
#include "hw/pci/pci.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_CHASSIS_NR "chassis_nr"
|
||||||
#define PCI_BRIDGE_DEV_PROP_MSI "msi"
|
#define PCI_BRIDGE_DEV_PROP_MSI "msi"
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
#define QEMU_PCI_BUS_H
|
#define QEMU_PCI_BUS_H
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PCI Bus and Bridge datastructures.
|
* PCI Bus datastructures.
|
||||||
*
|
*
|
||||||
* Do not access the following members directly;
|
* 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 {
|
typedef struct PCIBusClass {
|
||||||
|
@ -44,51 +44,4 @@ struct PCIBus {
|
||||||
Notifier machine_done;
|
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 */
|
#endif /* QEMU_PCI_BUS_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue