|
@@ -33,11 +33,12 @@
|
|
|
|
|
|
|
|
|
#define DRV_NAME "pata_at91"
|
|
|
-#define DRV_VERSION "0.1"
|
|
|
+#define DRV_VERSION "0.2"
|
|
|
|
|
|
#define CF_IDE_OFFSET 0x00c00000
|
|
|
#define CF_ALT_IDE_OFFSET 0x00e00000
|
|
|
#define CF_IDE_RES_SIZE 0x08
|
|
|
+#define NCS_RD_PULSE_LIMIT 0x3f /* maximal value for pulse bitfields */
|
|
|
|
|
|
struct at91_ide_info {
|
|
|
unsigned long mode;
|
|
@@ -109,6 +110,11 @@ static void set_smc_timing(struct device *dev,
|
|
|
/* (CS0, CS1, DIR, OE) <= (CFCE1, CFCE2, CFRNW, NCSX) timings */
|
|
|
ncs_read_setup = 1;
|
|
|
ncs_read_pulse = read_cycle - 2;
|
|
|
+ if (ncs_read_pulse > NCS_RD_PULSE_LIMIT) {
|
|
|
+ ncs_read_pulse = NCS_RD_PULSE_LIMIT;
|
|
|
+ dev_warn(dev, "ncs_read_pulse limited to maximal value %lu\n",
|
|
|
+ ncs_read_pulse);
|
|
|
+ }
|
|
|
|
|
|
/* Write timings same as read timings */
|
|
|
write_cycle = read_cycle;
|