[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 05/37] serial-pci-multi: factor out multi_serial_get_port_count()
From: |
Marc-André Lureau |
Subject: |
[PULL 05/37] serial-pci-multi: factor out multi_serial_get_port_count() |
Date: |
Tue, 7 Jan 2020 19:04:10 +0400 |
Common function to be reused in next patch.
Signed-off-by: Marc-André Lureau <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
---
hw/char/serial-pci-multi.c | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c
index 5f13b5663b..5c553c30d0 100644
--- a/hw/char/serial-pci-multi.c
+++ b/hw/char/serial-pci-multi.c
@@ -77,33 +77,34 @@ static void multi_serial_irq_mux(void *opaque, int n, int
level)
pci_set_irq(&pci->dev, pending);
}
+static size_t multi_serial_get_port_count(PCIDeviceClass *pc)
+{
+ switch (pc->device_id) {
+ case 0x0003:
+ return 2;
+ case 0x0004:
+ return 4;
+ }
+
+ g_assert_not_reached();
+}
+
+
static void multi_serial_pci_realize(PCIDevice *dev, Error **errp)
{
PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
PCIMultiSerialState *pci = DO_UPCAST(PCIMultiSerialState, dev, dev);
SerialState *s;
Error *err = NULL;
- int i, nr_ports = 0;
-
- switch (pc->device_id) {
- case 0x0003:
- nr_ports = 2;
- break;
- case 0x0004:
- nr_ports = 4;
- break;
- }
- assert(nr_ports > 0);
- assert(nr_ports <= PCI_SERIAL_MAX_PORTS);
+ size_t i, nports = multi_serial_get_port_count(pc);
pci->dev.config[PCI_CLASS_PROG] = pci->prog_if;
pci->dev.config[PCI_INTERRUPT_PIN] = 0x01;
- memory_region_init(&pci->iobar, OBJECT(pci), "multiserial", 8 * nr_ports);
+ memory_region_init(&pci->iobar, OBJECT(pci), "multiserial", 8 * nports);
pci_register_bar(&pci->dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &pci->iobar);
- pci->irqs = qemu_allocate_irqs(multi_serial_irq_mux, pci,
- nr_ports);
+ pci->irqs = qemu_allocate_irqs(multi_serial_irq_mux, pci, nports);
- for (i = 0; i < nr_ports; i++) {
+ for (i = 0; i < nports; i++) {
s = pci->state + i;
s->baudbase = 115200;
serial_realize_core(s, &err);
@@ -113,7 +114,7 @@ static void multi_serial_pci_realize(PCIDevice *dev, Error
**errp)
return;
}
s->irq = pci->irqs[i];
- pci->name[i] = g_strdup_printf("uart #%d", i + 1);
+ pci->name[i] = g_strdup_printf("uart #%zu", i + 1);
memory_region_init_io(&s->io, OBJECT(pci), &serial_io_ops, s,
pci->name[i], 8);
memory_region_add_subregion(&pci->iobar, 8 * i, &s->io);
--
2.25.0.rc1.20.g2443f3f80d
- [PULL 00/37] qom-ify serial and remove QDEV_PROP_PTR, Marc-André Lureau, 2020/01/07
- [PULL 01/37] hw/display/sm501: Always map the UART0, Marc-André Lureau, 2020/01/07
- [PULL 02/37] sysbus: remove unused sysbus_try_create*, Marc-André Lureau, 2020/01/07
- [PULL 03/37] sysbus: remove outdated comment, Marc-André Lureau, 2020/01/07
- [PULL 04/37] chardev: generate an internal id when none given, Marc-André Lureau, 2020/01/07
- [PULL 05/37] serial-pci-multi: factor out multi_serial_get_port_count(),
Marc-André Lureau <=
- [PULL 06/37] serial: initial qom-ification, Marc-André Lureau, 2020/01/07
- [PULL 07/37] serial: register vmsd with DeviceClass, Marc-André Lureau, 2020/01/07
- [PULL 08/37] serial: add "chardev" property, Marc-André Lureau, 2020/01/07
- [PULL 09/37] serial: add "baudbase" property, Marc-André Lureau, 2020/01/07
- [PULL 10/37] serial: realize the serial device, Marc-André Lureau, 2020/01/07
- [PULL 11/37] serial: replace serial_exit_core() with unrealize, Marc-André Lureau, 2020/01/07
- [PULL 12/37] serial: start making SerialMM a sysbus device, Marc-André Lureau, 2020/01/07
- [PULL 13/37] serial-mm: add "regshift" property, Marc-André Lureau, 2020/01/07
- [PULL 14/37] serial-mm: add endianness property, Marc-André Lureau, 2020/01/07
- [PULL 15/37] serial-mm: use sysbus facilities, Marc-André Lureau, 2020/01/07