All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v1] xilinx_spips dummy bytes fix
@ 2018-04-17 13:23 Sai Pavan Boddu
  2018-04-17 13:23 ` [Qemu-devel] [PATCH v1] xilinx_spips: send dummy only if cmd requires it Sai Pavan Boddu
  0 siblings, 1 reply; 2+ messages in thread
From: Sai Pavan Boddu @ 2018-04-17 13:23 UTC (permalink / raw)
  To: alistair, crosthwaite.peter, peter.maydell, edgar.iglesias,
	frasse.iglesias
  Cc: qemu-devel

For zynq-7000 boards, we saw issues when u-boot/linux accessing the qspi.
Issue is due to wrong dummy byte transfers for few of un-handled commands ex: 0x9F, 0x6, 0xe9, 0x4, 0x18, etc
There are many unhandled commands which do not require dummy bytes but they can be followed by address cycles.

To fix this issue for above commands, the next upcoming tx bytes are not considered dummies rather sent to slave directly.

Sai Pavan Boddu (1):
  xilinx_spips: send dummy only if cmd requires it

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

-- 
2.7.4

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Qemu-devel] [PATCH v1] xilinx_spips: send dummy only if cmd requires it
  2018-04-17 13:23 [Qemu-devel] [PATCH v1] xilinx_spips dummy bytes fix Sai Pavan Boddu
@ 2018-04-17 13:23 ` Sai Pavan Boddu
  0 siblings, 0 replies; 2+ messages in thread
From: Sai Pavan Boddu @ 2018-04-17 13:23 UTC (permalink / raw)
  To: alistair, crosthwaite.peter, peter.maydell, edgar.iglesias,
	frasse.iglesias
  Cc: qemu-devel

For all the commands, which do not have an entry in
xilinx_spips_num_dummies, present logic sends dummy byte when ever we
are in SNOOP_NONE state, fix it to send only if cmd requires them.

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).

Signed-off-by: Sai Pavan Boddu <saipava@xilinx.com>
---
 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;
+                }
+            }
         }
 
         for (i = 0; i < num_effective_busses(s); ++i) {
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-04-17 15:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-17 13:23 [Qemu-devel] [PATCH v1] xilinx_spips dummy bytes fix Sai Pavan Boddu
2018-04-17 13:23 ` [Qemu-devel] [PATCH v1] xilinx_spips: send dummy only if cmd requires it Sai Pavan Boddu

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.