Re: [PATCH v2 23/42] esp: use ti_wptr/ti_rptr to manage the current FIFO position for PDMA
Le 09/02/2021 à 20:29, Mark Cave-Ayland a écrit : > This eliminates the last user of the PDMA-specific pdma_cur variable which can > now be removed. > > Signed-off-by: Mark Cave-Ayland > --- > 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 691a2f4bdc..50503a6f53 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; > @@ -858,7 +852,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 578d936214..5908d59a0a 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; > Reviewed-by: Laurent Vivier
Re: [PATCH v2 23/42] esp: use ti_wptr/ti_rptr to manage the current FIFO position for PDMA
On 2/9/21 8:29 PM, Mark Cave-Ayland wrote: > This eliminates the last user of the PDMA-specific pdma_cur variable which can > now be removed. > > Signed-off-by: Mark Cave-Ayland > --- > hw/scsi/esp.c | 23 --- > include/hw/scsi/esp.h | 1 - > 2 files changed, 8 insertions(+), 16 deletions(-) Reviewed-by: Philippe Mathieu-Daudé
[PATCH v2 23/42] esp: use ti_wptr/ti_rptr to manage the current FIFO position for PDMA
This eliminates the last user of the PDMA-specific pdma_cur variable which can now be removed. Signed-off-by: Mark Cave-Ayland --- 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 691a2f4bdc..50503a6f53 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; @@ -858,7 +852,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 578d936214..5908d59a0a 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