65 lines
2.1 KiB
Diff
65 lines
2.1 KiB
Diff
diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h
|
|
index bd0f05d..c3ca3b1 100644
|
|
--- a/arch/arm/mach-orion5x/common.h
|
|
+++ b/arch/arm/mach-orion5x/common.h
|
|
@@ -32,6 +32,7 @@ struct pci_sys_data;
|
|
struct pci_bus;
|
|
|
|
void orion5x_pcie_id(u32 *dev, u32 *rev);
|
|
+void orion5x_pci_disable(void);
|
|
int orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys);
|
|
struct pci_bus *orion5x_pci_sys_scan_bus(int nr, struct pci_sys_data *sys);
|
|
int orion5x_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin);
|
|
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
|
|
index f5074b8..142148f 100644
|
|
--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
|
|
+++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
|
|
@@ -147,8 +147,10 @@ static struct hw_pci kurobox_pro_pci __initdata = {
|
|
|
|
static int __init kurobox_pro_pci_init(void)
|
|
{
|
|
- if (machine_is_kurobox_pro())
|
|
+ if (machine_is_kurobox_pro()) {
|
|
+ orion5x_pci_disable();
|
|
pci_common_init(&kurobox_pro_pci);
|
|
+ }
|
|
|
|
return 0;
|
|
}
|
|
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c
|
|
index 9d5d39f..a3285da 100644
|
|
--- a/arch/arm/mach-orion5x/pci.c
|
|
+++ b/arch/arm/mach-orion5x/pci.c
|
|
@@ -522,6 +522,13 @@ static void __devinit rc_pci_fixup(struct pci_dev *dev)
|
|
}
|
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup);
|
|
|
|
+static int orion5x_pci_disabled __initdata;
|
|
+
|
|
+void __init orion5x_pci_disable(void)
|
|
+{
|
|
+ orion5x_pci_disabled = 1;
|
|
+}
|
|
+
|
|
int __init orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys)
|
|
{
|
|
int ret = 0;
|
|
@@ -529,7 +536,7 @@ int __init orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys)
|
|
if (nr == 0) {
|
|
orion_pcie_set_local_bus_nr(PCIE_BASE, sys->busnr);
|
|
ret = pcie_setup(sys);
|
|
- } else if (nr == 1) {
|
|
+ } else if (nr == 1 && !orion5x_pci_disabled) {
|
|
orion5x_pci_set_bus_nr(sys->busnr);
|
|
ret = pci_setup(sys);
|
|
}
|
|
@@ -543,7 +550,7 @@ struct pci_bus __init *orion5x_pci_sys_scan_bus(int nr, struct pci_sys_data *sys
|
|
|
|
if (nr == 0) {
|
|
bus = pci_scan_bus(sys->busnr, &pcie_ops, sys);
|
|
- } else if (nr == 1) {
|
|
+ } else if (nr == 1 && !orion5x_pci_disabled) {
|
|
bus = pci_scan_bus(sys->busnr, &pci_ops, sys);
|
|
} else {
|
|
bus = NULL;
|