diff options
Diffstat (limited to 'hw/ppc/ppc4xx_devs.c')
-rw-r--r-- | hw/ppc/ppc4xx_devs.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c index fcbda57c55..2e0343970f 100644 --- a/hw/ppc/ppc4xx_devs.c +++ b/hw/ppc/ppc4xx_devs.c @@ -41,7 +41,7 @@ typedef struct ppc4xx_sdram_t ppc4xx_sdram_t; struct ppc4xx_sdram_t { uint32_t addr; - int nbanks; + int nbanks; /* Banks to use from the 4, e.g. when board has less slots */ Ppc4xxSdramBank bank[4]; uint32_t besr0; uint32_t besr1; @@ -348,19 +348,17 @@ static void sdram_reset(void *opaque) } void ppc4xx_sdram_init(CPUPPCState *env, qemu_irq irq, int nbanks, - Ppc4xxSdramBank *ram_banks) + MemoryRegion *ram) { ppc4xx_sdram_t *sdram; - int i; + const ram_addr_t valid_bank_sizes[] = { + 256 * MiB, 128 * MiB, 64 * MiB, 32 * MiB, 16 * MiB, 8 * MiB, 4 * MiB, 0 + }; sdram = g_new0(ppc4xx_sdram_t, 1); sdram->irq = irq; sdram->nbanks = nbanks; - for (i = 0; i < nbanks; i++) { - sdram->bank[i].ram = ram_banks[i].ram; - sdram->bank[i].base = ram_banks[i].base; - sdram->bank[i].size = ram_banks[i].size; - } + ppc4xx_sdram_banks(ram, sdram->nbanks, sdram->bank, valid_bank_sizes); qemu_register_reset(&sdram_reset, sdram); ppc_dcr_register(env, SDRAM0_CFGADDR, sdram, &dcr_read_sdram, &dcr_write_sdram); |