diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-03-01 02:35:04 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 04:55:06 -0400 |
commit | a2fb23af1c31ad6e0c281e56d385f803229d57fa (patch) | |
tree | 9c093cd9cc639cfaac4e2b1057f5d45eb6ab69e3 /arch/sparc64/kernel/pci_psycho.c | |
parent | deb66c4521e119442aa266553e8cbfc86eb71232 (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.c | 26 |
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 | ||
906 | static void psycho_base_address_update(struct pci_dev *pdev, int resource) | 906 | static 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) | |||
968 | static void pbm_scan_bus(struct pci_controller_info *p, | 967 | static 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 | ||
995 | static void psycho_scan_bus(struct pci_controller_info *p) | 973 | static void psycho_scan_bus(struct pci_controller_info *p) |