Hi, On Wed, May 17, 2023 at 5:17 AM Vijaya Krishna Nivarthi <quic_vnivarth@xxxxxxxxxxx> wrote: > > > One last question: should you call: > > > > dma_set_max_seg_size(dev, INT_MAX) > > > > ...in your probe function? I don't think you have any limitations of > > maximum segment size, right? Right now if you don't set anything it > > looks as if it considers your max to be 64K. That would cause the SPI > > framework to break things up into multiple chunks which would make you > > fall back to FIFO mode, right? > > > Actually we would need to call: > > dma_set_max_seg_size(dev->parent, INT_MAX) > > Please note that in probe() > > spi->dma_map_dev = dev->parent; > > and in __spi_map_msg() > > tx_dev = ctlr->dma_map_dev; > > ret = spi_map_buf(ctlr, tx_dev, &xfer->tx_sg,... > > > Since the dev->parent is QUP containing other SEs and its max_seg_size > seems to be getting set from elsewhere than code (perhaps kernel > scripts) it seemed safer not to modify that. > > So I made below change and uploaded v2... > > spi->max_dma_len = 0xffff0; /* 24 bits for tx/rx dma length */ > > which actually doesnt help much because spi_map_buf() picks the lower of > these 2 but added it anyway > > desc_len = min_t(size_t, max_seg_size, ctlr->max_dma_len); OK, fair enough. > Any case as next step we will look into scatter list support to DMA; and > practically we may not have transfers over 64KB, so its ok for now? I think it's OK for now, especially since you do properly fall back to FIFO in cases that aren't handled. Thanks! -Doug