mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-06-09 23:36:03 +09:00
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: Jared Bents <jared.bents@rockwellcollins.com> Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com> Acked-by: Jagan Teki <jagan@amarulasolutions.com>
This commit is contained in:
parent
567a3eb795
commit
40264c0ca8
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user