@ -152,18 +152,24 @@ int pci_x86_write_config(struct udevice *bus, pci_dev_t bdf, uint offset,
return 0 ;
}
void pci_assign_irqs ( int bus , int device , int func , u8 irq [ 4 ] )
void pci_assign_irqs ( int bus , int device , u8 irq [ 4 ] )
{
pci_dev_t bdf ;
int func ;
u16 vendor ;
u8 pin , line ;
for ( func = 0 ; func < 8 ; func + + ) {
bdf = PCI_BDF ( bus , device , func ) ;
vendor = x86_pci_read_config16 ( bdf , PCI_VENDOR_ID ) ;
if ( vendor = = 0xffff | | vendor = = 0x0000 )
continue ;
pin = x86_pci_read_config8 ( bdf , PCI_INTERRUPT_PIN ) ;
/* PCI spec says all values except 1..4 are reserved */
if ( ( pin < 1 ) | | ( pin > 4 ) )
return ;
continue ;
line = irq [ pin - 1 ] ;
@ -172,3 +178,4 @@ void pci_assign_irqs(int bus, int device, int func, u8 irq[4])
x86_pci_write_config8 ( bdf , PCI_INTERRUPT_LINE , line ) ;
}
}