Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
[firefly-linux-kernel-4.4.55.git] / drivers / ide / cs5536.c
index 9623b852c616b4a3a27a6ef3277d03994960484a..24214ab60ac0b887a5262c8034d616459ac208d5 100644 (file)
@@ -125,11 +125,11 @@ static u8 cs5536_cable_detect(ide_hwif_t *hwif)
 
 /**
  *     cs5536_set_pio_mode             -       PIO timing setup
+ *     @hwif: ATA port
  *     @drive: ATA device
- *     @pio: PIO mode number
  */
 
-static void cs5536_set_pio_mode(ide_drive_t *drive, const u8 pio)
+static void cs5536_set_pio_mode(ide_hwif_t *hwif, ide_drive_t *drive)
 {
        static const u8 drv_timings[5] = {
                0x98, 0x55, 0x32, 0x21, 0x20,
@@ -143,15 +143,16 @@ static void cs5536_set_pio_mode(ide_drive_t *drive, const u8 pio)
                0x99, 0x92, 0x90, 0x22, 0x20,
        };
 
-       struct pci_dev *pdev = to_pci_dev(drive->hwif->dev);
+       struct pci_dev *pdev = to_pci_dev(hwif->dev);
        ide_drive_t *pair = ide_get_pair_dev(drive);
        int cshift = (drive->dn & 1) ? IDE_CAST_D1_SHIFT : IDE_CAST_D0_SHIFT;
        unsigned long timings = (unsigned long)ide_get_drivedata(drive);
        u32 cast;
+       const u8 pio = drive->pio_mode - XFER_PIO_0;
        u8 cmd_pio = pio;
 
        if (pair)
-               cmd_pio = min(pio, ide_get_best_pio_mode(pair, 255, 4));
+               cmd_pio = min_t(u8, pio, pair->pio_mode - XFER_PIO_0);
 
        timings &= (IDE_DRV_MASK << 8);
        timings |= drv_timings[pio];
@@ -172,11 +173,11 @@ static void cs5536_set_pio_mode(ide_drive_t *drive, const u8 pio)
 
 /**
  *     cs5536_set_dma_mode             -       DMA timing setup
+ *     @hwif: ATA port
  *     @drive: ATA device
- *     @mode: DMA mode
  */
 
-static void cs5536_set_dma_mode(ide_drive_t *drive, const u8 mode)
+static void cs5536_set_dma_mode(ide_hwif_t *hwif, ide_drive_t *drive)
 {
        static const u8 udma_timings[6] = {
                0xc2, 0xc1, 0xc0, 0xc4, 0xc5, 0xc6,
@@ -186,10 +187,11 @@ static void cs5536_set_dma_mode(ide_drive_t *drive, const u8 mode)
                0x67, 0x21, 0x20,
        };
 
-       struct pci_dev *pdev = to_pci_dev(drive->hwif->dev);
+       struct pci_dev *pdev = to_pci_dev(hwif->dev);
        int dshift = (drive->dn & 1) ? IDE_D1_SHIFT : IDE_D0_SHIFT;
        unsigned long timings = (unsigned long)ide_get_drivedata(drive);
        u32 etc;
+       const u8 mode = drive->dma_mode;
 
        cs5536_read(pdev, ETC, &etc);