Lines Matching refs:drive

90  * This routine is invoked to prepare for access to a given drive.
93 static void qd65xx_dev_select(ide_drive_t *drive)
95 u8 index = (( (QD_TIMREG(drive)) & 0x80 ) >> 7) |
96 (QD_TIMREG(drive) & 0x02);
98 if (timings[index] != QD_TIMING(drive))
99 outb(timings[index] = QD_TIMING(drive), QD_TIMREG(drive));
101 outb(drive->select | ATA_DEVICE_OBS, drive->hwif->io_ports.device_addr);
151 static int qd_find_disk_type (ide_drive_t *drive,
155 char *m = (char *)&drive->id[ATA_ID_PROD];
166 printk(KERN_DEBUG "%s: listed !\n", drive->name);
181 static void qd_set_timing (ide_drive_t *drive, u8 timing)
183 unsigned long data = (unsigned long)ide_get_drivedata(drive);
187 ide_set_drivedata(drive, (void *)data);
189 printk(KERN_DEBUG "%s: %#x\n", drive->name, timing);
192 static void qd6500_set_pio_mode(ide_hwif_t *hwif, ide_drive_t *drive)
194 u16 *id = drive->id;
198 /* FIXME: use drive->pio_mode value */
199 if (!qd_find_disk_type(drive, &active_time, &recovery_time) &&
202 printk(KERN_INFO "%s: PIO mode%d\n", drive->name,
205 recovery_time = drive->id[ATA_ID_EIDE_PIO] - 120;
208 qd_set_timing(drive, qd6500_compute_timing(drive->hwif,
212 static void qd6580_set_pio_mode(ide_hwif_t *hwif, ide_drive_t *drive)
214 const u8 pio = drive->pio_mode - XFER_PIO_0;
221 if (drive->id && !qd_find_disk_type(drive, &active_time, &recovery_time)) {
222 cycle_time = ide_pio_cycle_time(drive, pio);
231 printk(KERN_WARNING "%s: Strange recovery time !\n",drive->name);
238 printk(KERN_WARNING "%s: Strange recovery time !\n",drive->name);
249 printk(KERN_INFO "%s: PIO mode%d\n", drive->name,pio);
252 if (!hwif->channel && drive->media != ide_disk) {
256 drive->name, hwif->name);
259 qd_set_timing(drive, qd6580_compute_timing(active_time, recovery_time));
290 static void __init qd6500_init_dev(ide_drive_t *drive)
292 ide_hwif_t *hwif = drive->hwif;
296 ide_set_drivedata(drive, (void *)QD6500_DEF_DATA);
299 static void __init qd6580_init_dev(ide_drive_t *drive)
301 ide_hwif_t *hwif = drive->hwif;
312 ide_set_drivedata(drive, (void *)((drive->dn & 1) ? t2 : t1));