]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/ide/pci/cs5535.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh64-2.6
[linux-2.6-omap-h63xx.git] / drivers / ide / pci / cs5535.c
index 383b7eccbcbbc63ccb25392f5d1175862b4588c5..9094916e37803c61a02306f0d402653a771a2fc7 100644 (file)
@@ -84,7 +84,7 @@ static void cs5535_set_speed(ide_drive_t *drive, const u8 speed)
 
        /* Set the PIO timings */
        if ((speed & XFER_MODE) == XFER_PIO) {
-               ide_drive_t *pair = &drive->hwif->drives[drive->dn ^ 1];
+               ide_drive_t *pair = ide_get_paired_drive(drive);
                u8 cmd, pioa;
 
                cmd = pioa = speed - XFER_PIO_0;
@@ -131,24 +131,21 @@ static void cs5535_set_speed(ide_drive_t *drive, const u8 speed)
        }
 }
 
-/****
- *     cs5535_set_drive         -     Configure the drive to the new speed
- *     @drive: Drive to set up
- *     @speed: desired speed
+/**
+ *     cs5535_set_dma_mode     -       set host controller for DMA mode
+ *     @drive: drive
+ *     @speed: DMA mode
  *
- *     cs5535_set_drive() configures the drive and the chipset to a
- *     new speed. It also can be called by upper layers.
+ *     Programs the chipset for DMA mode.
  */
-static int cs5535_set_drive(ide_drive_t *drive, u8 speed)
+
+static void cs5535_set_dma_mode(ide_drive_t *drive, const u8 speed)
 {
-       ide_config_drive_speed(drive, speed);
        cs5535_set_speed(drive, speed);
-
-       return 0;
 }
 
 /**
- *     cs5535_set_pio_mode     -       PIO setup
+ *     cs5535_set_pio_mode     -       set host controller for PIO mode
  *     @drive: drive
  *     @pio: PIO mode number
  *
@@ -157,23 +154,9 @@ static int cs5535_set_drive(ide_drive_t *drive, u8 speed)
 
 static void cs5535_set_pio_mode(ide_drive_t *drive, const u8 pio)
 {
-       ide_config_drive_speed(drive, XFER_PIO_0 + pio);
        cs5535_set_speed(drive, XFER_PIO_0 + pio);
 }
 
-static int cs5535_dma_check(ide_drive_t *drive)
-{
-       drive->init_speed = 0;
-
-       if (ide_tune_dma(drive))
-               return 0;
-
-       if (ide_use_fast_pio(drive))
-               ide_set_max_pio(drive);
-
-       return -1;
-}
-
 static u8 __devinit cs5535_cable_detect(struct pci_dev *dev)
 {
        u8 bit;
@@ -194,37 +177,23 @@ static u8 __devinit cs5535_cable_detect(struct pci_dev *dev)
  */
 static void __devinit init_hwif_cs5535(ide_hwif_t *hwif)
 {
-       int i;
-
-       hwif->autodma = 0;
-
        hwif->set_pio_mode = &cs5535_set_pio_mode;
-       hwif->speedproc = &cs5535_set_drive;
-       hwif->ide_dma_check = &cs5535_dma_check;
+       hwif->set_dma_mode = &cs5535_set_dma_mode;
 
-       hwif->atapi_dma = 1;
-       hwif->ultra_mask = 0x1F;
-       hwif->mwdma_mask = 0x07;
+       if (hwif->dma_base == 0)
+               return;
 
        hwif->cbl = cs5535_cable_detect(hwif->pci_dev);
-
-       if (!noautodma)
-               hwif->autodma = 1;
-
-       /* just setting autotune and not worrying about bios timings */
-       for (i = 0; i < 2; i++) {
-               hwif->drives[i].autotune = 1;
-               hwif->drives[i].autodma = hwif->autodma;
-       }
 }
 
-static ide_pci_device_t cs5535_chipset __devinitdata = {
+static const struct ide_port_info cs5535_chipset __devinitdata = {
        .name           = "CS5535",
        .init_hwif      = init_hwif_cs5535,
-       .autodma        = AUTODMA,
-       .bootable       = ON_BOARD,
-       .host_flags     = IDE_HFLAG_SINGLE,
+       .host_flags     = IDE_HFLAG_SINGLE | IDE_HFLAG_POST_SET_MODE |
+                         IDE_HFLAG_BOOTABLE,
        .pio_mask       = ATA_PIO4,
+       .mwdma_mask     = ATA_MWDMA2,
+       .udma_mask      = ATA_UDMA4,
 };
 
 static int __devinit cs5535_init_one(struct pci_dev *dev,
@@ -233,10 +202,8 @@ static int __devinit cs5535_init_one(struct pci_dev *dev,
        return ide_setup_pci_device(dev, &cs5535_chipset);
 }
 
-static struct pci_device_id cs5535_pci_tbl[] =
-{
-       { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_CS5535_IDE, PCI_ANY_ID,
-               PCI_ANY_ID, 0, 0, 0},
+static const struct pci_device_id cs5535_pci_tbl[] = {
+       { PCI_VDEVICE(NS, PCI_DEVICE_ID_NS_CS5535_IDE), 0 },
        { 0, },
 };