@@ -137,10 +137,10 @@ static inline void *xdma_blk_last_desc(struct xdma_desc_block *block)
137
137
}
138
138
139
139
/**
140
- * xdma_link_desc_blocks - Link descriptor blocks for DMA transfer
140
+ * xdma_link_sg_desc_blocks - Link SG descriptor blocks for DMA transfer
141
141
* @sw_desc: Tx descriptor pointer
142
142
*/
143
- static void xdma_link_desc_blocks (struct xdma_desc * sw_desc )
143
+ static void xdma_link_sg_desc_blocks (struct xdma_desc * sw_desc )
144
144
{
145
145
struct xdma_desc_block * block ;
146
146
u32 last_blk_desc , desc_control ;
@@ -239,6 +239,7 @@ xdma_alloc_desc(struct xdma_chan *chan, u32 desc_num)
239
239
struct xdma_hw_desc * desc ;
240
240
dma_addr_t dma_addr ;
241
241
u32 dblk_num ;
242
+ u32 control ;
242
243
void * addr ;
243
244
int i , j ;
244
245
@@ -254,6 +255,8 @@ xdma_alloc_desc(struct xdma_chan *chan, u32 desc_num)
254
255
if (!sw_desc -> desc_blocks )
255
256
goto failed ;
256
257
258
+ control = XDMA_DESC_CONTROL (1 , 0 );
259
+
257
260
sw_desc -> dblk_num = dblk_num ;
258
261
for (i = 0 ; i < sw_desc -> dblk_num ; i ++ ) {
259
262
addr = dma_pool_alloc (chan -> desc_pool , GFP_NOWAIT , & dma_addr );
@@ -263,10 +266,10 @@ xdma_alloc_desc(struct xdma_chan *chan, u32 desc_num)
263
266
sw_desc -> desc_blocks [i ].virt_addr = addr ;
264
267
sw_desc -> desc_blocks [i ].dma_addr = dma_addr ;
265
268
for (j = 0 , desc = addr ; j < XDMA_DESC_ADJACENT ; j ++ )
266
- desc [j ].control = cpu_to_le32 (XDMA_DESC_CONTROL ( 1 , 0 ) );
269
+ desc [j ].control = cpu_to_le32 (control );
267
270
}
268
271
269
- xdma_link_desc_blocks (sw_desc );
272
+ xdma_link_sg_desc_blocks (sw_desc );
270
273
271
274
return sw_desc ;
272
275
@@ -577,6 +580,12 @@ static int xdma_alloc_chan_resources(struct dma_chan *chan)
577
580
return 0 ;
578
581
}
579
582
583
+ static enum dma_status xdma_tx_status (struct dma_chan * chan , dma_cookie_t cookie ,
584
+ struct dma_tx_state * state )
585
+ {
586
+ return dma_cookie_status (chan , cookie , state );
587
+ }
588
+
580
589
/**
581
590
* xdma_channel_isr - XDMA channel interrupt handler
582
591
* @irq: IRQ number
@@ -923,7 +932,7 @@ static int xdma_probe(struct platform_device *pdev)
923
932
xdev -> dma_dev .dev = & pdev -> dev ;
924
933
xdev -> dma_dev .device_free_chan_resources = xdma_free_chan_resources ;
925
934
xdev -> dma_dev .device_alloc_chan_resources = xdma_alloc_chan_resources ;
926
- xdev -> dma_dev .device_tx_status = dma_cookie_status ;
935
+ xdev -> dma_dev .device_tx_status = xdma_tx_status ;
927
936
xdev -> dma_dev .device_prep_slave_sg = xdma_prep_device_sg ;
928
937
xdev -> dma_dev .device_config = xdma_device_config ;
929
938
xdev -> dma_dev .device_issue_pending = xdma_issue_pending ;
0 commit comments