printk_uart_base = UART_BASE;
- bdf = pci_find_device(PCI_ID_ANY, PCI_ID_ANY);
+ bdf = pci_find_device(PCI_ID_ANY, PCI_ID_ANY, 0);
if (bdf < 0) {
printk("No device found!\n");
return;
int_init();
int_set_handler(IRQ_VECTOR, irq_handler);
- bdf = pci_find_device(PCI_ID_ANY, PCI_ID_ANY);
+ bdf = pci_find_device(PCI_ID_ANY, PCI_ID_ANY, 0);
if (bdf < 0) {
printk("No device found!\n");
return;
* the COPYING file in the top-level directory.
*/
-int pci_find_device(u16 vendor, u16 device)
+int pci_find_device(u16 vendor, u16 device, u16 start_bdf)
{
unsigned int bdf;
u16 id;
- for (bdf = 0; bdf < 0x10000; bdf++) {
+ for (bdf = start_bdf; bdf < 0x10000; bdf++) {
id = pci_read_config(bdf, PCI_CFG_VENDOR_ID, 2);
if (id == PCI_ID_ANY || (vendor != PCI_ID_ANY && vendor != id))
continue;
u32 pci_read_config(u16 bdf, unsigned int addr, unsigned int size);
void pci_write_config(u16 bdf, unsigned int addr, u32 value,
unsigned int size);
-int pci_find_device(u16 vendor, u16 device);
+int pci_find_device(u16 vendor, u16 device, u16 start_bdf);
int pci_find_cap(u16 bdf, u16 cap);
void pci_msi_set_vector(u16 bdf, unsigned int vector);
#endif