add a better pci fix for rb532
SVN-Revision: 5861
This commit is contained in:
@@ -130,13 +130,14 @@ diff -urN linux.old/arch/mips/pci/Makefile linux.dev/arch/mips/pci/Makefile
|
||||
diff -urN linux.old/arch/mips/pci/ops-rc32434.c linux.dev/arch/mips/pci/ops-rc32434.c
|
||||
--- linux.old/arch/mips/pci/ops-rc32434.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ linux.dev/arch/mips/pci/ops-rc32434.c 2006-12-14 04:09:50.000000000 +0100
|
||||
@@ -0,0 +1,195 @@
|
||||
@@ -0,0 +1,218 @@
|
||||
+/**************************************************************************
|
||||
+ *
|
||||
+ * BRIEF MODULE DESCRIPTION
|
||||
+ * pci_ops for IDT EB434 board
|
||||
+ *
|
||||
+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
|
||||
+ * Copyright 2006 Felix Fietkau <nbd@openwrt.org>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License as published by the
|
||||
@@ -242,8 +243,30 @@ diff -urN linux.old/arch/mips/pci/ops-rc32434.c linux.dev/arch/mips/pci/ops-rc32
|
||||
+ int where, u32 * val)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ int delay = 1;
|
||||
+
|
||||
+ if (bus->number == 0 && (devfn >> 3) > 21)
|
||||
+ return 0;
|
||||
+
|
||||
+retry:
|
||||
+ ret = config_access(PCI_ACCESS_READ, bus, devfn, where, val);
|
||||
+
|
||||
+ /* PCI scan: check for invalid values, device may not have
|
||||
+ * finished initializing */
|
||||
+
|
||||
+ if (where == PCI_VENDOR_ID) {
|
||||
+ if (ret == 0xffffffff || ret == 0x00000000 ||
|
||||
+ ret == 0x0000ffff || ret == 0xffff0000) {
|
||||
+
|
||||
+ if (delay > 4)
|
||||
+ return 0;
|
||||
+
|
||||
+ delay *= 2;
|
||||
+ msleep(delay);
|
||||
+ goto retry;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
|
||||
Reference in New Issue
Block a user