I didn't update all the archs, just x86.. Enjoy. This is not an
official patch submission (so Linus if you see it, don't apply...)
? .config
? .tmpconfig
? .tmpconfig.h
? include/config
? include/linux/modules
? include/linux/autoconf.h
? include/linux/version.h
? include/linux/module.mak
? scripts/split-include
? scripts/mkdep
Index: arch/i386/kernel/pci-i386.c
===================================================================
RCS file: /g/cvslan/linux_2_3/arch/i386/kernel/pci-i386.c,v
retrieving revision 1.1.1.15
diff -u -r1.1.1.15 pci-i386.c
--- arch/i386/kernel/pci-i386.c 2000/07/26 02:13:59 1.1.1.15
+++ arch/i386/kernel/pci-i386.c 2000/09/22 11:20:36
@@ -303,7 +303,7 @@
pcibios_assign_resources();
}
-int pcibios_enable_resources(struct pci_dev *dev)
+int pcibios_enable_resources(struct pci_dev *dev, int enable_mask)
{
u16 cmd, old_cmd;
int idx;
@@ -317,12 +317,12 @@
printk(KERN_ERR "PCI: Device %s not available because of resource collisions\n", dev->slot_name);
return -EINVAL;
}
- if (r->flags & IORESOURCE_IO)
+ if ((r->flags & IORESOURCE_IO) && (enable_mask & PCI_COMMAND_IO))
cmd |= PCI_COMMAND_IO;
- if (r->flags & IORESOURCE_MEM)
+ if ((r->flags & IORESOURCE_MEM) && (enable_mask & PCI_COMMAND_MEMORY))
cmd |= PCI_COMMAND_MEMORY;
}
- if (dev->resource[PCI_ROM_RESOURCE].start)
+ if ((dev->resource[PCI_ROM_RESOURCE].start) && (enable_mask & PCI_COMMAND_MEMORY))
cmd |= PCI_COMMAND_MEMORY;
if (cmd != old_cmd) {
printk("PCI: Enabling device %s (%04x -> %04x)\n", dev->slot_name, old_cmd, cmd);
Index: arch/i386/kernel/pci-i386.h
===================================================================
RCS file: /g/cvslan/linux_2_3/arch/i386/kernel/pci-i386.h,v
retrieving revision 1.1.1.5
diff -u -r1.1.1.5 pci-i386.h
--- arch/i386/kernel/pci-i386.h 2000/06/22 15:29:19 1.1.1.5
+++ arch/i386/kernel/pci-i386.h 2000/09/22 11:20:36
@@ -28,7 +28,7 @@
extern unsigned int pcibios_max_latency;
void pcibios_resource_survey(void);
-int pcibios_enable_resources(struct pci_dev *);
+int pcibios_enable_resources(struct pci_dev *, int enable_mask);
/* pci-pc.c */
Index: arch/i386/kernel/pci-pc.c
===================================================================
RCS file: /g/cvslan/linux_2_3/arch/i386/kernel/pci-pc.c,v
retrieving revision 1.1.1.23
diff -u -r1.1.1.23 pci-pc.c
--- arch/i386/kernel/pci-pc.c 2000/06/22 15:29:16 1.1.1.23
+++ arch/i386/kernel/pci-pc.c 2000/09/22 11:20:36
@@ -1039,11 +1039,11 @@
return str;
}
-int pcibios_enable_device(struct pci_dev *dev)
+int pcibios_enable_device(struct pci_dev *dev, int enable_mask)
{
int err;
- if ((err = pcibios_enable_resources(dev)) < 0)
+ if ((err = pcibios_enable_resources(dev, enable_mask)) < 0)
return err;
pcibios_enable_irq(dev);
return 0;
Index: drivers/pci/pci.c
===================================================================
RCS file: /g/cvslan/linux_2_3/drivers/pci/pci.c,v
retrieving revision 1.1.1.31
diff -u -r1.1.1.31 pci.c
--- drivers/pci/pci.c 2000/09/21 00:29:16 1.1.1.31
+++ drivers/pci/pci.c 2000/09/22 11:20:56
@@ -238,24 +238,40 @@
}
/**
- * pci_enable_device - Initialize device before it's used by a driver.
+ * pci_enable_device_mask - Initialize device before it's used by a driver.
* @dev: PCI device to be initialized
+ * @enable_mask: zero, one, or both of %PCI_COMMAND_IO and %PCI_COMMAND_MEMORY
*
* Initialize device before it's used by a driver. Ask low-level code
- * to enable I/O and memory. Wake up the device if it was suspended.
+ * to enable the bits in @enable_mask. Wake up the device if it was suspended.
* Beware, this function can fail.
*/
int
-pci_enable_device(struct pci_dev *dev)
+pci_enable_device_mask(struct pci_dev *dev, int enable_mask)
{
int err;
- if ((err = pcibios_enable_device(dev)) < 0)
+ if ((err = pcibios_enable_device(dev, enable_mask)) < 0)
return err;
pci_set_power_state(dev, 0);
return 0;
}
+
+/**
+ * pci_enable_device - Initialize device before it's used by a driver.
+ * @dev: PCI device to be initialized
+ *
+ * Initialize device before it's used by a driver. Ask low-level code
+ * to enable I/O and memory. Wake up the device if it was suspended.
+ * Beware, this function can fail.
+ */
+int
+pci_enable_device(struct pci_dev *dev)
+{
+ return pci_enable_device_mask(dev, PCI_COMMAND_IO | PCI_COMMAND_MEMORY);
+}
+
int
pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge)
{
@@ -1114,6 +1130,7 @@
EXPORT_SYMBOL(pci_devices);
EXPORT_SYMBOL(pci_root_buses);
EXPORT_SYMBOL(pci_enable_device);
+EXPORT_SYMBOL(pci_enable_device_mask);
EXPORT_SYMBOL(pci_find_capability);
EXPORT_SYMBOL(pci_find_class);
EXPORT_SYMBOL(pci_find_device);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sat Sep 23 2000 - 21:00:26 EST