diff options
author | Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2014-02-11 16:29:00 -0800 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2014-03-12 20:13:02 +0100 |
commit | 5ef4a1c304ef60224c29aa9f6d9c2ac0591d020a (patch) | |
tree | a94fda0f8febf24ac5d91cbae1d412b44f5f175a /hw/misc | |
parent | d43269dddc2e084a61bb6cfcc18081b0b6bb0e62 (diff) | |
download | qemu-5ef4a1c304ef60224c29aa9f6d9c2ac0591d020a.zip qemu-5ef4a1c304ef60224c29aa9f6d9c2ac0591d020a.tar.gz qemu-5ef4a1c304ef60224c29aa9f6d9c2ac0591d020a.tar.bz2 |
misc/max111x: Create abstract max111x type
Create an abstract class that encompasses both max111x variants. This is
needed for QOM cast macro creation (and is the right thing to do
anyway). Macroify type-names in the process.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'hw/misc')
-rw-r--r-- | hw/misc/max111x.c | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/hw/misc/max111x.c b/hw/misc/max111x.c index 28dfa0b..1b5da69 100644 --- a/hw/misc/max111x.c +++ b/hw/misc/max111x.c @@ -22,6 +22,11 @@ typedef struct { int inputs, com; } MAX111xState; +#define TYPE_MAX_111X "max111x" + +#define TYPE_MAX_1110 "max1110" +#define TYPE_MAX_1111 "max1111" + /* Control-byte bitfields */ #define CB_PD0 (1 << 0) #define CB_PD1 (1 << 1) @@ -155,18 +160,31 @@ void max111x_set_input(DeviceState *dev, int line, uint8_t value) s->input[line] = value; } -static void max1110_class_init(ObjectClass *klass, void *data) +static void max111x_class_init(ObjectClass *klass, void *data) { SSISlaveClass *k = SSI_SLAVE_CLASS(klass); - k->init = max1110_init; k->transfer = max111x_transfer; } -static const TypeInfo max1110_info = { - .name = "max1110", +static const TypeInfo max111x_info = { + .name = TYPE_MAX_111X, .parent = TYPE_SSI_SLAVE, .instance_size = sizeof(MAX111xState), + .class_init = max111x_class_init, + .abstract = true, +}; + +static void max1110_class_init(ObjectClass *klass, void *data) +{ + SSISlaveClass *k = SSI_SLAVE_CLASS(klass); + + k->init = max1110_init; +} + +static const TypeInfo max1110_info = { + .name = TYPE_MAX_1110, + .parent = TYPE_MAX_111X, .class_init = max1110_class_init, }; @@ -175,18 +193,17 @@ static void max1111_class_init(ObjectClass *klass, void *data) SSISlaveClass *k = SSI_SLAVE_CLASS(klass); k->init = max1111_init; - k->transfer = max111x_transfer; } static const TypeInfo max1111_info = { - .name = "max1111", - .parent = TYPE_SSI_SLAVE, - .instance_size = sizeof(MAX111xState), + .name = TYPE_MAX_1111, + .parent = TYPE_MAX_111X, .class_init = max1111_class_init, }; static void max111x_register_types(void) { + type_register_static(&max111x_info); type_register_static(&max1110_info); type_register_static(&max1111_info); } |