diff options
author | Philippe Mathieu-Daudé | 2021-05-01 10:03:51 +0200 |
---|---|---|
committer | Cédric Le Goater | 2021-05-01 10:03:51 +0200 |
commit | e9c568dbc22551f069dbc30ca3b61e168f494d47 (patch) | |
tree | 0b5d3f6bcd743b3c2642df0ca1b4bd59562319e4 | |
parent | aspeed/i2c: Rename DMA address space (diff) | |
download | qemu-e9c568dbc22551f069dbc30ca3b61e168f494d47.tar.gz qemu-e9c568dbc22551f069dbc30ca3b61e168f494d47.tar.xz qemu-e9c568dbc22551f069dbc30ca3b61e168f494d47.zip |
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>
-rw-r--r-- | hw/ssi/aspeed_smc.c | 7 | ||||
-rw-r--r-- | include/hw/ssi/aspeed_smc.h | 1 |
2 files changed, 5 insertions, 3 deletions
diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index 884e08aca4..50ea907aef 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -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); diff --git a/include/hw/ssi/aspeed_smc.h b/include/hw/ssi/aspeed_smc.h index ccd71d9b53..6ea2871cd8 100644 --- a/include/hw/ssi/aspeed_smc.h +++ b/include/hw/ssi/aspeed_smc.h @@ -84,6 +84,7 @@ struct AspeedSMCState { MemoryRegion mmio; MemoryRegion mmio_flash; + MemoryRegion mmio_flash_alias; qemu_irq irq; int irqline; |