@@ -33,7 +33,7 @@ struct dma_xmc4xxx_channel {
33
33
dma_callback_t cb ;
34
34
void * user_data ;
35
35
uint32_t dest_address ;
36
- uint16_t block_ts ;
36
+ uint32_t transfer_size ;
37
37
uint8_t source_data_size ;
38
38
uint8_t dlr_line ;
39
39
uint8_t channel_direction ;
@@ -294,7 +294,7 @@ static int dma_xmc4xxx_config(const struct device *dev, uint32_t channel, struct
294
294
295
295
dev_data -> channels [channel ].cb = config -> dma_callback ;
296
296
dev_data -> channels [channel ].user_data = config -> user_data ;
297
- dev_data -> channels [channel ].block_ts = block -> block_size / config -> source_data_size ;
297
+ dev_data -> channels [channel ].transfer_size = block -> block_size ;
298
298
dev_data -> channels [channel ].source_data_size = config -> source_data_size ;
299
299
dev_data -> channels [channel ].dlr_line = dlr_line ;
300
300
dev_data -> channels [channel ].channel_direction = config -> channel_direction ;
@@ -384,7 +384,7 @@ static int dma_xmc4xxx_reload(const struct device *dev, uint32_t channel, uint32
384
384
LOG_ERR ("Block transactions must be <= 4095" );
385
385
return - EINVAL ;
386
386
}
387
- dma_channel -> block_ts = block_ts ;
387
+ dma_channel -> transfer_size = size ;
388
388
dma_channel -> dest_address = dst ;
389
389
390
390
/* do we need to clear any errors */
@@ -416,14 +416,15 @@ static int dma_xmc4xxx_get_status(const struct device *dev, uint32_t channel,
416
416
/* appear to guarantee that the last value is fully transferred to dest. */
417
417
if (dma_channel -> dest_addr_adj == DMA_ADDR_ADJ_INCREMENT ) {
418
418
transferred_bytes = dma -> CH [channel ].DAR - dma_channel -> dest_address ;
419
- stat -> pending_length = dma_channel -> block_ts - transferred_bytes ;
419
+ stat -> pending_length = dma_channel -> transfer_size - transferred_bytes ;
420
420
} else if (dma_channel -> dest_addr_adj == DMA_ADDR_ADJ_DECREMENT ) {
421
421
transferred_bytes = dma_channel -> dest_address - dma -> CH [channel ].DAR ;
422
- stat -> pending_length = dma_channel -> block_ts - transferred_bytes ;
422
+ stat -> pending_length = dma_channel -> transfer_size - transferred_bytes ;
423
423
} else {
424
- transferred_bytes = XMC_DMA_CH_GetTransferredData (dma , channel );
425
- stat -> pending_length = dma_channel -> block_ts - transferred_bytes ;
426
- stat -> pending_length *= dma_channel -> source_data_size ;
424
+ uint32_t num_source_transfers = XMC_DMA_CH_GetTransferredData (dma , channel );
425
+
426
+ stat -> pending_length = dma_channel -> transfer_size -
427
+ num_source_transfers * dma_channel -> source_data_size ;
427
428
}
428
429
429
430
/* stat->dir and other remaining fields are not set. They are not */
0 commit comments