static void pre_reset(ide_drive_t *drive) { const struct ide_port_ops *port_ops = drive->hwif->port_ops; if (drive->media == ide_disk) ide_disk_pre_reset(drive); else drive->dev_flags |= IDE_DFLAG_POST_RESET; if (drive->dev_flags & IDE_DFLAG_USING_DMA) { if (drive->crc_count) ide_check_dma_crc(drive); else ide_dma_off(drive); } if ((drive->dev_flags & IDE_DFLAG_KEEP_SETTINGS) == 0) { if ((drive->dev_flags & IDE_DFLAG_USING_DMA) == 0) { drive->dev_flags &= ~IDE_DFLAG_UNMASK; drive->io_32bit = 0; } return; } if (port_ops && port_ops->pre_reset) port_ops->pre_reset(drive); if (drive->current_speed != 0xff) drive->desired_speed = drive->current_speed; drive->current_speed = 0xff; }
static void pre_reset(ide_drive_t *drive) { if (drive->media == ide_disk) ide_disk_pre_reset(drive); else drive->post_reset = 1; if (!drive->keep_settings) { if (drive->using_dma) { check_dma_crc(drive); } else { drive->unmask = 0; drive->io_32bit = 0; } return; } if (drive->using_dma) check_dma_crc(drive); if (HWIF(drive)->pre_reset != NULL) HWIF(drive)->pre_reset(drive); if (drive->current_speed != 0xff) drive->desired_speed = drive->current_speed; drive->current_speed = 0xff; }