Revision db895a1e hw/char/serial-pci.c
b/hw/char/serial-pci.c | ||
---|---|---|
27 | 27 |
|
28 | 28 |
#include "hw/char/serial.h" |
29 | 29 |
#include "hw/pci/pci.h" |
30 |
#include "qapi/qmp/qerror.h" |
|
30 | 31 |
|
31 | 32 |
#define PCI_SERIAL_MAX_PORTS 4 |
32 | 33 |
|
... | ... | |
49 | 50 |
{ |
50 | 51 |
PCISerialState *pci = DO_UPCAST(PCISerialState, dev, dev); |
51 | 52 |
SerialState *s = &pci->state; |
53 |
Error *err = NULL; |
|
52 | 54 |
|
53 | 55 |
s->baudbase = 115200; |
54 |
serial_init_core(s); |
|
56 |
serial_realize_core(s, &err); |
|
57 |
if (err != NULL) { |
|
58 |
qerror_report_err(err); |
|
59 |
error_free(err); |
|
60 |
return -1; |
|
61 |
} |
|
55 | 62 |
|
56 | 63 |
pci->dev.config[PCI_INTERRUPT_PIN] = 0x01; |
57 | 64 |
s->irq = pci->dev.irq[0]; |
... | ... | |
80 | 87 |
PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev); |
81 | 88 |
PCIMultiSerialState *pci = DO_UPCAST(PCIMultiSerialState, dev, dev); |
82 | 89 |
SerialState *s; |
90 |
Error *err = NULL; |
|
83 | 91 |
int i; |
84 | 92 |
|
85 | 93 |
switch (pc->device_id) { |
... | ... | |
102 | 110 |
for (i = 0; i < pci->ports; i++) { |
103 | 111 |
s = pci->state + i; |
104 | 112 |
s->baudbase = 115200; |
105 |
serial_init_core(s); |
|
113 |
serial_realize_core(s, &err); |
|
114 |
if (err != NULL) { |
|
115 |
qerror_report_err(err); |
|
116 |
error_free(err); |
|
117 |
return -1; |
|
118 |
} |
|
106 | 119 |
s->irq = pci->irqs[i]; |
107 | 120 |
pci->name[i] = g_strdup_printf("uart #%d", i+1); |
108 | 121 |
memory_region_init_io(&s->io, &serial_io_ops, s, pci->name[i], 8); |
Also available in: Unified diff