All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
To: qemu-devel@nongnu.org, peter.maydell@linaro.org
Subject: [PULL 23/42] esp: use ti_wptr/ti_rptr to manage the current FIFO position for PDMA
Date: Sun,  7 Mar 2021 12:08:31 +0000	[thread overview]
Message-ID: <20210307120850.10418-24-mark.cave-ayland@ilande.co.uk> (raw)
In-Reply-To: <20210307120850.10418-1-mark.cave-ayland@ilande.co.uk>

This eliminates the last user of the PDMA-specific pdma_cur variable which can
now be removed.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20210304221103.6369-24-mark.cave-ayland@ilande.co.uk>
---
 hw/scsi/esp.c         | 23 ++++++++---------------
 include/hw/scsi/esp.h |  1 -
 2 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index bb3a9cd5e3..7bf2ec9c94 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -127,11 +127,9 @@ static uint32_t esp_get_stc(ESPState *s)
     return dmalen;
 }
 
-static void set_pdma(ESPState *s, enum pdma_origin_id origin,
-                     uint32_t index, uint32_t len)
+static void set_pdma(ESPState *s, enum pdma_origin_id origin, uint32_t len)
 {
     s->pdma_origin = origin;
-    s->pdma_cur = index;
     s->pdma_len = len;
 }
 
@@ -146,11 +144,10 @@ static uint8_t esp_pdma_read(ESPState *s)
 
     switch (s->pdma_origin) {
     case TI:
-        val = s->ti_buf[s->pdma_cur++];
+        val = s->ti_buf[s->ti_rptr++];
         break;
     case CMD:
         val = s->cmdbuf[s->cmdlen++];
-        s->pdma_cur++;
         break;
     case ASYNC:
         val = s->async_buf[0];
@@ -158,7 +155,6 @@ static uint8_t esp_pdma_read(ESPState *s)
             s->async_len--;
             s->async_buf++;
         }
-        s->pdma_cur++;
         break;
     default:
         g_assert_not_reached();
@@ -182,11 +178,10 @@ static void esp_pdma_write(ESPState *s, uint8_t val)
 
     switch (s->pdma_origin) {
     case TI:
-        s->ti_buf[s->pdma_cur++] = val;
+        s->ti_buf[s->ti_wptr++] = val;
         break;
     case CMD:
         s->cmdbuf[s->cmdlen++] = val;
-        s->pdma_cur++;
         break;
     case ASYNC:
         s->async_buf[0] = val;
@@ -194,7 +189,6 @@ static void esp_pdma_write(ESPState *s, uint8_t val)
             s->async_len--;
             s->async_buf++;
         }
-        s->pdma_cur++;
         break;
     default:
         g_assert_not_reached();
@@ -249,7 +243,7 @@ static uint32_t get_cmd(ESPState *s)
         if (s->dma_memory_read) {
             s->dma_memory_read(s->dma_opaque, buf, dmalen);
         } else {
-            set_pdma(s, CMD, 0, dmalen);
+            set_pdma(s, CMD, dmalen);
             esp_raise_drq(s);
             return 0;
         }
@@ -412,7 +406,7 @@ static void write_response(ESPState *s)
             s->rregs[ESP_RINTR] = INTR_BS | INTR_FC;
             s->rregs[ESP_RSEQ] = SEQ_CD;
         } else {
-            set_pdma(s, TI, 0, 2);
+            set_pdma(s, TI, 2);
             s->pdma_cb = write_response_pdma_cb;
             esp_raise_drq(s);
             return;
@@ -480,7 +474,7 @@ static void esp_do_dma(ESPState *s)
         if (s->dma_memory_read) {
             s->dma_memory_read(s->dma_opaque, &s->cmdbuf[s->cmdlen], len);
         } else {
-            set_pdma(s, CMD, s->cmdlen, len);
+            set_pdma(s, CMD, len);
             s->pdma_cb = do_dma_pdma_cb;
             esp_raise_drq(s);
             return;
@@ -503,7 +497,7 @@ static void esp_do_dma(ESPState *s)
         if (s->dma_memory_read) {
             s->dma_memory_read(s->dma_opaque, s->async_buf, len);
         } else {
-            set_pdma(s, ASYNC, 0, len);
+            set_pdma(s, ASYNC, len);
             s->pdma_cb = do_dma_pdma_cb;
             esp_raise_drq(s);
             return;
@@ -512,7 +506,7 @@ static void esp_do_dma(ESPState *s)
         if (s->dma_memory_write) {
             s->dma_memory_write(s->dma_opaque, s->async_buf, len);
         } else {
-            set_pdma(s, ASYNC, 0, len);
+            set_pdma(s, ASYNC, len);
             s->pdma_cb = do_dma_pdma_cb;
             esp_raise_drq(s);
             return;
@@ -857,7 +851,6 @@ static const VMStateDescription vmstate_esp_pdma = {
     .fields = (VMStateField[]) {
         VMSTATE_INT32(pdma_origin, ESPState),
         VMSTATE_UINT32(pdma_len, ESPState),
-        VMSTATE_UINT32(pdma_cur, ESPState),
         VMSTATE_END_OF_LIST()
     }
 };
diff --git a/include/hw/scsi/esp.h b/include/hw/scsi/esp.h
index 55b0aee762..26bd015cf4 100644
--- a/include/hw/scsi/esp.h
+++ b/include/hw/scsi/esp.h
@@ -58,7 +58,6 @@ struct ESPState {
     void (*dma_cb)(ESPState *s);
     int pdma_origin;
     uint32_t pdma_len;
-    uint32_t pdma_cur;
     void (*pdma_cb)(ESPState *s);
 
     uint8_t mig_version_id;
-- 
2.20.1



  parent reply	other threads:[~2021-03-07 12:33 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-07 12:08 [PULL 00/42] qemu-sparc queue 20210307 Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 01/42] esp: checkpatch fixes Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 02/42] esp: rename existing ESP QOM type to SYSBUS_ESP Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 03/42] esp: QOMify the internal ESP device state Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 04/42] esp: add vmstate_esp version to embedded ESPState Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 05/42] esp: add trace event when receiving a TI command Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 06/42] esp: fix esp_reg_read() trace event Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 07/42] esp: add PDMA trace events Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 08/42] esp: determine transfer direction directly from SCSI phase Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 09/42] esp: introduce esp_get_tc() and esp_set_tc() Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 10/42] esp: introduce esp_get_stc() Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 11/42] esp: apply transfer length adjustment when STC is zero at TC load time Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 12/42] esp: remove dma_counter from ESPState Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 13/42] esp: remove dma_left " Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 14/42] esp: remove minlen restriction in handle_ti Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 15/42] esp: introduce esp_pdma_read() and esp_pdma_write() functions Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 16/42] esp: use pdma_origin directly in esp_pdma_read()/esp_pdma_write() Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 17/42] esp: move pdma_len and TC logic into esp_pdma_read()/esp_pdma_write() Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 18/42] esp: accumulate SCSI commands for PDMA transfers in cmdbuf instead of pdma_buf Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 19/42] esp: remove buf parameter from do_cmd() Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 20/42] esp: remove the buf and buflen parameters from get_cmd() Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 21/42] esp: remove redundant pdma_start from ESPState Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 22/42] esp: move PDMA length adjustments into esp_pdma_read()/esp_pdma_write() Mark Cave-Ayland
2021-03-07 12:08 ` Mark Cave-Ayland [this message]
2021-03-07 12:08 ` [PULL 24/42] esp: use in-built TC to determine PDMA transfer length Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 25/42] esp: remove CMD pdma_origin Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 26/42] esp: rename get_cmd_cb() to esp_select() Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 27/42] esp: fix PDMA target selection Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 28/42] esp: use FIFO for PDMA transfers between initiator and device Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 29/42] esp: remove pdma_origin from ESPState Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 30/42] esp: add 4 byte PDMA read and write transfers Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 31/42] esp: implement FIFO flush command Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 32/42] esp: latch individual bits in ESP_RINTR register Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 33/42] esp: defer command completion interrupt on incoming data transfers Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 34/42] esp: remove old deferred command completion mechanism Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 35/42] esp: raise interrupt after every non-DMA byte transferred to the FIFO Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 36/42] esp: add maxlen parameter to get_cmd() Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 37/42] esp: transition to message out phase after SATN and stop command Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 38/42] esp: convert ti_buf from array to Fifo8 Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 39/42] esp: convert cmdbuf " Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 40/42] esp: add trivial implementation of the ESP_RFLAGS register Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 41/42] esp: implement non-DMA transfers in PDMA mode Mark Cave-Ayland
2021-03-07 12:08 ` [PULL 42/42] esp: add support for unaligned accesses Mark Cave-Ayland
2021-03-09 16:09 ` [PULL 00/42] qemu-sparc queue 20210307 Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210307120850.10418-24-mark.cave-ayland@ilande.co.uk \
    --to=mark.cave-ayland@ilande.co.uk \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.