![]() |
no-OS
|
Platform independent function definitions and data types for the DMA API. More...
#include <stdio.h>#include <stdlib.h>#include <stdint.h>#include "no_os_list.h"#include "no_os_irq.h"#include "no_os_mutex.h"Classes | |
| struct | no_os_dma_default_handler_data |
| IRQ parameter for the default inter transfer handler. More... | |
| struct | no_os_dma_xfer_desc |
| It's used to setup a generic DMA transfer. More... | |
| struct | no_os_dma_ch |
| Describes the state of a DMA channel. More... | |
| struct | no_os_dma_desc |
| Describes the state of the DMA controller. More... | |
| struct | no_os_dma_init_param |
| Initialization parameter for the DMA controller. More... | |
| struct | no_os_dma_platform_ops |
Enumerations | |
| enum | no_os_dma_xfer_type { MEM_TO_MEM , MEM_TO_DEV , DEV_TO_MEM } |
| Supported transfer directions. More... | |
Functions | |
| int | no_os_dma_init (struct no_os_dma_desc **, const struct no_os_dma_init_param *) |
| Initialize the DMA controller. | |
| int | no_os_dma_remove (struct no_os_dma_desc *) |
| Remove resources allocated for the DMA controller. | |
| int | no_os_dma_config_xfer (struct no_os_dma_desc *, struct no_os_dma_xfer_desc *, uint32_t, struct no_os_dma_ch *) |
| Acquire a channel and configure the list of transfers. | |
| int | no_os_dma_chan_lock (struct no_os_dma_ch *) |
| Lock a DMA channel, so it won't be acquired even if it's free. | |
| int | no_os_dma_chan_unlock (struct no_os_dma_ch *) |
| Unlock a DMA channel, marking it available for acquisition. | |
| int | no_os_dma_xfer_start (struct no_os_dma_desc *, struct no_os_dma_ch *) |
| Acquire a channel and configure the list of transfers. | |
| int | no_os_dma_xfer_abort (struct no_os_dma_desc *, struct no_os_dma_ch *) |
| Abort the ongoing and any other future transfers scheduled for a channel. | |
| bool | no_os_dma_is_completed (struct no_os_dma_desc *, struct no_os_dma_ch *) |
| Get the state of a DMA channel (free or not). | |
| bool | no_os_dma_in_progress (struct no_os_dma_desc *, struct no_os_dma_ch *) |
| Whether or not there is a transfer in progress on a specific channel. | |
| int | no_os_dma_acquire_channel (struct no_os_dma_desc *, struct no_os_dma_ch **) |
| Get a free DMA channel. | |
| int | no_os_dma_release_channel (struct no_os_dma_desc *, struct no_os_dma_ch *) |
| Free DMA channel. | |
Platform independent function definitions and data types for the DMA API.
Copyright 2024(c) Analog Devices, Inc.
SPDX-License-Identifier: BSD-3-Clause
| enum no_os_dma_xfer_type |
| int no_os_dma_acquire_channel | ( | struct no_os_dma_desc * | desc, |
| struct no_os_dma_ch ** | channel ) |
Get a free DMA channel.
Get a free DMA channel.
| desc | - Structure containing the state of the DMA controller. |
| channel | - Reference to the acquired channel. |
| int no_os_dma_chan_lock | ( | struct no_os_dma_ch * | ch | ) |
Lock a DMA channel, so it won't be acquired even if it's free.
Prevent a channel from being acquired, even if it's free.
| ch | - Reference to the DMA channel |
| int no_os_dma_chan_unlock | ( | struct no_os_dma_ch * | ch | ) |
Unlock a DMA channel, marking it available for acquisition.
Allow a channel to be acquired, in case it's free.
| ch | - Reference to the DMA channel |
| int no_os_dma_config_xfer | ( | struct no_os_dma_desc * | desc, |
| struct no_os_dma_xfer_desc * | xfer, | ||
| uint32_t | len, | ||
| struct no_os_dma_ch * | ch ) |
Acquire a channel and configure the list of transfers.
Acquire a channel and add the transfers to it's SG list.
| desc | - Structure containing the state of the DMA controller |
| xfer | - Array of DMA transfers. |
| len | - The number of transfers in the xfer list. |
| ch | - Previously acquired channel, for which the transfer will be configured. |
| bool no_os_dma_in_progress | ( | struct no_os_dma_desc * | desc, |
| struct no_os_dma_ch * | ch ) |
Whether or not there is a transfer in progress on a specific channel.
Whether or not a specific channel has an ongoing transfer.
| desc | - Reference to the DMA controller. |
| ch | - Reference to the DMA channel. |
| int no_os_dma_init | ( | struct no_os_dma_desc ** | desc, |
| const struct no_os_dma_init_param * | param ) |
Initialize the DMA controller.
Initialize a DMA controller.
| desc | - Structure containing the state of the DMA controller |
| param | - Initialization parameter for the DMA controller. |
| bool no_os_dma_is_completed | ( | struct no_os_dma_desc * | desc, |
| struct no_os_dma_ch * | ch ) |
Get the state of a DMA channel (free or not).
Check whether a transfer is complete. By default, it requires the interrupt handler to set the free flag for the channel.
| desc | - Reference to the DMA controller. |
| ch | - Reference to the DMA channel. |
| int no_os_dma_release_channel | ( | struct no_os_dma_desc * | desc, |
| struct no_os_dma_ch * | channel ) |
Free DMA channel.
Free a DMA channel.
| desc | - Structure containing the state of the DMA controller. |
| channel | - Reference to the currently acquired channel. |
| int no_os_dma_remove | ( | struct no_os_dma_desc * | desc | ) |
Remove resources allocated for the DMA controller.
Free the resources allocated by the DMA layer. Disables the DMA controller.
| desc | - Structure containing the state of the DMA controller |
| int no_os_dma_xfer_abort | ( | struct no_os_dma_desc * | desc, |
| struct no_os_dma_ch * | ch ) |
Abort the ongoing and any other future transfers scheduled for a channel.
Stop the DMA transactions for a specific channel and remove the transfers from the SG list.
| desc | - Structure containing the state of the DMA controller |
| ch | - Index for the channel we want to abort the transfer. |
| int no_os_dma_xfer_start | ( | struct no_os_dma_desc * | desc, |
| struct no_os_dma_ch * | ch ) |
Acquire a channel and configure the list of transfers.
Start the DMA transactions for a specific channel.
| desc | - Structure containing the state of the DMA controller |
| ch | - Index for the channel we want to start the transfer on. |