314 lines
16 KiB
C
314 lines
16 KiB
C
#ifndef _BK_AUDIO_H_
|
|
#define _BK_AUDIO_H_
|
|
|
|
#if (CFG_SOC_NAME == SOC_BK7252N)
|
|
#define AUDIO_BASE (0x00A06000)
|
|
#else
|
|
#define AUDIO_BASE (0x00802B00)
|
|
#endif
|
|
|
|
#define AUDIO_CONFIG (AUDIO_BASE + 0x0 * 4)
|
|
#define SAMPLE_RATE_ADC_POSI (0)
|
|
#define SAMPLE_RATE_ADC_MASK (0x3U)
|
|
#define SAMPLE_RATE_8K (0)
|
|
#define SAMPLE_RATE_16K (1)
|
|
#define SAMPLE_RATE_44_1_K (2)
|
|
#define SAMPLE_RATE_48K (3)
|
|
#define DAC_ENABLE (1 << 2)
|
|
#define ADC_ENABLE (1 << 3)
|
|
#define DTMF_ENABLE (1 << 4)
|
|
#define LINEIN_ENABLE (1 << 5)
|
|
#define SAMPLE_RATE_DAC_POSI (6)
|
|
#define SAMPLE_RATE_DAC_MASK (0x3U)
|
|
|
|
#define AUD_DTMF_CONFIG_0 (AUDIO_BASE + 0x1 * 4)
|
|
#define TONE_PATTERN (1 << 0)
|
|
#define TONE_MODE (1 << 1)
|
|
#define TONE_PAUSE_TIME_POSI (2)
|
|
#define TONE_PAUSE_TIME_MASK (0xFU)
|
|
#define TONE_ACTIVE_TIME_POSI (6)
|
|
#define TONE_ACTIVE_TIME_MASK (0xFU)
|
|
|
|
#define AUD_DTMF_CONFIG_1 (AUDIO_BASE + 0x2 * 4)
|
|
#define TONE_1_STEP_POSI (0)
|
|
#define TONE_1_STEP_MASK (0xFFFFU)
|
|
#define TONE_1_ATTU_POSI (16)
|
|
#define TONE_1_ATTU_MASK (0xFU)
|
|
#define TONE_1_ENABLE (1 << 20)
|
|
|
|
#define AUD_DTMF_CONFIG_2 (AUDIO_BASE + 0x3 * 4)
|
|
#define TONE_2_STEP_POSI (0)
|
|
#define TONE_2_STEP_MASK (0xFFFFU)
|
|
#define TONE_2_ATTU_POSI (16)
|
|
#define TONE_2_ATTU_MASK (0xFU)
|
|
#define TONE_2_ENABLE (1 << 20)
|
|
|
|
#define AUD_ADC_CONFIG_0 (AUDIO_BASE + 0x4 * 4)
|
|
#define ADC_HPF2_COEF_B2_POSI (0)
|
|
#define ADC_HPF2_COEF_B2_MASK (0xFFFFU)
|
|
#define ADC_HPF2_BYPASS (1 << 16)
|
|
#define ADC_HPF1_BYPASS (1 << 17)
|
|
#define ADC_SET_GAIN_POSI (18)
|
|
#define ADC_SET_GAIN_MASK (0x3FU)
|
|
#define ADC_SAMPLE_EDGE (1 << 24)
|
|
|
|
#define AUD_ADC_CONFIG_1 (AUDIO_BASE + 0x5 * 4)
|
|
#define ADC_HPF2_COEF_B0_POSI (0)
|
|
#define ADC_HPF2_COEF_B0_MASK (0xFFFFU)
|
|
#define ADC_HPF2_COEF_B1_POSI (16)
|
|
#define ADC_HPF2_COEF_B1_MASK (0xFFFFU)
|
|
|
|
#define AUD_ADC_CONFIG_2 (AUDIO_BASE + 0x6 * 4)
|
|
#define ADC_HPF2_COEF_A0_POSI (0)
|
|
#define ADC_HPF2_COEF_A0_MASK (0xFFFFU)
|
|
#define ADC_HPF2_COEF_A1_POSI (16)
|
|
#define ADC_HPF2_COEF_A1_MASK (0xFFFFU)
|
|
|
|
#define AUD_DAC_CONFIG_0 (AUDIO_BASE + 0x7 * 4)
|
|
#define DAC_HPF2_COEF_B2_POSI (0)
|
|
#define DAC_HPF2_COEF_B2_MASK (0xFFFFU)
|
|
#define DAC_HPF2_BYPASS (1 << 16)
|
|
#define DAC_HPF1_BYPASS (1 << 17)
|
|
#define DAC_SET_GAIN_POSI (18)
|
|
#define DAC_SET_GAIN_MASK (0x3FU)
|
|
#define DAC_CLK_INVERT (1 << 24)
|
|
|
|
#define AUD_DAC_CONFIG_1 (AUDIO_BASE + 0x8 * 4)
|
|
#define DAC_HPF2_COEF_B0_POSI (0)
|
|
#define DAC_HPF2_COEF_B0_MASK (0xFFFFU)
|
|
#define DAC_HPF2_COEF_B1_POSI (16)
|
|
#define DAC_HPF2_COEF_B1_MASK (0xFFFFU)
|
|
|
|
#define AUD_DAC_CONFIG_2 (AUDIO_BASE + 0x9 * 4)
|
|
#define DAC_HPF2_COEF_A1_POSI (0)
|
|
#define DAC_HPF2_COEF_A1_MASK (0xFFFFU)
|
|
#define DAC_HPF2_COEF_A2_POSI (16)
|
|
#define DAC_HPF2_COEF_A2_MASK (0xFFFFU)
|
|
|
|
#define AUD_FIFO_CONFIG (AUDIO_BASE + 0xA * 4)
|
|
#define DAC_R_RD_THRED_POSI (0)
|
|
#define DAC_R_RD_THRED_MASK (0x1FU)
|
|
#define DAC_L_RD_THRED_POSI (5)
|
|
#define DAC_L_RD_THRED_MASK (0x1FU)
|
|
#define DTMF_WR_THRED_POSI (10)
|
|
#define DTMF_WR_THRED_MASK (0x1FU)
|
|
#define ADC_WR_THRED_POSI (15)
|
|
#define ADC_WR_THRED_MASK (0x1FU)
|
|
#define DAC_R_INT_EN (1 << 20)
|
|
#define DAC_L_INT_EN (1 << 21)
|
|
#define DTMF_INT_EN (1 << 22)
|
|
#define ADC_INT_EN (1 << 23)
|
|
#define LOOP_TON2DAC (1 << 24)
|
|
#define LOOP_ADC2DAC (1 << 25)
|
|
|
|
#define AUD_AGC_CONFIG_0 (AUDIO_BASE + 0xB * 4)
|
|
#define AGC_NOISE_THRED_POSI (0)
|
|
#define AGC_NOISE_THRED_MASK (0x3FFU)
|
|
#define AGC_NOISE_HIGH_POSI (10)
|
|
#define AGC_NOISE_HIGH_MASK (0x3FFU)
|
|
#define AGC_NOISE_LOW_POSI (20)
|
|
#define AGC_NOISE_LOW_MASK (0x3FFU)
|
|
#define AGC_STEP_POSI (30)
|
|
#define AGC_STEP_MASK (0x3U)
|
|
|
|
#define AUD_AGC_CONFIG_1 (AUDIO_BASE + 0xC * 4)
|
|
#define AGC_NOISE_MIN_POSI (0)
|
|
#define AGC_NOISE_MIN_MASK (0x7FU)
|
|
#define AGC_NOISE_TOUT_POSI (7)
|
|
#define AGC_NOISE_TOUT_MASK (0x7U)
|
|
#define AGC_HIGH_DUR_POSI (10)
|
|
#define AGC_HIGH_DUR_MASK (0x7U)
|
|
#define AGC_LOW_DUR_POSI (13)
|
|
#define AGC_LOW_DUR_MASK (0x7U)
|
|
#define AGC_MIN_POSI (16)
|
|
#define AGC_MIN_MASK (0x7FU)
|
|
#define AGC_MAX_POSI (23)
|
|
#define AGC_MAX_MASK (0x7FU)
|
|
#define AGC_NG_METHOD (1 << 30)
|
|
#define AGC_NG_ENABLE (1 << 31)
|
|
|
|
#define AUD_AGC_CONFIG_2 (AUDIO_BASE + 0xD * 4)
|
|
#define AGC_DECAY_TIME_POSI (0)
|
|
#define AGC_DECAY_TIME_MASK (0x7U)
|
|
#define AGC_ATTACK_TIME_POSI (3)
|
|
#define AGC_ATTACK_TIME_MASK (0x7U)
|
|
#define AGC_HIGH_THRD_POSI (6)
|
|
#define AGC_HIGH_THRD_MASK (0x1FU)
|
|
#define AGC_LOW_THRED_POSI (11)
|
|
#define AGC_LOW_THRED_MASK (0x1FU)
|
|
#define AGC_IIR_COEF_POSI (16)
|
|
#define AGC_IIR_COEF_MAS (0x7U)
|
|
#define AGC_ENABLE (1 << 19)
|
|
#define MANUAL_PGA_VAL_POSI (20)
|
|
#define MANUAL_PGA_VAL_MASK (0x7FU)
|
|
#define MANUAL_PGA_MODE (1 << 27)
|
|
|
|
#define AUD_AD_FIFO_STATUS (AUDIO_BASE + 0xE * 4)
|
|
#define DAC_R_NEAR_FULL (1 << 0)
|
|
#define DAC_L_NEAR_FULL (1 << 1)
|
|
#define ADC_NEAR_FULL (1 << 2)
|
|
#define DTMF_NEAR_FULL (1 << 3)
|
|
#define DAC_R_NEAR_EMPTY (1 << 4)
|
|
#define DAC_L_NEAR_EMPTY (1 << 5)
|
|
#define ADC_NEAR_EMPTY (1 << 6)
|
|
#define DTMF_NEAR_EMPTY (1 << 7)
|
|
#define DAC_R_FIFO_FULL (1 << 8)
|
|
#define DAC_L_FIFO_FULL (1 << 9)
|
|
#define ADC_FIFO_FULL (1 << 10)
|
|
#define DTMF_FIFO_FULL (1 << 11)
|
|
#define DAC_R_FIFO_EMPTY (1 << 12)
|
|
#define DAC_L_FIFO_EMPTY (1 << 13)
|
|
#define ADC_FIFO_EMPTY (1 << 14)
|
|
#define DTMF_FIFO_EMPTY (1 << 15)
|
|
#define DAC_R_INT_FLAG (1 << 16)
|
|
#define DAC_L_INT_FLAG (1 << 17)
|
|
#define ADC_INT_FLAG (1 << 18)
|
|
#define DTMF_INT_FLAG (1 << 19)
|
|
|
|
#define AUD_AGC_STATUS (AUDIO_BASE + 0xF * 4)
|
|
#define AGC_RSSI_POSI (0)
|
|
#define AGC_RSSI_MASK (0xFFU)
|
|
#define AGC_MIC_PGA_POSI (8)
|
|
#define AGC_MIC_PGA_MASK (0xFFU)
|
|
#define AGC_MIC_RSSI_POSI (16)
|
|
#define AGC_MIC_RSSI_MASK (0xFFFFU)
|
|
|
|
#define AUD_DTMF_FIFO_PORT (AUDIO_BASE + 0x10 * 4)
|
|
#define AD_DTMF_FIFO_MASK (0xFFFFU)
|
|
|
|
#define AUD_ADC_FIFO_PORT (AUDIO_BASE + 0x11 * 4)
|
|
#define AD_ADC_L_FIFO_MASK (0xFFFFU)
|
|
#define AD_ADC_L_FIFO_POSI (0)
|
|
#define AD_ADC_R_FIFO_MASK (0xFFFFU)
|
|
#define AD_ADC_R_FIFO_POSI (16)
|
|
#define AD_ADC_LR_FIFO_MASK (0xFFFFFFFFU)
|
|
|
|
#define AUD_DAC_FIFO_PORT (AUDIO_BASE + 0x12 * 4)
|
|
#define AD_DAC_L_FIFO_POSI (0)
|
|
#define AD_DAC_L_FIFO_MASK (0xFFFFU)
|
|
#define AD_DAC_R_FIFO_POSI (16)
|
|
#define AD_DAC_R_FIFO_MASK (0xFFFFU)
|
|
|
|
#define AUD_EXTEND_CFG (AUDIO_BASE + 0x18 * 4)
|
|
#define DAC_FRACMOD_MANUAL (1 << 0)
|
|
#define ADC_FRACMOD_MANUAL (1 << 1)
|
|
#define FILT_ENABLE (1 << 2)
|
|
|
|
#define AUD_DAC_FRACMOD (AUDIO_BASE + 0x19 * 4)
|
|
|
|
#define AUD_ADC_FRACMOD (AUDIO_BASE + 0x1A * 4)
|
|
|
|
#define AUD_HPF2_EXT_COEF (AUDIO_BASE + 0x1F * 4)
|
|
#define HPF2_A1_L_6BIT_POSI (0)
|
|
#define HPF2_A1_L_6BIT_MASK (0x3FU)
|
|
#define HPF2_A2_L_6BIT_POSI (6)
|
|
#define HPF2_A2_L_6BIT_MASK (0x3FU)
|
|
#define HPF2_B0_L_6BIT_POSI (12)
|
|
#define HPF2_B0_L_6BIT_MASK (0x3FU)
|
|
#define HPF2_B1_L_6BIT_POSI (18)
|
|
#define HPF2_B1_L_6BIT_MASK (0x3FU)
|
|
#define HPF2_B2_L_6BIT_POSI (24)
|
|
#define HPF2_B2_L_6BIT_MASK (0x3FU)
|
|
|
|
#define AUD_FLT_0_COEF_1 (AUDIO_BASE + 0x20 * 4)
|
|
#define FLT_0_A1_POSI (0)
|
|
#define FLT_0_A1_MASK (0xFFFFU)
|
|
#define FLT_0_A2_POSI (16)
|
|
#define FLT_0_A2_MASK (0xFFFFU)
|
|
#define AD_FLT_0_COEF_2 (AUDIO_BASE + 0x21 * 4)
|
|
#define FLT_0_B0_POSI (0)
|
|
#define FLT_0_B0_MASK (0xFFFFU)
|
|
#define FLT_0_B1_POSI (16)
|
|
#define FLT_0_B1_MASK (0xFFFFU)
|
|
#define AD_FLT_0_COEF_3 (AUDIO_BASE + 0x22 * 4)
|
|
#define FLT_0_B2_POSI (0)
|
|
#define FLT_0_B2_MASK (0xFFFFU)
|
|
|
|
#define AUD_FLT_1_COEF_1 (AUDIO_BASE + 0x23 * 4)
|
|
#define FLT_1_A1_POSI (0)
|
|
#define FLT_1_A1_MASK (0xFFFFU)
|
|
#define FLT_1_A2_POSI (16)
|
|
#define FLT_1_A2_MASK (0xFFFFU)
|
|
#define AD_FLT_1_COEF_2 (AUDIO_BASE + 0x24 * 4)
|
|
#define FLT_1_B0_POSI (0)
|
|
#define FLT_1_B0_MASK (0xFFFFU)
|
|
#define FLT_1_B1_POSI (16)
|
|
#define FLT_1_B1_MASK (0xFFFFU)
|
|
#define AD_FLT_1_COEF_3 (AUDIO_BASE + 0x25 * 4)
|
|
#define FLT_1_B2_POSI (0)
|
|
#define FLT_1_B2_MASK (0xFFFFU)
|
|
|
|
#define AUD_FLT_2_COEF_1 (AUDIO_BASE + 0x26 * 4)
|
|
#define FLT_2_A1_POSI (0)
|
|
#define FLT_2_A1_MASK (0xFFFFU)
|
|
#define FLT_2_A2_POSI (16)
|
|
#define FLT_2_A2_MASK (0xFFFFU)
|
|
#define AD_FLT_2_COEF_2 (AUDIO_BASE + 0x27 * 4)
|
|
#define FLT_2_B0_POSI (0)
|
|
#define FLT_2_B0_MASK (0xFFFFU)
|
|
#define FLT_2_B1_POSI (16)
|
|
#define FLT_2_B1_MASK (0xFFFFU)
|
|
#define AD_FLT_2_COEF_3 (AUDIO_BASE + 0x28 * 4)
|
|
#define FLT_2_B2_POSI (0)
|
|
#define FLT_2_B2_MASK (0xFFFFU)
|
|
|
|
#define AUD_FLT_3_COEF_1 (AUDIO_BASE + 0x29 * 4)
|
|
#define FLT_3_A1_POSI (0)
|
|
#define FLT_3_A1_MASK (0xFFFFU)
|
|
#define FLT_3_A2_POSI (16)
|
|
#define FLT_3_A2_MASK (0xFFFFU)
|
|
#define AD_FLT_3_COEF_2 (AUDIO_BASE + 0x2A * 4)
|
|
#define FLT_3_B0_POSI (0)
|
|
#define FLT_3_B0_MASK (0xFFFFU)
|
|
#define FLT_3_B1_POSI (16)
|
|
#define FLT_3_B1_MASK (0xFFFFU)
|
|
#define AD_FLT_3_COEF_3 (AUDIO_BASE + 0x2B * 4)
|
|
#define FLT_3_B2_POSI (0)
|
|
#define FLT_3_B2_MASK (0xFFFFU)
|
|
|
|
#define AUD_FLT_0_EXT_COEF (AUDIO_BASE + 0x2C * 4)
|
|
#define FLT_A1_L_6BIT_POSI (0)
|
|
#define FLT_A1_L_6BIT_MASK (0x3FU)
|
|
#define FLT_A2_L_6BIT_POSI (6)
|
|
#define FLT_A2_L_6BIT_MASK (0x3FU)
|
|
#define FLT_B0_L_6BIT_POSI (12)
|
|
#define FLT_B0_L_6BIT_MASK (0x3FU)
|
|
#define FLT_B1_L_6BIT_POSI (18)
|
|
#define FLT_B1_L_6BIT_MASK (0x3FU)
|
|
#define FLT_B2_L_6BIT_POSI (24)
|
|
#define FLT_B2_L_6BIT_MASK (0x3FU)
|
|
|
|
#define AUD_FLT_1_EXT_COEF (AUDIO_BASE + 0x2D * 4)
|
|
|
|
#define AUD_FLT_2_EXT_COEF (AUDIO_BASE + 0x2E * 4)
|
|
|
|
#define AUD_FLT_3_EXT_COEF (AUDIO_BASE + 0x2F * 4)
|
|
|
|
#define CONST_DIV_441K (0x049B2368)
|
|
#define CONST_DIV_48K (0x043B5554)
|
|
#define CONST_DIV_16K (0x06590000)
|
|
#define CONST_DIV_32K (0x01964000)
|
|
|
|
extern void audio_power_up(void);
|
|
extern void audio_power_down(void);
|
|
extern void audio_enable_interrupt(void);
|
|
extern void audio_disable_interrupt(void);
|
|
extern void audio_dac_software_init(void);
|
|
extern void audio_dac_isr(void);
|
|
|
|
extern void audio_adc_enable_linein(void);
|
|
extern void audio_adc_disable_linein(void);
|
|
extern void audio_adc_software_init(void);
|
|
extern void audio_adc_isr(void);
|
|
|
|
#include "uart_pub.h"
|
|
#define AUD_DEBUG (1)
|
|
#if AUD_DEBUG
|
|
#define AUD_PRT os_printf
|
|
#else
|
|
#define AUD_PRT null_prf
|
|
#define AUD_WPRT null_prf
|
|
#endif
|
|
|
|
#endif // _BK_AUDIO_H_
|