Lines Matching refs:drive

31 void SELECT_MASK(ide_drive_t *drive, int mask)
33 const struct ide_port_ops *port_ops = drive->hwif->port_ops;
36 port_ops->maskproc(drive, mask);
39 u8 ide_read_error(ide_drive_t *drive)
43 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_ERROR);
96 * This routine busy-waits for the drive status to be not "busy".
106 int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad,
109 ide_hwif_t *hwif = drive->hwif;
116 udelay(1); /* spec allows drive 400ns to assert "BUSY" */
170 int ide_wait_stat(ide_startstop_t *startstop, ide_drive_t *drive, u8 good,
177 if (drive->max_failures && (drive->failures > drive->max_failures)) {
182 err = __ide_wait_stat(drive, good, bad, timeout, &stat);
186 *startstop = ide_error(drive, s, stat);
194 * ide_in_drive_list - look for drive in black/white list
195 * @id: drive identifier
198 * Look for a drive in the blacklist and the whitelist tables
199 * Returns 1 if the drive is found in the table.
234 u8 eighty_ninty_three(ide_drive_t *drive)
236 ide_hwif_t *hwif = drive->hwif;
237 u16 *id = drive->id;
245 drive->name);
279 if (drive->dev_flags & IDE_DFLAG_UDMA33_WARNED)
284 drive->name,
285 hwif->cbl == ATA_CBL_PATA80 ? "drive" : "host");
287 drive->dev_flags |= IDE_DFLAG_UDMA33_WARNED;
305 void ide_check_nien_quirk_list(ide_drive_t *drive)
307 const char **list, *m = (char *)&drive->id[ATA_ID_PROD];
311 drive->dev_flags |= IDE_DFLAG_NIEN_QUIRK;
316 int ide_driveid_update(ide_drive_t *drive)
325 SELECT_MASK(drive, 1);
326 rc = ide_dev_read_id(drive, ATA_CMD_ID_ATA, id, 1);
327 SELECT_MASK(drive, 0);
332 drive->id[ATA_ID_UDMA_MODES] = id[ATA_ID_UDMA_MODES];
333 drive->id[ATA_ID_MWDMA_MODES] = id[ATA_ID_MWDMA_MODES];
334 drive->id[ATA_ID_SWDMA_MODES] = id[ATA_ID_SWDMA_MODES];
335 drive->id[ATA_ID_CFA_MODES] = id[ATA_ID_CFA_MODES];
343 printk(KERN_ERR "%s: %s: bad status\n", drive->name, __func__);
348 int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
350 ide_hwif_t *hwif = drive->hwif;
353 u16 *id = drive->id, i;
359 hwif->dma_ops->dma_host_set(drive, 0);
363 if ((speed & 0xf8) == XFER_PIO_0 && ata_id_has_iordy(drive->id) == 0)
374 tp_ops->dev_select(drive);
375 SELECT_MASK(drive, 1);
383 tp_ops->tf_load(drive, &tf, IDE_VALID_FEATURE | IDE_VALID_NSECT);
387 if (drive->dev_flags & IDE_DFLAG_NIEN_QUIRK)
390 error = __ide_wait_stat(drive, drive->ready_stat,
394 SELECT_MASK(drive, 0);
397 (void) ide_dump_status(drive, "set_drive_speed_status", stat);
412 if (speed >= XFER_SW_DMA_0 && (drive->dev_flags & IDE_DFLAG_USING_DMA))
413 hwif->dma_ops->dma_host_set(drive, 1);
415 ide_dma_off_quietly(drive);
435 if (!drive->init_speed)
436 drive->init_speed = speed;
437 drive->current_speed = speed;
443 * wait for an interrupt response from a drive. handler() points
450 void __ide_set_handler(ide_drive_t *drive, ide_handler_t *handler,
453 ide_hwif_t *hwif = drive->hwif;
462 void ide_set_handler(ide_drive_t *drive, ide_handler_t *handler,
465 ide_hwif_t *hwif = drive->hwif;
469 __ide_set_handler(drive, handler, timeout);
476 * @drive: IDE drive to issue the command against
487 void ide_execute_command(ide_drive_t *drive, struct ide_cmd *cmd,
490 ide_hwif_t *hwif = drive->hwif;
496 (drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT))
497 __ide_set_handler(drive, handler, timeout);