On Wed 06 Apr 06:25 PDT 2022, Vinod Koul wrote: > Newer platforms seem to have strict requirement for TRE flags which > causes transaction to timeout. This was resolved to missing chain and > link flag for duplex spi transaction. > > So add these two flags. > > Signed-off-by: Vinod Koul <vkoul@xxxxxxxxxx> Reviewed-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> Tested-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > --- > drivers/dma/qcom/gpi.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/dma/qcom/gpi.c b/drivers/dma/qcom/gpi.c > index 94f3648f7483..3429ceccd13b 100644 > --- a/drivers/dma/qcom/gpi.c > +++ b/drivers/dma/qcom/gpi.c > @@ -1754,10 +1754,14 @@ static int gpi_create_spi_tre(struct gchan *chan, struct gpi_desc *desc, > tre->dword[2] = u32_encode_bits(spi->rx_len, TRE_RX_LEN); > > tre->dword[3] = u32_encode_bits(TRE_TYPE_GO, TRE_FLAGS_TYPE); > - if (spi->cmd == SPI_RX) > + if (spi->cmd == SPI_RX) { > tre->dword[3] |= u32_encode_bits(1, TRE_FLAGS_IEOB); > - else > + } else if (spi->cmd == SPI_TX) { > + tre->dword[3] |= u32_encode_bits(1, TRE_FLAGS_CHAIN); > + } else { /* SPI_DUPLEX */ > tre->dword[3] |= u32_encode_bits(1, TRE_FLAGS_CHAIN); > + tre->dword[3] |= u32_encode_bits(1, TRE_FLAGS_LINK); > + } > } > > /* create the dma tre */ > -- > 2.34.1 >