Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
[safe/jmp/linux-2.6] / drivers / scsi / esp_scsi.c
index 59fbef0..62a4618 100644 (file)
@@ -219,19 +219,10 @@ static void esp_reset_esp(struct esp *esp)
        /* Now reset the ESP chip */
        scsi_esp_cmd(esp, ESP_CMD_RC);
        scsi_esp_cmd(esp, ESP_CMD_NULL | ESP_CMD_DMA);
+       if (esp->rev == FAST)
+               esp_write8(ESP_CONFIG2_FENAB, ESP_CFG2);
        scsi_esp_cmd(esp, ESP_CMD_NULL | ESP_CMD_DMA);
 
-       /* Reload the configuration registers */
-       esp_write8(esp->cfact, ESP_CFACT);
-
-       esp->prev_stp = 0;
-       esp_write8(esp->prev_stp, ESP_STP);
-
-       esp->prev_soff = 0;
-       esp_write8(esp->prev_soff, ESP_SOFF);
-
-       esp_write8(esp->neg_defp, ESP_TIMEO);
-
        /* This is the only point at which it is reliable to read
         * the ID-code for a fast ESP chip variants.
         */
@@ -316,6 +307,17 @@ static void esp_reset_esp(struct esp *esp)
                break;
        }
 
+       /* Reload the configuration registers */
+       esp_write8(esp->cfact, ESP_CFACT);
+
+       esp->prev_stp = 0;
+       esp_write8(esp->prev_stp, ESP_STP);
+
+       esp->prev_soff = 0;
+       esp_write8(esp->prev_soff, ESP_SOFF);
+
+       esp_write8(esp->neg_defp, ESP_TIMEO);
+
        /* Eat any bitrot in the chip */
        esp_read8(ESP_INTRPT);
        udelay(100);