aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/kernel/leon_pci.c30
-rw-r--r--arch/sparc/kernel/pci.c10
-rw-r--r--arch/sparc/kernel/pcic.c6
3 files changed, 18 insertions, 28 deletions
diff --git a/arch/sparc/kernel/leon_pci.c b/arch/sparc/kernel/leon_pci.c
index 4371f72ff025..98c223edac84 100644
--- a/arch/sparc/kernel/leon_pci.c
+++ b/arch/sparc/kernel/leon_pci.c
@@ -25,6 +25,12 @@ void leon_pci_init(struct platform_device *ofdev, struct leon_pci_info *info)
25{ 25{
26 LIST_HEAD(resources); 26 LIST_HEAD(resources);
27 struct pci_bus *root_bus; 27 struct pci_bus *root_bus;
28 struct pci_host_bridge *bridge;
29 int ret;
30
31 bridge = pci_alloc_host_bridge(0);
32 if (!bridge)
33 return;
28 34
29 pci_add_resource_offset(&resources, &info->io_space, 35 pci_add_resource_offset(&resources, &info->io_space,
30 info->io_space.start - 0x1000); 36 info->io_space.start - 0x1000);
@@ -32,15 +38,21 @@ void leon_pci_init(struct platform_device *ofdev, struct leon_pci_info *info)
32 info->busn.flags = IORESOURCE_BUS; 38 info->busn.flags = IORESOURCE_BUS;
33 pci_add_resource(&resources, &info->busn); 39 pci_add_resource(&resources, &info->busn);
34 40
35 root_bus = pci_scan_root_bus(&ofdev->dev, 0, info->ops, info, 41 list_splice_init(&resources, &bridge->windows);
36 &resources); 42 bridge->dev.parent = &ofdev->dev;
37 if (!root_bus) { 43 bridge->sysdata = info;
38 pci_free_resource_list(&resources); 44 bridge->busnr = 0;
45 bridge->ops = info->ops;
46 bridge->swizzle_irq = pci_common_swizzle;
47 bridge->map_irq = info->map_irq;
48
49 ret = pci_scan_root_bus_bridge(bridge);
50 if (ret) {
51 pci_free_host_bridge(bridge);
39 return; 52 return;
40 } 53 }
41 54
42 /* Setup IRQs of all devices using custom routines */ 55 root_bus = bridge->bus;
43 pci_fixup_irqs(pci_common_swizzle, info->map_irq);
44 56
45 /* Assign devices with resources */ 57 /* Assign devices with resources */
46 pci_assign_unassigned_resources(); 58 pci_assign_unassigned_resources();
@@ -94,9 +106,3 @@ void pcibios_fixup_bus(struct pci_bus *pbus)
94 } 106 }
95 } 107 }
96} 108}
97
98resource_size_t pcibios_align_resource(void *data, const struct resource *res,
99 resource_size_t size, resource_size_t align)
100{
101 return res->start;
102}
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
index 7eceaa10836f..3f8670c92951 100644
--- a/arch/sparc/kernel/pci.c
+++ b/arch/sparc/kernel/pci.c
@@ -690,16 +690,6 @@ struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm,
690 return bus; 690 return bus;
691} 691}
692 692
693void pcibios_fixup_bus(struct pci_bus *pbus)
694{
695}
696
697resource_size_t pcibios_align_resource(void *data, const struct resource *res,
698 resource_size_t size, resource_size_t align)
699{
700 return res->start;
701}
702
703int pcibios_enable_device(struct pci_dev *dev, int mask) 693int pcibios_enable_device(struct pci_dev *dev, int mask)
704{ 694{
705 u16 cmd, oldcmd; 695 u16 cmd, oldcmd;
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
index 732af9a9f6dd..4a133c052af8 100644
--- a/arch/sparc/kernel/pcic.c
+++ b/arch/sparc/kernel/pcic.c
@@ -746,12 +746,6 @@ static void watchdog_reset() {
746} 746}
747#endif 747#endif
748 748
749resource_size_t pcibios_align_resource(void *data, const struct resource *res,
750 resource_size_t size, resource_size_t align)
751{
752 return res->start;
753}
754
755int pcibios_enable_device(struct pci_dev *pdev, int mask) 749int pcibios_enable_device(struct pci_dev *pdev, int mask)
756{ 750{
757 return 0; 751 return 0;