diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-02-04 06:21:02 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-02-04 06:21:02 -0800 |
commit | a802f50d6e92298d44a806d326a2ba3eefa6db72 (patch) | |
tree | 40cafff98f5248d0121656fc538e65dc9baa64b2 /drivers/dma/ti/k3-udma.c | |
parent | fccc9d9233f918ee50cf2955ae7134a7f3418351 (diff) | |
parent | 54be6c6c5ae8e0d93a6c4641cb7528eb0b6ba478 (diff) | |
download | linux-stable-a802f50d6e92298d44a806d326a2ba3eefa6db72.tar.gz linux-stable-a802f50d6e92298d44a806d326a2ba3eefa6db72.tar.bz2 linux-stable-a802f50d6e92298d44a806d326a2ba3eefa6db72.zip |
Merge 6.8-rc3 into tty-next
We need the tty/serial fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/dma/ti/k3-udma.c')
-rw-r--r-- | drivers/dma/ti/k3-udma.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c index 2841a539c264..6400d06588a2 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; } } } |