[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 1/1] xilinx_spips: send dummy only if cmd req
From: |
Sai Pavan Boddu |
Subject: |
Re: [Qemu-devel] [PATCH v1 1/1] xilinx_spips: send dummy only if cmd requires it |
Date: |
Wed, 18 Apr 2018 07:17:24 +0000 |
Hi Francisco,
From: francisco iglesias [mailto:address@hidden
Sent: Wednesday, April 18, 2018 4:13 AM
To: Sai Pavan Boddu <address@hidden>
Cc: address@hidden; address@hidden; Peter Maydell <address@hidden>; Edde
<address@hidden>; address@hidden Developers <address@hidden>
Subject: Re: [PATCH v1 1/1] xilinx_spips: send dummy only if cmd requires it
Hi Sai,
[PATCH v1] xilinx_spips: send dummy only if cmd requires it
s/dummy/dummy cycles/
On 17 April 2018 at 16:18, Sai Pavan Boddu
<address@hidden<mailto:address@hidden>> wrote:
For all the commands, which do not have an entry in
xilinx_spips_num_dummies, present logic sends dummy byte when ever we
s/dummy byte/dummy cycles/
are in SNOOP_NONE state, fix it to send only if cmd requires them.
s/fix it to send only if cmd/fix it to only send dummy cycles if the command/
Only transmit max of 1 dummy byte(i.e 8 cycles) is a single snoop cycle.
And also convert dummy bytes to cycles (required by m25p80).
Maybe it is better to drop this two last lines (was already done before so it
could be misleading when reading git history).
Signed-off-by: Sai Pavan Boddu <address@hidden<mailto:address@hidden>>
---
hw/ssi/xilinx_spips.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c
index 426f971..8278930 100644
--- a/hw/ssi/xilinx_spips.c
+++ b/hw/ssi/xilinx_spips.c
@@ -627,10 +627,17 @@ static void xilinx_spips_flush_txfifo(XilinxSPIPS *s)
tx_rx[i] = tx;
}
} else {
- /* Extract a dummy byte and generate dummy cycles according to the
- * link state */
tx = fifo8_pop(&s->tx_fifo);
- dummy_cycles = 8 / s->link_state;
+ if (s->cmd_dummies > 0) {
+ /* Extract a dummy byte and generate dummy cycles according to
+ * the link state */
+ dummy_cycles = (s->cmd_dummies ? 1 : 0) * 8 / s->link_state;
+ s->cmd_dummies--;
+ } else {
+ for (i = 0; i < num_effective_busses(s); ++i) {
+ tx_rx[i] = tx;
+ }
+ }
}
Could we replace above with below in the same if ladder so we don't complicate
the code more than necessary? (Should give the same result when
num_effective_busses == 1)
- } else if (s->snoop_state == SNOOP_STRIPING) {
+ } else if (s->snoop_state == SNOOP_STRIPING ||
+ s->snoop_state == SNOOP_NONE) {
[Sai Pavan Boddu] Yes, this can be done. As SNOOP_NONE state is moved above,
the last bottom else can be used only to issue dummy cycles. I will send V2
with above changes and commit message fixed.
Regards,
Sai Pavan
Thank you!
Best regards,
Francisco Iglesias
for (i = 0; i < num_effective_busses(s); ++i) {
--
2.7.4