Commit 8a9aeb45 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Christoph Hellwig

esp_scsi: let DMA driver provide a config2 value

On PCscsi, the FENAB configuration also enables 24-bit DMA
transfer lengths (and provides the chip id in TCHI after reset).
We want to be able to enable this parameter from the DMA driver.

Check if the caller of scsi_esp_register provided a value for esp->config2.
If this is the case, assume this is not an ESP100, skip the detection
phase and leave esp->config2 untouched.  It will be used in esp_reset_esp.
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent eeea2f9c
...@@ -2219,18 +2219,25 @@ static void esp_get_revision(struct esp *esp) ...@@ -2219,18 +2219,25 @@ static void esp_get_revision(struct esp *esp)
u8 val; u8 val;
esp->config1 = (ESP_CONFIG1_PENABLE | (esp->scsi_id & 7)); esp->config1 = (ESP_CONFIG1_PENABLE | (esp->scsi_id & 7));
if (esp->config2 == 0) {
esp->config2 = (ESP_CONFIG2_SCSI2ENAB | ESP_CONFIG2_REGPARITY); esp->config2 = (ESP_CONFIG2_SCSI2ENAB | ESP_CONFIG2_REGPARITY);
esp_write8(esp->config2, ESP_CFG2); esp_write8(esp->config2, ESP_CFG2);
val = esp_read8(ESP_CFG2); val = esp_read8(ESP_CFG2);
val &= ~ESP_CONFIG2_MAGIC; val &= ~ESP_CONFIG2_MAGIC;
esp->config2 = 0;
if (val != (ESP_CONFIG2_SCSI2ENAB | ESP_CONFIG2_REGPARITY)) { if (val != (ESP_CONFIG2_SCSI2ENAB | ESP_CONFIG2_REGPARITY)) {
/* If what we write to cfg2 does not come back, cfg2 is not /*
* implemented, therefore this must be a plain esp100. * If what we write to cfg2 does not come back,
* cfg2 is not implemented.
* Therefore this must be a plain esp100.
*/ */
esp->rev = ESP100; esp->rev = ESP100;
} else { return;
esp->config2 = 0; }
}
esp_set_all_config3(esp, 5); esp_set_all_config3(esp, 5);
esp->prev_cfg3 = 5; esp->prev_cfg3 = 5;
esp_write8(esp->config2, ESP_CFG2); esp_write8(esp->config2, ESP_CFG2);
...@@ -2257,9 +2264,6 @@ static void esp_get_revision(struct esp *esp) ...@@ -2257,9 +2264,6 @@ static void esp_get_revision(struct esp *esp)
} else { } else {
esp->rev = ESP236; esp->rev = ESP236;
} }
esp->config2 = 0;
esp_write8(esp->config2, ESP_CFG2);
}
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment