mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
pci: introduce pci_swizzle_map_irq_fn() for standardized interrupt pin swizzle
Introduce pci_swizzle_map_irq_fn() for interrupt pin swizzle which is standardized. PCI bridge swizzle is common logic, by introducing this function duplicated swizzle logic will be avoided later. [jbaron@redhat.com: drop opaque argument] Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
9e38f56183
commit
91e5615984
2 changed files with 20 additions and 0 deletions
18
hw/pci.c
18
hw/pci.c
|
@ -1155,6 +1155,24 @@ void pci_device_set_intx_routing_notifier(PCIDevice *dev,
|
|||
dev->intx_routing_notifier = notifier;
|
||||
}
|
||||
|
||||
/*
|
||||
* PCI-to-PCI bridge specification
|
||||
* 9.1: Interrupt routing. Table 9-1
|
||||
*
|
||||
* the PCI Express Base Specification, Revision 2.1
|
||||
* 2.2.8.1: INTx interrutp signaling - Rules
|
||||
* the Implementation Note
|
||||
* Table 2-20
|
||||
*/
|
||||
/*
|
||||
* 0 <= pin <= 3 0 = INTA, 1 = INTB, 2 = INTC, 3 = INTD
|
||||
* 0-origin unlike PCI interrupt pin register.
|
||||
*/
|
||||
int pci_swizzle_map_irq_fn(PCIDevice *pci_dev, int pin)
|
||||
{
|
||||
return (pin + PCI_SLOT(pci_dev->devfn)) % PCI_NUM_PINS;
|
||||
}
|
||||
|
||||
/***********************************************************/
|
||||
/* monitor info on PCI */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue