diff options
author | Cédric Le Goater | 2022-03-08 09:18:11 +0100 |
---|---|---|
committer | Cédric Le Goater | 2022-03-08 09:18:11 +0100 |
commit | dcacfa945103d179e71bb1c853f2a13aca5ca4b0 (patch) | |
tree | ae7908caa9486db0d70bc71887e2aa7a1761f3f0 /hw/ssi | |
parent | aspeed: Fix a potential memory leak bug in write_boot_rom() (diff) | |
download | qemu-dcacfa945103d179e71bb1c853f2a13aca5ca4b0.tar.gz qemu-dcacfa945103d179e71bb1c853f2a13aca5ca4b0.tar.xz qemu-dcacfa945103d179e71bb1c853f2a13aca5ca4b0.zip |
aspeed/smc: Use max number of CE instead of 'num_cs'
The Aspeed SMC model uses the 'num_cs' field to allocate resources
fitting the number of devices of the machine. This is a small
optimization without real need in the controller. Simplify modelling
and use the max_peripherals field instead.
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20220307071856.1410731-2-clg@kaod.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Diffstat (limited to 'hw/ssi')
-rw-r--r-- | hw/ssi/aspeed_smc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index d899be17fd..a5d8bb717f 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -693,7 +693,7 @@ static void aspeed_smc_reset(DeviceState *d) } /* Unselect all peripherals */ - for (i = 0; i < s->num_cs; ++i) { + for (i = 0; i < asc->max_peripherals; ++i) { s->regs[s->r_ctrl0 + i] |= CTRL_CE_STOP_ACTIVE; qemu_set_irq(s->cs_lines[i], true); } @@ -1042,7 +1042,7 @@ static void aspeed_smc_write(void *opaque, hwaddr addr, uint64_t data, addr < s->r_timings + asc->nregs_timings) || addr == s->r_ce_ctrl) { s->regs[addr] = value; - } else if (addr >= s->r_ctrl0 && addr < s->r_ctrl0 + s->num_cs) { + } else if (addr >= s->r_ctrl0 && addr < s->r_ctrl0 + asc->max_peripherals) { int cs = addr - s->r_ctrl0; aspeed_smc_flash_update_ctrl(&s->flashes[cs], value); } else if (addr >= R_SEG_ADDR0 && @@ -1139,9 +1139,9 @@ static void aspeed_smc_realize(DeviceState *dev, Error **errp) s->spi = ssi_create_bus(dev, "spi"); /* Setup cs_lines for peripherals */ - s->cs_lines = g_new0(qemu_irq, s->num_cs); + s->cs_lines = g_new0(qemu_irq, asc->max_peripherals); - for (i = 0; i < s->num_cs; ++i) { + for (i = 0; i < asc->max_peripherals; ++i) { sysbus_init_irq(sbd, &s->cs_lines[i]); } |