[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 064/126] hw/isa: Factor isa_bus_get_irq() out of isa_get_irq()
From: |
Philippe Mathieu-Daudé |
Subject: |
[PULL 064/126] hw/isa: Factor isa_bus_get_irq() out of isa_get_irq() |
Date: |
Mon, 27 Feb 2023 15:01:11 +0100 |
isa_get_irq() was added in commit 3a38d437ca
("Add isa_reserve_irq()" Fri Aug 14 11:36:15 2009) as:
a temporary interface to be used to allocate ISA IRQs for
devices which have not yet been converted to qdev, and for
special cases which are not suited for qdev conversions,
such as the 'ferr'.
We still use it 14 years later, using the global 'isabus'
singleton. In order to get rid of such *temporary* interface,
extract isa_bus_get_irq() which can take any ISABus* object.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20230215161641.32663-3-philmd@linaro.org>
---
hw/isa/isa-bus.c | 14 ++++++++++----
include/hw/isa/isa.h | 8 ++++++++
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 80d8fb4c5b..a289eccfb1 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -72,6 +72,13 @@ void isa_bus_register_input_irqs(ISABus *bus, qemu_irq
*irqs_in)
bus->irqs_in = irqs_in;
}
+qemu_irq isa_bus_get_irq(ISABus *bus, unsigned irqnum)
+{
+ assert(irqnum < ISA_NUM_IRQS);
+ assert(bus->irqs_in);
+ return bus->irqs_in[irqnum];
+}
+
/*
* isa_get_irq() returns the corresponding input qemu_irq entry for the i8259.
*
@@ -81,14 +88,13 @@ void isa_bus_register_input_irqs(ISABus *bus, qemu_irq
*irqs_in)
qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq)
{
assert(!dev || ISA_BUS(qdev_get_parent_bus(DEVICE(dev))) == isabus);
- assert(isairq < ISA_NUM_IRQS);
- return isabus->irqs_in[isairq];
+ return isa_bus_get_irq(isabus, isairq);
}
void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq)
{
- qemu_irq irq = isa_get_irq(isadev, isairq);
- qdev_connect_gpio_out(DEVICE(isadev), gpioirq, irq);
+ qemu_irq input_irq = isa_get_irq(isadev, isairq);
+ qdev_connect_gpio_out(DEVICE(isadev), gpioirq, input_irq);
}
void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16)
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index 3a60f6afa6..40d6224a4e 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -72,6 +72,14 @@ ISABus *isa_bus_new(DeviceState *dev, MemoryRegion
*address_space,
void isa_bus_register_input_irqs(ISABus *bus, qemu_irq *irqs_in);
void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16);
IsaDma *isa_bus_get_dma(ISABus *bus, int nchan);
+/**
+ * isa_bus_get_irq: Return input IRQ on ISA bus.
+ * @bus: the #ISABus to plug ISA devices on.
+ * @irqnum: the ISA IRQ number.
+ *
+ * Return IRQ @irqnum from the PIC associated on ISA @bus.
+ */
+qemu_irq isa_bus_get_irq(ISABus *bus, unsigned irqnum);
ISADevice *isa_new(const char *name);
ISADevice *isa_try_new(const char *name);
bool isa_realize_and_unref(ISADevice *dev, ISABus *bus, Error **errp);
--
2.38.1
- [PULL 055/126] hw/isa/i82378: Remove intermediate IRQ forwarder, (continued)
- [PULL 055/126] hw/isa/i82378: Remove intermediate IRQ forwarder, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 056/126] hw/isa/vt82c686: Remove intermediate IRQ forwarder, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 057/126] hw/sparc64/sun4u: Keep reference to ISA input IRQs in EbusState, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 058/126] hw/isa: Remove empty ISADeviceClass structure, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 059/126] hw/isa: Reorder to separate ISABus* vs ISADevice* functions, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 060/126] hw/isa: Un-inline isa_bus_from_device(), Philippe Mathieu-Daudé, 2023/02/27
- [PULL 061/126] hw/isa: Rename isa_bus_irqs() -> isa_bus_register_input_irqs(), Philippe Mathieu-Daudé, 2023/02/27
- [PULL 062/126] hw/isa: Use isa_address_space_io() to reduce access on global 'isabus', Philippe Mathieu-Daudé, 2023/02/27
- [PULL 063/126] hw/isa: Rename isa_get_dma() -> isa_bus_get_dma(), Philippe Mathieu-Daudé, 2023/02/27
- [PULL 066/126] hw/rtc/mc146818rtc: Rename RTCState -> MC146818RtcState, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 064/126] hw/isa: Factor isa_bus_get_irq() out of isa_get_irq(),
Philippe Mathieu-Daudé <=
- [PULL 068/126] hw/rtc: Rename rtc_[get|set]_memory -> mc146818rtc_[get|set]_cmos_data, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 065/126] hw: Replace isa_get_irq() by isa_bus_get_irq() when ISABus is available, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 067/126] hw/rtc/mc146818rtc: Pass MC146818RtcState instead of ISADevice argument, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 069/126] hw/timer/hpet: Include missing 'hw/qdev-properties.h' header, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 070/126] hw/audio/hda-codec: Avoid forward-declaring HDAAudioState, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 071/126] hw/audio/es1370: Avoid forward-declaring ES1370State, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 072/126] hw/audio/es1370: Replace container_of() by ES1370() QOM cast macro, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 073/126] hw/audio/ac97: Replace container_of() by AC97() QOM cast macro, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 075/126] hw/usb/dev-smartcard-reader: Avoid forward-declaring CCIDBus, Philippe Mathieu-Daudé, 2023/02/27
- [PULL 074/126] hw/audio/ac97: Split off some definitions to a header, Philippe Mathieu-Daudé, 2023/02/27