aspeed/smc: Reintroduce "dram-base" property for AST2700
authorCédric Le Goater <clg@redhat.com>
Tue, 7 May 2024 14:12:12 +0000 (16:12 +0200)
committerCédric Le Goater <clg@redhat.com>
Sun, 16 Jun 2024 19:08:54 +0000 (21:08 +0200)
The Aspeed SMC device model use to have a 'sdram_base' property. It
was removed by commit d177892d4a48 ("aspeed/smc: Remove unused
"sdram-base" property") because previous changes simplified the DMA
transaction model to use an offset in RAM and not the physical
address.

The AST2700 SoC has larger address space (64-bit) and a new register
DMA DRAM Side Address High Part (0x7C) is introduced to deal with the
high bits of the DMA address. To be able to compute the offset of the
DMA transaction, as done on the other SoCs, we will need to know where
the DRAM is mapped in the address space. Re-introduce a "dram-base"
property to hold this value.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Jamin Lin <jamin_lin@aspeedtech.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
hw/ssi/aspeed_smc.c
include/hw/ssi/aspeed_smc.h

index 6e1a84c197130118d022d1b9fb607e74e844f4e2..7075bc9d61b01763630b34f28c5f12d3b9754e11 100644 (file)
@@ -1220,6 +1220,7 @@ static const VMStateDescription vmstate_aspeed_smc = {
 
 static Property aspeed_smc_properties[] = {
     DEFINE_PROP_BOOL("inject-failure", AspeedSMCState, inject_failure, false),
+    DEFINE_PROP_UINT64("dram-base", AspeedSMCState, dram_base, 0),
     DEFINE_PROP_LINK("dram", AspeedSMCState, dram_mr,
                      TYPE_MEMORY_REGION, MemoryRegion *),
     DEFINE_PROP_END_OF_LIST(),
index 8e1dda556b910fe7fd17243ef5faf08d78d5201b..8791cc0ecb112782e0a8d5bd0fe7072e89885567 100644 (file)
@@ -76,6 +76,7 @@ struct AspeedSMCState {
     AddressSpace flash_as;
     MemoryRegion *dram_mr;
     AddressSpace dram_as;
+    uint64_t     dram_base;
 
     AspeedSMCFlash flashes[ASPEED_SMC_CS_MAX];