Files
99_7018_lmx/cpu/br28/smart_voice/vad_mic.h
2025-10-29 13:10:02 +08:00

76 lines
2.0 KiB
C

/*****************************************************************
>file name : vad_mic.h
>author : lichao
>create time : Mon 01 Nov 2021 05:07:50 PM CST
*****************************************************************/
#ifndef _P11_VAD_H_
#define _P11_VAD_H_
#include "includes.h"
#include "asm/power/p11.h"
#include "audio_adc.h"
//--------------------- p11 VAD参数配置 ---------------------------------//
struct avad_config {
int avad_quantile_p;
int avad_th;
int avad_gain_db;
int avad_compare_v;
};
struct dvad_config {
int d_low_con_th;
int d_high_con_th;
int d2a_th_db;
int d2a_frame_con;
int dvad_gain_id;
int d_frame_con;
int d_stride1;
int d_stride2;
};
#define P11_VAD_IRQ_ENABLE() \
P11_SYSTEM->M2P_INT_IE |= BIT(M2P_VAD_INDEX);
//===========================================================================//
// Master to P11 EVENT POST //
//===========================================================================//
enum M2P_VAD_CMD_TABLE {
M2P_VAD_CMD_INIT = 0x55,
M2P_VAD_CMD_FRAME,
M2P_VAD_CMD_CLOSE,
M2P_VAD_CMD_TEST,
};
//===========================================================================//
// P11 VAD EVENT CMD //
//===========================================================================//
enum P2M_VAD_CMD_TABLE {
P2M_VAD_TRIGGER_START = 0xAA,
P2M_VAD_TRIGGER_DMA,
P2M_VAD_TRIGGER_STOP,
};
static inline void audio_vad_m2p_event_post(enum M2P_VAD_CMD_TABLE cmd)
{
M2P_MESSAGE_VAD_CMD = cmd;
P11_M2P_INT_SET = BIT(M2P_VAD_INDEX);
}
#define AUDIO_VAD_DMA_READ_UPDATE(n) \
M2P_MESSAGE_VAD_CBUF_RPTR = (n); \
audio_vad_m2p_event_post(M2P_VAD_CMD_FRAME);
void audio_vad_clock_trim(void);
int lp_vad_mic_data_init(struct vad_mic_platform_data *mic_data);
void *lp_vad_mic_open(void *priv, int (*dma_output)(void *priv, s16 *data, int len));
void lp_vad_mic_close(void *vad);
void lp_vad_mic_test(void);
void lp_vad_mic_disable(void);
#endif