mirror of https://github.com/xemu-project/xemu.git
dino: move PCI windows initialisation to dino_pcihost_init()
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Acked-by: Helge Deller <deller@gmx.de> Message-Id: <20220504092600.10048-5-mark.cave-ayland@ilande.co.uk> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
63901b6cc4
commit
cc363c4a10
|
@ -519,7 +519,6 @@ PCIBus *dino_init(MemoryRegion *addr_space,
|
||||||
DeviceState *dev;
|
DeviceState *dev;
|
||||||
DinoState *s;
|
DinoState *s;
|
||||||
PCIBus *b;
|
PCIBus *b;
|
||||||
int i;
|
|
||||||
|
|
||||||
dev = qdev_new(TYPE_DINO_PCI_HOST_BRIDGE);
|
dev = qdev_new(TYPE_DINO_PCI_HOST_BRIDGE);
|
||||||
s = DINO_PCI_HOST_BRIDGE(dev);
|
s = DINO_PCI_HOST_BRIDGE(dev);
|
||||||
|
@ -532,16 +531,6 @@ PCIBus *dino_init(MemoryRegion *addr_space,
|
||||||
memory_region_add_subregion(addr_space, DINO_HPA,
|
memory_region_add_subregion(addr_space, DINO_HPA,
|
||||||
sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
|
sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
|
||||||
|
|
||||||
/* Set up windows into PCI bus memory. */
|
|
||||||
for (i = 1; i < 31; i++) {
|
|
||||||
uint32_t addr = 0xf0000000 + i * DINO_MEM_CHUNK_SIZE;
|
|
||||||
char *name = g_strdup_printf("PCI Outbound Window %d", i);
|
|
||||||
memory_region_init_alias(&s->pci_mem_alias[i], OBJECT(s),
|
|
||||||
name, &s->pci_mem, addr,
|
|
||||||
DINO_MEM_CHUNK_SIZE);
|
|
||||||
g_free(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set up PCI view of memory: Bus master address space. */
|
/* Set up PCI view of memory: Bus master address space. */
|
||||||
memory_region_init(&s->bm, OBJECT(s), "bm-dino", 4 * GiB);
|
memory_region_init(&s->bm, OBJECT(s), "bm-dino", 4 * GiB);
|
||||||
memory_region_init_alias(&s->bm_ram_alias, OBJECT(s),
|
memory_region_init_alias(&s->bm_ram_alias, OBJECT(s),
|
||||||
|
@ -575,6 +564,7 @@ static void dino_pcihost_init(Object *obj)
|
||||||
DinoState *s = DINO_PCI_HOST_BRIDGE(obj);
|
DinoState *s = DINO_PCI_HOST_BRIDGE(obj);
|
||||||
PCIHostState *phb = PCI_HOST_BRIDGE(obj);
|
PCIHostState *phb = PCI_HOST_BRIDGE(obj);
|
||||||
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
|
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
|
||||||
|
int i;
|
||||||
|
|
||||||
/* Dino PCI access from main memory. */
|
/* Dino PCI access from main memory. */
|
||||||
memory_region_init_io(&s->this_mem, OBJECT(s), &dino_chip_ops,
|
memory_region_init_io(&s->this_mem, OBJECT(s), &dino_chip_ops,
|
||||||
|
@ -600,6 +590,16 @@ static void dino_pcihost_init(Object *obj)
|
||||||
&s->pci_mem, get_system_io(),
|
&s->pci_mem, get_system_io(),
|
||||||
PCI_DEVFN(0, 0), 32, TYPE_PCI_BUS);
|
PCI_DEVFN(0, 0), 32, TYPE_PCI_BUS);
|
||||||
|
|
||||||
|
/* Set up windows into PCI bus memory. */
|
||||||
|
for (i = 1; i < 31; i++) {
|
||||||
|
uint32_t addr = 0xf0000000 + i * DINO_MEM_CHUNK_SIZE;
|
||||||
|
char *name = g_strdup_printf("PCI Outbound Window %d", i);
|
||||||
|
memory_region_init_alias(&s->pci_mem_alias[i], OBJECT(s),
|
||||||
|
name, &s->pci_mem, addr,
|
||||||
|
DINO_MEM_CHUNK_SIZE);
|
||||||
|
g_free(name);
|
||||||
|
}
|
||||||
|
|
||||||
sysbus_init_mmio(sbd, &s->this_mem);
|
sysbus_init_mmio(sbd, &s->this_mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue