drm: Propagate error from drm_fb_helper_init().
[safe/jmp/linux-2.6] / drivers / ide / it821x.c
index 51aa745..2e3169f 100644 (file)
@@ -61,6 +61,7 @@
 
 #include <linux/types.h>
 #include <linux/module.h>
+#include <linux/slab.h>
 #include <linux/pci.h>
 #include <linux/ide.h>
 #include <linux/init.h>
@@ -228,18 +229,18 @@ static void it821x_clock_strategy(ide_drive_t *drive)
 
 /**
  *     it821x_set_pio_mode     -       set host controller for PIO mode
+ *     @hwif: port
  *     @drive: drive
- *     @pio: PIO mode number
  *
  *     Tune the host to the desired PIO mode taking into the consideration
  *     the maximum PIO mode supported by the other device on the cable.
  */
 
-static void it821x_set_pio_mode(ide_drive_t *drive, const u8 pio)
+static void it821x_set_pio_mode(ide_hwif_t *hwif, ide_drive_t *drive)
 {
-       ide_hwif_t *hwif = drive->hwif;
        struct it821x_dev *itdev = ide_get_hwifdata(hwif);
        ide_drive_t *pair = ide_get_pair_dev(drive);
+       const u8 pio = drive->pio_mode - XFER_PIO_0;
        u8 unit = drive->dn & 1, set_pio = pio;
 
        /* Spec says 89 ref driver uses 88 */
@@ -252,7 +253,7 @@ static void it821x_set_pio_mode(ide_drive_t *drive, const u8 pio)
         * on the cable.
         */
        if (pair) {
-               u8 pair_pio = ide_get_best_pio_mode(pair, 255, 4);
+               u8 pair_pio = pair->pio_mode - XFER_PIO_0;
                /* trim PIO to the slowest of the master/slave */
                if (pair_pio < set_pio)
                        set_pio = pair_pio;
@@ -393,14 +394,16 @@ static int it821x_dma_end(ide_drive_t *drive)
 
 /**
  *     it821x_set_dma_mode     -       set host controller for DMA mode
+ *     @hwif: port
  *     @drive: drive
- *     @speed: DMA mode
  *
  *     Tune the ITE chipset for the desired DMA mode.
  */
 
-static void it821x_set_dma_mode(ide_drive_t *drive, const u8 speed)
+static void it821x_set_dma_mode(ide_hwif_t *hwif, ide_drive_t *drive)
 {
+       const u8 speed = drive->dma_mode;
+
        /*
         * MWDMA tuning is really hard because our MWDMA and PIO
         * timings are kept in the same place.  We can switch in the