Message ID | 20230213070820.76881-9-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | hw: Use QOM macros and remove DO_UPCAST() uses | expand |
On 13/2/23 08:08, Philippe Mathieu-Daudé wrote: > Have all the EEPRO100-based devices share a common (abstract) > QOM parent. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > hw/net/eepro100.c | 40 ++++++++++++++++++++++++++-------------- > 1 file changed, 26 insertions(+), 14 deletions(-) > > diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c > index dc07984ae9..dac42ba17b 100644 > --- a/hw/net/eepro100.c > +++ b/hw/net/eepro100.c > @@ -235,8 +235,14 @@ typedef enum { > ru_ready = 4 > } ru_state_t; > > -typedef struct { > +#define TYPE_EEPRO100 "eepro100" > +OBJECT_DECLARE_SIMPLE_TYPE(EEPRO100State, EEPRO100) Self-NACK, I'll respin also introducing EEPRO100Class for completeness.
On 13/2/23 09:36, Philippe Mathieu-Daudé wrote: > On 13/2/23 08:08, Philippe Mathieu-Daudé wrote: >> Have all the EEPRO100-based devices share a common (abstract) >> QOM parent. >> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> --- >> hw/net/eepro100.c | 40 ++++++++++++++++++++++++++-------------- >> 1 file changed, 26 insertions(+), 14 deletions(-) >> >> diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c >> index dc07984ae9..dac42ba17b 100644 >> --- a/hw/net/eepro100.c >> +++ b/hw/net/eepro100.c >> @@ -235,8 +235,14 @@ typedef enum { >> ru_ready = 4 >> } ru_state_t; >> -typedef struct { >> +#define TYPE_EEPRO100 "eepro100" >> +OBJECT_DECLARE_SIMPLE_TYPE(EEPRO100State, EEPRO100) > > Self-NACK, I'll respin also introducing EEPRO100Class for completeness. Respin posted here: https://lore.kernel.org/qemu-devel/20230213101048.94519-1-philmd@linaro.org/
diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c index dc07984ae9..dac42ba17b 100644 --- a/hw/net/eepro100.c +++ b/hw/net/eepro100.c @@ -235,8 +235,14 @@ typedef enum { ru_ready = 4 } ru_state_t; -typedef struct { +#define TYPE_EEPRO100 "eepro100" +OBJECT_DECLARE_SIMPLE_TYPE(EEPRO100State, EEPRO100) + +struct EEPRO100State { + /*< private >*/ PCIDevice dev; + /*< public >*/ + /* Hash register (multicast mask array, multiple individual addresses). */ uint8_t mult[8]; MemoryRegion mmio_bar; @@ -279,7 +285,7 @@ typedef struct { /* Quasi static device properties (no need to save them). */ uint16_t stats_size; bool has_extended_tcb_support; -} EEPRO100State; +}; /* Word indices in EEPROM. */ typedef enum { @@ -2082,21 +2088,27 @@ static void eepro100_class_init(ObjectClass *klass, void *data) k->subsystem_id = info->subsystem_id; } +static const TypeInfo eepro100_info = { + .name = TYPE_EEPRO100, + .parent = TYPE_PCI_DEVICE, + .class_init = eepro100_class_init, + .abstract = true, + .instance_size = sizeof(EEPRO100State), + .instance_init = eepro100_instance_init, + .interfaces = (InterfaceInfo[]) { + { INTERFACE_CONVENTIONAL_PCI_DEVICE }, + { }, + }, +}; + static void eepro100_register_types(void) { - size_t i; - for (i = 0; i < ARRAY_SIZE(e100_devices); i++) { - TypeInfo type_info = {}; - E100PCIDeviceInfo *info = &e100_devices[i]; + type_register_static(&eepro100_info); - type_info.name = info->name; - type_info.parent = TYPE_PCI_DEVICE; - type_info.class_init = eepro100_class_init; - type_info.instance_size = sizeof(EEPRO100State); - type_info.instance_init = eepro100_instance_init; - type_info.interfaces = (InterfaceInfo[]) { - { INTERFACE_CONVENTIONAL_PCI_DEVICE }, - { }, + for (size_t i = 0; i < ARRAY_SIZE(e100_devices); i++) { + TypeInfo type_info = { + .name = e100_devices[i].name, + .parent = TYPE_EEPRO100, }; type_register(&type_info);
Have all the EEPRO100-based devices share a common (abstract) QOM parent. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/net/eepro100.c | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-)