178 lines
5.7 KiB
C
178 lines
5.7 KiB
C
/*
|
|
* Copyright (C) Cvitek Co., Ltd. 2019-2020. All rights reserved.
|
|
*
|
|
* File Name: include/acodec.h
|
|
* Description: audio codec define and api
|
|
*/
|
|
#ifndef _ACODEC_H_
|
|
#define _ACODEC_H_
|
|
|
|
#define IOC_TYPE_ACODEC 'A'
|
|
|
|
typedef enum cviACODEC_FS_E {
|
|
ACODEC_FS_8000 = 0x1,
|
|
ACODEC_FS_11025 = 0x2,
|
|
ACODEC_FS_12000 = 0x3,
|
|
ACODEC_FS_16000 = 0x4,
|
|
ACODEC_FS_22050 = 0x5,
|
|
ACODEC_FS_24000 = 0x6,
|
|
ACODEC_FS_32000 = 0x7,
|
|
ACODEC_FS_44100 = 0x8,
|
|
ACODEC_FS_48000 = 0x9,
|
|
ACODEC_FS_64000 = 0xa,
|
|
ACODEC_FS_96000 = 0xb,
|
|
|
|
ACODEC_FS_BUTT = 0x1c,
|
|
} ACODEC_FS_E;
|
|
|
|
typedef enum cviACODEC_MIXER_E {
|
|
ACODEC_MIXER_IN0 = 0x0, /* 16CV500/16DV300 Unsupport IN0. */
|
|
ACODEC_MIXER_IN1 = 0x1,
|
|
ACODEC_MIXER_IN_D = 0x2,
|
|
|
|
ACODEC_MIXER_BUTT,
|
|
} ACODEC_MIXER_E;
|
|
|
|
typedef struct {
|
|
/*volume control, 0x00~0x7e, 0x7F:mute*/
|
|
unsigned int vol_ctrl;
|
|
/*adc/dac mute control, 1:mute, 0:unmute*/
|
|
unsigned int vol_ctrl_mute;
|
|
} ACODEC_VOL_CTRL;
|
|
|
|
typedef enum cviACODEC_IOCTL_E {
|
|
IOC_NR_SOFT_RESET_CTRL = 0x0,
|
|
|
|
IOC_NR_SET_INPUT_VOL,
|
|
IOC_NR_SET_OUTPUT_VOL,
|
|
IOC_NR_GET_INPUT_VOL,
|
|
IOC_NR_GET_OUTPUT_VOL,
|
|
|
|
IOC_NR_SET_I2S1_FS,
|
|
IOC_NR_SET_MIXER_MIC,
|
|
IOC_NR_SEL_DAC_CLK,
|
|
IOC_NR_SEL_ADC_CLK,
|
|
IOC_NR_SEL_ANA_MCLK,
|
|
IOC_NR_SET_GAIN_MICL,
|
|
IOC_NR_SET_GAIN_MICR,
|
|
IOC_NR_SET_DACL_VOL,
|
|
IOC_NR_SET_DACR_VOL,
|
|
IOC_NR_SET_ADCL_VOL,
|
|
IOC_NR_SET_ADCR_VOL,
|
|
IOC_NR_SET_MICL_MUTE,
|
|
IOC_NR_SET_MICR_MUTE,
|
|
IOC_NR_SET_DACL_MUTE,
|
|
IOC_NR_SET_DACR_MUTE,
|
|
IOC_NR_BOOSTL_ENABLE,
|
|
IOC_NR_BOOSTR_ENABLE,
|
|
|
|
IOC_NR_GET_GAIN_MICL,
|
|
IOC_NR_GET_GAIN_MICR,
|
|
IOC_NR_GET_DACL_VOL,
|
|
IOC_NR_GET_DACR_VOL,
|
|
IOC_NR_GET_ADCL_VOL,
|
|
IOC_NR_GET_ADCR_VOL,
|
|
|
|
IOC_NR_SET_PD_DACL,
|
|
IOC_NR_SET_PD_DACR,
|
|
IOC_NR_SET_PD_ADCL,
|
|
IOC_NR_SET_PD_ADCR,
|
|
IOC_NR_SET_PD_LINEINL,
|
|
IOC_NR_SET_PD_LINEINR,
|
|
|
|
IOC_NR_SET_DAC_DE_EMPHASIS,
|
|
IOC_NR_SET_ADC_HP_FILTER,
|
|
|
|
IOC_NR_SET_I2S1_DATAWIDTH,
|
|
} ACODEC_IOCTL_E;
|
|
|
|
/*reset the audio code to the default config*/
|
|
#define ACODEC_SOFT_RESET_CTRL \
|
|
_IO(IOC_TYPE_ACODEC, IOC_NR_SOFT_RESET_CTRL)
|
|
/*ACODEC_FS_E*/
|
|
#define ACODEC_SET_I2S1_FS \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_I2S1_FS, unsigned int)
|
|
|
|
/*select the micpga's input, micin linein, or differential input(ACODEC_MIXER_E)*/
|
|
#define ACODEC_SET_MIXER_MIC \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_MIXER_MIC, unsigned int)
|
|
/*analog part input volume control(left channel 0~0x1f)*/
|
|
#define ACODEC_SET_GAIN_MICL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_GAIN_MICL, unsigned int)
|
|
/*analog part input volume control(right channel 0~0x1f)*/
|
|
#define ACODEC_SET_GAIN_MICR \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_GAIN_MICR, unsigned int)
|
|
/*Output volume control(left channel) ACODEC_VOL_CTRL*/
|
|
#define ACODEC_SET_DACL_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_DACL_VOL, ACODEC_VOL_CTRL)
|
|
/*Output volume control(right channel) ACODEC_VOL_CTRL*/
|
|
#define ACODEC_SET_DACR_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_DACR_VOL, ACODEC_VOL_CTRL)
|
|
/*Input volume control(left channel) ACODEC_VOL_CTRL*/
|
|
#define ACODEC_SET_ADCL_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_ADCL_VOL, ACODEC_VOL_CTRL)
|
|
/*Input volume control(right channel) ACODEC_VOL_CTRL*/
|
|
#define ACODEC_SET_ADCR_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_ADCR_VOL, ACODEC_VOL_CTRL)
|
|
/*Input mute control(left channel), 1:mute, 0:unmute*/
|
|
#define ACODEC_SET_MICL_MUTE \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_MICL_MUTE, unsigned int)
|
|
/*Input mute control(right channel), 1:mute, 0:unmute*/
|
|
#define ACODEC_SET_MICR_MUTE \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_MICR_MUTE, unsigned int)
|
|
/*Output mute control(left channel), 1:mute, 0:unmute*/
|
|
#define ACODEC_SET_DACL_MUTE \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_DACL_MUTE, unsigned int)
|
|
/*Output mute control(right channel), 1:mute, 0:unmute*/
|
|
#define ACODEC_SET_DACR_MUTE \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_DACR_MUTE, unsigned int)
|
|
#define ACODEC_GET_GAIN_MICL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_GET_GAIN_MICL, unsigned int)
|
|
#define ACODEC_GET_GAIN_MICR \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_GET_GAIN_MICR, unsigned int)
|
|
#define ACODEC_GET_DACL_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_GET_DACL_VOL, ACODEC_VOL_CTRL)
|
|
#define ACODEC_GET_DACR_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_GET_DACR_VOL, ACODEC_VOL_CTRL)
|
|
#define ACODEC_GET_ADCL_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_GET_ADCL_VOL, ACODEC_VOL_CTRL)
|
|
#define ACODEC_GET_ADCR_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_GET_ADCR_VOL, ACODEC_VOL_CTRL)
|
|
|
|
/*set adcl power, 0: power up, 1: power down*/
|
|
#define ACODEC_SET_PD_DACL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_PD_DACL, unsigned int)
|
|
/*set adcr power, 0: power up, 1: power down*/
|
|
#define ACODEC_SET_PD_DACR \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_PD_DACR, unsigned int)
|
|
/*set adcl power, 0: power up, 1: power down*/
|
|
#define ACODEC_SET_PD_ADCL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_PD_ADCL, unsigned int)
|
|
/*set adcr power, 0: power up, 1: power down*/
|
|
#define ACODEC_SET_PD_ADCR \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_PD_ADCR, unsigned int)
|
|
/*set adcl power, 0: power up, 1: power down*/
|
|
#define ACODEC_SET_PD_LINEINL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_PD_LINEINL, unsigned int)
|
|
/*set adcr power, 0: power up, 1: power down*/
|
|
#define ACODEC_SET_PD_LINEINR \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_PD_LINEINR, unsigned int)
|
|
|
|
/* Don't need to set, the driver will set a default value */
|
|
/*clock of dac and adc is reverse or obverse*/
|
|
#define ACODEC_SET_DAC_DE_EMPHASIS \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_DAC_DE_EMPHASIS, unsigned int)
|
|
#define ACODEC_SET_ADC_HP_FILTER \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_ADC_HP_FILTER, unsigned int)
|
|
|
|
#define ACODEC_SET_INPUT_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_INPUT_VOL, unsigned int)
|
|
#define ACODEC_SET_OUTPUT_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_SET_OUTPUT_VOL, unsigned int)
|
|
#define ACODEC_GET_INPUT_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_GET_INPUT_VOL, unsigned int)
|
|
#define ACODEC_GET_OUTPUT_VOL \
|
|
_IOWR(IOC_TYPE_ACODEC, IOC_NR_GET_OUTPUT_VOL, unsigned int)
|
|
|
|
#endif /* End of #ifndef _ACODEC_H_ */
|