Message ID | 20220513175445.89616-3-shentey@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | QOM'ify PIIX southbridge creation | expand |
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.
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;
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(-)