[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 10/17] aspeed/smc: Restore default AHB window mapping at reset
From: |
Cédric Le Goater |
Subject: |
[PATCH 10/17] aspeed/smc: Restore default AHB window mapping at reset |
Date: |
Tue, 19 Nov 2019 15:12:04 +0100 |
The current model only restores the Segment Register values but leaves
the previous CS mapping behind. Introduce a helper setting the
register value and mapping the region at the requested address. Use
this helper when a Segment register is set and at reset.
Signed-off-by: Cédric Le Goater <address@hidden>
Reviewed-by: Joel Stanley <address@hidden>
Signed-off-by: Cédric Le Goater <address@hidden>
---
hw/ssi/aspeed_smc.c | 32 +++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)
diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c
index f0c7bbbad302..955ec21852ac 100644
--- a/hw/ssi/aspeed_smc.c
+++ b/hw/ssi/aspeed_smc.c
@@ -475,10 +475,26 @@ static bool aspeed_smc_flash_overlap(const AspeedSMCState
*s,
return false;
}
+static void aspeed_smc_flash_set_segment_region(AspeedSMCState *s, int cs,
+ uint64_t regval)
+{
+ AspeedSMCFlash *fl = &s->flashes[cs];
+ AspeedSegments seg;
+
+ s->ctrl->reg_to_segment(s, regval, &seg);
+
+ memory_region_transaction_begin();
+ memory_region_set_size(&fl->mmio, seg.size);
+ memory_region_set_address(&fl->mmio, seg.addr -
s->ctrl->flash_window_base);
+ memory_region_set_enabled(&fl->mmio, true);
+ memory_region_transaction_commit();
+
+ s->regs[R_SEG_ADDR0 + cs] = regval;
+}
+
static void aspeed_smc_flash_set_segment(AspeedSMCState *s, int cs,
uint64_t new)
{
- AspeedSMCFlash *fl = &s->flashes[cs];
AspeedSegments seg;
s->ctrl->reg_to_segment(s, new, &seg);
@@ -529,13 +545,7 @@ static void aspeed_smc_flash_set_segment(AspeedSMCState
*s, int cs,
aspeed_smc_flash_overlap(s, &seg, cs);
/* All should be fine now to move the region */
- memory_region_transaction_begin();
- memory_region_set_size(&fl->mmio, seg.size);
- memory_region_set_address(&fl->mmio, seg.addr -
s->ctrl->flash_window_base);
- memory_region_set_enabled(&fl->mmio, true);
- memory_region_transaction_commit();
-
- s->regs[R_SEG_ADDR0 + cs] = new;
+ aspeed_smc_flash_set_segment_region(s, cs, new);
}
static uint64_t aspeed_smc_flash_default_read(void *opaque, hwaddr addr,
@@ -897,10 +907,10 @@ static void aspeed_smc_reset(DeviceState *d)
qemu_set_irq(s->cs_lines[i], true);
}
- /* setup default segment register values for all */
+ /* setup the default segment register values and regions for all */
for (i = 0; i < s->ctrl->max_slaves; ++i) {
- s->regs[R_SEG_ADDR0 + i] =
- s->ctrl->segment_to_reg(s, &s->ctrl->segments[i]);
+ aspeed_smc_flash_set_segment_region(s, i,
+ s->ctrl->segment_to_reg(s, &s->ctrl->segments[i]));
}
/* HW strapping flash type for the AST2600 controllers */
--
2.21.0
- [PATCH 00/17] aspeed: extensions and fixes, Cédric Le Goater, 2019/11/19
- [PATCH 01/17] aspeed/i2c: Add support for pool buffer transfers, Cédric Le Goater, 2019/11/19
- [PATCH 02/17] aspeed/i2c: Check SRAM enablement on AST2500, Cédric Le Goater, 2019/11/19
- [PATCH 03/17] aspeed: Add a DRAM memory region at the SoC level, Cédric Le Goater, 2019/11/19
- [PATCH 04/17] aspeed/i2c: Add support for DMA transfers, Cédric Le Goater, 2019/11/19
- [PATCH 05/17] aspeed/i2c: Add trace events, Cédric Le Goater, 2019/11/19
- [PATCH 06/17] aspeed/sdmc: Make ast2600 default 1G, Cédric Le Goater, 2019/11/19
- [PATCH 07/17] aspeed/scu: Fix W1C behavior, Cédric Le Goater, 2019/11/19
- [PATCH 08/17] watchdog/aspeed: Improve watchdog timeout message, Cédric Le Goater, 2019/11/19
- [PATCH 09/17] watchdog/aspeed: Fix AST2600 frequency behaviour, Cédric Le Goater, 2019/11/19
- [PATCH 10/17] aspeed/smc: Restore default AHB window mapping at reset,
Cédric Le Goater <=
- [PATCH 11/17] aspeed/smc: Do not map disabled segment on the AST2600, Cédric Le Goater, 2019/11/19
- [PATCH 12/17] aspeed/smc: Add AST2600 timings registers, Cédric Le Goater, 2019/11/19
- [PATCH 13/17] aspeed: Remove AspeedBoardConfig array and use AspeedMachineClass, Cédric Le Goater, 2019/11/19
- [PATCH 14/17] aspeed: Add support for the tacoma-bmc board, Cédric Le Goater, 2019/11/19
- [PATCH 15/17] gpio: fix memory leak in aspeed_gpio_init(), Cédric Le Goater, 2019/11/19
- [PATCH 16/17] aspeed: Change the "scu" property definition, Cédric Le Goater, 2019/11/19
- [PATCH 17/17] aspeed: Change the "nic" property definition, Cédric Le Goater, 2019/11/19