hw/arm/collie: Create the RAM in the board
The SDRAM is incorrectly created in the SA1110 SoC. Move its creation in the board code, this will later allow the board to have the QOM ownership of the RAM. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-id: 20191021190653.9511-4-philmd@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
eba599977d
commit
3cd892daa3
@ -27,9 +27,13 @@ static void collie_init(MachineState *machine)
|
|||||||
{
|
{
|
||||||
StrongARMState *s;
|
StrongARMState *s;
|
||||||
DriveInfo *dinfo;
|
DriveInfo *dinfo;
|
||||||
MemoryRegion *sysmem = get_system_memory();
|
MemoryRegion *sdram = g_new(MemoryRegion, 1);
|
||||||
|
|
||||||
s = sa1110_init(sysmem, collie_binfo.ram_size, machine->cpu_type);
|
s = sa1110_init(machine->cpu_type);
|
||||||
|
|
||||||
|
memory_region_allocate_system_memory(sdram, NULL, "strongarm.sdram",
|
||||||
|
collie_binfo.ram_size);
|
||||||
|
memory_region_add_subregion(get_system_memory(), SA_SDCS0, sdram);
|
||||||
|
|
||||||
dinfo = drive_get(IF_PFLASH, 0, 0);
|
dinfo = drive_get(IF_PFLASH, 0, 0);
|
||||||
pflash_cfi01_register(SA_CS0, "collie.fl1", 0x02000000,
|
pflash_cfi01_register(SA_CS0, "collie.fl1", 0x02000000,
|
||||||
|
@ -1586,8 +1586,7 @@ static const TypeInfo strongarm_ssp_info = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* Main CPU functions */
|
/* Main CPU functions */
|
||||||
StrongARMState *sa1110_init(MemoryRegion *sysmem,
|
StrongARMState *sa1110_init(const char *cpu_type)
|
||||||
unsigned int sdram_size, const char *cpu_type)
|
|
||||||
{
|
{
|
||||||
StrongARMState *s;
|
StrongARMState *s;
|
||||||
int i;
|
int i;
|
||||||
@ -1601,10 +1600,6 @@ StrongARMState *sa1110_init(MemoryRegion *sysmem,
|
|||||||
|
|
||||||
s->cpu = ARM_CPU(cpu_create(cpu_type));
|
s->cpu = ARM_CPU(cpu_create(cpu_type));
|
||||||
|
|
||||||
memory_region_allocate_system_memory(&s->sdram, NULL, "strongarm.sdram",
|
|
||||||
sdram_size);
|
|
||||||
memory_region_add_subregion(sysmem, SA_SDCS0, &s->sdram);
|
|
||||||
|
|
||||||
s->pic = sysbus_create_varargs("strongarm_pic", 0x90050000,
|
s->pic = sysbus_create_varargs("strongarm_pic", 0x90050000,
|
||||||
qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ),
|
qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ),
|
||||||
qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_FIQ),
|
qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_FIQ),
|
||||||
|
@ -55,7 +55,6 @@ enum {
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ARMCPU *cpu;
|
ARMCPU *cpu;
|
||||||
MemoryRegion sdram;
|
|
||||||
DeviceState *pic;
|
DeviceState *pic;
|
||||||
DeviceState *gpio;
|
DeviceState *gpio;
|
||||||
DeviceState *ppc;
|
DeviceState *ppc;
|
||||||
@ -63,7 +62,6 @@ typedef struct {
|
|||||||
SSIBus *ssp_bus;
|
SSIBus *ssp_bus;
|
||||||
} StrongARMState;
|
} StrongARMState;
|
||||||
|
|
||||||
StrongARMState *sa1110_init(MemoryRegion *sysmem,
|
StrongARMState *sa1110_init(const char *cpu_type);
|
||||||
unsigned int sdram_size, const char *rev);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user