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, pbonzini@redhat.com, fam@euphon.net,
	laurent@vivier.eu
Subject: [PATCH 06/25] esp: introduce esp_get_tc() and esp_set_tc()
Date: Wed, 30 Dec 2020 15:37:26 +0000	[thread overview]
Message-ID: <20201230153745.30241-7-mark.cave-ayland@ilande.co.uk> (raw)
In-Reply-To: <20201230153745.30241-1-mark.cave-ayland@ilande.co.uk>

This simplifies reading and writing the TC register value without having to
manually shift each individual 8-bit value.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
 hw/scsi/esp.c | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index 7169294437..42cbc1da9b 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -98,6 +98,24 @@ void esp_request_cancelled(SCSIRequest *req)
     }
 }
 
+static uint32_t esp_get_tc(ESPState *s)
+{
+    uint32_t dmalen;
+
+    dmalen = s->rregs[ESP_TCLO];
+    dmalen |= s->rregs[ESP_TCMID] << 8;
+    dmalen |= s->rregs[ESP_TCHI] << 16;
+
+    return dmalen;
+}
+
+static void esp_set_tc(ESPState *s, uint32_t dmalen)
+{
+    s->rregs[ESP_TCLO] = dmalen & 0xff;
+    s->rregs[ESP_TCMID] = dmalen >> 8;
+    s->rregs[ESP_TCHI] = dmalen >> 16;
+}
+
 static void set_pdma(ESPState *s, enum pdma_origin_id origin,
                      uint32_t index, uint32_t len)
 {
@@ -157,9 +175,7 @@ static uint32_t get_cmd(ESPState *s, uint8_t *buf, uint8_t buflen)
 
     target = s->wregs[ESP_WBUSID] & BUSID_DID;
     if (s->dma) {
-        dmalen = s->rregs[ESP_TCLO];
-        dmalen |= s->rregs[ESP_TCMID] << 8;
-        dmalen |= s->rregs[ESP_TCHI] << 16;
+        dmalen = esp_get_tc(s);
         if (dmalen > buflen) {
             return 0;
         }
@@ -536,9 +552,7 @@ static void handle_ti(ESPState *s)
         return;
     }
 
-    dmalen = s->rregs[ESP_TCLO];
-    dmalen |= s->rregs[ESP_TCMID] << 8;
-    dmalen |= s->rregs[ESP_TCHI] << 16;
+    dmalen = esp_get_tc(s);
     if (dmalen == 0) {
         dmalen = 0x10000;
     }
@@ -869,9 +883,7 @@ static void sysbus_esp_pdma_write(void *opaque, hwaddr addr,
 
     trace_esp_pdma_write(size);
 
-    dmalen = s->rregs[ESP_TCLO];
-    dmalen |= s->rregs[ESP_TCMID] << 8;
-    dmalen |= s->rregs[ESP_TCHI] << 16;
+    dmalen = esp_get_tc(s);
     if (dmalen == 0 || s->pdma_len == 0) {
         return;
     }
@@ -888,9 +900,7 @@ static void sysbus_esp_pdma_write(void *opaque, hwaddr addr,
         dmalen -= 2;
         break;
     }
-    s->rregs[ESP_TCLO] = dmalen & 0xff;
-    s->rregs[ESP_TCMID] = dmalen >> 8;
-    s->rregs[ESP_TCHI] = dmalen >> 16;
+    esp_set_tc(s, dmalen);
     if (s->pdma_len == 0 && s->pdma_cb) {
         esp_lower_drq(s);
         s->pdma_cb(s);
-- 
2.20.1



  parent reply	other threads:[~2020-12-30 15:53 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-30 15:37 [PATCH 00/25] esp: consolidate PDMA transfer buffers Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 01/25] esp: checkpatch fixes Mark Cave-Ayland
2021-01-01 16:53   ` Philippe Mathieu-Daudé
2020-12-30 15:37 ` [PATCH 02/25] esp: add trace event when receiving a TI command Mark Cave-Ayland
2021-01-01 16:54   ` Philippe Mathieu-Daudé
2020-12-30 15:37 ` [PATCH 03/25] esp: fix esp_reg_read() trace event Mark Cave-Ayland
2021-01-01 16:54   ` Philippe Mathieu-Daudé
2020-12-30 15:37 ` [PATCH 04/25] esp: add PDMA trace events Mark Cave-Ayland
2021-01-01 16:55   ` Philippe Mathieu-Daudé
2020-12-30 15:37 ` [PATCH 05/25] esp: determine transfer direction directly from SCSI phase Mark Cave-Ayland
2020-12-30 15:37 ` Mark Cave-Ayland [this message]
2021-01-01 16:56   ` [PATCH 06/25] esp: introduce esp_get_tc() and esp_set_tc() Philippe Mathieu-Daudé
2020-12-30 15:37 ` [PATCH 07/25] esp: introduce esp_get_stc() Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 08/25] esp: apply transfer length adjustment when STC is zero at TC load time Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 09/25] esp: remove dma_counter from ESPState Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 10/25] esp: remove dma_left " Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 11/25] esp: remove minlen restriction in handle_ti Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 12/25] esp: introduce esp_pdma_read() and esp_pdma_write() functions Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 13/25] esp: use pdma_origin directly in esp_pdma_read()/esp_pdma_write() Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 14/25] esp: move pdma_len and TC logic into esp_pdma_read()/esp_pdma_write() Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 15/25] esp: accumulate SCSI commands for PDMA transfers in cmdbuf instead of pdma_buf Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 16/25] esp: remove redundant pdma_start from ESPState Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 17/25] esp: move PDMA length adjustments into esp_pdma_read()/esp_pdma_write() Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 18/25] esp: use ti_wptr/ti_rptr to manage the current FIFO position for PDMA Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 19/25] esp: use in-built TC to determine PDMA transfer length Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 20/25] esp: remove CMD pdma_origin Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 21/25] esp: rename get_cmd_cb() to esp_select() Mark Cave-Ayland
2021-01-01 16:57   ` Philippe Mathieu-Daudé
2020-12-30 15:37 ` [PATCH 22/25] esp: fix PDMA target selection Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 23/25] esp: use FIFO for PDMA transfers between initiator and device Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 24/25] esp: remove pdma_origin from ESPState Mark Cave-Ayland
2020-12-30 15:37 ` [PATCH 25/25] esp: add 4 byte PDMA read and write transfers Mark Cave-Ayland
2021-01-06 15:18 ` [PATCH 00/25] esp: consolidate PDMA transfer buffers Mark Cave-Ayland
2021-01-13 14:39 ` Paolo Bonzini
2021-01-13 19:29   ` Mark Cave-Ayland

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=20201230153745.30241-7-mark.cave-ayland@ilande.co.uk \
    --to=mark.cave-ayland@ilande.co.uk \
    --cc=fam@euphon.net \
    --cc=laurent@vivier.eu \
    --cc=pbonzini@redhat.com \
    --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.