[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/19] hw/char/serial-pci-multi: Introduce PCI_MULTISERIAL QOM ab
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 03/19] hw/char/serial-pci-multi: Introduce PCI_MULTISERIAL QOM abstract parent |
Date: |
Sun, 12 Feb 2023 23:51:28 +0100 |
Introduce PCI_MULTISERIAL ("pci-serial"), QOM abstract parent of
"pci-serial-2x" and "pci-serial-4x".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/char/serial-pci-multi.c | 35 ++++++++++++++++++++---------------
1 file changed, 20 insertions(+), 15 deletions(-)
diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c
index 54768d3d53..faeb0a9476 100644
--- a/hw/char/serial-pci-multi.c
+++ b/hw/char/serial-pci-multi.c
@@ -38,8 +38,15 @@
#define PCI_SERIAL_MAX_PORTS 4
-typedef struct PCIMultiSerialState {
+#define TYPE_PCI_MULTISERIAL "pci-serial"
+
+OBJECT_DECLARE_SIMPLE_TYPE(PCIMultiSerialState, PCI_MULTISERIAL)
+
+struct PCIMultiSerialState {
+ /*< private >*/
PCIDevice dev;
+ /*< public >*/
+
MemoryRegion iobar;
uint32_t ports;
char *name[PCI_SERIAL_MAX_PORTS];
@@ -47,7 +54,7 @@ typedef struct PCIMultiSerialState {
uint32_t level[PCI_SERIAL_MAX_PORTS];
qemu_irq *irqs;
uint8_t prog_if;
-} PCIMultiSerialState;
+};
static void multi_serial_pci_exit(PCIDevice *dev)
{
@@ -191,25 +198,23 @@ static void multi_serial_init(Object *o)
static const TypeInfo multi_serial_pci_types[] = {
{
- .name = "pci-serial-2x",
- .parent = TYPE_PCI_DEVICE,
- .instance_size = sizeof(PCIMultiSerialState),
- .instance_init = multi_serial_init,
- .class_init = multi_2x_serial_pci_class_initfn,
- .interfaces = (InterfaceInfo[]) {
+ .name = TYPE_PCI_MULTISERIAL,
+ .parent = TYPE_PCI_DEVICE,
+ .instance_size = sizeof(PCIMultiSerialState),
+ .instance_init = multi_serial_init,
+ .abstract = true,
+ .interfaces = (InterfaceInfo[]) {
{ INTERFACE_CONVENTIONAL_PCI_DEVICE },
{ },
},
+ }, {
+ .name = "pci-serial-2x",
+ .parent = TYPE_PCI_MULTISERIAL,
+ .class_init = multi_2x_serial_pci_class_initfn,
}, {
.name = "pci-serial-4x",
- .parent = TYPE_PCI_DEVICE,
- .instance_size = sizeof(PCIMultiSerialState),
- .instance_init = multi_serial_init,
+ .parent = TYPE_PCI_MULTISERIAL,
.class_init = multi_4x_serial_pci_class_initfn,
- .interfaces = (InterfaceInfo[]) {
- { INTERFACE_CONVENTIONAL_PCI_DEVICE },
- { },
- },
}
};
--
2.38.1
- [PATCH 00/19] hw: Use QOM macros and remove DO_UPCAST() uses, Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 01/19] hw/char/serial-pci: Replace DO_UPCAST(PCISerialState) by PCI_SERIAL(), Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 02/19] hw/char/serial-pci-multi: Batch register types using DEFINE_TYPES macro, Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 03/19] hw/char/serial-pci-multi: Introduce PCI_MULTISERIAL QOM abstract parent,
Philippe Mathieu-Daudé <=
- [PATCH 04/19] hw/char/serial-pci-multi: Factor multi_serial_class_initfn() out, Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 05/19] hw/char/serial-pci-multi: Replace DO_UPCAST() by PCI_MULTISERIAL(), Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 06/19] hw/ide/qdev: Replace DO_UPCAST(IDEDevice) by IDE_DEVICE(), Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 07/19] hw/ide/qdev: Replace DO_UPCAST(IDEBus) by IDE_BUS(), Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 08/19] hw/net/eepro100: Introduce TYPE_EEPRO100 QOM abstract parent, Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 09/19] hw/net/eepro100: Replace DO_UPCAST(EEPRO100State) by EEPRO100(), Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 10/19] hw/net/ne2000-pci: Replace DO_UPCAST(PCINE2000State) by PCI_NE2000(), Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 11/19] hw/net/tulip: Finish QOM conversion, Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 12/19] hw/pci/pci: Replace DO_UPCAST(PCIBus) by PCI_BUS(), Philippe Mathieu-Daudé, 2023/02/12
- [PATCH 14/19] hw/scsi/scsi-bus: Inline two uses of scsi_bus_from_device(), Philippe Mathieu-Daudé, 2023/02/12