Create a a new configuration variable for PCI

Not all architectures have PCI. This new config variable allows control
of whether PCI support is configued in. It is selected for ARCH_X86.
Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>

Change-Id: Ic5fe777b14fd6a16ba605ada1e22acf3e8a2c783
Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Reviewed-on: http://review.coreboot.org/1947
Tested-by: build bot (Jenkins)
This commit is contained in:
Ronald G. Minnich 2012-11-29 16:28:21 -08:00
parent 3665ace13d
commit 78a1667cbc
4 changed files with 29 additions and 14 deletions

View File

@ -203,6 +203,11 @@ source src/mainboard/Kconfig
config ARCH_X86
bool
default n
select PCI
config ARCH_ARM
bool
default n
config ARCH_ARMV7
bool

View File

@ -175,28 +175,38 @@ config MULTIPLE_VGA_ADAPTERS
bool
default n
config PCI
bool
default n
config PCI_64BIT_PREF_MEM
bool
depends on PCI
default n
config HYPERTRANSPORT_PLUGIN_SUPPORT
bool
depends on PCI
default n
config PCIX_PLUGIN_SUPPORT
bool
depends on PCI
default y
config PCIEXP_PLUGIN_SUPPORT
bool
depends on PCI
default y
config AGP_PLUGIN_SUPPORT
bool
depends on PCI
default y
config CARDBUS_PLUGIN_SUPPORT
bool
depends on PCI
default y
config PCIEXP_COMMON_CLOCK

View File

@ -2,14 +2,14 @@ ramstage-y += device.c
ramstage-y += root_device.c
ramstage-y += cpu_device.c
ramstage-y += device_util.c
ramstage-y += pci_device.c
ramstage-$(CONFIG_PCI) += pci_device.c
ramstage-$(CONFIG_HYPERTRANSPORT_PLUGIN_SUPPORT) += hypertransport.c
ramstage-$(CONFIG_PCIX_PLUGIN_SUPPORT) += pcix_device.c
ramstage-y += pciexp_device.c
ramstage-$(CONFIG_PCIEXP_PLUGIN_SUPPORT) += pciexp_device.c
ramstage-$(CONFIG_AGP_PLUGIN_SUPPORT) += agp_device.c
ramstage-$(CONFIG_CARDBUS_PLUGIN_SUPPORT) += cardbus_device.c
ramstage-y += pnp_device.c
ramstage-y += pci_ops.c
ramstage-$(CONFIG_ARCH_X86) += pnp_device.c
ramstage-$(CONFIG_PCI) += pci_ops.c
ramstage-y += smbus_ops.c
romstage-y+= device_romstage.c

View File

@ -756,11 +756,10 @@ struct device_operations default_pci_ops_bus = {
*/
static struct device_operations *get_pci_bridge_ops(device_t dev)
{
unsigned int pos;
#if CONFIG_PCIX_PLUGIN_SUPPORT
pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
if (pos) {
unsigned int pcixpos;
pcixpos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
if (pcixpos) {
printk(BIOS_DEBUG, "%s subordinate bus PCI-X\n", dev_path(dev));
return &default_pcix_ops_bus;
}
@ -769,10 +768,10 @@ static struct device_operations *get_pci_bridge_ops(device_t dev)
/* How do I detect a PCI to AGP bridge? */
#endif
#if CONFIG_HYPERTRANSPORT_PLUGIN_SUPPORT
pos = 0;
while ((pos = pci_find_next_capability(dev, PCI_CAP_ID_HT, pos))) {
unsigned int htpos = 0;
while ((htpos = pci_find_next_capability(dev, PCI_CAP_ID_HT, htpos))) {
u16 flags;
flags = pci_read_config16(dev, pos + PCI_CAP_FLAGS);
flags = pci_read_config16(dev, htpos + PCI_CAP_FLAGS);
if ((flags >> 13) == 1) {
/* Host or Secondary Interface */
printk(BIOS_DEBUG, "%s subordinate bus HT\n",
@ -782,10 +781,11 @@ static struct device_operations *get_pci_bridge_ops(device_t dev)
}
#endif
#if CONFIG_PCIEXP_PLUGIN_SUPPORT
pos = pci_find_capability(dev, PCI_CAP_ID_PCIE);
if (pos) {
unsigned int pciexpos;
pciexpos = pci_find_capability(dev, PCI_CAP_ID_PCIE);
if (pciexpos) {
u16 flags;
flags = pci_read_config16(dev, pos + PCI_EXP_FLAGS);
flags = pci_read_config16(dev, pciexpos + PCI_EXP_FLAGS);
switch ((flags & PCI_EXP_FLAGS_TYPE) >> 4) {
case PCI_EXP_TYPE_ROOT_PORT:
case PCI_EXP_TYPE_UPSTREAM: