PCI : Move pci_fixup_device and is_enabled (originally intended change)

Original patch was posted as "PCI : Move pci_fixup_device and is_enabled".
This 2 of 3 patches does:

  - Move pci_fixup_device and enable_cnt
    (originally intended change)

  - relocate pci_fixup_device
    (recover latter change of 1st patch)

Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Cc: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index d20d398..212acd2 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -682,22 +682,28 @@
  * @bars: bitmask of BAR's that must be configured
  *
  *  Initialize device before it's used by a driver. Ask low-level code
- *  to enable selected I/O and memory resources. Wake up the device if it 
+ *  to enable selected I/O and memory resources. Wake up the device if it
  *  was suspended. Beware, this function can fail.
  */
- 
 int
 pci_enable_device_bars(struct pci_dev *dev, int bars)
 {
 	int err;
 
+	if (atomic_add_return(1, &dev->enable_cnt) > 1)
+		return 0;		/* already enabled */
+
 	err = pci_set_power_state(dev, PCI_D0);
 	if (err < 0 && err != -EIO)
-		return err;
+		goto err_out;
 	err = pcibios_enable_device(dev, bars);
 	if (err < 0)
-		return err;
-	return 0;
+		goto err_out;
+	pci_fixup_device(pci_fixup_enable, dev);
+
+err_out:
+	atomic_dec(&dev->enable_cnt);
+	return err;
 }
 
 /**
@@ -713,13 +719,7 @@
  */
 int pci_enable_device(struct pci_dev *dev)
 {
-	int result;
-	if (atomic_add_return(1, &dev->enable_cnt) > 1)
-		return 0;		/* already enabled */
-	result = __pci_enable_device(dev);
-	if (result < 0)
-		atomic_dec(&dev->enable_cnt);
-	return result;
+	return pci_enable_device_bars(dev, (1 << PCI_NUM_RESOURCES) - 1);
 }
 
 /**