Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0948391641918b95d8d96c15089eb5ac156850b3
Commit:     0948391641918b95d8d96c15089eb5ac156850b3
Parent:     b718989da7cf1f77ed5665dba0d2c73bd9dfe2d7
Author:     Benjamin Herrenschmidt <[EMAIL PROTECTED]>
AuthorDate: Thu Dec 20 15:28:09 2007 +1100
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Fri Feb 1 15:04:27 2008 -0800

    PCI: Remove users of pci_enable_device_bars()
    
    This patch converts users of pci_enable_device_bars() to the new
    pci_enable_device_{io,mem} interface.
    
    The new API fits nicely, except maybe for the QLA case where a bit of
    code re-organization might be a good idea but I prefer sticking to the
    simple patch as I don't have hardware to test on.
    
    I'll also need some feedback on the cs5520 change.
    
    Signed-off-by: Benjamin Herrenschmidt <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 drivers/ata/pata_cs5520.c       |    2 +-
 drivers/i2c/busses/scx200_acb.c |    2 +-
 drivers/ide/pci/cs5520.c        |   10 ++++++++--
 drivers/ide/setup-pci.c         |    6 ++++--
 drivers/scsi/lpfc/lpfc_init.c   |    3 +--
 drivers/scsi/qla2xxx/qla_def.h  |    1 +
 drivers/scsi/qla2xxx/qla_os.c   |   21 +++++++++++++++++----
 7 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/drivers/ata/pata_cs5520.c b/drivers/ata/pata_cs5520.c
index d4590f5..7ed279b 100644
--- a/drivers/ata/pata_cs5520.c
+++ b/drivers/ata/pata_cs5520.c
@@ -229,7 +229,7 @@ static int __devinit cs5520_init_one(struct pci_dev *pdev, 
const struct pci_devi
                return -ENOMEM;
 
        /* Perform set up for DMA */
-       if (pci_enable_device_bars(pdev, 1<<2)) {
+       if (pci_enable_device_io(pdev)) {
                printk(KERN_ERR DRV_NAME ": unable to configure BAR2.\n");
                return -ENODEV;
        }
diff --git a/drivers/i2c/busses/scx200_acb.c b/drivers/i2c/busses/scx200_acb.c
index e6c4a2b..f5e7a70 100644
--- a/drivers/i2c/busses/scx200_acb.c
+++ b/drivers/i2c/busses/scx200_acb.c
@@ -492,7 +492,7 @@ static __init int scx200_create_pci(const char *text, 
struct pci_dev *pdev,
        iface->pdev = pdev;
        iface->bar = bar;
 
-       rc = pci_enable_device_bars(iface->pdev, 1 << iface->bar);
+       rc = pci_enable_device_io(iface->pdev);
        if (rc)
                goto errout_free;
 
diff --git a/drivers/ide/pci/cs5520.c b/drivers/ide/pci/cs5520.c
index 6ec00b8..10adc49 100644
--- a/drivers/ide/pci/cs5520.c
+++ b/drivers/ide/pci/cs5520.c
@@ -156,8 +156,14 @@ static int __devinit cs5520_init_one(struct pci_dev *dev, 
const struct pci_devic
        ide_setup_pci_noise(dev, d);
 
        /* We must not grab the entire device, it has 'ISA' space in its
-          BARS too and we will freak out other bits of the kernel */
-       if (pci_enable_device_bars(dev, 1<<2)) {
+        * BARS too and we will freak out other bits of the kernel
+        *
+        * pci_enable_device_bars() is going away. I replaced it with
+        * IO only enable for now but I'll need confirmation this is
+        * allright for that device. If not, it will need some kind of
+        * quirk. --BenH.
+        */
+       if (pci_enable_device_io(dev)) {
                printk(KERN_WARNING "%s: Unable to enable 55x0.\n", d->name);
                return -ENODEV;
        }
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c
index 676c66e..cf79470 100644
--- a/drivers/ide/setup-pci.c
+++ b/drivers/ide/setup-pci.c
@@ -240,7 +240,9 @@ EXPORT_SYMBOL_GPL(ide_setup_pci_noise);
  *     @d: IDE port info
  *
  *     Enable the IDE PCI device. We attempt to enable the device in full
- *     but if that fails then we only need BAR4 so we will enable that.
+ *     but if that fails then we only need IO space. The PCI code should
+ *     have setup the proper resources for us already for controllers in
+ *     legacy mode.
  *     
  *     Returns zero on success or an error code
  */
@@ -250,7 +252,7 @@ static int ide_pci_enable(struct pci_dev *dev, const struct 
ide_port_info *d)
        int ret;
 
        if (pci_enable_device(dev)) {
-               ret = pci_enable_device_bars(dev, 1 << 4);
+               ret = pci_enable_device_io(dev);
                if (ret < 0) {
                        printk(KERN_WARNING "%s: (ide_setup_pci_device:) "
                                "Could not enable device.\n", d->name);
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 3205f74..29b4cf9 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -2296,10 +2296,9 @@ static pci_ers_result_t lpfc_io_slot_reset(struct 
pci_dev *pdev)
        struct Scsi_Host *shost = pci_get_drvdata(pdev);
        struct lpfc_hba *phba = ((struct lpfc_vport *)shost->hostdata)->phba;
        struct lpfc_sli *psli = &phba->sli;
-       int bars = pci_select_bars(pdev, IORESOURCE_MEM);
 
        dev_printk(KERN_INFO, &pdev->dev, "recovering from a slot reset.\n");
-       if (pci_enable_device_bars(pdev, bars)) {
+       if (pci_enable_device_mem(pdev)) {
                printk(KERN_ERR "lpfc: Cannot re-enable "
                        "PCI device after reset.\n");
                return PCI_ERS_RESULT_DISCONNECT;
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 6f129da..b72c7f1 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -2268,6 +2268,7 @@ typedef struct scsi_qla_host {
        spinlock_t              hardware_lock ____cacheline_aligned;
 
        int             bars;
+       int             mem_only;
        device_reg_t __iomem *iobase;           /* Base I/O address */
        resource_size_t pio_address;
 #define MIN_IOBASE_LEN         0x100
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 3954ed2..8f69caf 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -1564,7 +1564,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct 
pci_device_id *id)
        char pci_info[30];
        char fw_str[30];
        struct scsi_host_template *sht;
-       int bars;
+       int bars, mem_only = 0;
 
        bars = pci_select_bars(pdev, IORESOURCE_MEM | IORESOURCE_IO);
        sht = &qla2x00_driver_template;
@@ -1575,10 +1575,16 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct 
pci_device_id *id)
            pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2532) {
                bars = pci_select_bars(pdev, IORESOURCE_MEM);
                sht = &qla24xx_driver_template;
+               mem_only = 1;
        }
 
-       if (pci_enable_device_bars(pdev, bars))
-               goto probe_out;
+       if (mem_only) {
+               if (pci_enable_device_mem(pdev))
+                       goto probe_out;
+       } else {
+               if (pci_enable_device(pdev))
+                       goto probe_out;
+       }
 
        if (pci_find_aer_capability(pdev))
                if (pci_enable_pcie_error_reporting(pdev))
@@ -1601,6 +1607,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct 
pci_device_id *id)
        sprintf(ha->host_str, "%s_%ld", QLA2XXX_DRIVER_NAME, ha->host_no);
        ha->parent = NULL;
        ha->bars = bars;
+       ha->mem_only = mem_only;
 
        /* Set ISP-type information. */
        qla2x00_set_isp_flags(ha);
@@ -2875,8 +2882,14 @@ qla2xxx_pci_slot_reset(struct pci_dev *pdev)
 {
        pci_ers_result_t ret = PCI_ERS_RESULT_DISCONNECT;
        scsi_qla_host_t *ha = pci_get_drvdata(pdev);
+       int rc;
+
+       if (ha->mem_only)
+               rc = pci_enable_device_mem(pdev);
+       else
+               rc = pci_enable_device(pdev);
 
-       if (pci_enable_device_bars(pdev, ha->bars)) {
+       if (rc) {
                qla_printk(KERN_WARNING, ha,
                    "Can't re-enable PCI device after reset.\n");
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to