On 13/05/2022 18:54, Bernhard Beschow wrote:
> The pci_map_irq_fn's were implemented below type_init() which made them
> inaccessible to QOM functions. So move them up.
>
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> ---
> hw/isa/piix3.c | 22 +++++++++++-----------
> hw/isa/piix4.c | 50 +++++++++++++++++++++++++-------------------------
> 2 files changed, 36 insertions(+), 36 deletions(-)
>
> diff --git a/hw/isa/piix3.c b/hw/isa/piix3.c
> index dab901c9ad..7d69420967 100644
> --- a/hw/isa/piix3.c
> +++ b/hw/isa/piix3.c
> @@ -81,6 +81,17 @@ static void piix3_set_irq(void *opaque, int pirq, int level)
> piix3_set_irq_level(piix3, pirq, level);
> }
>
> +/*
> + * Return the global irq number corresponding to a given device irq
> + * pin. We could also use the bus number to have a more precise mapping.
> + */
> +static int pci_slot_get_pirq(PCIDevice *pci_dev, int pci_intx)
> +{
> + int slot_addend;
> + slot_addend = PCI_SLOT(pci_dev->devfn) - 1;
> + return (pci_intx + slot_addend) & 3;
> +}
> +
> static PCIINTxRoute piix3_route_intx_pin_to_irq(void *opaque, int pin)
> {
> PIIX3State *piix3 = opaque;
> @@ -353,17 +364,6 @@ static void piix3_register_types(void)
>
> type_init(piix3_register_types)
>
> -/*
> - * Return the global irq number corresponding to a given device irq
> - * pin. We could also use the bus number to have a more precise mapping.
> - */
> -static int pci_slot_get_pirq(PCIDevice *pci_dev, int pci_intx)
> -{
> - int slot_addend;
> - slot_addend = PCI_SLOT(pci_dev->devfn) - 1;
> - return (pci_intx + slot_addend) & 3;
> -}
> -
> PIIX3State *piix3_create(PCIBus *pci_bus, ISABus **isa_bus)
> {
> PIIX3State *piix3;
> diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
> index 8607e0ac36..a223b69e24 100644
> --- a/hw/isa/piix4.c
> +++ b/hw/isa/piix4.c
> @@ -73,6 +73,31 @@ static void piix4_set_irq(void *opaque, int irq_num, int level)
> }
> }
>
> +static int pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num)
> +{
> + int slot;
> +
> + slot = PCI_SLOT(pci_dev->devfn);
> +
> + switch (slot) {
> + /* PIIX4 USB */
> + case 10:
> + return 3;
> + /* AMD 79C973 Ethernet */
> + case 11:
> + return 1;
> + /* Crystal 4281 Sound */
> + case 12:
> + return 2;
> + /* PCI slot 1 to 4 */
> + case 18 ... 21:
> + return ((slot - 18) + irq_num) & 0x03;
> + /* Unknown device, don't do any translation */
> + default:
> + return irq_num;
> + }
> +}
> +
> static void piix4_isa_reset(DeviceState *dev)
> {
> PIIX4State *d = PIIX4_PCI_DEVICE(dev);
> @@ -265,31 +290,6 @@ static void piix4_register_types(void)
>
> type_init(piix4_register_types)
>
> -static int pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num)
> -{
> - int slot;
> -
> - slot = PCI_SLOT(pci_dev->devfn);
> -
> - switch (slot) {
> - /* PIIX4 USB */
> - case 10:
> - return 3;
> - /* AMD 79C973 Ethernet */
> - case 11:
> - return 1;
> - /* Crystal 4281 Sound */
> - case 12:
> - return 2;
> - /* PCI slot 1 to 4 */
> - case 18 ... 21:
> - return ((slot - 18) + irq_num) & 0x03;
> - /* Unknown device, don't do any translation */
> - default:
> - return irq_num;
> - }
> -}
> -
> DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus)
> {
> PIIX4State *s;
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
ATB,
Mark.