Commit 40264c0c authored by Jared Bents's avatar Jared Bents Committed by Jagan Teki

spi: fsl_dspi fix to stop extra transmissions

Update to prevent a byte of zeros being transmitted between
each byte in the tx buffer when providing both a tx buffer
and a rx buffer.
Signed-off-by: default avatarJared Bents <jared.bents@rockwellcollins.com>
Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
Acked-by: Jagan Teki's avatarJagan Teki <jagan@amarulasolutions.com>
parent 567a3eb7
......@@ -273,7 +273,18 @@ static int dspi_xfer(struct fsl_dspi_priv *priv, uint cs, unsigned int bitlen,
if (len > 1) {
int tmp_len = len - 1;
while (tmp_len--) {
if (dout != NULL) {
if ((dout != NULL) && (din != NULL)) {
if (priv->charbit == 16) {
dspi_tx(priv, ctrl, *spi_wr16++);
*spi_rd16++ = dspi_rx(priv);
}
else {
dspi_tx(priv, ctrl, *spi_wr++);
*spi_rd++ = dspi_rx(priv);
}
}
else if (dout != NULL) {
if (priv->charbit == 16)
dspi_tx(priv, ctrl, *spi_wr16++);
else
......@@ -281,7 +292,7 @@ static int dspi_xfer(struct fsl_dspi_priv *priv, uint cs, unsigned int bitlen,
dspi_rx(priv);
}
if (din != NULL) {
else if (din != NULL) {
dspi_tx(priv, ctrl, DSPI_IDLE_VAL);
if (priv->charbit == 16)
*spi_rd16++ = dspi_rx(priv);
......@@ -297,7 +308,18 @@ static int dspi_xfer(struct fsl_dspi_priv *priv, uint cs, unsigned int bitlen,
ctrl &= ~DSPI_TFR_CONT;
if (len) {
if (dout != NULL) {
if ((dout != NULL) && (din != NULL)) {
if (priv->charbit == 16) {
dspi_tx(priv, ctrl, *spi_wr16++);
*spi_rd16++ = dspi_rx(priv);
}
else {
dspi_tx(priv, ctrl, *spi_wr++);
*spi_rd++ = dspi_rx(priv);
}
}
else if (dout != NULL) {
if (priv->charbit == 16)
dspi_tx(priv, ctrl, *spi_wr16);
else
......@@ -305,7 +327,7 @@ static int dspi_xfer(struct fsl_dspi_priv *priv, uint cs, unsigned int bitlen,
dspi_rx(priv);
}
if (din != NULL) {
else if (din != NULL) {
dspi_tx(priv, ctrl, DSPI_IDLE_VAL);
if (priv->charbit == 16)
*spi_rd16 = dspi_rx(priv);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment