HPM SDK
HPMicro Software Development Kit
hpm_smix_drv.h File Reference
#include "hpm_common.h"
#include "hpm_soc_feature.h"
#include "hpm_smix_regs.h"
#include <math.h>

Go to the source code of this file.

Data Structures

struct  smix_dma_linked_descriptor_t
 
struct  smix_dma_ch_config_t
 
struct  smix_mixer_dst_config_t
 
struct  smix_mixer_source_config_t
 

Enumerations

enum  smix_dma_transfer_burst_t {
  smix_dma_transfer_burst_1t = 0U , smix_dma_transfer_burst_2t = 1U , smix_dma_transfer_burst_4t = 2U , smix_dma_transfer_burst_8t = 3U ,
  smix_dma_transfer_burst_16t = 4U , smix_dma_transfer_burst_32t = 5U , smix_dma_transfer_burst_64t = 6U , smix_dma_transfer_burst_128t = 7U
}
 
enum  smix_dma_transfer_width_t { smix_dma_transfer_byte = 0U , smix_dma_transfer_half_word = 1U , smix_dma_transfer_word = 2U }
 
enum  smix_dma_address_control_t { smix_dma_address_increment = 0U , smix_dma_address_decrement = 1U , smix_dma_address_fixed = 2U }
 
enum  smix_dma_handshake_mode_t { smix_dma_mode_normal = 0 , smix_dma_mode_handshake = 1 }
 
enum  smix_dma_req_t {
  smix_dma_req_i2s0_rx = 6 , smix_dma_req_i2s0_tx = 7 , smix_dma_req_i2s1_rx = 8 , smix_dma_req_i2s1_tx = 9 ,
  smix_dma_req_i2s2_rx = 10 , smix_dma_req_i2s2_tx = 11 , smix_dma_req_i2s3_rx = 12 , smix_dma_req_i2s3_tx = 13 ,
  smix_dma_req_mixer_src_ch0 = 16 , smix_dma_req_mixer_src_ch1 = 17 , smix_dma_req_mixer_src_ch2 = 18 , smix_dma_req_mixer_src_ch3 = 19 ,
  smix_dma_req_mixer_src_ch4 = 20 , smix_dma_req_mixer_src_ch5 = 21 , smix_dma_req_mixer_src_ch6 = 22 , smix_dma_req_mixer_src_ch7 = 23 ,
  smix_dma_req_mixer_src_ch8 = 24 , smix_dma_req_mixer_src_ch9 = 25 , smix_dma_req_mixer_src_ch10 = 26 , smix_dma_req_mixer_src_ch11 = 27 ,
  smix_dma_req_mixer_src_ch12 = 28 , smix_dma_req_mixer_src_ch13 = 29 , smix_dma_req_mixer_dst_ch0 = 30 , smix_dma_req_mixer_dst_ch1 = 31
}
 
enum  smix_src_clk_source_t {
  smix_src_clk_i2s0_bclk = 0 , smix_src_clk_i2s0_fclk = 1 , smix_src_clk_i2s0_mclk = 2 , smix_src_clk_i2s1_bclk = 3 ,
  smix_src_clk_i2s1_fclk = 4 , smix_src_clk_i2s1_mclk = 5 , smix_src_clk_i2s2_bclk = 6 , smix_src_clk_i2s2_fclk = 7 ,
  smix_src_clk_i2s2_mclk = 8 , smix_src_clk_i2s3_bclk = 9 , smix_src_clk_i2s3_fclk = 10 , smix_src_clk_i2s3_mclk = 11 ,
  smix_src_clk_none = 15
}
 
enum  smix_mixer_gain_t {
  smix_mixer_gain_decrease_20db = 0x199 , smix_mixer_gain_decrease_19db = 0x1cb , smix_mixer_gain_decrease_18db = 0x203 , smix_mixer_gain_decrease_17db = 0x242 ,
  smix_mixer_gain_decrease_16db = 0x289 , smix_mixer_gain_decrease_15db = 0x2d8 , smix_mixer_gain_decrease_14db = 0x331 , smix_mixer_gain_decrease_13db = 0x395 ,
  smix_mixer_gain_decrease_12db = 0x404 , smix_mixer_gain_decrease_11db = 0x482 , smix_mixer_gain_decrease_10db = 0x50f , smix_mixer_gain_decrease_9db = 0x5ad ,
  smix_mixer_gain_decrease_8db = 0x65e , smix_mixer_gain_decrease_7db = 0x725 , smix_mixer_gain_decrease_6db = 0x804 , smix_mixer_gain_decrease_5db = 0x8ff ,
  smix_mixer_gain_decrease_4db = 0xa18 , smix_mixer_gain_decrease_3db = 0xb53 , smix_mixer_gain_decrease_2db = 0xcb5 , smix_mixer_gain_decrease_1db = 0xe42 ,
  smix_mixer_gain_0db = 0xfff , smix_mixer_gain_increase_1db = 0x147c , smix_mixer_gain_increase_2db = 0x1509 , smix_mixer_gain_increase_3db = 0x15a6 ,
  smix_mixer_gain_increase_4db = 0x1657 , smix_mixer_gain_increase_5db = 0x171c , smix_mixer_gain_increase_6db = 0x17fa , smix_mixer_gain_increase_7db = 0x18f4 ,
  smix_mixer_gain_increase_8db = 0x1a0c , smix_mixer_gain_increase_9db = 0x1b45 , smix_mixer_gain_increase_10db = 0x1ca5 , smix_mixer_gain_increase_11db = 0x1e31 ,
  smix_mixer_gain_increase_12db = 0x1fed , smix_mixer_gain_increase_13db = 0x2477 , smix_mixer_gain_increase_14db = 0x2503 , smix_mixer_gain_increase_15db = 0x259f ,
  smix_mixer_gain_increase_16db = 0x264f , smix_mixer_gain_increase_17db = 0x2714 , smix_mixer_gain_increase_18db = 0x27f1 , smix_mixer_gain_increase_19db = 0x28e9 ,
  smix_mixer_gain_increase_20db = 0x2a00
}
 
enum  smix_mixer_rate_convert_t {
  smix_mixer_no_rate_convert , smix_mixer_upper_2x_sample , smix_mixer_upper_3x_sample , smix_mixer_upper_4x_sample ,
  smix_mixer_upper_6x_sample , smix_mixer_upper_8x_sample , smix_mixer_upper_12x_sample , smix_mixer_lower_2x_sample
}
 

Functions

static bool smix_dma_check_transfer_complete (SMIX_Type *ptr, uint8_t ch_index)
 smix dma check transfer complete status More...
 
static bool smix_dma_check_transfer_abort (SMIX_Type *ptr, uint8_t ch_index)
 smix dma check transfer abort status More...
 
static bool smix_dma_check_transfer_error (SMIX_Type *ptr, uint8_t ch_index)
 smix dma check transfer error status More...
 
static void smix_mixer_dst_enable_source_channel (SMIX_Type *ptr, uint8_t dst_ch, uint32_t source_ch_mask)
 smix mixer enable source channel for dst More...
 
static void smix_mixer_dst_disable_source_channel (SMIX_Type *ptr, uint8_t dst_ch, uint32_t source_ch_mask)
 smix mixer disable source channel for dst More...
 
static void smix_mixer_dst_active_source_channel (SMIX_Type *ptr, uint8_t dst_ch, uint32_t source_ch_mask)
 smix mixer active source channel for dst More...
 
static void smix_mixer_dst_deactive_source_channel (SMIX_Type *ptr, uint8_t dst_ch, uint32_t source_ch_mask)
 smix mixer deactive source channel for dst More...
 
static void smix_mixer_dst_fadein_source_channel (SMIX_Type *ptr, uint8_t dst_ch, uint32_t source_ch_mask)
 smix mixer fadein source channel for dst More...
 
static void smix_mixer_dst_fadeout_source_channel (SMIX_Type *ptr, uint8_t dst_ch, uint32_t source_ch_mask)
 smix mixer fadeout source channel for dst More...
 
static void smix_mixer_dst_enable (SMIX_Type *ptr)
 smix mixer enable dst channel More...
 
static void smix_mixer_dst_disable (SMIX_Type *ptr)
 smix mixer disable dst channel More...
 
static uint32_t smix_mixer_get_calsat_status (SMIX_Type *ptr)
 smix mixer get calculate saturation register value More...
 
static bool smix_mixer_check_dst_cal_saturation_error (SMIX_Type *ptr, uint8_t dst_ch)
 smix mixer check dst channel calculate saturation error More...
 
static bool smix_mixer_check_source_cal_saturation_error (SMIX_Type *ptr, uint8_t source_ch)
 smix mixer check source channel calculate saturation error More...
 
static bool smix_mixer_check_dst_data_underflew (SMIX_Type *ptr, uint8_t dst_ch)
 smix mixer check dst channel data ubderflew More...
 
static bool smix_mixer_check_dst_data_available (SMIX_Type *ptr, uint8_t dst_ch)
 smix mixer check dst channel data available More...
 
static bool smix_mixer_check_source_data_needed (SMIX_Type *ptr, uint8_t source_ch)
 smix mixer check source channel data available More...
 
hpm_stat_t smix_mixer_config_dst_fadein_delta (SMIX_Type *ptr, uint8_t ch, uint32_t target_sample_rate, uint32_t ms)
 smix mixer config dst channel fadein delta More...
 
hpm_stat_t smix_mixer_config_dst_fadeout_delta (SMIX_Type *ptr, uint8_t ch, uint32_t target_sample_rate, uint32_t ms)
 smix mixer config dst channel fadeout delta More...
 
hpm_stat_t smix_mixer_config_source_fadein_delta (SMIX_Type *ptr, uint8_t ch, uint32_t target_sample_rate, uint32_t ms)
 smix mixer config source channel fadein delta More...
 
hpm_stat_t smix_mixer_config_source_fadeout_delta (SMIX_Type *ptr, uint8_t ch, uint32_t target_sample_rate, uint32_t ms)
 smix mixer config source channel fadeout delta More...
 
void smix_get_dma_default_ch_config (SMIX_Type *ptr, smix_dma_ch_config_t *config)
 smix get dma channel default config More...
 
void smix_get_mixer_dst_ch_default_config (SMIX_Type *ptr, smix_mixer_dst_config_t *config)
 smix get dst channel default config More...
 
void smix_get_mixer_source_ch_default_config (SMIX_Type *ptr, smix_mixer_source_config_t *config)
 smix get source channel default config More...
 
hpm_stat_t smix_config_dma_channel (SMIX_Type *ptr, uint8_t ch, smix_dma_ch_config_t *config, bool start)
 smix config dma channel More...
 
hpm_stat_t smix_mixer_config_source_ch (SMIX_Type *ptr, uint8_t ch, smix_mixer_source_config_t *src)
 smix mixer config source channel More...
 
hpm_stat_t smix_mixer_config_dst_ch (SMIX_Type *ptr, uint8_t ch, smix_mixer_dst_config_t *dst)
 smix mixer config dst channel More...
 
static void smix_set_source_gain (SMIX_Type *ptr, uint8_t ch_index, smix_mixer_gain_t gain)
 smix mixer config source channel gain More...
 
static void smix_set_dst_gain (SMIX_Type *ptr, uint8_t ch_index, smix_mixer_gain_t gain)
 smix mixer config dst channel gain More...