]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/ide/legacy/qd65xx.c
Merge branches 'x86/xen', 'x86/build', 'x86/microcode', 'x86/mm-debug-v2', 'x86/memor...
[linux-2.6-omap-h63xx.git] / drivers / ide / legacy / qd65xx.c
index 2338f344ea243809b7fb5954d7e09e494303ada9..ec408b3a7100ae9eb4492ca1dfcb74ddc888c790 100644 (file)
@@ -27,7 +27,6 @@
 #include <linux/mm.h>
 #include <linux/ioport.h>
 #include <linux/blkdev.h>
-#include <linux/hdreg.h>
 #include <linux/ide.h>
 #include <linux/init.h>
 #include <asm/system.h>
@@ -151,12 +150,14 @@ static int qd_find_disk_type (ide_drive_t *drive,
                int *active_time, int *recovery_time)
 {
        struct qd65xx_timing_s *p;
-       char model[40];
+       char *m = (char *)&drive->id[ATA_ID_PROD];
+       char model[ATA_ID_PROD_LEN];
 
-       if (!*drive->id->model) return 0;
+       if (*m == 0)
+               return 0;
 
-       strncpy(model,drive->id->model,40);
-       ide_fixstring(model,40,1); /* byte-swap */
+       strncpy(model, m, ATA_ID_PROD_LEN);
+       ide_fixstring(model, ATA_ID_PROD_LEN, 1); /* byte-swap */
 
        for (p = qd65xx_timing ; p->offset != -1 ; p++) {
                if (!strncmp(p->model, model+p->offset, 4)) {
@@ -185,20 +186,20 @@ static void qd_set_timing (ide_drive_t *drive, u8 timing)
 
 static void qd6500_set_pio_mode(ide_drive_t *drive, const u8 pio)
 {
+       u16 *id = drive->id;
        int active_time   = 175;
        int recovery_time = 415; /* worst case values from the dos driver */
 
        /*
         * FIXME: use "pio" value
         */
-       if (drive->id && !qd_find_disk_type(drive, &active_time, &recovery_time)
-               && drive->id->tPIO && (drive->id->field_valid & 0x02)
-               && drive->id->eide_pio >= 240) {
-
+       if (!qd_find_disk_type(drive, &active_time, &recovery_time) &&
+           (id[ATA_ID_OLD_PIO_MODES] & 0xff) && (id[ATA_ID_FIELD_VALID] & 2) &&
+           id[ATA_ID_EIDE_PIO] >= 240) {
                printk(KERN_INFO "%s: PIO mode%d\n", drive->name,
-                               drive->id->tPIO);
+                       id[ATA_ID_OLD_PIO_MODES] & 0xff);
                active_time = 110;
-               recovery_time = drive->id->eide_pio - 120;
+               recovery_time = drive->id[ATA_ID_EIDE_PIO] - 120;
        }
 
        qd_set_timing(drive, qd6500_compute_timing(HWIF(drive), active_time, recovery_time));