aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/pci_psycho.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-09-01 21:32:22 -0400
committerDavid S. Miller <davem@davemloft.net>2008-09-01 21:32:22 -0400
commite822358ac24550d889895d5866797ae8c9b188c2 (patch)
treead231109cba4725ea349fd7186bf6dc293cf3045 /arch/sparc64/kernel/pci_psycho.c
parent7cc288add44c392dfc8c1dbf0e3a26a69a14fa70 (diff)
sparc64: Pass proper parent device down into root pci_create_bus() call.
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.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c
index 5ee84c5b9636..47db875d0236 100644
--- a/arch/sparc64/kernel/pci_psycho.c
+++ b/arch/sparc64/kernel/pci_psycho.c
@@ -803,11 +803,12 @@ static void pbm_config_busmastering(struct pci_pbm_info *pbm)
803 pci_config_write8(addr, 64); 803 pci_config_write8(addr, 64);
804} 804}
805 805
806static void __init psycho_scan_bus(struct pci_pbm_info *pbm) 806static void __init psycho_scan_bus(struct pci_pbm_info *pbm,
807 struct device *parent)
807{ 808{
808 pbm_config_busmastering(pbm); 809 pbm_config_busmastering(pbm);
809 pbm->is_66mhz_capable = 0; 810 pbm->is_66mhz_capable = 0;
810 pbm->pci_bus = pci_scan_one_pbm(pbm); 811 pbm->pci_bus = pci_scan_one_pbm(pbm, parent);
811 812
812 /* After the PCI bus scan is complete, we can register 813 /* After the PCI bus scan is complete, we can register
813 * the error interrupt handlers. 814 * the error interrupt handlers.
@@ -971,8 +972,9 @@ static void psycho_pbm_strbuf_init(struct pci_pbm_info *pbm,
971#define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL 972#define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL
972 973
973static void __init psycho_pbm_init(struct pci_controller_info *p, 974static void __init psycho_pbm_init(struct pci_controller_info *p,
974 struct device_node *dp, int is_pbm_a) 975 struct of_device *op, int is_pbm_a)
975{ 976{
977 struct device_node *dp = op->node;
976 struct property *prop; 978 struct property *prop;
977 struct pci_pbm_info *pbm; 979 struct pci_pbm_info *pbm;
978 980
@@ -1015,7 +1017,7 @@ static void __init psycho_pbm_init(struct pci_controller_info *p,
1015 1017
1016 psycho_pbm_strbuf_init(pbm, is_pbm_a); 1018 psycho_pbm_strbuf_init(pbm, is_pbm_a);
1017 1019
1018 psycho_scan_bus(pbm); 1020 psycho_scan_bus(pbm, &op->dev);
1019} 1021}
1020 1022
1021#define PSYCHO_CONFIGSPACE 0x001000000UL 1023#define PSYCHO_CONFIGSPACE 0x001000000UL
@@ -1042,7 +1044,7 @@ static int __devinit psycho_probe(struct of_device *op,
1042 1044
1043 if (p->pbm_A.portid == upa_portid) { 1045 if (p->pbm_A.portid == upa_portid) {
1044 is_pbm_a = (p->pbm_A.prom_node == NULL); 1046 is_pbm_a = (p->pbm_A.prom_node == NULL);
1045 psycho_pbm_init(p, dp, is_pbm_a); 1047 psycho_pbm_init(p, op, is_pbm_a);
1046 return 0; 1048 return 0;
1047 } 1049 }
1048 } 1050 }
@@ -1086,7 +1088,7 @@ static int __devinit psycho_probe(struct of_device *op,
1086 1088
1087 is_pbm_a = ((pr_regs[0].phys_addr & 0x6000) == 0x2000); 1089 is_pbm_a = ((pr_regs[0].phys_addr & 0x6000) == 0x2000);
1088 1090
1089 psycho_pbm_init(p, dp, is_pbm_a); 1091 psycho_pbm_init(p, op, is_pbm_a);
1090 1092
1091 return 0; 1093 return 0;
1092 1094