static void pci_enumerate(void) { struct pci_dev_info info = { .function = PCI_FUNCTION_ANY, .bar = PCI_BAR_ANY, }; pci_bus_scan_init(); while (pci_bus_scan(&info)) { pci_show(&info); info.class_type = 0; info.vendor_id = 0; info.device_id = 0; info.function = PCI_FUNCTION_ANY; info.bar = PCI_BAR_ANY; } }
static inline int eth_setup(struct device *dev) { struct eth_runtime *context = dev->driver_data; pci_bus_scan_init(); if (!pci_bus_scan(&context->pci_dev)) return 0; #ifdef CONFIG_PCI_ENUMERATION context->base_addr = context->pci_dev.addr; #endif pci_enable_regs(&context->pci_dev); pci_enable_bus_master(&context->pci_dev); pci_show(&context->pci_dev); return 1; }
static inline int i2c_dw_pci_setup(struct device *dev) { struct i2c_dw_dev_config * const dw = dev->driver_data; pci_bus_scan_init(); if (!pci_bus_scan(&dw->pci_dev)) { SYS_LOG_DBG("Could not find device"); return 0; } #ifdef CONFIG_PCI_ENUMERATION dw->base_address = dw->pci_dev.addr; #endif pci_enable_regs(&dw->pci_dev); pci_show(&dw->pci_dev); return 1; }
static inline int gpio_dw_setup(struct device *dev) { struct gpio_dw_config *config = dev->config->config_info; pci_bus_scan_init(); if (!pci_bus_scan(&config->pci_dev)) { return 0; } #ifdef CONFIG_PCI_ENUMERATION config->base_addr = config->pci_dev.addr; config->irq_num = config->pci_dev.irq; #endif pci_enable_regs(&config->pci_dev); pci_show(&config->pci_dev); return 1; }
static inline int i2c_dw_pci_setup(struct device *dev) { struct i2c_dw_rom_config *rom = dev->config->config_info; pci_bus_scan_init(); if (!pci_bus_scan(&rom->pci_dev)) { DBG("Could not find device\n"); return 0; } #ifdef CONFIG_PCI_ENUMERATION rom->base_address = rom->pci_dev.addr; rom->irq_num = rom->pci_dev.irq; #endif pci_enable_regs(&rom->pci_dev); pci_show(&rom->pci_dev); return 1; }