Lines Matching +full:dma +full:- +full:requests
20 DMA transfer lists.
25 An application wishing to do complex DMA or interrupt driven operations today
27 no understanding in the DMA API of other Zephyr devices and how they relate.
30 hardware knowledge or leaky abstractions over DMA controllers. Neither is ideal.
32 To enable asynchronous operations, especially with DMA, a description of what
34 DMA features such as channels with priority, and sequences of transfers requires
37 Using DMA and/or interrupt driven I/O shouldn't dictate whether or not the
45 lock-free ring buffers acting as queues shared between the kernel and a userland
47 create concurrent sequential requests. A second queue for completion queue events.
52 This model maps well to DMA and interrupt driven transfers. A request to do a
55 potentially involving multiple peripheral IPs like bus and DMA controllers.
77 perhaps the read could be done using DMA as its large enough make sense. That
78 requires an understanding of how to setup the device's particular DMA to do so.
109 submissions, transactional sets of submissions, or create multi-shot
110 (continuously producing) requests are all possible!
116 job of objects implementing the iodev (IO device) API. This API accepts requests
120 object, that accepts a never ending queue of I/O like requests. How the iodev
122 operations can be converted to a set of DMA transfer descriptors, meaning the
136 In some cases requests to read may not know how much data will be produced.
139 to bind memory to in flight read requests. Instead with memory pools the memory
148 .. code-block:: C
164 only a small change which works with both pre-allocated data buffers as well as
169 .. code-block:: C
183 .. code-block:: C
207 From the driver/hardware perspective the API enables batching of I/O requests, potentially in an op…
208 Many requests to the same SPI peripheral for example might be translated to hardware command queues…
223 Chained Blocking Requests
231 .. code-block:: C
244 write_sqe->flags = RTIO_SQE_CHAINED; /* the next item in the queue will wait on this one */
253 if(read_cqe->result < 0) {
257 if(write_cqe->result < 0) {
275 .. code-block:: C
288 read_sqe->flags = RTIO_SQE_CHAINED; /* the next item in the queue will wait on this one */
304 if(cqe->userdata == &read && cqe->result < 0) {
307 if(cqe->userdata == &write && cqe->result < 0) {
332 .. code-block:: C
335 * potentially with DMA, but we don't need to worry about that here
353 /* Obtain a dmac executor from the DMA device */
354 struct device *dma = DEVICE_DT_GET(DT_NODE(dma0));
356 dma_rtio_executor(dma);
370 * offset using its own rtio request to the SPI bus using DMA.
389 if(cqe->result < 0) {
395 int32_t bytes_read = cqe->result;
398 uint8_t *buf = cqe->userdata;
404 res = sensor_reader(sensor, buf, cqe->result, &reader, channels,
428 MPSC Lock-free Queue API
433 SPSC Lock-free Queue API