diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-03-10 07:49:16 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-05-13 12:12:17 -0400 |
commit | c23bfc3835173f5229b2503e3b616001a28affad (patch) | |
tree | 109f74ea29224587bead91289f55f2d30032b615 /arch/arm/mach-ixp4xx | |
parent | daeb4c0c3bf2df72d0cd6e4330bad9e2e520552b (diff) |
ARM: PCI: provide a default bus scan implementation
Most PCI implementations perform simple root bus scanning. Rather than
having each group of platforms provide a duplicated bus scan function,
provide the PCI configuration ops structure via the hw_pci structure,
and call the root bus scanning function from core ARM PCI code.
Acked-by: Krzysztof HaĆasa <khc@pm.waw.pl>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-ixp4xx')
-rw-r--r-- | arch/arm/mach-ixp4xx/avila-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/common-pci.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/coyote-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/dsmg600-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/fsg-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/gateway7001-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/goramo_mlr.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/gtwx5715-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/include/mach/platform.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/ixdp425-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/ixdpg425-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/miccpt-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/nas100d-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/nslu2-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/vulcan-pci.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/wg302v2-pci.c | 2 |
16 files changed, 15 insertions, 21 deletions
diff --git a/arch/arm/mach-ixp4xx/avila-pci.c b/arch/arm/mach-ixp4xx/avila-pci.c index 89d1f35fff09..548c7d43ade6 100644 --- a/arch/arm/mach-ixp4xx/avila-pci.c +++ b/arch/arm/mach-ixp4xx/avila-pci.c | |||
@@ -65,9 +65,9 @@ static int __init avila_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
65 | 65 | ||
66 | struct hw_pci avila_pci __initdata = { | 66 | struct hw_pci avila_pci __initdata = { |
67 | .nr_controllers = 1, | 67 | .nr_controllers = 1, |
68 | .ops = &ixp4xx_ops, | ||
68 | .preinit = avila_pci_preinit, | 69 | .preinit = avila_pci_preinit, |
69 | .setup = ixp4xx_setup, | 70 | .setup = ixp4xx_setup, |
70 | .scan = ixp4xx_scan_bus, | ||
71 | .map_irq = avila_map_irq, | 71 | .map_irq = avila_map_irq, |
72 | }; | 72 | }; |
73 | 73 | ||
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c index d5719eb42591..1694f01ce2b6 100644 --- a/arch/arm/mach-ixp4xx/common-pci.c +++ b/arch/arm/mach-ixp4xx/common-pci.c | |||
@@ -480,12 +480,6 @@ int ixp4xx_setup(int nr, struct pci_sys_data *sys) | |||
480 | return 1; | 480 | return 1; |
481 | } | 481 | } |
482 | 482 | ||
483 | struct pci_bus * __devinit ixp4xx_scan_bus(int nr, struct pci_sys_data *sys) | ||
484 | { | ||
485 | return pci_scan_root_bus(NULL, sys->busnr, &ixp4xx_ops, sys, | ||
486 | &sys->resources); | ||
487 | } | ||
488 | |||
489 | int dma_set_coherent_mask(struct device *dev, u64 mask) | 483 | int dma_set_coherent_mask(struct device *dev, u64 mask) |
490 | { | 484 | { |
491 | if (mask >= SZ_64M - 1) | 485 | if (mask >= SZ_64M - 1) |
diff --git a/arch/arm/mach-ixp4xx/coyote-pci.c b/arch/arm/mach-ixp4xx/coyote-pci.c index d876a4f13eae..5d14ce2aee6d 100644 --- a/arch/arm/mach-ixp4xx/coyote-pci.c +++ b/arch/arm/mach-ixp4xx/coyote-pci.c | |||
@@ -48,9 +48,9 @@ static int __init coyote_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
48 | 48 | ||
49 | struct hw_pci coyote_pci __initdata = { | 49 | struct hw_pci coyote_pci __initdata = { |
50 | .nr_controllers = 1, | 50 | .nr_controllers = 1, |
51 | .ops = &ixp4xx_ops, | ||
51 | .preinit = coyote_pci_preinit, | 52 | .preinit = coyote_pci_preinit, |
52 | .setup = ixp4xx_setup, | 53 | .setup = ixp4xx_setup, |
53 | .scan = ixp4xx_scan_bus, | ||
54 | .map_irq = coyote_map_irq, | 54 | .map_irq = coyote_map_irq, |
55 | }; | 55 | }; |
56 | 56 | ||
diff --git a/arch/arm/mach-ixp4xx/dsmg600-pci.c b/arch/arm/mach-ixp4xx/dsmg600-pci.c index 66485979337d..8dca76937723 100644 --- a/arch/arm/mach-ixp4xx/dsmg600-pci.c +++ b/arch/arm/mach-ixp4xx/dsmg600-pci.c | |||
@@ -62,9 +62,9 @@ static int __init dsmg600_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
62 | 62 | ||
63 | struct hw_pci __initdata dsmg600_pci = { | 63 | struct hw_pci __initdata dsmg600_pci = { |
64 | .nr_controllers = 1, | 64 | .nr_controllers = 1, |
65 | .ops = &ixp4xx_ops, | ||
65 | .preinit = dsmg600_pci_preinit, | 66 | .preinit = dsmg600_pci_preinit, |
66 | .setup = ixp4xx_setup, | 67 | .setup = ixp4xx_setup, |
67 | .scan = ixp4xx_scan_bus, | ||
68 | .map_irq = dsmg600_map_irq, | 68 | .map_irq = dsmg600_map_irq, |
69 | }; | 69 | }; |
70 | 70 | ||
diff --git a/arch/arm/mach-ixp4xx/fsg-pci.c b/arch/arm/mach-ixp4xx/fsg-pci.c index 528e4af678c7..fd4a8625b4ae 100644 --- a/arch/arm/mach-ixp4xx/fsg-pci.c +++ b/arch/arm/mach-ixp4xx/fsg-pci.c | |||
@@ -59,9 +59,9 @@ static int __init fsg_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
59 | 59 | ||
60 | struct hw_pci fsg_pci __initdata = { | 60 | struct hw_pci fsg_pci __initdata = { |
61 | .nr_controllers = 1, | 61 | .nr_controllers = 1, |
62 | .ops = &ixp4xx_ops, | ||
62 | .preinit = fsg_pci_preinit, | 63 | .preinit = fsg_pci_preinit, |
63 | .setup = ixp4xx_setup, | 64 | .setup = ixp4xx_setup, |
64 | .scan = ixp4xx_scan_bus, | ||
65 | .map_irq = fsg_map_irq, | 65 | .map_irq = fsg_map_irq, |
66 | }; | 66 | }; |
67 | 67 | ||
diff --git a/arch/arm/mach-ixp4xx/gateway7001-pci.c b/arch/arm/mach-ixp4xx/gateway7001-pci.c index 1d1134b34758..d9d6cc089707 100644 --- a/arch/arm/mach-ixp4xx/gateway7001-pci.c +++ b/arch/arm/mach-ixp4xx/gateway7001-pci.c | |||
@@ -47,9 +47,9 @@ static int __init gateway7001_map_irq(const struct pci_dev *dev, u8 slot, | |||
47 | 47 | ||
48 | struct hw_pci gateway7001_pci __initdata = { | 48 | struct hw_pci gateway7001_pci __initdata = { |
49 | .nr_controllers = 1, | 49 | .nr_controllers = 1, |
50 | .ops = &ixp4xx_ops, | ||
50 | .preinit = gateway7001_pci_preinit, | 51 | .preinit = gateway7001_pci_preinit, |
51 | .setup = ixp4xx_setup, | 52 | .setup = ixp4xx_setup, |
52 | .scan = ixp4xx_scan_bus, | ||
53 | .map_irq = gateway7001_map_irq, | 53 | .map_irq = gateway7001_map_irq, |
54 | }; | 54 | }; |
55 | 55 | ||
diff --git a/arch/arm/mach-ixp4xx/goramo_mlr.c b/arch/arm/mach-ixp4xx/goramo_mlr.c index c97a1a82e0f6..b800a031207c 100644 --- a/arch/arm/mach-ixp4xx/goramo_mlr.c +++ b/arch/arm/mach-ixp4xx/goramo_mlr.c | |||
@@ -473,10 +473,10 @@ static int __init gmlr_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
473 | 473 | ||
474 | static struct hw_pci gmlr_hw_pci __initdata = { | 474 | static struct hw_pci gmlr_hw_pci __initdata = { |
475 | .nr_controllers = 1, | 475 | .nr_controllers = 1, |
476 | .ops = &ixp4xx_ops, | ||
476 | .preinit = gmlr_pci_preinit, | 477 | .preinit = gmlr_pci_preinit, |
477 | .postinit = gmlr_pci_postinit, | 478 | .postinit = gmlr_pci_postinit, |
478 | .setup = ixp4xx_setup, | 479 | .setup = ixp4xx_setup, |
479 | .scan = ixp4xx_scan_bus, | ||
480 | .map_irq = gmlr_map_irq, | 480 | .map_irq = gmlr_map_irq, |
481 | }; | 481 | }; |
482 | 482 | ||
diff --git a/arch/arm/mach-ixp4xx/gtwx5715-pci.c b/arch/arm/mach-ixp4xx/gtwx5715-pci.c index 4bd8770fee84..551d114c9e14 100644 --- a/arch/arm/mach-ixp4xx/gtwx5715-pci.c +++ b/arch/arm/mach-ixp4xx/gtwx5715-pci.c | |||
@@ -67,9 +67,9 @@ static int __init gtwx5715_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
67 | 67 | ||
68 | struct hw_pci gtwx5715_pci __initdata = { | 68 | struct hw_pci gtwx5715_pci __initdata = { |
69 | .nr_controllers = 1, | 69 | .nr_controllers = 1, |
70 | .ops = &ixp4xx_ops, | ||
70 | .preinit = gtwx5715_pci_preinit, | 71 | .preinit = gtwx5715_pci_preinit, |
71 | .setup = ixp4xx_setup, | 72 | .setup = ixp4xx_setup, |
72 | .scan = ixp4xx_scan_bus, | ||
73 | .map_irq = gtwx5715_map_irq, | 73 | .map_irq = gtwx5715_map_irq, |
74 | }; | 74 | }; |
75 | 75 | ||
diff --git a/arch/arm/mach-ixp4xx/include/mach/platform.h b/arch/arm/mach-ixp4xx/include/mach/platform.h index b66bedc64de1..5bce94aacca9 100644 --- a/arch/arm/mach-ixp4xx/include/mach/platform.h +++ b/arch/arm/mach-ixp4xx/include/mach/platform.h | |||
@@ -130,7 +130,7 @@ extern void ixp4xx_restart(char, const char *); | |||
130 | extern void ixp4xx_pci_preinit(void); | 130 | extern void ixp4xx_pci_preinit(void); |
131 | struct pci_sys_data; | 131 | struct pci_sys_data; |
132 | extern int ixp4xx_setup(int nr, struct pci_sys_data *sys); | 132 | extern int ixp4xx_setup(int nr, struct pci_sys_data *sys); |
133 | extern struct pci_bus *ixp4xx_scan_bus(int nr, struct pci_sys_data *sys); | 133 | extern struct pci_ops ixp4xx_ops; |
134 | 134 | ||
135 | /* | 135 | /* |
136 | * GPIO-functions | 136 | * GPIO-functions |
diff --git a/arch/arm/mach-ixp4xx/ixdp425-pci.c b/arch/arm/mach-ixp4xx/ixdp425-pci.c index 3e1a229aee0a..318424dd3c50 100644 --- a/arch/arm/mach-ixp4xx/ixdp425-pci.c +++ b/arch/arm/mach-ixp4xx/ixdp425-pci.c | |||
@@ -60,9 +60,9 @@ static int __init ixdp425_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
60 | 60 | ||
61 | struct hw_pci ixdp425_pci __initdata = { | 61 | struct hw_pci ixdp425_pci __initdata = { |
62 | .nr_controllers = 1, | 62 | .nr_controllers = 1, |
63 | .ops = &ixp4xx_ops, | ||
63 | .preinit = ixdp425_pci_preinit, | 64 | .preinit = ixdp425_pci_preinit, |
64 | .setup = ixp4xx_setup, | 65 | .setup = ixp4xx_setup, |
65 | .scan = ixp4xx_scan_bus, | ||
66 | .map_irq = ixdp425_map_irq, | 66 | .map_irq = ixdp425_map_irq, |
67 | }; | 67 | }; |
68 | 68 | ||
diff --git a/arch/arm/mach-ixp4xx/ixdpg425-pci.c b/arch/arm/mach-ixp4xx/ixdpg425-pci.c index 5c70e9235ced..1f8717ba13dc 100644 --- a/arch/arm/mach-ixp4xx/ixdpg425-pci.c +++ b/arch/arm/mach-ixp4xx/ixdpg425-pci.c | |||
@@ -42,9 +42,9 @@ static int __init ixdpg425_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
42 | 42 | ||
43 | struct hw_pci ixdpg425_pci __initdata = { | 43 | struct hw_pci ixdpg425_pci __initdata = { |
44 | .nr_controllers = 1, | 44 | .nr_controllers = 1, |
45 | .ops = &ixp4xx_ops, | ||
45 | .preinit = ixdpg425_pci_preinit, | 46 | .preinit = ixdpg425_pci_preinit, |
46 | .setup = ixp4xx_setup, | 47 | .setup = ixp4xx_setup, |
47 | .scan = ixp4xx_scan_bus, | ||
48 | .map_irq = ixdpg425_map_irq, | 48 | .map_irq = ixdpg425_map_irq, |
49 | }; | 49 | }; |
50 | 50 | ||
diff --git a/arch/arm/mach-ixp4xx/miccpt-pci.c b/arch/arm/mach-ixp4xx/miccpt-pci.c index 8d4ba71518d4..d114ccd2017c 100644 --- a/arch/arm/mach-ixp4xx/miccpt-pci.c +++ b/arch/arm/mach-ixp4xx/miccpt-pci.c | |||
@@ -61,9 +61,9 @@ static int __init miccpt_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
61 | 61 | ||
62 | struct hw_pci miccpt_pci __initdata = { | 62 | struct hw_pci miccpt_pci __initdata = { |
63 | .nr_controllers = 1, | 63 | .nr_controllers = 1, |
64 | .ops = &ixp4xx_ops, | ||
64 | .preinit = miccpt_pci_preinit, | 65 | .preinit = miccpt_pci_preinit, |
65 | .setup = ixp4xx_setup, | 66 | .setup = ixp4xx_setup, |
66 | .scan = ixp4xx_scan_bus, | ||
67 | .map_irq = miccpt_map_irq, | 67 | .map_irq = miccpt_map_irq, |
68 | }; | 68 | }; |
69 | 69 | ||
diff --git a/arch/arm/mach-ixp4xx/nas100d-pci.c b/arch/arm/mach-ixp4xx/nas100d-pci.c index ba1ad203f30f..8f0eba0a6800 100644 --- a/arch/arm/mach-ixp4xx/nas100d-pci.c +++ b/arch/arm/mach-ixp4xx/nas100d-pci.c | |||
@@ -58,9 +58,9 @@ static int __init nas100d_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
58 | 58 | ||
59 | struct hw_pci __initdata nas100d_pci = { | 59 | struct hw_pci __initdata nas100d_pci = { |
60 | .nr_controllers = 1, | 60 | .nr_controllers = 1, |
61 | .ops = &ixp4xx_ops, | ||
61 | .preinit = nas100d_pci_preinit, | 62 | .preinit = nas100d_pci_preinit, |
62 | .setup = ixp4xx_setup, | 63 | .setup = ixp4xx_setup, |
63 | .scan = ixp4xx_scan_bus, | ||
64 | .map_irq = nas100d_map_irq, | 64 | .map_irq = nas100d_map_irq, |
65 | }; | 65 | }; |
66 | 66 | ||
diff --git a/arch/arm/mach-ixp4xx/nslu2-pci.c b/arch/arm/mach-ixp4xx/nslu2-pci.c index ffc060f2fae8..032defe111aa 100644 --- a/arch/arm/mach-ixp4xx/nslu2-pci.c +++ b/arch/arm/mach-ixp4xx/nslu2-pci.c | |||
@@ -54,9 +54,9 @@ static int __init nslu2_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
54 | 54 | ||
55 | struct hw_pci __initdata nslu2_pci = { | 55 | struct hw_pci __initdata nslu2_pci = { |
56 | .nr_controllers = 1, | 56 | .nr_controllers = 1, |
57 | .ops = &ixp4xx_ops, | ||
57 | .preinit = nslu2_pci_preinit, | 58 | .preinit = nslu2_pci_preinit, |
58 | .setup = ixp4xx_setup, | 59 | .setup = ixp4xx_setup, |
59 | .scan = ixp4xx_scan_bus, | ||
60 | .map_irq = nslu2_map_irq, | 60 | .map_irq = nslu2_map_irq, |
61 | }; | 61 | }; |
62 | 62 | ||
diff --git a/arch/arm/mach-ixp4xx/vulcan-pci.c b/arch/arm/mach-ixp4xx/vulcan-pci.c index b9b1c42b7ef3..a4220fa5e0c3 100644 --- a/arch/arm/mach-ixp4xx/vulcan-pci.c +++ b/arch/arm/mach-ixp4xx/vulcan-pci.c | |||
@@ -56,9 +56,9 @@ static int __init vulcan_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
56 | 56 | ||
57 | struct hw_pci vulcan_pci __initdata = { | 57 | struct hw_pci vulcan_pci __initdata = { |
58 | .nr_controllers = 1, | 58 | .nr_controllers = 1, |
59 | .ops = &ixp4xx_ops, | ||
59 | .preinit = vulcan_pci_preinit, | 60 | .preinit = vulcan_pci_preinit, |
60 | .setup = ixp4xx_setup, | 61 | .setup = ixp4xx_setup, |
61 | .scan = ixp4xx_scan_bus, | ||
62 | .map_irq = vulcan_map_irq, | 62 | .map_irq = vulcan_map_irq, |
63 | }; | 63 | }; |
64 | 64 | ||
diff --git a/arch/arm/mach-ixp4xx/wg302v2-pci.c b/arch/arm/mach-ixp4xx/wg302v2-pci.c index f39a242746b0..c92e5b82af36 100644 --- a/arch/arm/mach-ixp4xx/wg302v2-pci.c +++ b/arch/arm/mach-ixp4xx/wg302v2-pci.c | |||
@@ -46,9 +46,9 @@ static int __init wg302v2_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
46 | 46 | ||
47 | struct hw_pci wg302v2_pci __initdata = { | 47 | struct hw_pci wg302v2_pci __initdata = { |
48 | .nr_controllers = 1, | 48 | .nr_controllers = 1, |
49 | .ops = &ixp4xx_ops, | ||
49 | .preinit = wg302v2_pci_preinit, | 50 | .preinit = wg302v2_pci_preinit, |
50 | .setup = ixp4xx_setup, | 51 | .setup = ixp4xx_setup, |
51 | .scan = ixp4xx_scan_bus, | ||
52 | .map_irq = wg302v2_map_irq, | 52 | .map_irq = wg302v2_map_irq, |
53 | }; | 53 | }; |
54 | 54 | ||