• Home
  • Raw
  • Download

Lines Matching full:drive

31 void SELECT_MASK(ide_drive_t *drive, int mask)  in SELECT_MASK()  argument
33 const struct ide_port_ops *port_ops = drive->hwif->port_ops; in SELECT_MASK()
36 port_ops->maskproc(drive, mask); in SELECT_MASK()
39 u8 ide_read_error(ide_drive_t *drive) in ide_read_error() argument
43 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_ERROR); in ide_read_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, in __ide_wait_stat() argument
109 ide_hwif_t *hwif = drive->hwif; in __ide_wait_stat()
116 udelay(1); /* spec allows drive 400ns to assert "BUSY" */ in __ide_wait_stat()
170 int ide_wait_stat(ide_startstop_t *startstop, ide_drive_t *drive, u8 good, in ide_wait_stat() argument
177 if (drive->max_failures && (drive->failures > drive->max_failures)) { in ide_wait_stat()
182 err = __ide_wait_stat(drive, good, bad, timeout, &stat); in ide_wait_stat()
186 *startstop = ide_error(drive, s, stat); in ide_wait_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) in eighty_ninty_three() argument
236 ide_hwif_t *hwif = drive->hwif; in eighty_ninty_three()
237 u16 *id = drive->id; in eighty_ninty_three()
245 drive->name); in eighty_ninty_three()
279 if (drive->dev_flags & IDE_DFLAG_UDMA33_WARNED) in eighty_ninty_three()
284 drive->name, in eighty_ninty_three()
285 hwif->cbl == ATA_CBL_PATA80 ? "drive" : "host"); in eighty_ninty_three()
287 drive->dev_flags |= IDE_DFLAG_UDMA33_WARNED; in eighty_ninty_three()
305 void ide_check_nien_quirk_list(ide_drive_t *drive) in ide_check_nien_quirk_list() argument
307 const char **list, *m = (char *)&drive->id[ATA_ID_PROD]; in ide_check_nien_quirk_list()
311 drive->dev_flags |= IDE_DFLAG_NIEN_QUIRK; in ide_check_nien_quirk_list()
316 int ide_driveid_update(ide_drive_t *drive) in ide_driveid_update() argument
325 SELECT_MASK(drive, 1); in ide_driveid_update()
326 rc = ide_dev_read_id(drive, ATA_CMD_ID_ATA, id, 1); in ide_driveid_update()
327 SELECT_MASK(drive, 0); in ide_driveid_update()
332 drive->id[ATA_ID_UDMA_MODES] = id[ATA_ID_UDMA_MODES]; in ide_driveid_update()
333 drive->id[ATA_ID_MWDMA_MODES] = id[ATA_ID_MWDMA_MODES]; in ide_driveid_update()
334 drive->id[ATA_ID_SWDMA_MODES] = id[ATA_ID_SWDMA_MODES]; in ide_driveid_update()
335 drive->id[ATA_ID_CFA_MODES] = id[ATA_ID_CFA_MODES]; in ide_driveid_update()
343 printk(KERN_ERR "%s: %s: bad status\n", drive->name, __func__); in ide_driveid_update()
348 int ide_config_drive_speed(ide_drive_t *drive, u8 speed) in ide_config_drive_speed() argument
350 ide_hwif_t *hwif = drive->hwif; in ide_config_drive_speed()
353 u16 *id = drive->id, i; in ide_config_drive_speed()
359 hwif->dma_ops->dma_host_set(drive, 0); in ide_config_drive_speed()
363 if ((speed & 0xf8) == XFER_PIO_0 && ata_id_has_iordy(drive->id) == 0) in ide_config_drive_speed()
374 tp_ops->dev_select(drive); in ide_config_drive_speed()
375 SELECT_MASK(drive, 1); in ide_config_drive_speed()
383 tp_ops->tf_load(drive, &tf, IDE_VALID_FEATURE | IDE_VALID_NSECT); in ide_config_drive_speed()
387 if (drive->dev_flags & IDE_DFLAG_NIEN_QUIRK) in ide_config_drive_speed()
390 error = __ide_wait_stat(drive, drive->ready_stat, in ide_config_drive_speed()
394 SELECT_MASK(drive, 0); in ide_config_drive_speed()
397 (void) ide_dump_status(drive, "set_drive_speed_status", stat); in ide_config_drive_speed()
412 if (speed >= XFER_SW_DMA_0 && (drive->dev_flags & IDE_DFLAG_USING_DMA)) in ide_config_drive_speed()
413 hwif->dma_ops->dma_host_set(drive, 1); in ide_config_drive_speed()
415 ide_dma_off_quietly(drive); in ide_config_drive_speed()
435 if (!drive->init_speed) in ide_config_drive_speed()
436 drive->init_speed = speed; in ide_config_drive_speed()
437 drive->current_speed = speed; in ide_config_drive_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, in __ide_set_handler() argument
453 ide_hwif_t *hwif = drive->hwif; in __ide_set_handler()
462 void ide_set_handler(ide_drive_t *drive, ide_handler_t *handler, in ide_set_handler() argument
465 ide_hwif_t *hwif = drive->hwif; in ide_set_handler()
469 __ide_set_handler(drive, handler, timeout); in ide_set_handler()
476 * @drive: IDE drive to issue the command against
487 void ide_execute_command(ide_drive_t *drive, struct ide_cmd *cmd, in ide_execute_command() argument
490 ide_hwif_t *hwif = drive->hwif; in ide_execute_command()
496 (drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT)) in ide_execute_command()
497 __ide_set_handler(drive, handler, timeout); in ide_execute_command()
500 * Drive takes 400nS to respond, we must avoid the IRQ being in ide_execute_command()