hw/arm : Create Bl475eMachineState

Signed-off-by: Arnaud Minier <arnaud.minier@telecom-paris.fr>
Signed-off-by: Inès Varhol <ines.varhol@telecom-paris.fr>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20240424200929.240921-4-ines.varhol@telecom-paris.fr
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Inès Varhol 2024-04-24 22:06:53 +02:00 committed by Peter Maydell
parent 5b5b014b32
commit 4c3308c61e
1 changed files with 32 additions and 14 deletions

View File

@ -2,8 +2,8 @@
* B-L475E-IOT01A Discovery Kit machine * B-L475E-IOT01A Discovery Kit machine
* (B-L475E-IOT01A IoT Node) * (B-L475E-IOT01A IoT Node)
* *
* Copyright (c) 2023 Arnaud Minier <arnaud.minier@telecom-paris.fr> * Copyright (c) 2023-2024 Arnaud Minier <arnaud.minier@telecom-paris.fr>
* Copyright (c) 2023 Inès Varhol <ines.varhol@telecom-paris.fr> * Copyright (c) 2023-2024 Inès Varhol <ines.varhol@telecom-paris.fr>
* *
* SPDX-License-Identifier: GPL-2.0-or-later * SPDX-License-Identifier: GPL-2.0-or-later
* *
@ -32,33 +32,51 @@
/* B-L475E-IOT01A implementation is derived from netduinoplus2 */ /* B-L475E-IOT01A implementation is derived from netduinoplus2 */
static void b_l475e_iot01a_init(MachineState *machine) #define TYPE_B_L475E_IOT01A MACHINE_TYPE_NAME("b-l475e-iot01a")
OBJECT_DECLARE_SIMPLE_TYPE(Bl475eMachineState, B_L475E_IOT01A)
typedef struct Bl475eMachineState {
MachineState parent_obj;
Stm32l4x5SocState soc;
} Bl475eMachineState;
static void bl475e_init(MachineState *machine)
{ {
Bl475eMachineState *s = B_L475E_IOT01A(machine);
const Stm32l4x5SocClass *sc; const Stm32l4x5SocClass *sc;
DeviceState *dev;
dev = qdev_new(TYPE_STM32L4X5XG_SOC); object_initialize_child(OBJECT(machine), "soc", &s->soc,
object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); TYPE_STM32L4X5XG_SOC);
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal);
sc = STM32L4X5_SOC_GET_CLASS(dev); sc = STM32L4X5_SOC_GET_CLASS(&s->soc);
armv7m_load_kernel(ARM_CPU(first_cpu), armv7m_load_kernel(ARM_CPU(first_cpu), machine->kernel_filename, 0,
machine->kernel_filename, sc->flash_size);
0, sc->flash_size);
} }
static void b_l475e_iot01a_machine_init(MachineClass *mc) static void bl475e_machine_init(ObjectClass *oc, void *data)
{ {
MachineClass *mc = MACHINE_CLASS(oc);
static const char *machine_valid_cpu_types[] = { static const char *machine_valid_cpu_types[] = {
ARM_CPU_TYPE_NAME("cortex-m4"), ARM_CPU_TYPE_NAME("cortex-m4"),
NULL NULL
}; };
mc->desc = "B-L475E-IOT01A Discovery Kit (Cortex-M4)"; mc->desc = "B-L475E-IOT01A Discovery Kit (Cortex-M4)";
mc->init = b_l475e_iot01a_init; mc->init = bl475e_init;
mc->valid_cpu_types = machine_valid_cpu_types; mc->valid_cpu_types = machine_valid_cpu_types;
/* SRAM pre-allocated as part of the SoC instantiation */ /* SRAM pre-allocated as part of the SoC instantiation */
mc->default_ram_size = 0; mc->default_ram_size = 0;
} }
DEFINE_MACHINE("b-l475e-iot01a", b_l475e_iot01a_machine_init) static const TypeInfo bl475e_machine_type[] = {
{
.name = TYPE_B_L475E_IOT01A,
.parent = TYPE_MACHINE,
.instance_size = sizeof(Bl475eMachineState),
.class_init = bl475e_machine_init,
}
};
DEFINE_TYPES(bl475e_machine_type)