]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/ide/pci/via82cxxx.c
cs5535: PIO fixes
[linux-2.6-omap-h63xx.git] / drivers / ide / pci / via82cxxx.c
index 27e92fb9f95e0c49cdd1a874e017a8dc021a4f6a..581316f9581d0ff4be734449c4111ebc0d0e72e7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Version 3.45
+ * Version 3.46
  *
  * VIA IDE driver for Linux. Supported southbridges:
  *
@@ -203,10 +203,8 @@ static int via_set_drive(ide_drive_t *drive, u8 speed)
 
 static void via82cxxx_tune_drive(ide_drive_t *drive, u8 pio)
 {
-       if (pio == 255) {
-               via_set_drive(drive, ide_find_best_pio_mode(drive));
-               return;
-       }
+       if (pio == 255)
+               pio = ide_get_best_pio_mode(drive, 255, 5);
 
        via_set_drive(drive, XFER_PIO_0 + min_t(u8, pio, 5));
 }
@@ -223,12 +221,14 @@ static int via82cxxx_ide_dma_check (ide_drive_t *drive)
 {
        u8 speed = ide_max_dma_mode(drive);
 
-       if (speed == 0)
-               speed = ide_find_best_pio_mode(drive);
+       if (speed == 0) {
+               via82cxxx_tune_drive(drive, 255);
+               return -1;
+       }
 
        via_set_drive(drive, speed);
 
-       if (drive->autodma && (speed & XFER_MODE) != XFER_PIO)
+       if (drive->autodma)
                return 0;
 
        return -1;
@@ -498,18 +498,22 @@ static ide_pci_device_t via82cxxx_chipsets[] __devinitdata = {
                .name           = "VP_IDE",
                .init_chipset   = init_chipset_via82cxxx,
                .init_hwif      = init_hwif_via82cxxx,
-               .channels       = 2,
                .autodma        = NOAUTODMA,
                .enablebits     = {{0x40,0x02,0x02}, {0x40,0x01,0x01}},
-               .bootable       = ON_BOARD
+               .bootable       = ON_BOARD,
+               .host_flags     = IDE_HFLAG_PIO_NO_BLACKLIST
+                               | IDE_HFLAG_PIO_NO_DOWNGRADE,
+               .pio_mask       = ATA_PIO5,
        },{     /* 1 */
                .name           = "VP_IDE",
                .init_chipset   = init_chipset_via82cxxx,
                .init_hwif      = init_hwif_via82cxxx,
-               .channels       = 2,
                .autodma        = AUTODMA,
                .enablebits     = {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
                .bootable       = ON_BOARD,
+               .host_flags     = IDE_HFLAG_PIO_NO_BLACKLIST
+                               | IDE_HFLAG_PIO_NO_DOWNGRADE,
+               .pio_mask       = ATA_PIO5,
        }
 };