60 lines
1.8 KiB
C
60 lines
1.8 KiB
C
#include "boot.h"
|
|
#include "hw/boards.h"
|
|
#include "hw/sysbus.h"
|
|
#include "qapi/error.h"
|
|
#include "qom/object.h"
|
|
#include "sc14450.h"
|
|
|
|
typedef struct SC14450BoardMachineState {
|
|
MachineState parent_obj;
|
|
SC14450McuState mcu;
|
|
} SC14450BoardMachineState;
|
|
|
|
typedef struct SC14450BoardMachineClass {
|
|
MachineClass parent_class;
|
|
} SC14450BoardMachineClass;
|
|
|
|
#define TYPE_SC14450_BOARD_BASE_MACHINE MACHINE_TYPE_NAME("SC14450-board-base")
|
|
#define TYPE_SC14450_BOARD_MACHINE MACHINE_TYPE_NAME("SC14450-board")
|
|
|
|
DECLARE_OBJ_CHECKERS(SC14450BoardMachineState, SC14450BoardMachineClass, SC14450_BOARD_MACHINE, TYPE_SC14450_BOARD_MACHINE)
|
|
|
|
static void sc14450board_init(MachineState* machine)
|
|
{
|
|
SC14450BoardMachineState* m_state = SC14450_BOARD_MACHINE(machine);
|
|
|
|
object_initialize_child(OBJECT(machine), "mcu", &m_state->mcu, TYPE_SC14450S_MCU);
|
|
sysbus_realize(SYS_BUS_DEVICE(&m_state->mcu), &error_abort);
|
|
|
|
if (machine->firmware) {
|
|
if (!cr16c_load_firmware(&m_state->mcu.cpu, machine, &m_state->mcu.flash, machine->firmware)) {
|
|
exit(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
static void sc14450board_class_init(ObjectClass* oc, void* data)
|
|
{
|
|
MachineClass* mc = MACHINE_CLASS(oc);
|
|
mc->desc = "SC14450 VoIP + DECT Processor Board";
|
|
mc->alias = "sc14450board";
|
|
mc->init = sc14450board_init;
|
|
mc->default_cpus = 1;
|
|
mc->min_cpus = 1;
|
|
mc->max_cpus = 1;
|
|
mc->no_floppy = 1;
|
|
mc->no_cdrom = 1;
|
|
mc->no_parallel = 1;
|
|
mc->is_default = 1;
|
|
}
|
|
|
|
static const TypeInfo sc14450board_machine_types[] = {
|
|
{
|
|
.name = TYPE_SC14450_BOARD_MACHINE,
|
|
.parent = TYPE_MACHINE,
|
|
.instance_size = sizeof(SC14450BoardMachineState),
|
|
.class_size = sizeof(SC14450BoardMachineClass),
|
|
.class_init = sc14450board_class_init,
|
|
}
|
|
};
|
|
DEFINE_TYPES(sc14450board_machine_types);
|