• Home
  • Raw
  • Download

Lines Matching +full:max +full:- +full:speed

2  *  Copyright (c) 1999-2001 Vojtech Pavlik
3 * Copyright (c) 2007-2008 Bartlomiej Zolnierkiewicz
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
29 * PIO 0-5, MWDMA 0-2 and UDMA 0-6 timings (in nanoseconds).
30 * These were taken from ATA/ATAPI-6 standard, rev 0a, except
70 struct ide_timing *ide_timing_find_mode(u8 speed) in ide_timing_find_mode() argument
74 for (t = ide_timing; t->mode != speed; t++) in ide_timing_find_mode()
75 if (t->mode == 0xff) in ide_timing_find_mode()
83 u16 *id = drive->id; in ide_pio_cycle_time()
88 if (ata_id_has_iordy(drive->id)) in ide_pio_cycle_time()
93 /* conservative "downgrade" for all pre-ATA2 drives */ in ide_pio_cycle_time()
94 if (pio < 3 && cycle < t->cycle) in ide_pio_cycle_time()
102 return cycle ? cycle : t->cycle; in ide_pio_cycle_time()
106 #define ENOUGH(v, unit) (((v) - 1) / (unit) + 1)
112 q->setup = EZ(t->setup, T); in ide_timing_quantize()
113 q->act8b = EZ(t->act8b, T); in ide_timing_quantize()
114 q->rec8b = EZ(t->rec8b, T); in ide_timing_quantize()
115 q->cyc8b = EZ(t->cyc8b, T); in ide_timing_quantize()
116 q->active = EZ(t->active, T); in ide_timing_quantize()
117 q->recover = EZ(t->recover, T); in ide_timing_quantize()
118 q->cycle = EZ(t->cycle, T); in ide_timing_quantize()
119 q->udma = EZ(t->udma, UT); in ide_timing_quantize()
126 m->setup = max(a->setup, b->setup); in ide_timing_merge()
128 m->act8b = max(a->act8b, b->act8b); in ide_timing_merge()
130 m->rec8b = max(a->rec8b, b->rec8b); in ide_timing_merge()
132 m->cyc8b = max(a->cyc8b, b->cyc8b); in ide_timing_merge()
134 m->active = max(a->active, b->active); in ide_timing_merge()
136 m->recover = max(a->recover, b->recover); in ide_timing_merge()
138 m->cycle = max(a->cycle, b->cycle); in ide_timing_merge()
140 m->udma = max(a->udma, b->udma); in ide_timing_merge()
144 int ide_timing_compute(ide_drive_t *drive, u8 speed, in ide_timing_compute() argument
147 u16 *id = drive->id; in ide_timing_compute()
153 s = ide_timing_find_mode(speed); in ide_timing_compute()
155 return -EINVAL; in ide_timing_compute()
169 if (speed >= XFER_PIO_0 && speed < XFER_SW_DMA_0) { in ide_timing_compute()
170 if (speed <= XFER_PIO_2) in ide_timing_compute()
172 else if ((speed <= XFER_PIO_4) || in ide_timing_compute()
173 (speed == XFER_PIO_5 && !ata_id_is_cfa(id))) in ide_timing_compute()
175 } else if (speed >= XFER_MW_DMA_0 && speed <= XFER_MW_DMA_2) in ide_timing_compute()
191 if (speed >= XFER_SW_DMA_0) { in ide_timing_compute()
192 ide_timing_compute(drive, drive->pio_mode, &p, T, UT); in ide_timing_compute()
199 if (t->act8b + t->rec8b < t->cyc8b) { in ide_timing_compute()
200 t->act8b += (t->cyc8b - (t->act8b + t->rec8b)) / 2; in ide_timing_compute()
201 t->rec8b = t->cyc8b - t->act8b; in ide_timing_compute()
204 if (t->active + t->recover < t->cycle) { in ide_timing_compute()
205 t->active += (t->cycle - (t->active + t->recover)) / 2; in ide_timing_compute()
206 t->recover = t->cycle - t->active; in ide_timing_compute()