diff mbox

[v1,1/1] xilinx_spips: send dummy only if cmd requires it

Message ID MWHPR02MB2478491B07FF972D6475F853CAB60@MWHPR02MB2478.namprd02.prod.outlook.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sai Pavan Boddu April 18, 2018, 7:17 a.m. UTC
Hi Francisco,

From: francisco iglesias [mailto:frasse.iglesias@gmail.com]

Sent: Wednesday, April 18, 2018 4:13 AM
To: Sai Pavan Boddu <saipava@xilinx.com>
Cc: alistair@alistair23.me; crosthwaite.peter@gmail.com; Peter Maydell <peter.maydell@linaro.org>; Edde <edgar.iglesias@gmail.com>; qemu-devel@nongnu.org Developers <qemu-devel@nongnu.org>
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 <sai.pavan.boddu@xilinx.com<mailto:sai.pavan.boddu@xilinx.com>> 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 <saipava@xilinx.com<mailto:saipava@xilinx.com>>

---
 hw/ssi/xilinx_spips.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)


-        } 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
diff mbox

Patch

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)