From e44d99460590fb82391b1cd37d735157babb8f95 Mon Sep 17 00:00:00 2001 From: Blue Swirl Date: Sun, 22 Mar 2009 16:49:34 +0000 Subject: [PATCH] Fix PPC nographic mode git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@481 f158a5a8-5612-0410-a976-696ce0be7e32 --- drivers/pci.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/pci.c b/drivers/pci.c index 80d78df..4aeb418 100644 --- a/drivers/pci.c +++ b/drivers/pci.c @@ -36,7 +36,8 @@ /* DECLARE data structures for the nodes. */ -DECLARE_UNNAMED_NODE( ob_pci_node, INSTALL_OPEN, 2*sizeof(int) ); +DECLARE_UNNAMED_NODE( ob_pci_bus_node, INSTALL_OPEN, 2*sizeof(int) ); +DECLARE_UNNAMED_NODE( ob_pci_simple_node, INSTALL_OPEN, 2*sizeof(int) ); const pci_arch_t *arch; @@ -156,7 +157,7 @@ ob_pci_encode_unit(int *idx) push_str(buf); } -NODE_METHODS(ob_pci_node) = { +NODE_METHODS(ob_pci_bus_node) = { { NULL, ob_pci_initialize }, { "open", ob_pci_open }, { "close", ob_pci_close }, @@ -164,6 +165,12 @@ NODE_METHODS(ob_pci_node) = { { "encode-unit", ob_pci_encode_unit }, }; +NODE_METHODS(ob_pci_simple_node) = { + { NULL, ob_pci_initialize }, + { "open", ob_pci_open }, + { "close", ob_pci_close }, +}; + static void pci_set_bus_range(const pci_config_t *config) { phandle_t dev = get_cur_dev(); @@ -737,7 +744,12 @@ static void ob_scan_pci_bus(int bus, unsigned long *mem_base, #endif config.dev = addr & 0x00FFFFFF; - REGISTER_NAMED_NODE(ob_pci_node, config.path); + if (class == PCI_BASE_CLASS_BRIDGE && + (subclass == PCI_SUBCLASS_BRIDGE_HOST || + subclass == PCI_SUBCLASS_BRIDGE_PCI)) + REGISTER_NAMED_NODE(ob_pci_bus_node, config.path); + else + REGISTER_NAMED_NODE(ob_pci_simple_node, config.path); activate_device(config.path);