hw/arm/aspeed: Do not sysbus-map mmio flash region directly, use alias
The flash mmio region is exposed as an AddressSpace. AddressSpaces must not be sysbus-mapped, therefore map the region using an alias. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> [ clg : Fix DMA_FLASH_ADDR() ] Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20210312182851.1922972-3-f4bug@amsat.org> Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20210407171637.777743-6-clg@kaod.org> Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
3f7a53b224
commit
e9c568dbc2
@ -179,8 +179,7 @@
|
||||
* 0x7FFFFF: 32M bytes
|
||||
*/
|
||||
#define DMA_DRAM_ADDR(s, val) ((val) & (s)->ctrl->dma_dram_mask)
|
||||
#define DMA_FLASH_ADDR(s, val) ((s)->ctrl->flash_window_base | \
|
||||
((val) & (s)->ctrl->dma_flash_mask))
|
||||
#define DMA_FLASH_ADDR(s, val) ((val) & (s)->ctrl->dma_flash_mask)
|
||||
#define DMA_LENGTH(val) ((val) & 0x01FFFFFC)
|
||||
|
||||
/* Flash opcodes. */
|
||||
@ -1385,7 +1384,9 @@ static void aspeed_smc_realize(DeviceState *dev, Error **errp)
|
||||
memory_region_init_io(&s->mmio_flash, OBJECT(s),
|
||||
&aspeed_smc_flash_default_ops, s, name,
|
||||
s->ctrl->flash_window_size);
|
||||
sysbus_init_mmio(sbd, &s->mmio_flash);
|
||||
memory_region_init_alias(&s->mmio_flash_alias, OBJECT(s), name,
|
||||
&s->mmio_flash, 0, s->ctrl->flash_window_size);
|
||||
sysbus_init_mmio(sbd, &s->mmio_flash_alias);
|
||||
|
||||
s->flashes = g_new0(AspeedSMCFlash, s->ctrl->max_peripherals);
|
||||
|
||||
|
@ -84,6 +84,7 @@ struct AspeedSMCState {
|
||||
|
||||
MemoryRegion mmio;
|
||||
MemoryRegion mmio_flash;
|
||||
MemoryRegion mmio_flash_alias;
|
||||
|
||||
qemu_irq irq;
|
||||
int irqline;
|
||||
|
Loading…
Reference in New Issue
Block a user