Revision 0201e2da hw/spapr_vty.c
b/hw/spapr_vty.c | ||
---|---|---|
24 | 24 |
VIOsPAPRVTYDevice *dev = (VIOsPAPRVTYDevice *)opaque; |
25 | 25 |
int i; |
26 | 26 |
|
27 |
if ((dev->in == dev->out) && size) { |
|
28 |
/* toggle line to simulate edge interrupt */ |
|
29 |
qemu_irq_pulse(dev->sdev.qirq); |
|
30 |
} |
|
27 | 31 |
for (i = 0; i < size; i++) { |
28 | 32 |
assert((dev->in - dev->out) < VTERM_BUFSIZE); |
29 | 33 |
dev->buf[dev->in++ % VTERM_BUFSIZE] = buf[i]; |
... | ... | |
112 | 116 |
} |
113 | 117 |
|
114 | 118 |
void spapr_vty_create(VIOsPAPRBus *bus, |
115 |
uint32_t reg, CharDriverState *chardev) |
|
119 |
uint32_t reg, CharDriverState *chardev, |
|
120 |
qemu_irq qirq, uint32_t vio_irq_num) |
|
116 | 121 |
{ |
117 | 122 |
DeviceState *dev; |
123 |
VIOsPAPRDevice *sdev; |
|
118 | 124 |
|
119 | 125 |
dev = qdev_create(&bus->bus, "spapr-vty"); |
120 | 126 |
qdev_prop_set_uint32(dev, "reg", reg); |
121 | 127 |
qdev_prop_set_chr(dev, "chardev", chardev); |
122 | 128 |
qdev_init_nofail(dev); |
129 |
sdev = (VIOsPAPRDevice *)dev; |
|
130 |
sdev->qirq = qirq; |
|
131 |
sdev->vio_irq_num = vio_irq_num; |
|
123 | 132 |
} |
124 | 133 |
|
125 | 134 |
static void vty_hcalls(VIOsPAPRBus *bus) |
Also available in: Unified diff