From: Bjorn Helgaas <bjorn.helgaas@hp.com>

Call pci_enable_device() before looking at pci_dev.  Also, call
pci_disable_device() when releasing the device.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/media/dvb/bt8xx/bt878.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff -puN drivers/media/dvb/bt8xx/bt878.c~dvb-pci_enable_device-fix drivers/media/dvb/bt8xx/bt878.c
--- 25/drivers/media/dvb/bt8xx/bt878.c~dvb-pci_enable_device-fix	Tue Aug 24 15:23:38 2004
+++ 25-akpm/drivers/media/dvb/bt8xx/bt878.c	Tue Aug 24 15:23:38 2004
@@ -417,6 +417,8 @@ static int __devinit bt878_probe(struct 
 
 	printk(KERN_INFO "bt878: Bt878 AUDIO function found (%d).\n",
 	       bt878_num);
+	if (pci_enable_device(dev))
+		return -EIO;
 
 	bt = &bt878[bt878_num];
 	bt->dev = dev;
@@ -426,11 +428,10 @@ static int __devinit bt878_probe(struct 
 	bt->id = dev->device;
 	bt->irq = dev->irq;
 	bt->bt878_adr = pci_resource_start(dev, 0);
-	if (pci_enable_device(dev))
-		return -EIO;
 	if (!request_mem_region(pci_resource_start(dev, 0),
 				pci_resource_len(dev, 0), "bt878")) {
-		return -EBUSY;
+		result = -EBUSY;
+		goto fail0;
 	}
 
 	pci_read_config_byte(dev, PCI_CLASS_REVISION, &bt->revision);
@@ -501,6 +502,8 @@ static int __devinit bt878_probe(struct 
       fail1:
 	release_mem_region(pci_resource_start(bt->dev, 0),
 			   pci_resource_len(bt->dev, 0));
+      fail0:
+	pci_disable_device(dev);
 	return result;
 }
 
@@ -540,6 +543,7 @@ static void __devexit bt878_remove(struc
 	bt878_mem_free(bt);
 
 	pci_set_drvdata(pci_dev, NULL);
+	pci_disable_device(pci_dev);
 	return;
 }
 
_