Message ID | 1523974696-1965-2-git-send-email-saipava@xilinx.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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> 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> > --- > 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) { Thank you! Best regards, Francisco Iglesias > for (i = 0; i < num_effective_busses(s); ++i) { > -- > 2.7.4 > >
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) {
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(-)