aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/pci_psycho.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2007-03-01 02:35:04 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2007-04-26 04:55:06 -0400
commita2fb23af1c31ad6e0c281e56d385f803229d57fa (patch)
tree9c093cd9cc639cfaac4e2b1057f5d45eb6ab69e3 /arch/sparc64/kernel/pci_psycho.c
parentdeb66c4521e119442aa266553e8cbfc86eb71232 (diff)
[SPARC64]: Probe PCI bus using OF device tree.
Almost entirely taken from the 64-bit PowerPC PCI code. This allowed to eliminate a ton of cruft from the sparc64 PCI layer. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/pci_psycho.c')
-rw-r--r--arch/sparc64/kernel/pci_psycho.c26
1 files changed, 2 insertions, 24 deletions
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c
index fda5db223d96..12ea30d30b2f 100644
--- a/arch/sparc64/kernel/pci_psycho.c
+++ b/arch/sparc64/kernel/pci_psycho.c
@@ -905,8 +905,7 @@ static void psycho_resource_adjust(struct pci_dev *pdev,
905 905
906static void psycho_base_address_update(struct pci_dev *pdev, int resource) 906static void psycho_base_address_update(struct pci_dev *pdev, int resource)
907{ 907{
908 struct pcidev_cookie *pcp = pdev->sysdata; 908 struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller;
909 struct pci_pbm_info *pbm = pcp->pbm;
910 struct resource *res, *root; 909 struct resource *res, *root;
911 u32 reg; 910 u32 reg;
912 int where, size, is_64bit; 911 int where, size, is_64bit;
@@ -968,28 +967,7 @@ static void pbm_config_busmastering(struct pci_pbm_info *pbm)
968static void pbm_scan_bus(struct pci_controller_info *p, 967static void pbm_scan_bus(struct pci_controller_info *p,
969 struct pci_pbm_info *pbm) 968 struct pci_pbm_info *pbm)
970{ 969{
971 struct pcidev_cookie *cookie = kzalloc(sizeof(*cookie), GFP_KERNEL); 970 pbm->pci_bus = pci_scan_one_pbm(pbm);
972
973 if (!cookie) {
974 prom_printf("PSYCHO: Critical allocation failure.\n");
975 prom_halt();
976 }
977
978 /* All we care about is the PBM. */
979 cookie->pbm = pbm;
980
981 pbm->pci_bus = pci_scan_bus(pbm->pci_first_busno,
982 p->pci_ops,
983 pbm);
984 pci_fixup_host_bridge_self(pbm->pci_bus);
985 pbm->pci_bus->self->sysdata = cookie;
986
987 pci_fill_in_pbm_cookies(pbm->pci_bus, pbm, pbm->prom_node);
988 pci_record_assignments(pbm, pbm->pci_bus);
989 pci_assign_unassigned(pbm, pbm->pci_bus);
990 pci_fixup_irq(pbm, pbm->pci_bus);
991 pci_determine_66mhz_disposition(pbm, pbm->pci_bus);
992 pci_setup_busmastering(pbm, pbm->pci_bus);
993} 971}
994 972
995static void psycho_scan_bus(struct pci_controller_info *p) 973static void psycho_scan_bus(struct pci_controller_info *p)