uint32_t *pch_msi_phandle)
{
char *nodename;
- hwaddr base_mmio = VIRT_PCI_MEM_BASE;
- hwaddr size_mmio = VIRT_PCI_MEM_SIZE;
- hwaddr base_pio = VIRT_PCI_IO_BASE;
- hwaddr size_pio = VIRT_PCI_IO_SIZE;
- hwaddr base_pcie = VIRT_PCI_CFG_BASE;
- hwaddr size_pcie = VIRT_PCI_CFG_SIZE;
+ hwaddr base_mmio = lvms->gpex.mmio64.base;
+ hwaddr size_mmio = lvms->gpex.mmio64.size;
+ hwaddr base_pio = lvms->gpex.pio.base;
+ hwaddr size_pio = lvms->gpex.pio.size;
+ hwaddr base_pcie = lvms->gpex.ecam.base;
+ hwaddr size_pcie = lvms->gpex.ecam.size;
hwaddr base = base_pcie;
const MachineState *ms = MACHINE(lvms);
qemu_fdt_setprop_cell(ms->fdt, nodename, "#size-cells", 2);
qemu_fdt_setprop_cell(ms->fdt, nodename, "linux,pci-domain", 0);
qemu_fdt_setprop_cells(ms->fdt, nodename, "bus-range", 0,
- PCIE_MMCFG_BUS(VIRT_PCI_CFG_SIZE - 1));
+ PCIE_MMCFG_BUS(size_pcie - 1));
qemu_fdt_setprop(ms->fdt, nodename, "dma-coherent", NULL, 0);
qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg",
2, base_pcie, 2, size_pcie);
PCIBus *pci_bus;
MemoryRegion *ecam_alias, *ecam_reg, *pio_alias, *pio_reg;
MemoryRegion *mmio_alias, *mmio_reg;
+ hwaddr mmio_base, mmio_size;
int i, irq;
gpex_dev = qdev_new(TYPE_GPEX_HOST);
lvms->gpex.ecam.size = VIRT_PCI_CFG_SIZE;
lvms->gpex.irq = VIRT_GSI_BASE + VIRT_DEVICE_IRQS;
lvms->gpex.bus = pci_bus;
+ mmio_base = lvms->gpex.mmio64.base;
+ mmio_size = lvms->gpex.mmio64.size;
/* Map only part size_ecam bytes of ECAM space */
ecam_alias = g_new0(MemoryRegion, 1);
ecam_reg = sysbus_mmio_get_region(d, 0);
memory_region_init_alias(ecam_alias, OBJECT(gpex_dev), "pcie-ecam",
- ecam_reg, 0, VIRT_PCI_CFG_SIZE);
- memory_region_add_subregion(get_system_memory(), VIRT_PCI_CFG_BASE,
+ ecam_reg, 0, lvms->gpex.ecam.size);
+ memory_region_add_subregion(get_system_memory(), lvms->gpex.ecam.base,
ecam_alias);
/* Map PCI mem space */
mmio_alias = g_new0(MemoryRegion, 1);
mmio_reg = sysbus_mmio_get_region(d, 1);
memory_region_init_alias(mmio_alias, OBJECT(gpex_dev), "pcie-mmio",
- mmio_reg, VIRT_PCI_MEM_BASE, VIRT_PCI_MEM_SIZE);
- memory_region_add_subregion(get_system_memory(), VIRT_PCI_MEM_BASE,
- mmio_alias);
+ mmio_reg, mmio_base, mmio_size);
+ memory_region_add_subregion(get_system_memory(), mmio_base, mmio_alias);
/* Map PCI IO port space. */
pio_alias = g_new0(MemoryRegion, 1);
pio_reg = sysbus_mmio_get_region(d, 2);
memory_region_init_alias(pio_alias, OBJECT(gpex_dev), "pcie-io", pio_reg,
- VIRT_PCI_IO_OFFSET, VIRT_PCI_IO_SIZE);
- memory_region_add_subregion(get_system_memory(), VIRT_PCI_IO_BASE,
+ VIRT_PCI_IO_OFFSET, lvms->gpex.pio.size);
+ memory_region_add_subregion(get_system_memory(), lvms->gpex.pio.base,
pio_alias);
for (i = 0; i < PCI_NUM_PINS; i++) {