diff options
author | David S. Miller <davem@davemloft.net> | 2008-09-01 21:32:22 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-09-01 21:32:22 -0400 |
commit | e822358ac24550d889895d5866797ae8c9b188c2 (patch) | |
tree | ad231109cba4725ea349fd7186bf6dc293cf3045 /arch/sparc64/kernel/pci_psycho.c | |
parent | 7cc288add44c392dfc8c1dbf0e3a26a69a14fa70 (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.c | 14 |
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 | ||
806 | static void __init psycho_scan_bus(struct pci_pbm_info *pbm) | 806 | static 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 | ||
973 | static void __init psycho_pbm_init(struct pci_controller_info *p, | 974 | static 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 | ||