On 03/01/2024 11:07, Jai Luthra wrote: > Propagate the TR response status to the device using BCDMA > split-channels. For example CSI-RX driver should be able to check if a > frame was not transferred completely (short packet) and needs to be > discarded. Make sense, Acked-by: Peter Ujfalusi <peter.ujfalusi@xxxxxxxxx> > > Fixes: 25dcb5dd7b7c ("dmaengine: ti: New driver for K3 UDMA") > Signed-off-by: Jai Luthra <j-luthra@xxxxxx> > --- > drivers/dma/ti/k3-udma.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c > index 30fd2f386f36..037f1408e798 100644 > --- a/drivers/dma/ti/k3-udma.c > +++ b/drivers/dma/ti/k3-udma.c > @@ -3968,6 +3968,7 @@ static void udma_desc_pre_callback(struct virt_dma_chan *vc, > { > struct udma_chan *uc = to_udma_chan(&vc->chan); > struct udma_desc *d; > + u8 status; > > if (!vd) > return; > @@ -3977,12 +3978,12 @@ static void udma_desc_pre_callback(struct virt_dma_chan *vc, > if (d->metadata_size) > udma_fetch_epib(uc, d); > > - /* Provide residue information for the client */ > if (result) { > void *desc_vaddr = udma_curr_cppi5_desc_vaddr(d, d->desc_idx); > > if (cppi5_desc_get_type(desc_vaddr) == > CPPI5_INFO0_DESC_TYPE_VAL_HOST) { > + /* Provide residue information for the client */ > result->residue = d->residue - > cppi5_hdesc_get_pktlen(desc_vaddr); > if (result->residue) > @@ -3991,7 +3992,12 @@ static void udma_desc_pre_callback(struct virt_dma_chan *vc, > result->result = DMA_TRANS_NOERROR; > } else { > result->residue = 0; > - result->result = DMA_TRANS_NOERROR; > + /* Propagate TR Response errors to the client */ > + status = d->hwdesc[0].tr_resp_base->status; > + if (status) > + result->result = DMA_TRANS_ABORTED; > + else > + result->result = DMA_TRANS_NOERROR; > } > } > } > > --- > base-commit: 610a9b8f49fbcf1100716370d3b5f6f884a2835a > change-id: 20240103-tr_resp_err-9f4eebbdcd3b > > Best regards, -- Péter