[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Cardbus problems on HP zv5000z



I have an HP zv5000z laptop.  It has an AMD64 3700+ running FC3.

Using the supplied kernel cardbus does not work.

Using this patch (attached) cardbus works fine.

What does it take to get this added to the Fedora kernels so I don't
have to rebuild every kernel upgrade?

Do I need to send Penguin Mint bribes to Alan Cox?

-- 
'This message has not been made with the consent or cooperation of
the Federal Board of Regulations (F.B.R.) or the Central Enquires
Agency (C.E.A.). Any resemblance to persons living or dead is purely
coincidental, and so forth and so on.
--- a/drivers/pci/probe.c	2004-07-09 10:36:51.000000000 +0000
+++ b/drivers/pci/probe.c	2004-07-09 10:39:38.000000000 +0000
@@ -326,6 +326,16 @@
 	return child;
 }
 
+static void __devinit pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
+{
+	struct pci_bus *parent = child->parent;
+	while (parent->parent && parent->subordinate < max) {
+		parent->subordinate = max;
+		pci_write_config_byte(parent->self, PCI_SUBORDINATE_BUS, max);
+		parent = parent->parent;
+	}
+}
+
 unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus);
 
 /*
@@ -407,7 +417,13 @@
 
 		if (!is_cardbus) {
 			child->bridge_ctl = PCI_BRIDGE_CTL_NO_ISA;
-
+			/*
+			 * Adjust subordinate busnr in parent buses.
+			 * We do this before scanning for children because
+			 * some devices may not be detected if the bios
+			 * was lazy.
+			 */
+			pci_fixup_parent_subordinate_busnr(child, max);
 			/* Now we can scan all subordinate buses... */
 			max = pci_scan_child_bus(child);
 		} else {
@@ -417,6 +433,7 @@
 			 * inserted later.
 			 */
 			max += CARDBUS_RESERVE_BUSNR;
+			pci_fixup_parent_subordinate_busnr(child, max);
 		}
 		/*
 		 * Set the subordinate bus number to its real value.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]