Message ID | 27222215579bf5d179393e24bb11140846c62948.1502993370.git.alistair.francis@xilinx.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Aug 17, 2017 at 11:52:04AM -0700, Alistair Francis wrote: > In preperation for future work let's manually create the Xilnx machines. > This will allow us to set properties for the machines in the future. > > Signed-off-by: Alistair Francis <alistair.francis@xilinx.com> > --- > > hw/arm/xlnx-zcu102.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++----- > 1 file changed, 68 insertions(+), 7 deletions(-) > > diff --git a/hw/arm/xlnx-zcu102.c b/hw/arm/xlnx-zcu102.c > index 133a6a31a8..71261313b5 100644 > --- a/hw/arm/xlnx-zcu102.c > +++ b/hw/arm/xlnx-zcu102.c > @@ -26,15 +26,25 @@ > #include "qemu/log.h" > > typedef struct XlnxZCU102 { > + Looks like a stray newline here. > + MachineState parent_obj; > + > XlnxZynqMPState soc; > MemoryRegion ddr_ram; > } XlnxZCU102; > > +#define TYPE_ZCU102_MACHINE MACHINE_TYPE_NAME("xlnx-zcu102") > +#define ZCU102_MACHINE(obj) \ > + OBJECT_CHECK(XlnxZCU102, (obj), TYPE_ZCU102_MACHINE) > + > +#define TYPE_EP108_MACHINE MACHINE_TYPE_NAME("xlnx-ep108") > +#define EP108_MACHINE(obj) \ > + OBJECT_CHECK(XlnxZCU102, (obj), TYPE_EP108_MACHINE) > + > static struct arm_boot_info xlnx_zcu102_binfo; > > -static void xlnx_zcu102_init(MachineState *machine) > +static void xlnx_zynqmp_init(XlnxZCU102 *s, MachineState *machine) > { > - XlnxZCU102 *s = g_new0(XlnxZCU102, 1); > int i; > uint64_t ram_size = machine->ram_size; > > @@ -116,22 +126,73 @@ static void xlnx_zcu102_init(MachineState *machine) > arm_load_kernel(s->soc.boot_cpu_ptr, &xlnx_zcu102_binfo); > } > > -static void xlnx_ep108_machine_init(MachineClass *mc) > +static void xlnx_ep108_init(MachineState *machine) > { > + XlnxZCU102 *s = EP108_MACHINE(machine); > + > + xlnx_zynqmp_init(s, machine); > +} > + > +static void xlnx_ep108_machine_instance_init(Object *obj) > +{ > +} > + > +static void xlnx_ep108_machine_class_init(ObjectClass *oc, void *data) > +{ > + MachineClass *mc = MACHINE_CLASS(oc); > + > mc->desc = "Xilinx ZynqMP EP108 board"; > - mc->init = xlnx_zcu102_init; > + mc->init = xlnx_ep108_init; > mc->block_default_type = IF_IDE; > mc->units_per_default_bus = 1; > } > > -DEFINE_MACHINE("xlnx-ep108", xlnx_ep108_machine_init) > +static const TypeInfo xlnx_ep108_machine_init_typeinfo = { > + .name = MACHINE_TYPE_NAME("xlnx-ep108"), > + .parent = TYPE_MACHINE, > + .class_init = xlnx_ep108_machine_class_init, > + .instance_init = xlnx_ep108_machine_instance_init, > + .instance_size = sizeof(XlnxZCU102), > +}; > + > +static void xlnx_ep108_machine_init_register_types(void) > +{ > + type_register_static(&xlnx_ep108_machine_init_typeinfo); > +} > + > +static void xlnx_zcu102_init(MachineState *machine) > +{ > + XlnxZCU102 *s = ZCU102_MACHINE(machine); > + > + xlnx_zynqmp_init(s, machine); > +} > > -static void xlnx_zcu102_machine_init(MachineClass *mc) > +static void xlnx_zcu102_machine_instance_init(Object *obj) > { > +} > + > +static void xlnx_zcu102_machine_class_init(ObjectClass *oc, void *data) > +{ > + MachineClass *mc = MACHINE_CLASS(oc); > + > mc->desc = "Xilinx ZynqMP ZCU102 board"; > mc->init = xlnx_zcu102_init; > mc->block_default_type = IF_IDE; > mc->units_per_default_bus = 1; > } > > -DEFINE_MACHINE("xlnx-zcu102", xlnx_zcu102_machine_init) > +static const TypeInfo xlnx_zcu102_machine_init_typeinfo = { > + .name = MACHINE_TYPE_NAME("xlnx-zcu102"), > + .parent = TYPE_MACHINE, > + .class_init = xlnx_zcu102_machine_class_init, > + .instance_init = xlnx_zcu102_machine_instance_init, > + .instance_size = sizeof(XlnxZCU102), > +}; > + > +static void xlnx_zcu102_machine_init_register_types(void) > +{ > + type_register_static(&xlnx_zcu102_machine_init_typeinfo); > +} > + > +type_init(xlnx_zcu102_machine_init_register_types) > +type_init(xlnx_ep108_machine_init_register_types) > -- > 2.11.0 >
diff --git a/hw/arm/xlnx-zcu102.c b/hw/arm/xlnx-zcu102.c index 133a6a31a8..71261313b5 100644 --- a/hw/arm/xlnx-zcu102.c +++ b/hw/arm/xlnx-zcu102.c @@ -26,15 +26,25 @@ #include "qemu/log.h" typedef struct XlnxZCU102 { + + MachineState parent_obj; + XlnxZynqMPState soc; MemoryRegion ddr_ram; } XlnxZCU102; +#define TYPE_ZCU102_MACHINE MACHINE_TYPE_NAME("xlnx-zcu102") +#define ZCU102_MACHINE(obj) \ + OBJECT_CHECK(XlnxZCU102, (obj), TYPE_ZCU102_MACHINE) + +#define TYPE_EP108_MACHINE MACHINE_TYPE_NAME("xlnx-ep108") +#define EP108_MACHINE(obj) \ + OBJECT_CHECK(XlnxZCU102, (obj), TYPE_EP108_MACHINE) + static struct arm_boot_info xlnx_zcu102_binfo; -static void xlnx_zcu102_init(MachineState *machine) +static void xlnx_zynqmp_init(XlnxZCU102 *s, MachineState *machine) { - XlnxZCU102 *s = g_new0(XlnxZCU102, 1); int i; uint64_t ram_size = machine->ram_size; @@ -116,22 +126,73 @@ static void xlnx_zcu102_init(MachineState *machine) arm_load_kernel(s->soc.boot_cpu_ptr, &xlnx_zcu102_binfo); } -static void xlnx_ep108_machine_init(MachineClass *mc) +static void xlnx_ep108_init(MachineState *machine) { + XlnxZCU102 *s = EP108_MACHINE(machine); + + xlnx_zynqmp_init(s, machine); +} + +static void xlnx_ep108_machine_instance_init(Object *obj) +{ +} + +static void xlnx_ep108_machine_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + mc->desc = "Xilinx ZynqMP EP108 board"; - mc->init = xlnx_zcu102_init; + mc->init = xlnx_ep108_init; mc->block_default_type = IF_IDE; mc->units_per_default_bus = 1; } -DEFINE_MACHINE("xlnx-ep108", xlnx_ep108_machine_init) +static const TypeInfo xlnx_ep108_machine_init_typeinfo = { + .name = MACHINE_TYPE_NAME("xlnx-ep108"), + .parent = TYPE_MACHINE, + .class_init = xlnx_ep108_machine_class_init, + .instance_init = xlnx_ep108_machine_instance_init, + .instance_size = sizeof(XlnxZCU102), +}; + +static void xlnx_ep108_machine_init_register_types(void) +{ + type_register_static(&xlnx_ep108_machine_init_typeinfo); +} + +static void xlnx_zcu102_init(MachineState *machine) +{ + XlnxZCU102 *s = ZCU102_MACHINE(machine); + + xlnx_zynqmp_init(s, machine); +} -static void xlnx_zcu102_machine_init(MachineClass *mc) +static void xlnx_zcu102_machine_instance_init(Object *obj) { +} + +static void xlnx_zcu102_machine_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + mc->desc = "Xilinx ZynqMP ZCU102 board"; mc->init = xlnx_zcu102_init; mc->block_default_type = IF_IDE; mc->units_per_default_bus = 1; } -DEFINE_MACHINE("xlnx-zcu102", xlnx_zcu102_machine_init) +static const TypeInfo xlnx_zcu102_machine_init_typeinfo = { + .name = MACHINE_TYPE_NAME("xlnx-zcu102"), + .parent = TYPE_MACHINE, + .class_init = xlnx_zcu102_machine_class_init, + .instance_init = xlnx_zcu102_machine_instance_init, + .instance_size = sizeof(XlnxZCU102), +}; + +static void xlnx_zcu102_machine_init_register_types(void) +{ + type_register_static(&xlnx_zcu102_machine_init_typeinfo); +} + +type_init(xlnx_zcu102_machine_init_register_types) +type_init(xlnx_ep108_machine_init_register_types)
In preperation for future work let's manually create the Xilnx machines. This will allow us to set properties for the machines in the future. Signed-off-by: Alistair Francis <alistair.francis@xilinx.com> --- hw/arm/xlnx-zcu102.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 7 deletions(-)