mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 02:54:58 -06:00
dino: wire up serial IRQ using a qdev GPIO in machine.c
This makes it unnecessary to allocate a separate IRQ for the serial port. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Acked-by: Helge Deller <deller@gmx.de> Message-Id: <20220504092600.10048-18-mark.cave-ayland@ilande.co.uk> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
4b5faaf94f
commit
a4b74c1924
3 changed files with 6 additions and 11 deletions
|
@ -404,13 +404,8 @@ static void dino_set_timer_irq(void *opaque, int irq, int level)
|
||||||
/* ??? Not connected. */
|
/* ??? Not connected. */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dino_set_serial_irq(void *opaque, int irq, int level)
|
|
||||||
{
|
|
||||||
dino_set_irq(opaque, 10, level);
|
|
||||||
}
|
|
||||||
|
|
||||||
DinoState *dino_init(MemoryRegion *addr_space,
|
DinoState *dino_init(MemoryRegion *addr_space,
|
||||||
qemu_irq *p_rtc_irq, qemu_irq *p_ser_irq)
|
qemu_irq *p_rtc_irq)
|
||||||
{
|
{
|
||||||
DeviceState *dev;
|
DeviceState *dev;
|
||||||
DinoState *s;
|
DinoState *s;
|
||||||
|
@ -422,7 +417,6 @@ DinoState *dino_init(MemoryRegion *addr_space,
|
||||||
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
|
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
|
||||||
|
|
||||||
*p_rtc_irq = qemu_allocate_irq(dino_set_timer_irq, s, 0);
|
*p_rtc_irq = qemu_allocate_irq(dino_set_timer_irq, s, 0);
|
||||||
*p_ser_irq = qemu_allocate_irq(dino_set_serial_irq, s, 0);
|
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#include "hppa_hardware.h"
|
#include "hppa_hardware.h"
|
||||||
#include "dino.h"
|
#include "dino.h"
|
||||||
|
|
||||||
DinoState *dino_init(MemoryRegion *, qemu_irq *, qemu_irq *);
|
DinoState *dino_init(MemoryRegion *, qemu_irq *);
|
||||||
DeviceState *lasi_init(MemoryRegion *);
|
DeviceState *lasi_init(MemoryRegion *);
|
||||||
#define enable_lasi_lan() 0
|
#define enable_lasi_lan() 0
|
||||||
|
|
||||||
|
|
|
@ -130,7 +130,7 @@ static void machine_hppa_init(MachineState *machine)
|
||||||
DeviceState *dev, *dino_dev;
|
DeviceState *dev, *dino_dev;
|
||||||
PCIBus *pci_bus;
|
PCIBus *pci_bus;
|
||||||
ISABus *isa_bus;
|
ISABus *isa_bus;
|
||||||
qemu_irq rtc_irq, serial_irq;
|
qemu_irq rtc_irq;
|
||||||
char *firmware_filename;
|
char *firmware_filename;
|
||||||
uint64_t firmware_low, firmware_high;
|
uint64_t firmware_low, firmware_high;
|
||||||
long size;
|
long size;
|
||||||
|
@ -167,7 +167,7 @@ static void machine_hppa_init(MachineState *machine)
|
||||||
lasi_init(addr_space);
|
lasi_init(addr_space);
|
||||||
|
|
||||||
/* Init Dino (PCI host bus chip). */
|
/* Init Dino (PCI host bus chip). */
|
||||||
dino_dev = DEVICE(dino_init(addr_space, &rtc_irq, &serial_irq));
|
dino_dev = DEVICE(dino_init(addr_space, &rtc_irq));
|
||||||
memory_region_add_subregion(addr_space, DINO_HPA,
|
memory_region_add_subregion(addr_space, DINO_HPA,
|
||||||
sysbus_mmio_get_region(
|
sysbus_mmio_get_region(
|
||||||
SYS_BUS_DEVICE(dino_dev), 0));
|
SYS_BUS_DEVICE(dino_dev), 0));
|
||||||
|
@ -184,7 +184,8 @@ static void machine_hppa_init(MachineState *machine)
|
||||||
/* Serial code setup. */
|
/* Serial code setup. */
|
||||||
if (serial_hd(0)) {
|
if (serial_hd(0)) {
|
||||||
uint32_t addr = DINO_UART_HPA + 0x800;
|
uint32_t addr = DINO_UART_HPA + 0x800;
|
||||||
serial_mm_init(addr_space, addr, 0, serial_irq,
|
serial_mm_init(addr_space, addr, 0,
|
||||||
|
qdev_get_gpio_in(dino_dev, DINO_IRQ_RS232INT),
|
||||||
115200, serial_hd(0), DEVICE_BIG_ENDIAN);
|
115200, serial_hd(0), DEVICE_BIG_ENDIAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue