Lines Matching refs:drive
65 static void superio_tf_read(ide_drive_t *drive, struct ide_taskfile *tf,
68 struct ide_io_ports *io_ports = &drive->hwif->io_ports;
84 static void ns87415_dev_select(ide_drive_t *drive);
123 static void ns87415_prepare_drive (ide_drive_t *drive, unsigned int use_dma)
125 ide_hwif_t *hwif = drive->hwif;
136 if (drive->dev_flags & IDE_DFLAG_PRESENT)
141 /* Select PIO or DMA, DMA may only be selected for one drive/channel. */
142 bit = 1 << (20 + (drive->dn & 1) + (hwif->channel << 1));
143 other = 1 << (20 + (1 - (drive->dn & 1)) + (hwif->channel << 1));
171 static void ns87415_dev_select(ide_drive_t *drive)
173 ns87415_prepare_drive(drive,
174 !!(drive->dev_flags & IDE_DFLAG_USING_DMA));
176 outb(drive->select | ATA_DEVICE_OBS, drive->hwif->io_ports.device_addr);
179 static void ns87415_dma_start(ide_drive_t *drive)
181 ns87415_prepare_drive(drive, 1);
182 ide_dma_start(drive);
185 static int ns87415_dma_end(ide_drive_t *drive)
187 ide_hwif_t *hwif = drive->hwif;
199 ns87415_prepare_drive(drive, 0);
217 * Also, leave IRQ masked during drive probing, to prevent infinite
220 * IRQs get unmasked in dev_select() when drive is first used.