46 #ifndef __TLV320AIC3104_H 47 #define __TLV320AIC3104_H 53 #define AIC3X_ADDR (0x18U) 55 #define PAGE_REG_ADDR(__PAGE__, __ADDR__) ((((uint16_t)(__PAGE__)) << 8) | ((uint16_t)(__ADDR__) & 0x00FFU)) 57 #define AIC3X_SOFT_RESET (0x80U) 60 #define DATAPATH_FREF_MASK (1 << 7) 63 DATAPATH_FREF_48kHz = 0x00,
64 DATAPATH_FREF_44_1kHz = 0x01
67 #define DATAPATH_ADC_DUAL_RATE (1 << 6) 68 #define DATAPATH_DAC_DUAL_RATE (1 << 5) 70 #define DATAPATH_RDAC_SHIFT (1) 71 #define DATAPATH_LDAC_SHIFT (3) 72 #define DATAPATH_CTRL_MASK (0x03U) 74 enum aic3x_datapath_dac {
87 #define ASD_IFA_MODE_SHIFT (6) 88 #define ASD_IFA_BCLK_MASTER (1 << 7) 89 #define ASD_IFA_WCLK_MASTER (1 << 6) 90 #define ASD_IFA_DOUT_HIZ (1 << 5) 92 enum aic3x_asd_ifa_ctrl {
99 #define ASD_IFB_MODE_SHIFT (6) 100 #define ASD_IFB_MODE_MASK (0x03U << ASD_IFB_MODE_SHIFT) 102 enum aic3x_asd_ifb_mode {
103 ASD_IFB_MODE_I2S = 0x00,
104 ASD_IFB_MODE_DSP = 0x01,
105 ASD_IFB_MODE_RJUST = 0x02,
106 ASD_IFB_MODE_LJUST = 0x03
109 #define ASD_IFB_LEN_SHIFT (4) 110 #define ASD_IFB_LEN_MASK (0x03U << ASD_IFB_LEN_SHIFT) 112 enum aic3x_asd_ifb_len {
113 ASD_IFB_LEN_16BIT = 0x00,
114 ASD_IFB_LEN_20BIT = 0x01,
115 ASD_IFB_LEN_24BIT = 0x02,
116 ASD_IFB_LEN_32BIT = 0x03
125 #define AIC3X_MICBIAS_LEVEL_SHIFT (6) 126 #define AIC3X_MICBIAS_LEVEL_MASK (0x03U << AIC3X_MICBIAS_LEVEL_SHIFT) 128 #define INVERT_VOL(val) (0x7FU - val) 131 #define AIC3X_DEFAULT_VOL INVERT_VOL(0x50) 134 #define AIC3X_DEFAULT_GAIN (0x20U) 137 #define AIC3X_ROUTE_ON (1 << 7) 140 #define AIC3X_UNMUTE (1 << 3) 141 #define AIC3X_MUTE_ON (1 << 7) 143 #define AIC3X_POWER_ON (1 << 0) 147 #define MIC2LINE2_RADC_CTRL_MASK (0x0FU) 156 enum aic3x_dac_pwr_dac {
161 enum aic3x_input_ctrl_gain {
162 INPUT_CTRL_GAIN_0dB = 0x00,
163 INPUT_CTRL_GAIN_1_5dB = 0x01,
164 INPUT_CTRL_GAIN_3dB = 0x02,
165 INPUT_CTRL_GAIN_4_5dB = 0x03,
166 INPUT_CTRL_GAIN_6dB = 0x04,
167 INPUT_CTRL_GAIN_7_5dB = 0x05,
168 INPUT_CTRL_GAIN_9dB = 0x06,
169 INPUT_CTRL_GAIN_10_5dB = 0x07,
170 INPUT_CTRL_GAIN_12dB = 0x08,
171 INPUT_CTRL_ADC_DISCONNECT = 0x0F
174 enum aic3x_rate_div {
175 AIC3X_DIV_FS_1 = 0x00,
176 AIC3X_DIV_FS_1_5 = 0x01,
177 AIC3X_DIV_FS_2 = 0x02,
178 AIC3X_DIV_FS_2_5 = 0x03,
179 AIC3X_DIV_FS_3 = 0x04,
180 AIC3X_DIV_FS_3_5 = 0x05,
181 AIC3X_DIV_FS_4 = 0x06,
182 AIC3X_DIV_FS_4_5 = 0x07,
183 AIC3X_DIV_FS_5 = 0x08,
184 AIC3X_DIV_FS_5_5 = 0x09,
185 AIC3X_DIV_FS_6 = 0x0A
189 AIC3X_MICBIAS_OFF = 0x00,
190 AIC3X_MICBIAS_2V = 0x01,
191 AIC3X_MICBIAS_2V5 = 0x02,
192 AIC3X_MICBIAS_AVDD = 0x03,
195 #define CLKGEN_CTRL_SOURCE_MASK (0x03U) 197 enum aic3x_clkgen_ctrl {
198 CLKGEN_CTRL_PLLCLK_IN = 0x04,
199 CLKGEN_CTRL_CLKDIV_IN = 0x06
202 enum aic3x_clkgen_ctrl_source {
203 CLKGEN_SOURCE_MCLK = 0x00,
204 CLKGEN_SOURCE_GPIO2 = 0x01,
205 CLKGEN_SOURCE_BCLK = 0x02
208 enum aic3x_outroute {
209 AIC3X_LINE_OUT_STEREO,
214 AIC3X_LINE_IN_STEREO,
232 int (*i2c_write)(uint16_t addr, uint8_t reg, uint8_t *data);
233 int (*i2c_read)(uint16_t addr, uint8_t reg, uint8_t *data);
234 enum aic3x_outroute out_route;
235 enum aic3x_inroute in_route;
246 int aic3x_reset(
struct aic3x_dev *codec);
247 int aic3x_configure_fref(
struct aic3x_dev *codec,
enum aic3x_fref fref);
249 int aic3x_set_sample_rate(
struct aic3x_dev *codec,
enum aic3x_rate_div adc_div,
enum aic3x_rate_div dac_div);
250 int aic3x_enable_dac_pwr(
struct aic3x_dev *codec,
enum aic3x_dac_pwr_dac dac,
unsigned char en);
uint8_t rdac_vol
Definition: tlv320aic3104.h:226
Definition: tlv320aic3104.h:81
uint8_t ladc_pga
Definition: tlv320aic3104.h:219
Definition: tlv320aic3104.h:151
enum aic3x_asd_ifb_mode xfer_mode
Definition: tlv320aic3104.h:121
Definition: tlv320aic3104.h:119
uint8_t lpga_vol
Definition: tlv320aic3104.h:223
uint8_t ldac_vol
Definition: tlv320aic3104.h:225
Definition: tlv320aic3104.h:82
aic3x_mic2line2_radc_ctrl
Definition: tlv320aic3104.h:149
uint8_t radc_pga
Definition: tlv320aic3104.h:220
Definition: tlv320aic3104.h:240
uint8_t rdac_dvc
Definition: tlv320aic3104.h:222
Definition: tlv320aic3104.h:80
Definition: tlv320aic3104.h:83
uint8_t rpga_vol
Definition: tlv320aic3104.h:224
uint8_t ldac_dvc
Definition: tlv320aic3104.h:221
Definition: tlv320aic3104.h:150
enum aic3x_asd_ifa_ctrl mode
Definition: tlv320aic3104.h:120
int aic3x_init(struct aic3x_dev *codec, struct aic3x_cfg *cfg)
Initialize AIC3x Codec.
Definition: tlv320aic3104.c:397
Definition: tlv320aic3104.h:218
aic3x_datapath_ctrl
Definition: tlv320aic3104.h:79
Definition: tlv320aic3104.h:229
enum aic3x_asd_ifb_len data_len
Definition: tlv320aic3104.h:122