Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=97f84baa030c9e2d235e26e4a96fe7e294049cb0
Commit:     97f84baa030c9e2d235e26e4a96fe7e294049cb0
Parent:     099b1f42ab631f88a0321ae5468809fe907eb4d5
Author:     Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
AuthorDate: Fri Oct 19 00:30:09 2007 +0200
Committer:  Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
CommitDate: Fri Oct 19 00:30:09 2007 +0200

    pdc202xx_old: remove ->init_setup
    
    * Split off pdc202ata4_fixup_irq() helper from init_setup_pdc202ata4().
    
    * Merge init_setup_{pdc202ata4,pdc20265,pdc202xx}() into 
pdc202xx_init_one().
    
    Signed-off-by: Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
---
 drivers/ide/pci/pdc202xx_old.c |   57 +++++++++++++++++----------------------
 1 files changed, 25 insertions(+), 32 deletions(-)

diff --git a/drivers/ide/pci/pdc202xx_old.c b/drivers/ide/pci/pdc202xx_old.c
index 5702590..d7b2210 100644
--- a/drivers/ide/pci/pdc202xx_old.c
+++ b/drivers/ide/pci/pdc202xx_old.c
@@ -369,8 +369,8 @@ static void __devinit init_dma_pdc202xx(ide_hwif_t *hwif, 
unsigned long dmabase)
        ide_setup_dma(hwif, dmabase, 8);
 }
 
-static int __devinit init_setup_pdc202ata4(struct pci_dev *dev,
-                                          ide_pci_device_t *d)
+static void __devinit pdc202ata4_fixup_irq(struct pci_dev *dev,
+                                          const char *name)
 {
        if ((dev->class >> 8) != PCI_CLASS_STORAGE_IDE) {
                u8 irq = 0, irq2 = 0;
@@ -380,37 +380,15 @@ static int __devinit init_setup_pdc202ata4(struct pci_dev 
*dev,
                if (irq != irq2) {
                        pci_write_config_byte(dev,
                                (PCI_INTERRUPT_LINE)|0x80, irq);     /* 0xbc */
-                       printk(KERN_INFO "%s: pci-config space interrupt "
-                               "mirror fixed.\n", d->name);
+                       printk(KERN_INFO "%s: PCI config space interrupt "
+                                        "mirror fixed\n", name);
                }
        }
-       return ide_setup_pci_device(dev, d);
-}
-
-static int __devinit init_setup_pdc20265(struct pci_dev *dev,
-                                        ide_pci_device_t *d)
-{
-       if ((dev->bus->self) &&
-           (dev->bus->self->vendor == PCI_VENDOR_ID_INTEL) &&
-           ((dev->bus->self->device == PCI_DEVICE_ID_INTEL_I960) ||
-            (dev->bus->self->device == PCI_DEVICE_ID_INTEL_I960RM))) {
-               printk(KERN_INFO "ide: Skipping Promise PDC20265 "
-                       "attached to I2O RAID controller.\n");
-               return -ENODEV;
-       }
-       return ide_setup_pci_device(dev, d);
-}
-
-static int __devinit init_setup_pdc202xx(struct pci_dev *dev,
-                                        ide_pci_device_t *d)
-{
-       return ide_setup_pci_device(dev, d);
 }
 
 static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = {
        {       /* 0 */
                .name           = "PDC20246",
-               .init_setup     = init_setup_pdc202ata4,
                .init_chipset   = init_chipset_pdc202xx,
                .init_hwif      = init_hwif_pdc202xx,
                .init_dma       = init_dma_pdc202xx,
@@ -421,7 +399,6 @@ static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = 
{
                .udma_mask      = ATA_UDMA2,
        },{     /* 1 */
                .name           = "PDC20262",
-               .init_setup     = init_setup_pdc202ata4,
                .init_chipset   = init_chipset_pdc202xx,
                .init_hwif      = init_hwif_pdc202xx,
                .init_dma       = init_dma_pdc202xx,
@@ -432,7 +409,6 @@ static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = 
{
                .udma_mask      = ATA_UDMA4,
        },{     /* 2 */
                .name           = "PDC20263",
-               .init_setup     = init_setup_pdc202ata4,
                .init_chipset   = init_chipset_pdc202xx,
                .init_hwif      = init_hwif_pdc202xx,
                .init_dma       = init_dma_pdc202xx,
@@ -443,7 +419,6 @@ static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = 
{
                .udma_mask      = ATA_UDMA4,
        },{     /* 3 */
                .name           = "PDC20265",
-               .init_setup     = init_setup_pdc20265,
                .init_chipset   = init_chipset_pdc202xx,
                .init_hwif      = init_hwif_pdc202xx,
                .init_dma       = init_dma_pdc202xx,
@@ -454,7 +429,6 @@ static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = 
{
                .udma_mask      = ATA_UDMA5,
        },{     /* 4 */
                .name           = "PDC20267",
-               .init_setup     = init_setup_pdc202xx,
                .init_chipset   = init_chipset_pdc202xx,
                .init_hwif      = init_hwif_pdc202xx,
                .init_dma       = init_dma_pdc202xx,
@@ -477,9 +451,28 @@ static ide_pci_device_t pdc202xx_chipsets[] __devinitdata 
= {
  
 static int __devinit pdc202xx_init_one(struct pci_dev *dev, const struct 
pci_device_id *id)
 {
-       ide_pci_device_t *d = &pdc202xx_chipsets[id->driver_data];
+       ide_pci_device_t *d;
+       u8 idx = id->driver_data;
+
+       d = &pdc202xx_chipsets[idx];
+
+       if (idx < 3)
+               pdc202ata4_fixup_irq(dev, d->name);
+
+       if (idx == 3) {
+               struct pci_dev *bridge = dev->bus->self;
 
-       return d->init_setup(dev, d);
+               if (bridge &&
+                   bridge->vendor == PCI_VENDOR_ID_INTEL &&
+                   (bridge->device == PCI_DEVICE_ID_INTEL_I960 ||
+                    bridge->device == PCI_DEVICE_ID_INTEL_I960RM)) {
+                       printk(KERN_INFO "ide: Skipping Promise PDC20265 "
+                               "attached to I2O RAID controller\n");
+                       return -ENODEV;
+               }
+       }
+
+       return ide_setup_pci_device(dev, d);
 }
 
 static const struct pci_device_id pdc202xx_pci_tbl[] = {
-
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