From 5eb7a23fb22f10f09cecba61e7bf61cecaee3f96 Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Thu, 4 Mar 2021 22:10:33 +0000 Subject: [PATCH] esp: remove dma_counter from ESPState MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The value of dma_counter is set once at the start of the transfer and remains the same until the transfer is complete. This allows the check in esp_transfer_data to be simplified since dma_left will always be non-zero until the transfer is completed. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20210304221103.6369-13-mark.cave-ayland@ilande.co.uk> --- hw/scsi/esp.c | 4 +--- include/hw/scsi/esp.h | 3 --- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 349067eb6a..15c4c33052 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -229,7 +229,6 @@ static void do_busid_cmd(ESPState *s, uint8_t *buf, uint8_t busid) if (datalen != 0) { s->rregs[ESP_RSTAT] = STAT_TC; s->dma_left = 0; - s->dma_counter = 0; if (datalen > 0) { s->rregs[ESP_RSTAT] |= STAT_DI; } else { @@ -542,7 +541,7 @@ void esp_transfer_data(SCSIRequest *req, uint32_t len) s->async_buf = scsi_req_get_buf(req); if (s->dma_left) { esp_do_dma(s); - } else if (s->dma_counter != 0 && s->ti_size <= 0) { + } else if (s->ti_size <= 0) { /* * If this was the last part of a DMA transfer then the * completion interrupt is deferred to here. @@ -561,7 +560,6 @@ static void handle_ti(ESPState *s) } dmalen = esp_get_tc(s); - s->dma_counter = dmalen; if (s->do_cmd) { minlen = (dmalen < ESP_CMDBUF_SZ) ? dmalen : ESP_CMDBUF_SZ; diff --git a/include/hw/scsi/esp.h b/include/hw/scsi/esp.h index 9d149cbc9f..ff1372947b 100644 --- a/include/hw/scsi/esp.h +++ b/include/hw/scsi/esp.h @@ -50,9 +50,6 @@ struct ESPState { /* The amount of data left in the current DMA transfer. */ uint32_t dma_left; - /* The size of the current DMA transfer. Zero if no transfer is in - progress. */ - uint32_t dma_counter; int dma_enabled; uint32_t async_len;