Lines Matching refs:drive
51 * ide_get_best_pio_mode - get PIO mode from drive
52 * @drive: drive to consider
56 * This routine returns the recommended PIO settings for a given drive,
57 * based on the drive->id information and the ide_pio_blacklist[].
63 static u8 ide_get_best_pio_mode(ide_drive_t *drive, u8 mode_wanted, u8 max_mode)
65 u16 *id = drive->id;
71 if ((drive->hwif->host_flags & IDE_HFLAG_PIO_NO_BLACKLIST) == 0)
75 printk(KERN_INFO "%s: is on PIO blacklist\n", drive->name);
102 drive->name);
111 int ide_pio_need_iordy(ide_drive_t *drive, const u8 pio)
117 if (pio == 0 && (drive->hwif->port_flags & IDE_PFLAG_PROBING))
119 return ata_id_pio_need_iordy(drive->id, pio);
123 int ide_set_pio_mode(ide_drive_t *drive, const u8 mode)
125 ide_hwif_t *hwif = drive->hwif;
139 drive->pio_mode = mode;
140 port_ops->set_pio_mode(hwif, drive);
145 if (ide_config_drive_speed(drive, mode))
147 drive->pio_mode = mode;
148 port_ops->set_pio_mode(hwif, drive);
151 drive->pio_mode = mode;
152 port_ops->set_pio_mode(hwif, drive);
153 return ide_config_drive_speed(drive, mode);
157 int ide_set_dma_mode(ide_drive_t *drive, const u8 mode)
159 ide_hwif_t *hwif = drive->hwif;
169 if (ide_config_drive_speed(drive, mode))
171 drive->dma_mode = mode;
172 port_ops->set_dma_mode(hwif, drive);
175 drive->dma_mode = mode;
176 port_ops->set_dma_mode(hwif, drive);
177 return ide_config_drive_speed(drive, mode);
183 void ide_set_pio(ide_drive_t *drive, u8 req_pio)
185 ide_hwif_t *hwif = drive->hwif;
197 pio = ide_get_best_pio_mode(drive, req_pio, host_pio);
205 drive->name, host_pio, req_pio,
208 (void)ide_set_pio_mode(drive, XFER_PIO_0 + pio);
214 * @drive: IDE device
223 static u8 ide_rate_filter(ide_drive_t *drive, u8 speed)
225 ide_hwif_t *hwif = drive->hwif;
226 u8 mode = ide_find_dma_mode(drive, speed);
242 * @drive: drive to set
250 int ide_set_xfer_rate(ide_drive_t *drive, u8 rate)
252 ide_hwif_t *hwif = drive->hwif;
259 rate = ide_rate_filter(drive, rate);
264 return ide_set_pio_mode(drive, rate);
266 return ide_set_dma_mode(drive, rate);