00001 /* 00002 * kernel_drivers/adi_buses/pci/pcibus_core.c 00003 * 00004 * Copyright (c) 2003-2004 Lukasz Dembinski <dembol@nasa.com.pl> 00005 * All Rights Reserved 00006 * 00007 * Date: 2004/06 00008 * Author: Lukasz Dembinski 00009 * Info: pcibus_core.c core file 00010 * Contact: mailto: <dembol@nasa.com.pl> 00011 * 00012 */ 00013 00014 #include <agnix/agnix.h> 00015 #include <agnix/adi/adi.h> 00016 #include <agnix/list.h> 00017 #include <agnix/spinlock.h> 00018 #include <agnix/console.h> 00019 00020 #define MOD_NAME "PCI: \t" 00021 00022 struct list_head pcibus_list; 00023 struct list_head pcidev_list; 00024 spinlock_t pcibus_list_lock; 00025 spinlock_t pcidev_list_lock; 00026 00027 int pcibus_disable = 0; 00028 00029 int adi_pcibus_init(void) 00030 { 00031 printk(MOD_NAME "initializing PCI bus\n"); 00032 00033 INIT_LIST_HEAD(&pcibus_list); 00034 INIT_LIST_HEAD(&pcidev_list); 00035 spin_lock_init(&pcibus_lock); 00036 spin_lock_init(&pcidev_lock); 00037 00038 if (pcibus_ops_init() < 0) { 00039 printk(MOD_NAME "disabling PCI subsystem\n"); 00040 return -1; 00041 } 00042 00043 pcibus_scan_all(); 00044 pcibus_irq_init(); 00045 00046 return 0; 00047 }