Lines Matching refs:desc
33 LDMA_Descriptor_t *desc; member
92 struct dma_block_config *block, LDMA_Descriptor_t *desc) in dma_silabs_block_to_descriptor() argument
107 memset(desc, 0, sizeof(*desc)); in dma_silabs_block_to_descriptor()
110 desc->xfer.structReq = 1; in dma_silabs_block_to_descriptor()
124 desc->xfer.size = LOG2(src_size); in dma_silabs_block_to_descriptor()
136 desc->xfer.xferCnt = xfer_count; in dma_silabs_block_to_descriptor()
147 desc->xfer.blockSize = ret; in dma_silabs_block_to_descriptor()
152 desc->xfer.doneIfs = config->complete_callback_en; in dma_silabs_block_to_descriptor()
157 desc->xfer.reqMode = ldmaCtrlReqModeAll; in dma_silabs_block_to_descriptor()
159 desc->xfer.reqMode = ldmaCtrlReqModeBlock; in dma_silabs_block_to_descriptor()
162 desc->xfer.reqMode = ldmaCtrlReqModeAll; in dma_silabs_block_to_descriptor()
177 desc->xfer.srcInc = ldmaCtrlSrcIncNone; in dma_silabs_block_to_descriptor()
179 desc->xfer.srcInc = ldmaCtrlSrcIncOne; in dma_silabs_block_to_descriptor()
183 desc->xfer.dstInc = ldmaCtrlDstIncNone; in dma_silabs_block_to_descriptor()
185 desc->xfer.dstInc = ldmaCtrlDstIncOne; in dma_silabs_block_to_descriptor()
188 desc->xfer.srcAddrMode = ldmaCtrlSrcAddrModeAbs; in dma_silabs_block_to_descriptor()
189 desc->xfer.dstAddrMode = ldmaCtrlDstAddrModeAbs; in dma_silabs_block_to_descriptor()
198 desc->xfer.srcAddr = block->source_address; in dma_silabs_block_to_descriptor()
199 desc->xfer.dstAddr = block->dest_address; in dma_silabs_block_to_descriptor()
204 static int dma_silabs_release_descriptor(struct dma_silabs_data *data, LDMA_Descriptor_t *desc) in dma_silabs_release_descriptor() argument
209 head_desc = desc; in dma_silabs_release_descriptor()
210 while (desc) { in dma_silabs_release_descriptor()
211 next_desc = LDMA_DESCRIPTOR_LINKABS_LINKADDR_TO_ADDR(desc->xfer.linkAddr); in dma_silabs_release_descriptor()
212 ret = sys_mem_blocks_free(data->dma_desc_pool, 1, (void **)&desc); in dma_silabs_release_descriptor()
216 desc = next_desc; in dma_silabs_release_descriptor()
218 if (desc == head_desc) { in dma_silabs_release_descriptor()
231 LDMA_Descriptor_t *desc, *prev_desc; in dma_silabs_configure_descriptor() local
241 ret = sys_mem_blocks_alloc(data->dma_desc_pool, 1, (void **)&desc); in dma_silabs_configure_descriptor()
246 ret = dma_silabs_block_to_descriptor(config, chan_conf, block, desc); in dma_silabs_configure_descriptor()
252 chan_conf->desc = desc; in dma_silabs_configure_descriptor()
254 prev_desc->xfer.linkAddr = LDMA_DESCRIPTOR_LINKABS_ADDR_TO_LINKADDR(desc); in dma_silabs_configure_descriptor()
259 prev_desc = desc; in dma_silabs_configure_descriptor()
264 LDMA_DESCRIPTOR_LINKABS_ADDR_TO_LINKADDR(chan_conf->desc); in dma_silabs_configure_descriptor()
273 dma_silabs_release_descriptor(data, chan_conf->desc); in dma_silabs_configure_descriptor()
346 ret = dma_silabs_release_descriptor(data, chan_conf->desc); in dma_silabs_configure()
441 LDMA_StartTransfer(channel, &chan->xfer_config, chan->desc); in dma_silabs_start()
526 LDMA_Descriptor_t *desc = data->dma_chan_table[channel].desc; in silabs_ldma_append_block() local
530 __ASSERT(!((uintptr_t)desc & ~_LDMA_CH_LINK_LINKADDR_MASK), in silabs_ldma_append_block()
546 if (desc->xfer.linkAddr || config->head_block->next_block) { in silabs_ldma_append_block()
555 ret = dma_silabs_block_to_descriptor(config, chan_conf, block_config, desc); in silabs_ldma_append_block()
567 sys_write32((uintptr_t)desc, (mem_addr_t)&LDMA->CH[channel].LINK); in silabs_ldma_append_block()
573 LDMA_StartTransfer(channel, &chan_conf->xfer_config, desc); in silabs_ldma_append_block()