Skip to content

Commit 2fa6e07

Browse files
jerome-pouillerdkalowsk
authored andcommitted
drivers: dma: siwx91x: Simplify descriptors list creation
The management of the single-linked list was made in various places: - RSI_GPDMA_BuildDescriptors() - after sys_mem_blocks_alloc() - at the end of the loop Centralize it at the end of the loop. Signed-off-by: Jérôme Pouiller <[email protected]>
1 parent bca0909 commit 2fa6e07

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

drivers/dma/dma_silabs_siwx91x_gpdma.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,14 +170,10 @@ static int siwx91x_gpdma_desc_config(struct siwx19x_gpdma_data *data,
170170
goto free_desc;
171171
}
172172

173-
if (prev_desc == NULL) {
174-
data->chan_info[channel].desc = cur_desc;
175-
}
176-
177173
memset(cur_desc, 0, 32);
178174

179175
ret = RSI_GPDMA_BuildDescriptors(&data->hal_ctx, (RSI_GPDMA_DESC_T *)xfer_cfg,
180-
cur_desc, prev_desc);
176+
cur_desc, NULL);
181177
if (ret) {
182178
goto free_desc;
183179
}
@@ -194,6 +190,12 @@ static int siwx91x_gpdma_desc_config(struct siwx19x_gpdma_data *data,
194190
cur_desc->chnlCtrlConfig.srcFifoMode = 1;
195191
}
196192

193+
194+
if (prev_desc) {
195+
prev_desc->pNextLink = (void *)cur_desc;
196+
} else {
197+
data->chan_info[channel].desc = cur_desc;
198+
}
197199
prev_desc = cur_desc;
198200
block_addr = block_addr->next_block;
199201
}

0 commit comments

Comments
 (0)