#ifdef CONFIG_PCI_REASSIGN
/*
- * This quirk function disables the device and releases resources
- * which is specified by kernel's boot parameter 'reassigndev'.
+ * This quirk function disables memory decoding and releases memory
+ * resources which is specified by kernel's boot parameter 'reassigndev'.
* Later on, kernel will assign page-aligned memory resource back
- * to that device.
+ * to the device.
*/
static void __devinit quirk_release_resources(struct pci_dev *dev)
{
int i;
struct resource *r;
+ u16 command;
if (pci_is_reassigndev(dev)) {
if (dev->hdr_type == PCI_HEADER_TYPE_NORMAL &&
return;
}
printk(KERN_INFO
- "PCI: Disable device and release resources [%s].\n",
+ "PCI: Disable memory decoding and release memory resources [%s].\n",
pci_name(dev));
- pci_disable_device(dev);
+ pci_read_config_word(dev, PCI_COMMAND, &command);
+ command &= ~PCI_COMMAND_MEMORY;
+ pci_write_config_word(dev, PCI_COMMAND, command);
for (i=0; i < PCI_NUM_RESOURCES; i++) {
r = &dev->resource[i];