vserver 1.9.3
[linux-2.6.git] / drivers / ide / pci / pdc202xx_old.c
index aa04a13..651879a 100644 (file)
@@ -314,17 +314,6 @@ static int pdc202xx_tune_chipset (ide_drive_t *drive, u8 xferspeed)
                pci_write_config_byte(dev, (drive_pci)|0x02, CP|TC);
        }
 
-#if PDC202XX_DECODE_REGISTER_INFO
-       pci_read_config_byte(dev, (drive_pci), &AP);
-       pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
-       pci_read_config_byte(dev, (drive_pci)|0x02, &CP);
-       pci_read_config_byte(dev, (drive_pci)|0x03, &DP);
-
-       decode_registers(REG_A, AP);
-       decode_registers(REG_B, BP);
-       decode_registers(REG_C, CP);
-       decode_registers(REG_D, DP);
-#endif /* PDC202XX_DECODE_REGISTER_INFO */
 #if PDC202XX_DEBUG_DRIVE_INFO
        printk(KERN_DEBUG "%s: %s drive%d 0x%08x ",
                drive->name, ide_xfer_verbose(speed),
@@ -670,7 +659,7 @@ static int pdc202xx_tristate (ide_drive_t * drive, int state)
        return 0;
 }
 
-static unsigned int __init init_chipset_pdc202xx (struct pci_dev *dev, const char *name)
+static unsigned int __devinit init_chipset_pdc202xx(struct pci_dev *dev, const char *name)
 {
        if (dev->resource[PCI_ROM_RESOURCE].start) {
                pci_write_config_dword(dev, PCI_ROM_ADDRESS,
@@ -715,8 +704,14 @@ static unsigned int __init init_chipset_pdc202xx (struct pci_dev *dev, const cha
        return dev->irq;
 }
 
-static void __init init_hwif_pdc202xx (ide_hwif_t *hwif)
+static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif)
 {
+       struct pci_dev *dev = hwif->pci_dev;
+
+       /* PDC20265 has problems with large LBA48 requests */
+       if (dev->device == PCI_DEVICE_ID_PROMISE_20265)
+               hwif->rqsize = 256;
+
        hwif->autodma = 0;
        hwif->tuneproc  = &config_chipset_for_pio;
        hwif->quirkproc = &pdc202xx_quirkproc;
@@ -755,7 +750,7 @@ static void __init init_hwif_pdc202xx (ide_hwif_t *hwif)
 #endif /* PDC202_DEBUG_CABLE */        
 }
 
-static void __init init_dma_pdc202xx (ide_hwif_t *hwif, unsigned long dmabase)
+static void __devinit init_dma_pdc202xx(ide_hwif_t *hwif, unsigned long dmabase)
 {
        u8 udma_speed_flag = 0, primary_mode = 0, secondary_mode = 0;
 
@@ -807,7 +802,7 @@ static void __init init_dma_pdc202xx (ide_hwif_t *hwif, unsigned long dmabase)
        ide_setup_dma(hwif, dmabase, 8);
 }
 
-static void __init init_setup_pdc202ata4 (struct pci_dev *dev, ide_pci_device_t *d)
+static void __devinit init_setup_pdc202ata4(struct pci_dev *dev, ide_pci_device_t *d)
 {
        if ((dev->class >> 8) != PCI_CLASS_STORAGE_IDE) {
                u8 irq = 0, irq2 = 0;
@@ -837,7 +832,7 @@ static void __init init_setup_pdc202ata4 (struct pci_dev *dev, ide_pci_device_t
        ide_setup_pci_device(dev, d);
 }
 
-static void __init init_setup_pdc20265 (struct pci_dev *dev, ide_pci_device_t *d)
+static void __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) &&
@@ -866,7 +861,7 @@ static void __init init_setup_pdc20265 (struct pci_dev *dev, ide_pci_device_t *d
        ide_setup_pci_device(dev, d);
 }
 
-static void __init init_setup_pdc202xx (struct pci_dev *dev, ide_pci_device_t *d)
+static void __devinit init_setup_pdc202xx(struct pci_dev *dev, ide_pci_device_t *d)
 {
        ide_setup_pci_device(dev, d);
 }
@@ -884,8 +879,6 @@ static int __devinit pdc202xx_init_one(struct pci_dev *dev, const struct pci_dev
 {
        ide_pci_device_t *d = &pdc202xx_chipsets[id->driver_data];
 
-       if (dev->device != d->device)
-               BUG();
        d->init_setup(dev, d);
        return 0;
 }
@@ -901,7 +894,7 @@ static struct pci_device_id pdc202xx_pci_tbl[] = {
 MODULE_DEVICE_TABLE(pci, pdc202xx_pci_tbl);
 
 static struct pci_driver driver = {
-       .name           = "Promise Old IDE",
+       .name           = "Promise_Old_IDE",
        .id_table       = pdc202xx_pci_tbl,
        .probe          = pdc202xx_init_one,
 };