Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc: move find_and_init_phbs() to pSeries specific code

Previously, find_and_init_phbs() was used in both PowerNV and pSeries
setup. However, since RTAS support has been dropped from PowerNV, we
can move it into a platform-specific file.

Signed-off-by: Daniel Axtens <dja@axtens.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>

authored by

Daniel Axtens and committed by
Michael Ellerman
bdc728a8 a7f4ee1f

+47 -50
-3
arch/powerpc/include/asm/ppc-pci.h
··· 23 23 24 24 extern struct list_head hose_list; 25 25 26 - extern void find_and_init_phbs(void); 27 - 28 26 extern struct pci_dev *isa_bridge_pcidev; /* may be NULL if no ISA bus */ 29 27 30 28 /** Bus Unit ID macros; get low and hi 32-bits of the 64-bit BUID */ ··· 79 81 #endif /* CONFIG_EEH */ 80 82 81 83 #else /* CONFIG_PCI */ 82 - static inline void find_and_init_phbs(void) { } 83 84 static inline void init_pci_config_tokens(void) { } 84 85 #endif /* !CONFIG_PCI */ 85 86
-47
arch/powerpc/kernel/rtas_pci.c
··· 277 277 278 278 return 0; 279 279 } 280 - 281 - void __init find_and_init_phbs(void) 282 - { 283 - struct device_node *node; 284 - struct pci_controller *phb; 285 - struct device_node *root = of_find_node_by_path("/"); 286 - 287 - for_each_child_of_node(root, node) { 288 - if (node->type == NULL || (strcmp(node->type, "pci") != 0 && 289 - strcmp(node->type, "pciex") != 0)) 290 - continue; 291 - 292 - phb = pcibios_alloc_controller(node); 293 - if (!phb) 294 - continue; 295 - rtas_setup_phb(phb); 296 - pci_process_bridge_OF_ranges(phb, node, 0); 297 - isa_bridge_find_early(phb); 298 - } 299 - 300 - of_node_put(root); 301 - pci_devs_phb_init(); 302 - 303 - /* 304 - * PCI_PROBE_ONLY and PCI_REASSIGN_ALL_BUS can be set via properties 305 - * in chosen. 306 - */ 307 - if (of_chosen) { 308 - const int *prop; 309 - 310 - prop = of_get_property(of_chosen, 311 - "linux,pci-probe-only", NULL); 312 - if (prop) { 313 - if (*prop) 314 - pci_add_flags(PCI_PROBE_ONLY); 315 - else 316 - pci_clear_flags(PCI_PROBE_ONLY); 317 - } 318 - 319 - #ifdef CONFIG_PPC32 /* Will be made generic soon */ 320 - prop = of_get_property(of_chosen, 321 - "linux,pci-assign-all-buses", NULL); 322 - if (prop && *prop) 323 - pci_add_flags(PCI_REASSIGN_ALL_BUS); 324 - #endif /* CONFIG_PPC32 */ 325 - } 326 - }
+47
arch/powerpc/platforms/pseries/setup.c
··· 461 461 } 462 462 #endif 463 463 464 + static void __init find_and_init_phbs(void) 465 + { 466 + struct device_node *node; 467 + struct pci_controller *phb; 468 + struct device_node *root = of_find_node_by_path("/"); 469 + 470 + for_each_child_of_node(root, node) { 471 + if (node->type == NULL || (strcmp(node->type, "pci") != 0 && 472 + strcmp(node->type, "pciex") != 0)) 473 + continue; 474 + 475 + phb = pcibios_alloc_controller(node); 476 + if (!phb) 477 + continue; 478 + rtas_setup_phb(phb); 479 + pci_process_bridge_OF_ranges(phb, node, 0); 480 + isa_bridge_find_early(phb); 481 + } 482 + 483 + of_node_put(root); 484 + pci_devs_phb_init(); 485 + 486 + /* 487 + * PCI_PROBE_ONLY and PCI_REASSIGN_ALL_BUS can be set via properties 488 + * in chosen. 489 + */ 490 + if (of_chosen) { 491 + const int *prop; 492 + 493 + prop = of_get_property(of_chosen, 494 + "linux,pci-probe-only", NULL); 495 + if (prop) { 496 + if (*prop) 497 + pci_add_flags(PCI_PROBE_ONLY); 498 + else 499 + pci_clear_flags(PCI_PROBE_ONLY); 500 + } 501 + 502 + #ifdef CONFIG_PPC32 /* Will be made generic soon */ 503 + prop = of_get_property(of_chosen, 504 + "linux,pci-assign-all-buses", NULL); 505 + if (prop && *prop) 506 + pci_add_flags(PCI_REASSIGN_ALL_BUS); 507 + #endif /* CONFIG_PPC32 */ 508 + } 509 + } 510 + 464 511 static void __init pSeries_setup_arch(void) 465 512 { 466 513 set_arch_panic_timeout(10, ARCH_PANIC_TIMEOUT);