SmartSnippets DA1459x SDK
Data Structures | Typedefs | Enumerations | Functions
hw_dma.h File Reference

Definition of API for the DMA Low Level Driver. More...

#include <stdint.h>
#include <sdk_defs.h>

Go to the source code of this file.

Data Structures

struct  DMA_setup
 DMA parameters structure. More...
 
struct  hw_dma_periph_prio_t
 DMA peripherals priority structure. More...
 

Typedefs

typedef uint32_t dma_size_t
 DMA transfer size type. More...
 
typedef void(* hw_dma_transfer_cb) (void *user_data, dma_size_t len)
 DMA channel transfer callback. More...
 

Enumerations

enum  HW_DMA_CHANNEL {
  HW_DMA_CHANNEL_0 = 0, HW_DMA_CHANNEL_1 = 1, HW_DMA_CHANNEL_2 = 2, HW_DMA_CHANNEL_3 = 3,
  HW_DMA_CHANNEL_4 = 4, HW_DMA_CHANNEL_5 = 5, HW_DMA_CHANNEL_INVALID
}
 DMA channel number. More...
 
enum  HW_DMA_STATE { HW_DMA_STATE_DISABLED = 0x0, HW_DMA_STATE_ENABLED = 0x1 }
 DMA channel enable/disable. More...
 
enum  HW_DMA_BW { HW_DMA_BW_BYTE = 0x0, HW_DMA_BW_HALFWORD = 0x2, HW_DMA_BW_WORD = 0x4 }
 DMA channel bus width transfer. More...
 
enum  HW_DMA_IRQ_STATE { HW_DMA_IRQ_STATE_DISABLED = 0x0, HW_DMA_IRQ_STATE_ENABLED = 0x8 }
 DMA channel interrupt enable/disable. More...
 
enum  HW_DMA_DREQ { HW_DMA_DREQ_START = 0x0, HW_DMA_DREQ_TRIGGERED = DMA_DMA0_CTRL_REG_DREQ_MODE_Msk }
 DMA request input multiplexer controlled. More...
 
enum  HW_DMA_BURST_MODE { HW_DMA_BURST_MODE_DISABLED = 0x0, HW_DMA_BURST_MODE_4x = 0x2000, HW_DMA_BURST_MODE_8x = 0x4000 }
 DMA channel burst mode. More...
 
enum  HW_DMA_BINC { HW_DMA_BINC_FALSE = 0x0, HW_DMA_BINC_TRUE = DMA_DMA0_CTRL_REG_BINC_Msk }
 Increment destination address mode. More...
 
enum  HW_DMA_AINC { HW_DMA_AINC_FALSE = 0x0, HW_DMA_AINC_TRUE = DMA_DMA0_CTRL_REG_AINC_Msk }
 Increment of source address mode. More...
 
enum  HW_DMA_MODE { HW_DMA_MODE_NORMAL = 0x0, HW_DMA_MODE_CIRCULAR = DMA_DMA0_CTRL_REG_CIRCULAR_Msk }
 Channel mode. More...
 
enum  HW_DMA_PRIO {
  HW_DMA_PRIO_0 = 0x000, HW_DMA_PRIO_1 = 0x080, HW_DMA_PRIO_2 = 0x100, HW_DMA_PRIO_3 = 0x180,
  HW_DMA_PRIO_4 = 0x200, HW_DMA_PRIO_5 = 0x280, HW_DMA_PRIO_6 = 0x300, HW_DMA_PRIO_7 = 0x380
}
 Channel priority. More...
 
enum  HW_DMA_IDLE { HW_DMA_IDLE_BLOCKING_MODE = 0x000, HW_DMA_IDLE_INTERRUPTING_MODE = DMA_DMA0_CTRL_REG_DMA_IDLE_Msk }
 DMA idle mode. More...
 
enum  HW_DMA_INIT { HW_DMA_INIT_AX_BX_AY_BY = 0x0000, HW_DMA_INIT_AX_BX_BY = DMA_DMA0_CTRL_REG_DMA_INIT_Msk }
 DMA init mode. More...
 
enum  HW_DMA_TRIG
 Channel request trigger. More...
 

Functions

void hw_dma_channel_initialization (DMA_setup *channel_setup)
 Initialize DMA Channel. More...
 
void hw_dma_channel_update_source (HW_DMA_CHANNEL channel, void *addr, dma_size_t length, hw_dma_transfer_cb cb)
 Update DMA source address and length. More...
 
void hw_dma_channel_update_destination (HW_DMA_CHANNEL channel, void *addr, dma_size_t length, hw_dma_transfer_cb cb)
 Update DMA destination address and length. More...
 
void hw_dma_channel_update_int_ix (HW_DMA_CHANNEL channel, uint16_t int_ix)
 Update DMA interrupt trigger index. More...
 
void hw_dma_channel_enable (HW_DMA_CHANNEL channel_number, HW_DMA_STATE dma_on)
 Enable or disable a DMA channel. More...
 
void hw_dma_channel_stop (HW_DMA_CHANNEL channel_number)
 Stop DMA channel if operation is in progress. More...
 
dma_size_t hw_dma_transfered_bytes (HW_DMA_CHANNEL channel_number)
 Read number of transmitted bytes so far. More...
 
__STATIC_INLINE void hw_dma_freeze (void)
 Freeze DMA. More...
 
__STATIC_INLINE void hw_dma_unfreeze (void)
 Unfreeze DMA. More...
 
__STATIC_INLINE bool hw_dma_is_aes_key_protection_enabled (void)
 Check if the aes key read protection is enabled. More...
 
__STATIC_INLINE bool hw_dma_secure_channel_is_free (void)
 Check if the DMA secure channel is free. If any encryption protection is enabled (OQSPIF or AES), this functionality affects the secure DMA channel. Secure transfer requires this channel to be configured in a specific way. Hence, is strongly advised to avoid using this channel for other purposes. More...
 
__STATIC_INLINE bool hw_dma_bus_error_detected (HW_DMA_CHANNEL channel_number)
 Check if a bus error response has been detected on a specific DMA channel. More...
 
bool hw_dma_is_channel_active (HW_DMA_CHANNEL channel_number)
 Check if the corresponding DMA channel is active. More...
 
__RETAINED_CODE bool hw_dma_channel_active (void)
 Check if any DMA channel is active. More...
 

Detailed Description

Definition of API for the DMA Low Level Driver.

Copyright (C) 2015-2023 Renesas Electronics Corporation and/or its affiliates. All rights reserved. Confidential Information.

This software ("Software") is supplied by Renesas Electronics Corporation and/or its affiliates ("Renesas"). Renesas grants you a personal, non-exclusive, non-transferable, revocable, non-sub-licensable right and license to use the Software, solely if used in or together with Renesas products. You may make copies of this Software, provided this copyright notice and disclaimer ("Notice") is included in all such copies. Renesas reserves the right to change or discontinue the Software at any time without notice.

THE SOFTWARE IS PROVIDED "AS IS". RENESAS DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. TO THE MAXIMUM EXTENT PERMITTED UNDER LAW, IN NO EVENT SHALL RENESAS BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE, EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. USE OF THIS SOFTWARE MAY BE SUBJECT TO TERMS AND CONDITIONS CONTAINED IN AN ADDITIONAL AGREEMENT BETWEEN YOU AND RENESAS. IN CASE OF CONFLICT BETWEEN THE TERMS OF THIS NOTICE AND ANY SUCH ADDITIONAL LICENSE AGREEMENT, THE TERMS OF THE AGREEMENT SHALL TAKE PRECEDENCE. BY CONTINUING TO USE THIS SOFTWARE, YOU AGREE TO THE TERMS OF THIS NOTICE.IF YOU DO NOT AGREE TO THESE TERMS, YOU ARE NOT PERMITTED TO USE THIS SOFTWARE.