aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2009-05-26 14:56:11 +0100
committerPaul Brook <paul@codesourcery.com>2009-05-26 14:56:11 +0100
commit067a3ddc8876cee8451d6f690a051e413a593fdc (patch)
tree1e0d067b7784874397b189947fde6f05dc3434ad
parentc2fb26379e8bd0586f3ff054538217377f86635f (diff)
Remove qdev irq sink handling
We have both IRQ sinks and GPIO inputs. These are in principle exactly the same thing, so remove the former. Signed-off-by: Paul Brook <paul@codesourcery.com>
-rw-r--r--hw/arm_gic.c2
-rw-r--r--hw/armv7m.c2
-rw-r--r--hw/axis_dev88.c6
-rw-r--r--hw/esp.c2
-rw-r--r--hw/etraxfs.c6
-rw-r--r--hw/etraxfs_pic.c2
-rw-r--r--hw/integratorcp.c4
-rw-r--r--hw/mpcore.c6
-rw-r--r--hw/musicpal.c4
-rw-r--r--hw/pcnet.c2
-rw-r--r--hw/pl190.c2
-rw-r--r--hw/qdev.c13
-rw-r--r--hw/qdev.h5
-rw-r--r--hw/realview.c2
-rw-r--r--hw/sun4m.c2
-rw-r--r--hw/syborg.c2
-rw-r--r--hw/syborg_interrupt.c2
-rw-r--r--hw/versatilepb.c6
18 files changed, 27 insertions, 43 deletions
diff --git a/hw/arm_gic.c b/hw/arm_gic.c
index 5dc9448360..817234da9d 100644
--- a/hw/arm_gic.c
+++ b/hw/arm_gic.c
@@ -721,7 +721,7 @@ static void gic_init(gic_state *s)
{
int i;
- qdev_init_irq_sink(&s->busdev.qdev, gic_set_irq, GIC_NIRQ - 32);
+ qdev_init_gpio_in(&s->busdev.qdev, gic_set_irq, GIC_NIRQ - 32);
for (i = 0; i < NCPU; i++) {
sysbus_init_irq(&s->busdev, &s->parent_irq[i]);
}
diff --git a/hw/armv7m.c b/hw/armv7m.c
index 6be9940bcd..e3d00ffd7b 100644
--- a/hw/armv7m.c
+++ b/hw/armv7m.c
@@ -186,7 +186,7 @@ qemu_irq *armv7m_init(int flash_size, int sram_size,
cpu_pic = arm_pic_init_cpu(env);
sysbus_connect_irq(sysbus_from_qdev(nvic), 0, cpu_pic[ARM_PIC_CPU_IRQ]);
for (i = 0; i < 64; i++) {
- pic[i] = qdev_get_irq_sink(nvic, i);
+ pic[i] = qdev_get_gpio_in(nvic, i);
}
image_size = load_elf(kernel_filename, 0, &entry, &lowaddr, NULL);
diff --git a/hw/axis_dev88.c b/hw/axis_dev88.c
index 60b719b2f4..fc527cbecb 100644
--- a/hw/axis_dev88.c
+++ b/hw/axis_dev88.c
@@ -304,10 +304,10 @@ void axisdev88_init (ram_addr_t ram_size,
sysbus_connect_irq(s, 0, cpu_irq[0]);
sysbus_connect_irq(s, 1, cpu_irq[1]);
for (i = 0; i < 30; i++) {
- irq[i] = qdev_get_irq_sink(dev, i);
+ irq[i] = qdev_get_gpio_in(dev, i);
}
- nmi[0] = qdev_get_irq_sink(dev, 30);
- nmi[1] = qdev_get_irq_sink(dev, 31);
+ nmi[0] = qdev_get_gpio_in(dev, 30);
+ nmi[1] = qdev_get_gpio_in(dev, 31);
etraxfs_dmac = etraxfs_dmac_init(env, 0x30000000, 10);
for (i = 0; i < 10; i++) {
diff --git a/hw/esp.c b/hw/esp.c
index 6ac8c35d65..ffb2225259 100644
--- a/hw/esp.c
+++ b/hw/esp.c
@@ -684,7 +684,7 @@ static void esp_init1(SysBusDevice *dev)
register_savevm("esp", -1, 3, esp_save, esp_load, s);
qemu_register_reset(esp_reset, 0, s);
- qdev_init_irq_sink(&dev->qdev, parent_esp_reset, 1);
+ qdev_init_gpio_in(&dev->qdev, parent_esp_reset, 1);
scsi_bus_new(&dev->qdev, esp_scsi_attach);
}
diff --git a/hw/etraxfs.c b/hw/etraxfs.c
index f82e1cd0fd..1e200553e7 100644
--- a/hw/etraxfs.c
+++ b/hw/etraxfs.c
@@ -90,10 +90,10 @@ void bareetraxfs_init (ram_addr_t ram_size,
/* FIXME: Is there a proper way to signal vectors to the CPU core? */
qdev_set_prop_ptr(dev, "interrupt_vector", &env->interrupt_vector);
for (i = 0; i < 30; i++) {
- irq[i] = qdev_get_irq_sink(dev, i);
+ irq[i] = qdev_get_gpio_in(dev, i);
}
- nmi[0] = qdev_get_irq_sink(dev, 30);
- nmi[1] = qdev_get_irq_sink(dev, 31);
+ nmi[0] = qdev_get_gpio_in(dev, 30);
+ nmi[1] = qdev_get_gpio_in(dev, 31);
etraxfs_dmac = etraxfs_dmac_init(env, 0x30000000, 10);
for (i = 0; i < 10; i++) {
diff --git a/hw/etraxfs_pic.c b/hw/etraxfs_pic.c
index da9d0c3be6..585e7850f5 100644
--- a/hw/etraxfs_pic.c
+++ b/hw/etraxfs_pic.c
@@ -141,7 +141,7 @@ static void etraxfs_pic_init(SysBusDevice *dev)
int intr_vect_regs;
s->interrupt_vector = qdev_get_prop_ptr(&dev->qdev, "interrupt_vector");
- qdev_init_irq_sink(&dev->qdev, irq_handler, 32);
+ qdev_init_gpio_in(&dev->qdev, irq_handler, 32);
sysbus_init_irq(dev, &s->parent_irq);
sysbus_init_irq(dev, &s->parent_nmi);
diff --git a/hw/integratorcp.c b/hw/integratorcp.c
index 493866c92f..b6fbe15234 100644
--- a/hw/integratorcp.c
+++ b/hw/integratorcp.c
@@ -378,7 +378,7 @@ static void icp_pic_init(SysBusDevice *dev)
icp_pic_state *s = FROM_SYSBUS(icp_pic_state, dev);
int iomemtype;
- qdev_init_irq_sink(&dev->qdev, icp_pic_set_irq, 32);
+ qdev_init_gpio_in(&dev->qdev, icp_pic_set_irq, 32);
sysbus_init_irq(dev, &s->parent_irq);
sysbus_init_irq(dev, &s->parent_fiq);
iomemtype = cpu_register_io_memory(0, icp_pic_readfn,
@@ -484,7 +484,7 @@ static void integratorcp_init(ram_addr_t ram_size,
cpu_pic[ARM_PIC_CPU_IRQ],
cpu_pic[ARM_PIC_CPU_FIQ], NULL);
for (i = 0; i < 32; i++) {
- pic[i] = qdev_get_irq_sink(dev, i);
+ pic[i] = qdev_get_gpio_in(dev, i);
}
sysbus_create_simple("integrator_pic", 0xca000000, pic[26]);
sysbus_create_varargs("integrator_pit", 0x13000000,
diff --git a/hw/mpcore.c b/hw/mpcore.c
index 6df9a91ad3..a5eddd9cc8 100644
--- a/hw/mpcore.c
+++ b/hw/mpcore.c
@@ -320,17 +320,17 @@ static void realview_mpcore_init(SysBusDevice *dev)
priv = sysbus_create_simple("arm11mpcore_priv", MPCORE_PRIV_BASE, NULL);
sysbus_pass_irq(dev, sysbus_from_qdev(priv));
for (i = 0; i < 32; i++) {
- s->cpuic[i] = qdev_get_irq_sink(priv, i);
+ s->cpuic[i] = qdev_get_gpio_in(priv, i);
}
/* ??? IRQ routing is hardcoded to "normal" mode. */
for (n = 0; n < 4; n++) {
gic = sysbus_create_simple("realview_gic", 0x10040000 + n * 0x10000,
s->cpuic[10 + n]);
for (i = 0; i < 64; i++) {
- s->rvic[n][i] = qdev_get_irq_sink(gic, i);
+ s->rvic[n][i] = qdev_get_gpio_in(gic, i);
}
}
- qdev_init_irq_sink(&dev->qdev, mpcore_rirq_set_irq, 64);
+ qdev_init_gpio_in(&dev->qdev, mpcore_rirq_set_irq, 64);
}
static void mpcore_register_devices(void)
diff --git a/hw/musicpal.c b/hw/musicpal.c
index 1e0aff5cbb..9389af9589 100644
--- a/hw/musicpal.c
+++ b/hw/musicpal.c
@@ -1040,7 +1040,7 @@ static void mv88w8618_pic_init(SysBusDevice *dev)
mv88w8618_pic_state *s = FROM_SYSBUS(mv88w8618_pic_state, dev);
int iomemtype;
- qdev_init_irq_sink(&dev->qdev, mv88w8618_pic_set_irq, 32);
+ qdev_init_gpio_in(&dev->qdev, mv88w8618_pic_set_irq, 32);
sysbus_init_irq(dev, &s->parent_irq);
iomemtype = cpu_register_io_memory(0, mv88w8618_pic_readfn,
mv88w8618_pic_writefn, s);
@@ -1534,7 +1534,7 @@ static void musicpal_init(ram_addr_t ram_size,
dev = sysbus_create_simple("mv88w8618_pic", MP_PIC_BASE,
cpu_pic[ARM_PIC_CPU_IRQ]);
for (i = 0; i < 32; i++) {
- pic[i] = qdev_get_irq_sink(dev, i);
+ pic[i] = qdev_get_gpio_in(dev, i);
}
sysbus_create_varargs("mv88w8618_pit", MP_PIT_BASE, pic[MP_TIMER1_IRQ],
pic[MP_TIMER2_IRQ], pic[MP_TIMER3_IRQ],
diff --git a/hw/pcnet.c b/hw/pcnet.c
index 2c22f4a508..c44ba7edf4 100644
--- a/hw/pcnet.c
+++ b/hw/pcnet.c
@@ -2127,7 +2127,7 @@ static void lance_init(SysBusDevice *dev)
s->dma_opaque = qdev_get_prop_ptr(&dev->qdev, "dma");
- qdev_init_irq_sink(&dev->qdev, parent_lance_reset, 1);
+ qdev_init_gpio_in(&dev->qdev, parent_lance_reset, 1);
sysbus_init_mmio(dev, 4, s->mmio_index);
diff --git a/hw/pl190.c b/hw/pl190.c
index b8c2018d3a..10857683d7 100644
--- a/hw/pl190.c
+++ b/hw/pl190.c
@@ -235,7 +235,7 @@ static void pl190_init(SysBusDevice *dev)
iomemtype = cpu_register_io_memory(0, pl190_readfn,
pl190_writefn, s);
sysbus_init_mmio(dev, 0x1000, iomemtype);
- qdev_init_irq_sink(&dev->qdev, pl190_set_irq, 32);
+ qdev_init_gpio_in(&dev->qdev, pl190_set_irq, 32);
sysbus_init_irq(dev, &s->irq);
sysbus_init_irq(dev, &s->fiq);
pl190_reset(s);
diff --git a/hw/qdev.c b/hw/qdev.c
index b9278e9a5a..d945ff9538 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -156,19 +156,6 @@ void qdev_set_netdev(DeviceState *dev, NICInfo *nd)
}
-qemu_irq qdev_get_irq_sink(DeviceState *dev, int n)
-{
- assert(n >= 0 && n < dev->num_irq_sink);
- return dev->irq_sink[n];
-}
-
-/* Register device IRQ sinks. */
-void qdev_init_irq_sink(DeviceState *dev, qemu_irq_handler handler, int nirq)
-{
- dev->num_irq_sink = nirq;
- dev->irq_sink = qemu_allocate_irqs(handler, dev, nirq);
-}
-
/* Get a character (serial) device interface. */
CharDriverState *qdev_init_chardev(DeviceState *dev)
{
diff --git a/hw/qdev.h b/hw/qdev.h
index 0931bc19d6..143a1f8734 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -17,8 +17,6 @@ struct DeviceState {
DeviceType *type;
BusState *parent_bus;
DeviceProperty *props;
- int num_irq_sink;
- qemu_irq *irq_sink;
int num_gpio_out;
qemu_irq *gpio_out;
int num_gpio_in;
@@ -55,7 +53,6 @@ void qdev_set_prop_int(DeviceState *dev, const char *name, uint64_t value);
void qdev_set_prop_ptr(DeviceState *dev, const char *name, void *value);
void qdev_set_netdev(DeviceState *dev, NICInfo *nd);
-qemu_irq qdev_get_irq_sink(DeviceState *dev, int n);
qemu_irq qdev_get_gpio_in(DeviceState *dev, int n);
void qdev_connect_gpio_out(DeviceState *dev, int n, qemu_irq pin);
@@ -77,7 +74,7 @@ struct DeviceInfo {
void qdev_register(const char *name, int size, DeviceInfo *info);
/* Register device properties. */
-void qdev_init_irq_sink(DeviceState *dev, qemu_irq_handler handler, int nirq);
+/* GPIO inputs also double as IRQ sinks. */
void qdev_init_gpio_in(DeviceState *dev, qemu_irq_handler handler, int n);
void qdev_init_gpio_out(DeviceState *dev, qemu_irq *pins, int n);
diff --git a/hw/realview.c b/hw/realview.c
index 535f907626..62d8bf5030 100644
--- a/hw/realview.c
+++ b/hw/realview.c
@@ -84,7 +84,7 @@ static void realview_init(ram_addr_t ram_size,
cpu_irq[3], NULL);
}
for (n = 0; n < 64; n++) {
- pic[n] = qdev_get_irq_sink(dev, n);
+ pic[n] = qdev_get_gpio_in(dev, n);
}
sysbus_create_simple("pl050_keyboard", 0x10006000, pic[20]);
diff --git a/hw/sun4m.c b/hw/sun4m.c
index af9f8719a4..4ba9e89ed8 100644
--- a/hw/sun4m.c
+++ b/hw/sun4m.c
@@ -379,7 +379,7 @@ static void lance_init(NICInfo *nd, target_phys_addr_t leaddr,
s = sysbus_from_qdev(dev);
sysbus_mmio_map(s, 0, leaddr);
sysbus_connect_irq(s, 0, irq);
- *reset = qdev_get_irq_sink(dev, 0);
+ *reset = qdev_get_gpio_in(dev, 0);
}
static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size,
diff --git a/hw/syborg.c b/hw/syborg.c
index ae0ca67027..5ca9977b24 100644
--- a/hw/syborg.c
+++ b/hw/syborg.c
@@ -58,7 +58,7 @@ static void syborg_init(ram_addr_t ram_size,
dev = sysbus_create_simple("syborg,interrupt", 0xC0000000,
cpu_pic[ARM_PIC_CPU_IRQ]);
for (i = 0; i < 64; i++) {
- pic[i] = qdev_get_irq_sink(dev, i);
+ pic[i] = qdev_get_gpio_in(dev, i);
}
sysbus_create_simple("syborg,rtc", 0xC0001000, NULL);
diff --git a/hw/syborg_interrupt.c b/hw/syborg_interrupt.c
index e3fbbf7bf3..29e0d1a745 100644
--- a/hw/syborg_interrupt.c
+++ b/hw/syborg_interrupt.c
@@ -209,7 +209,7 @@ static void syborg_int_init(SysBusDevice *dev)
sysbus_init_irq(dev, &s->parent_irq);
s->num_irqs = qdev_get_prop_int(&dev->qdev, "num-interrupts", 64);
- qdev_init_irq_sink(&dev->qdev, syborg_int_set_irq, s->num_irqs);
+ qdev_init_gpio_in(&dev->qdev, syborg_int_set_irq, s->num_irqs);
iomemtype = cpu_register_io_memory(0, syborg_int_readfn,
syborg_int_writefn, s);
sysbus_init_mmio(dev, 0x1000, iomemtype);
diff --git a/hw/versatilepb.c b/hw/versatilepb.c
index eed97d6db7..03cf4d8f3a 100644
--- a/hw/versatilepb.c
+++ b/hw/versatilepb.c
@@ -135,7 +135,7 @@ static void vpb_sic_init(SysBusDevice *dev)
int iomemtype;
int i;
- qdev_init_irq_sink(&dev->qdev, vpb_sic_set_irq, 32);
+ qdev_init_gpio_in(&dev->qdev, vpb_sic_set_irq, 32);
for (i = 0; i < 32; i++) {
sysbus_init_irq(dev, &s->parent[i]);
}
@@ -188,12 +188,12 @@ static void versatile_init(ram_addr_t ram_size,
dev = sysbus_create_varargs("pl190", 0x10140000,
cpu_pic[0], cpu_pic[1], NULL);
for (n = 0; n < 32; n++) {
- pic[n] = qdev_get_irq_sink(dev, n);
+ pic[n] = qdev_get_gpio_in(dev, n);
}
dev = sysbus_create_simple("versatilepb_sic", 0x10003000, NULL);
for (n = 0; n < 32; n++) {
sysbus_connect_irq(sysbus_from_qdev(dev), n, pic[n]);
- sic[n] = qdev_get_irq_sink(dev, n);
+ sic[n] = qdev_get_gpio_in(dev, n);
}
sysbus_create_simple("pl050_keyboard", 0x10006000, sic[3]);