|
@@ -27,6 +27,7 @@
|
|
|
* Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
|
|
|
*/
|
|
|
|
|
|
+#include <linux/kernel.h>
|
|
|
#include <linux/hdreg.h>
|
|
|
|
|
|
#define XFER_PIO_5 0x0d
|
|
@@ -96,11 +97,9 @@ static struct ide_timing ide_timing[] = {
|
|
|
#define IDE_TIMING_UDMA 0x80
|
|
|
#define IDE_TIMING_ALL 0xff
|
|
|
|
|
|
-#define MIN(a,b) ((a)<(b)?(a):(b))
|
|
|
-#define MAX(a,b) ((a)>(b)?(a):(b))
|
|
|
-#define FIT(v,min,max) MAX(MIN(v,max),min)
|
|
|
-#define ENOUGH(v,unit) (((v)-1)/(unit)+1)
|
|
|
-#define EZ(v,unit) ((v)?ENOUGH(v,unit):0)
|
|
|
+#define FIT(v,vmin,vmax) max_t(short,min_t(short,v,vmax),vmin)
|
|
|
+#define ENOUGH(v,unit) (((v)-1)/(unit)+1)
|
|
|
+#define EZ(v,unit) ((v)?ENOUGH(v,unit):0)
|
|
|
|
|
|
#define XFER_MODE 0xf0
|
|
|
#define XFER_UDMA_133 0x48
|
|
@@ -188,14 +187,14 @@ static void ide_timing_quantize(struct ide_timing *t, struct ide_timing *q, int
|
|
|
|
|
|
static void ide_timing_merge(struct ide_timing *a, struct ide_timing *b, struct ide_timing *m, unsigned int what)
|
|
|
{
|
|
|
- if (what & IDE_TIMING_SETUP ) m->setup = MAX(a->setup, b->setup);
|
|
|
- if (what & IDE_TIMING_ACT8B ) m->act8b = MAX(a->act8b, b->act8b);
|
|
|
- if (what & IDE_TIMING_REC8B ) m->rec8b = MAX(a->rec8b, b->rec8b);
|
|
|
- if (what & IDE_TIMING_CYC8B ) m->cyc8b = MAX(a->cyc8b, b->cyc8b);
|
|
|
- if (what & IDE_TIMING_ACTIVE ) m->active = MAX(a->active, b->active);
|
|
|
- if (what & IDE_TIMING_RECOVER) m->recover = MAX(a->recover, b->recover);
|
|
|
- if (what & IDE_TIMING_CYCLE ) m->cycle = MAX(a->cycle, b->cycle);
|
|
|
- if (what & IDE_TIMING_UDMA ) m->udma = MAX(a->udma, b->udma);
|
|
|
+ if (what & IDE_TIMING_SETUP ) m->setup = max(a->setup, b->setup);
|
|
|
+ if (what & IDE_TIMING_ACT8B ) m->act8b = max(a->act8b, b->act8b);
|
|
|
+ if (what & IDE_TIMING_REC8B ) m->rec8b = max(a->rec8b, b->rec8b);
|
|
|
+ if (what & IDE_TIMING_CYC8B ) m->cyc8b = max(a->cyc8b, b->cyc8b);
|
|
|
+ if (what & IDE_TIMING_ACTIVE ) m->active = max(a->active, b->active);
|
|
|
+ if (what & IDE_TIMING_RECOVER) m->recover = max(a->recover, b->recover);
|
|
|
+ if (what & IDE_TIMING_CYCLE ) m->cycle = max(a->cycle, b->cycle);
|
|
|
+ if (what & IDE_TIMING_UDMA ) m->udma = max(a->udma, b->udma);
|
|
|
}
|
|
|
|
|
|
static struct ide_timing* ide_timing_find_mode(short speed)
|