1 /* 2 * Copyright (c) 2015-2016, Freescale Semiconductor, Inc. 3 * Copyright 2016-2020 NXP 4 * All rights reserved. 5 * 6 * SPDX-License-Identifier: BSD-3-Clause 7 */ 8 #ifndef _FSL_DIALOG7212_H_ 9 #define _FSL_DIALOG7212_H_ 10 11 #include "fsl_codec_i2c.h" 12 13 /*! 14 * @addtogroup da7212 15 * @ingroup codec 16 * @{ 17 */ 18 /******************************************************************************* 19 * Definitions 20 ******************************************************************************/ 21 /*! @name Driver version */ 22 /*! @{ */ 23 /*! @brief CLOCK driver version 2.3.0. */ 24 #define FSL_DA7212_DRIVER_VERSION (MAKE_VERSION(2, 3, 1)) 25 /*! @} */ 26 27 /*! @brief da7212 handle size */ 28 #ifndef DA7212_I2C_HANDLER_SIZE 29 #define DA7212_I2C_HANDLER_SIZE CODEC_I2C_MASTER_HANDLER_SIZE 30 #endif 31 32 #define DA7212_INIT_SIZE (36U) 33 #define DA7212_DAC_MAX_VOL (DA7213_DAC_GAIN_12DB) 34 #define DA7212_DAC_MIN_VOL (DA7212_DAC_GAIN_MUTE) 35 36 /*! @brief DA7212 I2C address */ 37 #define DA7212_ADDRESS (0x1A) 38 39 #define DA7212_AUX_REGISTER_SIZE (33) 40 #define DA7212_MIC2_REGISTER_SIZE (33) 41 #define DA7212_MIC1_REGISTER_SIZE (24) 42 43 #define DA7212_DAC_MUTE_ENABLED (0xC0) 44 #define DA7212_DAC_MUTE_DISABLED (0x80) 45 46 #define DA7212_MAX_VOLUME_STEPS (15) 47 #define DA7212_MIN_VOLUME_STEPS (0) 48 49 #define DA7212_MAX_VOLUME_STEPS (15) 50 51 #define DA7212_CHANGE_FREQ_SIZE (0x05) 52 53 #define CLEAR_REGISTER (0x00) 54 55 #define DA7212_I2C_BAUDRATE (100000U) 56 /***************************************************************************************************/ 57 /* * Register values. */ 58 59 /******************Status registers*********************/ 60 #define DIALOG7212_STATUS1 0x02 61 #define DIALOG7212_PLL_STATUS 0x03 62 #define DIALOG7212_AUX_L_GAIN_STATUS 0x04 63 #define DIALOG7212_AUX_R_GAIN_STATUS 0x05 64 #define DIALOG7212_MIC_1_GAIN_STATUS 0x06 65 #define DIALOG7212_MIC_2_GAIN_STATUS 0x07 66 #define DIALOG7212_MIXIN_L_GAIN_STATUS 0x08 67 #define DIALOG7212_MIXIN_R_GAIN_STATUS 0x09 68 #define DIALOG7212_ADC_L_GAIN_STATUS 0x0A 69 #define DIALOG7212_ADC_R_GAIN_STATUS 0x0B 70 #define DIALOG7212_DAC_L_GAIN_STATUS 0x0C 71 #define DIALOG7212_DAC_R_GAIN_STATUS 0x0D 72 #define DIALOG7212_HP_L_GAIN_STATUS 0x0E 73 #define DIALOG7212_HP_R_GAIN_STATUS 0x0F 74 #define DIALOG7212_LINE_GAIN_STATUS 0x10 75 /***************System Initialisation Registers************/ 76 #define DIALOG7212_CIF_CTRL 0x1d 77 #define DIALOG7212_DIG_ROUTING_DAI 0x21 78 #define DIALOG7212_SR 0x22 79 #define DIALOG7212_REFERENCES 0x23 80 #define DIALOG7212_PLL_FRAC_TOP 0x24 81 #define DIALOG7212_PLL_FRAC_BOT 0x25 82 #define DIALOG7212_PLL_INTEGER 0x26 83 #define DIALOG7212_PLL_CTRL 0x27 84 #define DIALOG7212_DAI_CLK_MODE 0x28 85 #define DIALOG7212_DAI_CTRL 0x29 86 #define DIALOG7212_DIG_ROUTING_DAC 0x2A 87 #define DIALOG7212_ALC_CTRL1 0x2B 88 /************Input Gain/ Select Filter Registers**********/ 89 #define DIALOG7212_AUX_L_GAIN 0x30 90 #define DIALOG7212_AUX_R_GAIN 0x31 91 #define DIALOG7212_MIXIN_L_SELECT 0x32 92 #define DIALOG7212_MIXIN_R_SELECT 0x33 93 #define DIALOG7212_MIXIN_L_GAIN 0x34 94 #define DIALOG7212_MIXIN_R_GAIN 0x35 95 #define DIALOG7212_ADC_L_GAIN 0x36 96 #define DIALOG7212_ADC_R_GAIN 0x37 97 #define DIALOG7212_ADC_FILTERS1 0x38 98 #define DIALOG7212_MIC_1_GAIN 0x39 99 #define DIALOG7212_MIC_2_GAIN 0x3A 100 /************Output Gain/ Select Filter Registers**********/ 101 #define DIALOG7212_DAC_FILTERS5 0x40 102 #define DIALOG7212_DAC_FILTERS2 0x41 103 #define DIALOG7212_DAC_FILTERS3 0x42 104 #define DIALOG7212_DAC_FILTERS4 0x43 105 #define DIALOG7212_DAC_FILTERS1 0x44 106 #define DIALOG7212_DAC_L_GAIN 0x45 107 #define DIALOG7212_DAC_R_GAIN 0x46 108 #define DIALOG7212_CP_CTRL 0x47 109 #define DIALOG7212_HP_L_GAIN 0x48 110 #define DIALOG7212_HP_R_GAIN 0x49 111 #define DIALOG7212_LINE_GAIN 0x4A 112 #define DIALOG7212_MIXOUT_L_SELECT 0x4B 113 #define DIALOG7212_MIXOUT_R_SELECT 0x4C 114 /**************System Controller Registers(1)*************/ 115 #define DIALOG7212_SYSTEM_MODES_INPUT 0x50 116 #define DIALOG7212_SYSTEM_MODES_OUTPUT 0x51 117 /*****************Control Registers(2)********************/ 118 #define DIALOG7212_AUX_L_CTRL 0x60 119 #define DIALOG7212_AUX_R_CTRL 0x61 120 #define DIALOG7212_MICBIAS_CTRL 0x62 121 #define DIALOG7212_MIC_1_CTRL 0x63 122 #define DIALOG7212_MIC_2_CTRL 0x64 123 #define DIALOG7212_MIXIN_L_CTRL 0x65 124 #define DIALOG7212_MIXIN_R_CTRL 0x66 125 #define DIALOG7212_ADC_L_CTRL 0x67 126 #define DIALOG7212_ADC_R_CTRL 0x68 127 #define DIALOG7212_DAC_L_CTRL 0x69 128 #define DIALOG7212_DAC_R_CTRL 0x6A 129 #define DIALOG7212_HP_L_CTRL 0x6B 130 #define DIALOG7212_HP_R_CTRL 0x6C 131 #define DIALOG7212_LINE_CTRL 0x6D 132 #define DIALOG7212_MIXOUT_L_CTRL 0x6E 133 #define DIALOG7212_MIXOUT_R_CTRL 0x6F 134 /************ Registers**********/ 135 136 /****************Configuration Registers*****************/ 137 #define DIALOG7212_LDO_CTRL 0x90 138 #define DIALOG7212_GAIN_RAMP_CTRL 0x92 139 #define DIALOG7212_MIC_CONFIG 0x93 140 #define DIALOG7212_PC_COUNT 0x94 141 #define DIALOG7212_CP_VOL_THRESHOLD1 0x95 142 #define DIALOG7212_CP_DELAY 0x96 143 #define DIALOG7212_CP_DETECTOR 0x97 144 #define DIALOG7212_DAI_OFFSET 0x98 145 #define DIALOG7212_DIG_CTRL 0x99 146 #define DIALOG7212_ALC_CTRL2 0x9A 147 #define DIALOG7212_ALC_CTRL3 0x9B 148 #define DIALOG7212_ALC_NOISE 0x9C 149 #define DIALOG7212_ALC_TARGET_MIN 0x9D 150 #define DIALOG7212_ALC_TARGET_MAX 0x9E 151 #define DIALOG7212_ALC_GAIN_LIMITS 0x9F 152 #define DIALOG7212_ALC_ANA_GAIN_LIMITS 0xA0 153 #define DIALOG7212_ALC_ANTICLIP_CTRL 0xA1 154 #define DIALOG7212_ALC_ANTICLIP_LEVEL 0xA2 155 #define DIALOG7212_DAC_NG_SETUP_TIME 0xAF 156 #define DIALOG7212_DAC_NG_OFF_THRESH 0xB0 157 #define DIALOG7212_DAC_NG_ON_THRESH 0xB1 158 #define DIALOG7212_DAC_NG_CTRL 0xB2 159 // #define DIALOG7212_DAC_NG_SPARE 0xB3 160 /************Tone Generation & Beep Registers************/ 161 #define DIALOG7212_TONE_GEN_CFG1 0xB4 162 #define DIALOG7212_TONE_GEN_CFG2 0xB5 163 #define DIALOG7212_TONE_GEN_CYCLES 0xB6 164 #define DIALOG7212_TONE_GEN_FREQ1_L 0xB7 165 #define DIALOG7212_TONE_GEN_FREQ1_U 0xB8 166 #define DIALOG7212_TONE_GEN_FREQ2_L 0xB9 167 #define DIALOG7212_TONE_GEN_FREQ2_U 0xBA 168 #define DIALOG7212_TONE_GEN_ON_PER 0xBB 169 #define DIALOG7212_TONE_GEN_OFF_PER 0xBC 170 171 /************System Controller Registers(2)*************/ 172 #define DIALOG7212_SYSTEM_STATUS 0xE0 173 174 #define DIALOG7212_SYSTEM_ACTIVE 0xFD 175 176 /******************Driver DA7212 Macros*****************/ 177 178 /******************Status registers*********************/ 179 /* DIALOG7212_PLL_STATUS 0x03*/ 180 #define DIALOG7212_PLL_STATUS_BYPASS_ACTIVE_MASK (1U << 3) 181 #define DIALOG7212_PLL_STATUS_MCLK_STATUS_MASK (1U << 2) 182 #define DIALOG7212_PLL_STATUS_SRM_LOCK_MASK (1U << 1) 183 #define DIALOG7212_PLL_STATUS_LOCK_MASK (1U << 0) 184 185 /* DIALOG7212_AUX_L_GAIN_STATUS 0x04*/ 186 #define DIALOG7212_AUX_L_AMP_GAIN_STATUS_MASK (0x3F) 187 #define DIALOG7212_AUX_L_AMP_GAIN_STATUS_SHIFT (0U) 188 #define DIALOG7212_AUX_L_AMP_GAIN_STATUS(x) ((x) << DIALOG7212_AUX_L_AMP_GAIN_STATUS_SHIFT) 189 190 /* DIALOG7212_AUX_R_GAIN_STATUS 0x05*/ 191 #define DIALOG7212_AUX_R_AMP_GAIN_STATUS_MASK (0x3F) 192 #define DIALOG7212_AUX_R_AMP_GAIN_STATUS_SHIFT (0U) 193 #define DIALOG7212_AUX_R_AMP_GAIN_STATUS(x) ((x) << DIALOG7212_AUX_R_AMP_GAIN_STATUS_SHIFT) 194 195 /* DIALOG7212_MIC_1_GAIN_STATUS 0x06*/ 196 #define DIALOG7212_MIC_1_AMP_GAIN_STATUS_MASK (0x07) 197 #define DIALOG7212_MIC_1_AMP_GAIN_STATUS_SHIFT (0U) 198 #define DIALOG7212_MIC_1_AMP_GAIN_STATUS(x) ((x) << DIALOG7212_MIC_1_AMP_GAIN_STATUS_SHIFT) 199 200 /* DIALOG7212_MIC_2_GAIN_STATUS 0x07*/ 201 #define DIALOG7212_MIC_2_AMP_GAIN_STATUS_MASK (0x07) 202 #define DIALOG7212_MIC_2_AMP_GAIN_STATUS_SHIFT (0U) 203 #define DIALOG7212_MIC_2_AMP_GAIN_STATUS(x) ((x) << DIALOG7212_MIC_2_AMP_GAIN_STATUS_SHIFT) 204 205 /* DIALOG7212_MIXIN_L_GAIN_STATUS 0x08*/ 206 #define DIALOG7212_MIXIN_L_AMP_GAIN_STATUS_MASK (0x0F) 207 #define DIALOG7212_MIXIN_L_AMP_GAIN_STATUS_SHIFT (0U) 208 #define DIALOG7212_MIXIN_L_AMP_GAIN_STATUS(x) ((x) << DIALOG7212_MIXIN_L_AMP_GAIN_STATUS_SHIFT) 209 210 /* DIALOG7212_MIXIN_R_GAIN_STATUS 0x09*/ 211 #define DIALOG7212_MIXIN_R_AMP_GAIN_STATUS_MASK (0x0F) 212 #define DIALOG7212_MIXIN_R_AMP_GAIN_STATUS_SHIFT (0U) 213 #define DIALOG7212_MIXIN_R_AMP_GAIN_STATUS(x) ((x) << DIALOG7212_MIXIN_R_AMP_GAIN_STATUS_SHIFT) 214 215 /* DIALOG7212_ADC_L_GAIN_STATUS 0x0A*/ 216 #define DIALOG7212_ADC_L_GAIN_STATUS_MASK (0x7F) 217 #define DIALOG7212_ADC_L_GAIN_STATUS_SHIFT (0U) 218 #define DIALOG7212_ADC_L_GAIN_STATUS_VAL(x) ((x) << DIALOG7212_ADC_L_GAIN_STATUS_SHIFT) 219 220 /* DIALOG7212_ADC_R_GAIN_STATUS 0x0B*/ 221 #define DIALOG7212_ADC_R_GAIN_STATUS_MASK (0x7F) 222 #define DIALOG7212_ADC_R_GAIN_STATUS_SHIFT (0U) 223 #define DIALOG7212_ADC_R_GAIN_STATUS_VAL(x) ((x) << DIALOG7212_ADC_R_GAIN_STATUS_SHIFT) 224 225 /* DIALOG7212_DAC_L_GAIN_STATUS 0x0C*/ 226 #define DIALOG7212_DAC_L_GAIN_STATUS_MASK (0x7F) 227 #define DIALOG7212_DAC_L_GAIN_STATUS_SHIFT (0U) 228 #define DIALOG7212_DAC_L_GAIN_STATUS_VAL(x) ((x) << DIALOG7212_DAC_L_GAIN_STATUS_SHIFT) 229 230 /* DIALOG7212_DAC_R_GAIN_STATUS 0x0D*/ 231 #define DIALOG7212_DAC_R_GAIN_STATUS_MASK (0x7F) 232 #define DIALOG7212_DAC_R_GAIN_STATUS_SHIFT (0U) 233 #define DIALOG7212_DAC_R_GAIN_STATUS_VAL(x) ((x) << DIALOG7212_DAC_R_GAIN_STATUS_SHIFT) 234 235 /* DIALOG7212_HP_L_GAIN_STATUS 0x0E*/ 236 #define DIALOG7212_HP_L_AMP_GAIN_STATUS_MASK (0x3F) 237 #define DIALOG7212_HP_L_AMP_GAIN_STATUS_SHIFT (0U) 238 #define DIALOG7212_HP_L_AMP_GAIN_STATUS(x) ((x) << DIALOG7212_HP_L_AMP_GAIN_STATUS_SHIFT) 239 240 /* DIALOG7212_HP_R_GAIN_STATUS 0x0F*/ 241 #define DIALOG7212_HP_R_AMP_GAIN_STATUS_MASK (0x3F) 242 #define DIALOG7212_HP_R_AMP_GAIN_STATUS_SHIFT (0U) 243 #define DIALOG7212_HP_R_AMP_GAIN_STATUS(x) ((x) << DIALOG7212_HP_R_AMP_GAIN_STATUS_SHIFT) 244 245 /* DIALOG7212_LINE_GAIN_STATUS 0x10*/ 246 #define DIALOG7212_LINE_AMP_GAIN_STATUS_MASK (0x3F) 247 #define DIALOG7212_LINE_AMP_GAIN_STATUS_SHIFT (0U) 248 #define DIALOG7212_LINE_AMP_GAIN_STATUS(x) ((x) << DIALOG7212_LINE_AMP_GAIN_STATUS_SHIFT) 249 250 /***************System Initialisation Registers************/ 251 252 /* DIALOG7212_CIF_CTRL 0x1d */ 253 #define DIALOG7212_CIF_CTRL_CIF_REG_SOFT_RESET_MASK (1U << 7) 254 #define DIALOG7212_CIF_CTRL_CIF_I2C_WRITE_MODE_MASK (1U << 0) 255 256 /* DIALOG7212_DIG_ROUTING_DAI 0x21 */ 257 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_MASK (0x30) 258 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT (4U) 259 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_ADC_LEFT (0U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT) 260 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_ADC_RIGHT (1U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT) 261 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_DAI_LEFT (2U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT) 262 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_DAI_RIGHT (3U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT) 263 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_MASK (0x03) 264 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_SHIFT (4U) 265 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_ADC_LEFT (0U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT) 266 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_ADC_RIGHT (1U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT) 267 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_DAI_LEFT (2U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT) 268 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_DAI_RIGHT (3U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT) 269 270 /* DIALOG7212_SR 0x22 */ 271 #define DIALOG7212_SR_MASK (0x0F) 272 #define DIALOG7212_SR_SHIFT (0U) 273 #define DIALOG7212_SR_8KHZ (1U << DIALOG7212_SR_SHIFT) 274 #define DIALOG7212_SR_11_025KHZ (2U << DIALOG7212_SR_SHIFT) 275 #define DIALOG7212_SR_12KHZ (3U << DIALOG7212_SR_SHIFT) 276 #define DIALOG7212_SR_16KHZ (5U << DIALOG7212_SR_SHIFT) 277 #define DIALOG7212_SR_22KHZ (6U << DIALOG7212_SR_SHIFT) 278 #define DIALOG7212_SR_24KHZ (7U << DIALOG7212_SR_SHIFT) 279 #define DIALOG7212_SR_32KHZ (9U << DIALOG7212_SR_SHIFT) 280 #define DIALOG7212_SR_44_1KHZ (10U << DIALOG7212_SR_SHIFT) 281 #define DIALOG7212_SR_48KHZ (11U << DIALOG7212_SR_SHIFT) 282 #define DIALOG7212_SR_88_2KHZ (14U << DIALOG7212_SR_SHIFT) 283 #define DIALOG7212_SR_96KHZ (15U << DIALOG7212_SR_SHIFT) 284 285 /* DIALOG7212_REFERENCES 0x23 */ 286 #define DIALOG7212_REFERENCES_VMID_FAST_DISCHARGE_MASK (1U << 5) 287 #define DIALOG7212_REFERENCES_VMID_FAST_CHARGE_MASK (1U << 4) 288 #define DIALOG7212_REFERENCES_BIAS_EN_MASK (1U << 3) 289 290 /* DIALOG7212_PLL_FRAC_TOP 0x24 */ 291 #define DIALOG7212_PLL_FBDIV_FRAC_TOP_MASK (0x1F) 292 #define DIALOG7212_PLL_FBDIV_FRAC_TOP_SHIFT (0U) 293 #define DIALOG7212_PLL_FBDIV_FRAC_TOP(x) ((x) << DIALOG7212_PLL_FBDIV_FRAC_TOP_SHIFT) 294 295 /* DIALOG7212_PLL_FRAC_BOT 0x25 */ 296 #define DIALOG7212_PLL_FBDIV_FRAC_BOT_MASK (0xFF) 297 #define DIALOG7212_PLL_FBDIV_FRAC_BOT_SHIFT (0U) 298 #define DIALOG7212_PLL_FBDIV_FRAC_BOT(x) ((x) << DIALOG7212_PLL_FBDIV_FRAC_BOT_SHIFT) 299 300 /* DIALOG7212_PLL_INTEGER 0x26 */ 301 #define DIALOG7212_PLL_FBDIV_INTEGER_MASK (0xFF) 302 #define DIALOG7212_PLL_FBDIV_INTEGER_SHIFT (0U) 303 #define DIALOG7212_PLL_FBDIV_INTEGER_BOT(x) ((x) << DIALOG7212_PLL_FBDIV_INTEGER_SHIFT) 304 305 /* DIALOG7212_PLL_CTRL 0x27 */ 306 #define DIALOG7212_PLL_EN_MASK (1U << 7) 307 #define DIALOG7212_PLL_SRM_EN_MASK (1U << 6) 308 #define DIALOG7212_PLL_32K_MODE_MASK (1U << 5) 309 #define DIALOG7212_PLL_MCLKSQR_EN_MASK (1U << 4) 310 #define DIALOG7212_PLL_INDIV_MASK (0x06) 311 #define DIALOG7212_PLL_INDIV_SHIFT (2U) 312 #define DIALOG7212_PLL_INDIV_2_10MHZ (0U << DIALOG7212_PLL_INDIV_SHIFT) 313 #define DIALOG7212_PLL_INDIV_10_20MHZ (1U << DIALOG7212_PLL_INDIV_SHIFT) 314 #define DIALOG7212_PLL_INDIV_20_40MHZ (2U << DIALOG7212_PLL_INDIV_SHIFT) 315 #define DIALOG7212_PLL_INDIV_40_80MHZ (3U << DIALOG7212_PLL_INDIV_SHIFT) 316 317 /* DIALOG7212_DAI_CLK_MODE 0x28 */ 318 #define DIALOG7212_DAI_CLK_EN_MASK (1U << 7) 319 #define DIALOG7212_DAI_WCLK_POL_MASK (1U << 3) 320 #define DIALOG7212_DAI_CLK_POL_MASK (1U << 2) 321 #define DIALOG7212_DAI_BCLKS_PER_WCLK_MASK (0x03) 322 #define DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT (0U) 323 #define DIALOG7212_DAI_BCLKS_PER_WCLK_BCLK32 (0U << DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT) 324 #define DIALOG7212_DAI_BCLKS_PER_WCLK_BCLK64 (1U << DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT) 325 #define DIALOG7212_DAI_BCLKS_PER_WCLK_BCLK128 (2U << DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT) 326 #define DIALOG7212_DAI_BCLKS_PER_WCLK_BCLK256 (3U << DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT) 327 328 /* DIALOG7212_DAI_CTRL 0x29 */ 329 #define DIALOG7212_DAI_EN_MASK (1U << 7) 330 #define DIALOG7212_DAI_OE_MASK (1U << 6) 331 #define DIALOG7212_DAI_TDM_MODE_EN_MASK (1U << 5) 332 #define DIALOG7212_DAI_MONO_MODE_MASK (1U << 4) 333 #define DIALOG7212_DAI_WORD_LENGTH_MASK (0x06) 334 #define DIALOG7212_DAI_WORD_LENGTH_SHIFT (2U) 335 #define DIALOG7212_DAI_WORD_LENGTH_16B (0U << DIALOG7212_DAI_WORD_LENGTH_SHIFT) 336 #define DIALOG7212_DAI_WORD_LENGTH_20B (1U << DIALOG7212_DAI_WORD_LENGTH_SHIFT) 337 #define DIALOG7212_DAI_WORD_LENGTH_24B (2U << DIALOG7212_DAI_WORD_LENGTH_SHIFT) 338 #define DIALOG7212_DAI_WORD_LENGTH_32B (3U << DIALOG7212_DAI_WORD_LENGTH_SHIFT) 339 #define DIALOG7212_DAI_FORMAT_MASK (0x03) 340 #define DIALOG7212_DAI_FORMAT_SHIFT (0U) 341 #define DIALOG7212_DAI_FORMAT_I2S_MODE (0U << DIALOG7212_DAI_FORMAT_SHIFT) 342 #define DIALOG7212_DAI_FORMAT_LEFT_JUSTIFIED (1U << DIALOG7212_DAI_FORMAT_SHIFT) 343 #define DIALOG7212_DAI_FORMAT_RIGTH_JUSTIFIED (2U << DIALOG7212_DAI_FORMAT_SHIFT) 344 #define DIALOG7212_DAI_FORMAT_DSP_MODE (3U << DIALOG7212_DAI_FORMAT_SHIFT) 345 346 /* DIALOG7212_DIG_ROUTING_DAC 0x2A */ 347 #define DIALOG7212_DIG_ROUTING_DAC_R_MONO_MASK (1U << 7) 348 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_MASK (0x30) 349 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT (4U) 350 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_ADC_L_OUTPUT (0U << DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT) 351 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_ADC_R_OUTPUT (1U << DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT) 352 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_DAC_L (2U << DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT) 353 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_DAC_R (3U << DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT) 354 #define DIALOG7212_DIG_ROUTING_DAC_L_MONO_MASK (1U << 3) 355 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_MASK (0x03) 356 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT (0U) 357 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_ADC_L_OUTPUT (0U << DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT) 358 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_ADC_R_OUTPUT (1U << DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT) 359 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_DAC_L (2U << DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT) 360 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_DAC_R (3U << DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT) 361 362 /* DIALOG7212_ALC_CTRL1 0x2B */ 363 #define DIALOG7212_ALC_R_EN_MASK (1U << 7) 364 #define DIALOG7212_ALC_CALIB_OVERFLOW_MASK (1U << 5) 365 #define DIALOG7212_ALC_AUTO_CALIB_EN_MASK (1U << 4) 366 #define DIALOG7212_ALC_L_EN_MASK (1U << 3) 367 #define DIALOG7212_ALC_CALIB_MODE_MASK (1U << 2) 368 #define DIALOG7212_ALC_SYNC_MODE_MASK (1U << 1) 369 #define DIALOG7212_ALC_OFFSET_EN_MASK (1U << 0) 370 371 /************Input Gain/ Select Filter Registers**********/ 372 /* DIALOG7212_AUX_L_GAIN 0x30 */ 373 #define DIALOG7212_AUX_L_AMP_GAIN_MASK (0x3F) 374 #define DIALOG7212_AUX_L_AMP_GAIN_SHIFT (0U) 375 #define DIALOG7212_AUX_L_AMP_GAIN(x) ((x) << DIALOG7212_AUX_L_AMP_GAIN_SHIFT) 376 377 /* DIALOG7212_AUX_R_GAIN 0x31 */ 378 #define DIALOG7212_AUX_R_AMP_GAIN_MASK (0x3F) 379 #define DIALOG7212_AUX_R_AMP_GAIN_SHIFT (0U) 380 #define DIALOG7212_AUX_R_AMP_GAIN(x) ((x) << DIALOG7212_AUX_R_AMP_GAIN_SHIFT) 381 382 /* DIALOG7212_MIXIN_L_SELECT 0x32 */ 383 #define DIALOG7212_MIXIN_L_SELECT_DMIC_L_EN_MASK (1U << 7) 384 #define DIALOG7212_MIXIN_L_SELECT_MIXING_R_MASK (1U << 3) 385 #define DIALOG7212_MIXIN_L_SELECT_MIC2_SEL_MASK (1U << 2) 386 #define DIALOG7212_MIXIN_L_SELECT_MIC1_SEL_MASK (1U << 1) 387 #define DIALOG7212_MIXIN_L_SELECT_AUX_L_SEL_MASK (1U << 0) 388 389 /* DIALOG7212_MIXIN_R_SELECT 0x33 */ 390 #define DIALOG7212_MIXIN_R_SELECT_DMIC_R_EN_MASK (1U << 7) 391 #define DIALOG7212_MIXIN_R_SELECT_MIXING_L_MASK (1U << 3) 392 #define DIALOG7212_MIXIN_R_SELECT_MIC2_SEL_MASK (1U << 2) 393 #define DIALOG7212_MIXIN_R_SELECT_MIC1_SEL_MASK (1U << 1) 394 #define DIALOG7212_MIXIN_R_SELECT_AUX_R_SEL_MASK (1U << 0) 395 396 /* DIALOG7212_MIXIN_L_GAIN 0x34 */ 397 #define DIALOG7212_MIXIN_L_AMP_GAIN_MASK (0x0F) 398 #define DIALOG7212_MIXIN_L_AMP_GAIN_SHIFT (0U) 399 #define DIALOG7212_MIXIN_L_AMP_GAIN(x) ((x) << DIALOG7212_MIXIN_L_AMP_GAIN_SHIFT) 400 401 /* DIALOG7212_MIXIN_R_GAIN 0x35 */ 402 #define DIALOG7212_MIXIN_R_AMP_GAIN_MASK (0x0F) 403 #define DIALOG7212_MIXIN_R_AMP_GAIN_SHIFT (0U) 404 #define DIALOG7212_MIXIN_R_AMP_GAIN(x) ((x) << DIALOG7212_MIXIN_R_AMP_GAIN_SHIFT) 405 406 /* DIALOG7212_ADC_L_GAIN 0x36 */ 407 #define DIALOG7212_ADC_L_DIGITAL_GAIN_MASK (0x7F) 408 #define DIALOG7212_ADC_L_DIGITAL_GAIN_SHIFT (0U) 409 #define DIALOG7212_ADC_L_DIGITAL_GAIN(x) ((x) << DIALOG7212_ADC_L_DIGITAL_GAIN_SHIFT) 410 411 /* DIALOG7212_ADC_R_GAIN 0x37 */ 412 #define DIALOG7212_ADC_R_DIGITAL_GAIN_MASK (0x7F) 413 #define DIALOG7212_ADC_R_DIGITAL_GAIN_SHIFT (0U) 414 #define DIALOG7212_ADC_R_DIGITAL_GAIN(x) ((x) << DIALOG7212_ADC_R_DIGITAL_GAIN_SHIFT) 415 416 /* DIALOG7212_ADC_FILTERS1 0x38 */ 417 #define DIALOG7212_ADC_FILTERS1_ADC_HPF_EN_MASK (1U << 7) 418 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_MASK (0x30) 419 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT (5U) 420 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_2HZ (0U << DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT) 421 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_4HZ (1U << DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT) 422 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_8HZ (2U << DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT) 423 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_16HZ (3U << DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT) 424 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_EN_MASK (1U << 3) 425 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_MASK (0x07) 426 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT (0U) 427 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_2_5HZ (0U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT) 428 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_25HZ (1U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT) 429 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_50HZ (2U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT) 430 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_100HZ (3U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT) 431 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_150HZ (4U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT) 432 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_200HZ (5U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT) 433 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_300HZ (6U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT) 434 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_400HZ (7U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT) 435 436 /* DIALOG7212_MIC_1_GAIN 0x39 */ 437 #define DIALOG7212_MIC_1_AMP_GAIN_MASK (0x07) 438 #define DIALOG7212_MIC_1_AMP_GAIN_SHIFT (0U) 439 #define DIALOG7212_MIC_1_AMP_GAIN_N6DB (0U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT) 440 #define DIALOG7212_MIC_1_AMP_GAIN_0DB (1U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT) 441 #define DIALOG7212_MIC_1_AMP_GAIN_P6DB (2U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT) 442 #define DIALOG7212_MIC_1_AMP_GAIN_P12DB (3U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT) 443 #define DIALOG7212_MIC_1_AMP_GAIN_P18DB (4U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT) 444 #define DIALOG7212_MIC_1_AMP_GAIN_P24DB (5U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT) 445 #define DIALOG7212_MIC_1_AMP_GAIN_P30DB (6U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT) 446 #define DIALOG7212_MIC_1_AMP_GAIN_P36DB (7U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT) 447 448 /* DIALOG7212_MIC_2_GAIN 0x3A */ 449 #define DIALOG7212_MIC_2_AMP_GAIN_MASK (0x07) 450 #define DIALOG7212_MIC_2_AMP_GAIN_SHIFT (0U) 451 #define DIALOG7212_MIC_2_AMP_GAIN_N6DB (0U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT) 452 #define DIALOG7212_MIC_2_AMP_GAIN_0DB (1U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT) 453 #define DIALOG7212_MIC_2_AMP_GAIN_P6DB (2U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT) 454 #define DIALOG7212_MIC_2_AMP_GAIN_P12DB (3U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT) 455 #define DIALOG7212_MIC_2_AMP_GAIN_P18DB (4U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT) 456 #define DIALOG7212_MIC_2_AMP_GAIN_P24DB (5U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT) 457 #define DIALOG7212_MIC_2_AMP_GAIN_P30DB (6U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT) 458 #define DIALOG7212_MIC_2_AMP_GAIN_P36DB (7U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT) 459 460 /************Output Gain/ Select Filter Registers**********/ 461 /* DIALOG7212_DAC_FILTERS5 0x40 */ 462 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_EN_MASK (1U << 7) 463 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_MASK (0x07) 464 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT (4U) 465 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_1 (0U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT) 466 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_2 (1U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT) 467 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_4 (2U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT) 468 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_8 (3U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT) 469 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_16 (4U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT) 470 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_32 (5U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT) 471 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_64 (6U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT) 472 473 /* DIALOG7212_DAC_FILTERS2 0x41 */ 474 #define DIALOG7212_DAC_FILTERS2_EQ_BAND2_MASK (0xF0) 475 #define DIALOG7212_DAC_FILTERS2_EQ_BAND2_SHIFT (4U) 476 #define DIALOG7212_DAC_FILTERS2_EQ_BAND2(x) ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND2_SHIFT) 477 #define DIALOG7212_DAC_FILTERS2_EQ_BAND1_MASK (0x0F) 478 #define DIALOG7212_DAC_FILTERS2_EQ_BAND1_SHIFT (0U) 479 #define DIALOG7212_DAC_FILTERS2_EQ_BAND1(x) ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND1_SHIFT) 480 481 /* DIALOG7212_DAC_FILTERS3 0x42 */ 482 #define DIALOG7212_DAC_FILTERS3_EQ_BAND4_MASK (0xF0) 483 #define DIALOG7212_DAC_FILTERS3_EQ_BAND4_SHIFT (4U) 484 #define DIALOG7212_DAC_FILTERS3_EQ_BAND4(x) ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND4_SHIFT) 485 #define DIALOG7212_DAC_FILTERS3_EQ_BAND3_MASK (0x0F) 486 #define DIALOG7212_DAC_FILTERS3_EQ_BAND3_SHIFT (0U) 487 #define DIALOG7212_DAC_FILTERS3_EQ_BAND3(x) ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND3_SHIFT) 488 489 /* DIALOG7212_DAC_FILTERS4 0x43 */ 490 #define DIALOG7212_DAC_FILTERS4_EQ_EN_MASK (1U << 7) 491 #define DIALOG7212_DAC_FILTERS4_EQ_BAND5_MASK (0x0F) 492 #define DIALOG7212_DAC_FILTERS4_EQ_BAND5_SHIFT (0U) 493 #define DIALOG7212_DAC_FILTERS4_EQ_BAND5(x) ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND5_SHIFT) 494 495 /* DIALOG7212_DAC_FILTERS1 0x44 */ 496 #define DIALOG7212_DAC_FILTERS1_HPF_EN_MASK (1U << 7) 497 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_MASK (0x30) 498 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT (5U) 499 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_2HZ (0U << DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT) 500 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_4HZ (1U << DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT) 501 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_8HZ (2U << DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT) 502 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_16HZ (3U << DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT) 503 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_EN_MASK (1U << 3) 504 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_MASK (0x07) 505 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT (0U) 506 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_2_5HZ (0U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT) 507 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_25HZ (1U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT) 508 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_50HZ (2U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT) 509 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_100HZ (3U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT) 510 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_150HZ (4U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT) 511 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_200HZ (5U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT) 512 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_300HZ (6U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT) 513 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_400HZ (7U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT) 514 515 /* DIALOG7212_DAC_L_GAIN 0x45 */ 516 #define DIALOG7212_DAC_L_DIGITAL_GAIN_MASK (0x7F) 517 #define DIALOG7212_DAC_L_DIGITAL_GAIN_SHIFT (0U) 518 #define DIALOG7212_DAC_L_DIGITAL_GAIN(x) ((x) << DIALOG7212_DAC_L_DIGITAL_GAIN_SHIFT) 519 520 /* DIALOG7212_DAC_R_GAIN 0x46 */ 521 #define DIALOG7212_DAC_R_DIGITAL_GAIN_MASK (0x7F) 522 #define DIALOG7212_DAC_R_DIGITAL_GAIN_SHIFT (0U) 523 #define DIALOG7212_DAC_R_DIGITAL_GAIN(x) ((x) << DIALOG7212_DAC_R_DIGITAL_GAIN_SHIFT) 524 525 /* DIALOG7212_CP_CTRL 0x47 */ 526 #define DIALOG7212_CP_CTRL_EN_MASK (1U << 7) 527 #define DIALOG7212_CP_CTRL_SMALL_SWIT_CH_FREQ_EN_MASK (1U << 6) 528 #define DIALOG7212_CP_CTRL_MCHANGE_MASK (0x30) 529 #define DIALOG7212_CP_CTRL_MCHANGE_SHIFT (4U) 530 #define DIALOG7212_CP_CTRL_MCHANGE_CP_MOD (0U << DIALOG7212_CP_CTRL_MCHANGE_SHIFT) 531 #define DIALOG7212_CP_CTRL_MCHANGE_PGA (1U << DIALOG7212_CP_CTRL_MCHANGE_SHIFT) 532 #define DIALOG7212_CP_CTRL_MCHANGE_DAC (2U << DIALOG7212_CP_CTRL_MCHANGE_SHIFT) 533 #define DIALOG7212_CP_CTRL_MCHANGE_OUTPUT (3U << DIALOG7212_CP_CTRL_MCHANGE_SHIFT) 534 #define DIALOG7212_CP_CTRL_MOD_MASK (0x0C) 535 #define DIALOG7212_CP_CTRL_MOD_SHIFT (2U) 536 #define DIALOG7212_CP_CTRL_MOD_STANDBY (0U << DIALOG7212_CP_CTRL_MOD_SHIFT) 537 #define DIALOG7212_CP_CTRL_MOD_CPVDD_2 (2U << DIALOG7212_CP_CTRL_MOD_SHIFT) 538 #define DIALOG7212_CP_CTRL_MOD_CPVDD_1 (3U << DIALOG7212_CP_CTRL_MOD_SHIFT) 539 #define DIALOG7212_CP_CTRL_ANALOG_VLL_MASK (0x03) 540 #define DIALOG7212_CP_CTRL_ANALOG_VLL_SHIFT (0U) 541 #define DIALOG7212_CP_CTRL_ANALOG_VLL_NO_FEEDBACK (0U << DIALOG7212_CP_CTRL_ANALOG_VLL_SHIFT) 542 #define DIALOG7212_CP_CTRL_ANALOG_VLL_LV_BOOSTS_CP (1U << DIALOG7212_CP_CTRL_ANALOG_VLL_SHIFT) 543 #define DIALOG7212_CP_CTRL_ANALOG_VLL_LV_RESTART_CP (2U << DIALOG7212_CP_CTRL_ANALOG_VLL_SHIFT) 544 545 /* DIALOG7212_HP_L_GAIN 0x48 */ 546 #define DIALOG7212_HP_L_AMP_GAIN_MASK (0x3F) 547 #define DIALOG7212_HP_L_AMP_GAIN_SHIFT (0U) 548 #define DIALOG7212_HP_L_AMP_GAIN(x) ((x) << DIALOG7212_HP_L_AMP_GAIN_SHIFT) 549 550 /* DIALOG7212_HP_R_GAIN 0x49 */ 551 #define DIALOG7212_HP_R_AMP_GAIN_MASK (0x3F) 552 #define DIALOG7212_HP_R_AMP_GAIN_SHIFT (0U) 553 #define DIALOG7212_HP_R_AMP_GAIN(x) ((x) << DIALOG7212_HP_R_AMP_GAIN_SHIFT) 554 555 /* DIALOG7212_LINE_GAIN 0x4A */ 556 #define DIALOG7212_LINE_AMP_GAIN_MASK (0x3F) 557 #define DIALOG7212_LINE_AMP_GAIN_SHIFT (0U) 558 #define DIALOG7212_LINE_AMP_GAIN(x) ((x) << DIALOG7212_LINE_AMP_GAIN_SHIFT) 559 560 /* DIALOG7212_MIXOUT_L_SELECT 0x4B */ 561 #define DIALOG7212_MIXOUT_L_SELECT_MIXIN_R_INV_MASK (1U << 6) 562 #define DIALOG7212_MIXOUT_L_SELECT_MIXIN_L_INV_MASK (1U << 5) 563 #define DIALOG7212_MIXOUT_L_SELECT_AUX_L_INV_MASK (1U << 4) 564 #define DIALOG7212_MIXOUT_L_SELECT_DAC_L_MASK (1U << 3) 565 #define DIALOG7212_MIXOUT_L_SELECT_MIXIN_R_MASK (1U << 2) 566 #define DIALOG7212_MIXOUT_L_SELECT_MIXIN_L_MASK (1U << 1) 567 #define DIALOG7212_MIXOUT_L_SELECT_AUX_L_MASK (1U << 0) 568 569 /* DIALOG7212_MIXOUT_R_SELECT 0x4C */ 570 #define DIALOG7212_MIXOUT_R_SELECT_MIXIN_L_INV_MASK (1U << 6) 571 #define DIALOG7212_MIXOUT_R_SELECT_MIXIN_R_INV_MASK (1U << 5) 572 #define DIALOG7212_MIXOUT_R_SELECT_AUX_R_INV_MASK (1U << 4) 573 #define DIALOG7212_MIXOUT_R_SELECT_DAC_R_MASK (1U << 3) 574 #define DIALOG7212_MIXOUT_R_SELECT_MIXIN_L_MASK (1U << 2) 575 #define DIALOG7212_MIXOUT_R_SELECT_MIXIN_R_MASK (1U << 1) 576 #define DIALOG7212_MIXOUT_R_SELECT_AUX_R_MASK (1U << 0) 577 578 /**************System Controller Registers(1)*************/ 579 /* DIALOG7212_SYSTEM_MODES_INPUT 0x50 */ 580 #define DIALOG7212_SYSTEM_MODES_INPUT_ADC_R_MASK (1U << 7) 581 #define DIALOG7212_SYSTEM_MODES_INPUT_ADC_L_MASK (1U << 6) 582 #define DIALOG7212_SYSTEM_MODES_INPUT_MIXIN_R_MASK (1U << 5) 583 #define DIALOG7212_SYSTEM_MODES_INPUT_MIXIN_L_MASK (1U << 4) 584 #define DIALOG7212_SYSTEM_MODES_INPUT_MIC_2_MASK (1U << 3) 585 #define DIALOG7212_SYSTEM_MODES_INPUT_MIC_1_MASK (1U << 2) 586 #define DIALOG7212_SYSTEM_MODES_INPUT_MIC_BIAS_MASK (1U << 1) 587 #define DIALOG7212_SYSTEM_MODES_INPUT_MODE_SUBMIT_MASK (1U << 0) 588 589 /* DIALOG7212_SYSTEM_MODES_OUTPUT 0x51 */ 590 #define DIALOG7212_SYSTEM_MODES_OUTPUT_DAC_R_MASK (1U << 7) 591 #define DIALOG7212_SYSTEM_MODES_OUTPUT_DAC_L_MASK (1U << 6) 592 #define DIALOG7212_SYSTEM_MODES_OUTPUT_HP_R_MASK (1U << 5) 593 #define DIALOG7212_SYSTEM_MODES_OUTPUT_HP_L_MASK (1U << 4) 594 #define DIALOG7212_SYSTEM_MODES_OUTPUT_LINE_MASK (1U << 3) 595 #define DIALOG7212_SYSTEM_MODES_OUTPUT_AUX_R_MASK (1U << 2) 596 #define DIALOG7212_SYSTEM_MODES_OUTPUT_AUX_L_MASK (1U << 1) 597 #define DIALOG7212_SYSTEM_MODES_OUTPUT_MODE_SUBMIT_MASK (1U << 0) 598 599 /*****************Control Registers(2)********************/ 600 /* DIALOG7212_AUX_L_CTRL 0x60 */ 601 #define DIALOG7212_AUX_L_CTRL_AMP_EN_MASK (1U << 7) 602 #define DIALOG7212_AUX_L_CTRL_AMP_MUTE_EN_MASK (1U << 6) 603 #define DIALOG7212_AUX_L_CTRL_AMP_RAMP_EN_MASK (1U << 5) 604 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_EN_MASK (1U << 4) 605 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_MASK (0x0C) 606 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT (2U) 607 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_INPUT_AUX_L (0U << DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT) 608 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_INPUT_AUX_L_IF (1U << DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT) 609 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_NO_ZC_POSSBLE (2U << DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT) 610 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_OUTPUT_AUX_L (3U << DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT) 611 612 /* DIALOG7212_AUX_R_CTRL 0x61 */ 613 #define DIALOG7212_AUX_R_CTRL_AMP_EN_MASK (1U << 7) 614 #define DIALOG7212_AUX_R_CTRL_AMP_MUTE_EN_MASK (1U << 6) 615 #define DIALOG7212_AUX_R_CTRL_AMP_RAMP_EN_MASK (1U << 5) 616 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_EN_MASK (1U << 4) 617 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_MASK (0x0C) 618 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT (2U) 619 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_INPUT_AUX_R (0U << DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT) 620 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_INPUT_AUX_R_IF (1U << DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT) 621 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_NO_ZC_POSSBLE (2U << DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT) 622 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_OUTPUT_AUX_R (3U << DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT) 623 624 /* DIALOG7212_MICBIAS_CTRL 0x62 */ 625 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_EN_MASK (1U << 7) 626 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_LEVEL_MASK (0x30) 627 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT (4U) 628 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_1_6V (0U << DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT) 629 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_2_2V (1U << DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT) 630 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_2_5V (2U << DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT) 631 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_3_0V (3U << DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT) 632 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_EN_MASK (1U << 3) 633 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_LEVEL_MASK (0x03) 634 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT (0U) 635 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_1_6V (0U << DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT) 636 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_2_2V (1U << DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT) 637 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_2_5V (2U << DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT) 638 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_3_0V (3U << DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT) 639 640 /* DIALOG7212_MIC_1_CTRL 0x63 */ 641 #define DIALOG7212_MIC_1_CTRL_AMP_EN_MASK (1U << 7) 642 #define DIALOG7212_MIC_1_CTRL_AMP_MUTE_EN_MASK (1U << 6) 643 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_MASK (0x0C) 644 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_SHIFT (2U) 645 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_DIFFERENTIAL (0U << DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_SHIFT) 646 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_MIC_1_P (1U << DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_SHIFT) 647 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_MIC_1_N (2U << DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_SHIFT) 648 649 /* DIALOG7212_MIC_2_CTRL 0x64 */ 650 #define DIALOG7212_MIC_2_CTRL_AMP_EN_MASK (1U << 7) 651 #define DIALOG7212_MIC_2_CTRL_AMP_MUTE_EN_MASK (1U << 6) 652 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_MASK (0x0C) 653 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_SHIFT (2U) 654 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_DIFFERENTIAL (0U << DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_SHIFT) 655 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_MIC_2_P (1U << DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_SHIFT) 656 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_MIC_2_N (2U << DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_SHIFT) 657 658 /* DIALOG7212_MIXIN_L_CTRL 0x65 */ 659 #define DIALOG7212_MIXIN_L_CTRL_AMP_EN_MASK (1U << 7) 660 #define DIALOG7212_MIXIN_L_CTRL_AMP_MUTE_EN_MASK (1U << 6) 661 #define DIALOG7212_MIXIN_L_CTRL_AMP_RAMP_EN_MASK (1U << 5) 662 #define DIALOG7212_MIXIN_L_CTRL_AMP_ZC_EN_MASK (1U << 4) 663 #define DIALOG7212_MIXIN_L_CTRL_AMP_MIX_EN_MASK (1U << 3) 664 665 /* DIALOG7212_MIXIN_R_CTRL 0x66 */ 666 #define DIALOG7212_MIXIN_R_CTRL_AMP_EN_MASK (1U << 7) 667 #define DIALOG7212_MIXIN_R_CTRL_AMP_MUTE_EN_MASK (1U << 6) 668 #define DIALOG7212_MIXIN_R_CTRL_AMP_RAMP_EN_MASK (1U << 5) 669 #define DIALOG7212_MIXIN_R_CTRL_AMP_ZC_EN_MASK (1U << 4) 670 #define DIALOG7212_MIXIN_R_CTRL_AMP_MIX_EN_MASK (1U << 3) 671 672 /* DIALOG7212_ADC_L_CTRL 0x67 */ 673 #define DIALOG7212_ADC_L_CTRL_ADC_EN_MASK (1U << 7) 674 #define DIALOG7212_ADC_L_CTRL_ADC_MUTE_EN_MASK (1U << 6) 675 #define DIALOG7212_ADC_L_CTRL_ADC_RAMP_EN_MASK (1U << 5) 676 677 /* DIALOG7212_ADC_R_CTRL 0x68 */ 678 #define DIALOG7212_ADC_R_CTRL_ADC_EN_MASK (1U << 7) 679 #define DIALOG7212_ADC_R_CTRL_ADC_MUTE_EN_MASK (1U << 6) 680 #define DIALOG7212_ADC_R_CTRL_ADC_RAMP_EN_MASK (1U << 5) 681 682 /* DIALOG7212_DAC_L_CTRL 0x69 */ 683 #define DIALOG7212_DAC_L_CTRL_ADC_EN_MASK (1U << 7) 684 #define DIALOG7212_DAC_L_CTRL_ADC_MUTE_EN_MASK (1U << 6) 685 #define DIALOG7212_DAC_L_CTRL_ADC_RAMP_EN_MASK (1U << 5) 686 687 /* DIALOG7212_DAC_R_CTRL 0x6A */ 688 #define DIALOG7212_DAC_R_CTRL_ADC_EN_MASK (1U << 7) 689 #define DIALOG7212_DAC_R_CTRL_ADC_MUTE_EN_MASK (1U << 6) 690 #define DIALOG7212_DAC_R_CTRL_ADC_RAMP_EN_MASK (1U << 5) 691 692 /* DIALOG7212_HP_L_CTRL 0x6B */ 693 #define DIALOG7212_HP_L_CTRL_AMP_EN_MASK (1U << 7) 694 #define DIALOG7212_HP_L_CTRL_AMP_MUTE_EN_MASK (1U << 6) 695 #define DIALOG7212_HP_L_CTRL_AMP_RAMP_EN_MASK (1U << 5) 696 #define DIALOG7212_HP_L_CTRL_AMP_ZC_EN_MASK (1U << 4) 697 #define DIALOG7212_HP_L_CTRL_AMP_OE_MASK (1U << 3) 698 #define DIALOG7212_HP_L_CTRL_AMP_MIN_GAIN_EN_MASK (1U << 2) 699 700 /* DIALOG7212_HP_R_CTRL 0x6C */ 701 #define DIALOG7212_HP_R_CTRL_AMP_EN_MASK (1U << 7) 702 #define DIALOG7212_HP_R_CTRL_AMP_MUTE_EN_MASK (1U << 6) 703 #define DIALOG7212_HP_R_CTRL_AMP_RAMP_EN_MASK (1U << 5) 704 #define DIALOG7212_HP_R_CTRL_AMP_ZC_EN_MASK (1U << 4) 705 #define DIALOG7212_HP_R_CTRL_AMP_OE_MASK (1U << 3) 706 #define DIALOG7212_HP_R_CTRL_AMP_MIN_GAIN_EN_MASK (1U << 2) 707 708 /* DIALOG7212_LINE_CTRL 0x6D */ 709 #define DIALOG7212_LINE_CTRL_AMP_EN_MASK (1U << 7) 710 #define DIALOG7212_LINE_CTRL_AMP_MUTE_EN_MASK (1U << 6) 711 #define DIALOG7212_LINE_CTRL_AMP_RAMP_EN_MASK (1U << 5) 712 #define DIALOG7212_LINE_CTRL_AMP_OE_MASK (1U << 3) 713 #define DIALOG7212_LINE_CTRL_AMP_MIN_GAIN_EN_MASK (1U << 2) 714 715 /* DIALOG7212_MIXOUT_L_CTRL 0x6E */ 716 #define DIALOG7212_MIXOUT_L_CTRL_AMP_EN_MASK (1U << 7) 717 #define DIALOG7212_MIXOUT_L_CTRL_AMP_SOFT_MIX_EN_MASK (1U << 4) 718 #define DIALOG7212_MIXOUT_L_CTRL_AMP_MIX_EN_MASK (1U << 3) 719 720 /* DIALOG7212_MIXOUT_R_CTRL 0x6F */ 721 #define DIALOG7212_MIXOUT_R_CTRL_AMP_EN_MASK (1U << 7) 722 #define DIALOG7212_MIXOUT_R_CTRL_AMP_SOFT_MIX_EN_MASK (1U << 4) 723 #define DIALOG7212_MIXOUT_R_CTRL_AMP_MIX_EN_MASK (1U << 3) 724 725 /*****************Configuration Registers*****************/ 726 /* DIALOG7212_LDO_CTRL 0x90 */ 727 #define DIALOG7212_LDO_CTRL_EN_MASK (1U << 7) 728 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_MASK (0x30) 729 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT (4U) 730 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_1_05V (0U << DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT) 731 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_1_10V (1U << DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT) 732 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_1_20V (2U << DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT) 733 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_1_40V (3U << DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT) 734 735 /* DIALOG7212_GAIN_RAMP_CTRL 0x92 */ 736 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_MASK (0x03) 737 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT (0U) 738 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_NR_DIV_8 (0U << DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT) 739 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_NR_DIV_16 (1U << DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT) 740 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_NR_MUL_16 (2U << DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT) 741 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_NR_MUL_32 (3U << DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT) 742 743 /* DIALOG7212_MIC_CONFIG 0x93 */ 744 #define DIALOG7212_MIC_CONFIG_DMIC_CLK_RATE_MASK (1U << 2) 745 #define DIALOG7212_MIC_CONFIG_DMIC_SAMPLEPHASE_MASK (1U << 1) 746 #define DIALOG7212_MIC_CONFIG_DMIC_DATA_SEL_MASK (1U << 0) 747 748 /* DIALOG7212_PC_COUNT 0x94 */ 749 #define DIALOG7212_PC_COUNT_RESYNC_MASK (1U << 1) 750 #define DIALOG7212_PC_COUNT_FREERU_MASK (1U << 0) 751 752 /* DIALOG7212_CP_VOL_THRESHOLD1 0x95 */ 753 #define DIALOG7212_CP_VOL_THRESHOLD1_VDD2_MASK (0x3F) 754 #define DIALOG7212_CP_VOL_THRESHOLD1_VDD2_SHIFT (0U) 755 #define DIALOG7212_CP_VOL_THRESHOLD1_VDD2(x) ((x) << DIALOG7212_CP_VOL_THRESHOLD1_VDD2_SHIFT) 756 757 /* DIALOG7212_CP_DELAY 0x96 */ 758 #define DIALOG7212_CP_DELAY_ON_OFF_MASK (0xC0) 759 #define DIALOG7212_CP_DELAY_ON_OFF_SHIFT (6U) 760 #define DIALOG7212_CP_DELAY_ON_OFF_LIMITER_ON (0U << DIALOG7212_CP_DELAY_ON_OFF_SHIFT) 761 #define DIALOG7212_CP_DELAY_ON_OFF_LIMITER_OFF (1U << DIALOG7212_CP_DELAY_ON_OFF_SHIFT) 762 #define DIALOG7212_CP_DELAY_ON_OFF_LIMITER_AUT (2U << DIALOG7212_CP_DELAY_ON_OFF_SHIFT) 763 #define DIALOG7212_CP_DELAY_TAU_DELAY_MASK (0x38) 764 #define DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT (3U) 765 #define DIALOG7212_CP_DELAY_TAU_DELAY_0MS (0U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT) 766 #define DIALOG7212_CP_DELAY_TAU_DELAY_2MS (1U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT) 767 #define DIALOG7212_CP_DELAY_TAU_DELAY_4MS (2U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT) 768 #define DIALOG7212_CP_DELAY_TAU_DELAY_16MS (3U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT) 769 #define DIALOG7212_CP_DELAY_TAU_DELAY_64MS (4U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT) 770 #define DIALOG7212_CP_DELAY_TAU_DELAY_128MS (5U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT) 771 #define DIALOG7212_CP_DELAY_TAU_DELAY_256MS (6U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT) 772 #define DIALOG7212_CP_DELAY_TAU_DELAY_512MS (7U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT) 773 #define DIALOG7212_CP_DELAY_FCONTROL_MASK (0x07) 774 #define DIALOG7212_CP_DELAY_FCONTROL_SHIFT (0U) 775 #define DIALOG7212_CP_DELAY_FCONTROL_1MHZ (0U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT) 776 #define DIALOG7212_CP_DELAY_FCONTROL_500KHZ (1U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT) 777 #define DIALOG7212_CP_DELAY_FCONTROL_250KHZ (2U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT) 778 #define DIALOG7212_CP_DELAY_FCONTROL_125KHZ (3U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT) 779 #define DIALOG7212_CP_DELAY_FCONTROL_63KHZ (4U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT) 780 #define DIALOG7212_CP_DELAY_FCONTROL_0HZ_OR_1MHZ (5U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT) 781 782 /* DIALOG7212_CP_DETECTOR 0x97 */ 783 #define DIALOG7212_CP_DETECTOR_DROP_MASK (0x03) 784 #define DIALOG7212_CP_DETECTOR_DROP_SHIFT (0U) 785 #define DIALOG7212_CP_DETECTOR_DROP_25MV (0U << DIALOG7212_CP_DETECTOR_DROP_SHIFT) 786 #define DIALOG7212_CP_DETECTOR_DROP_50MV (1U << DIALOG7212_CP_DETECTOR_DROP_SHIFT) 787 #define DIALOG7212_CP_DETECTOR_DROP_75MV (2U << DIALOG7212_CP_DETECTOR_DROP_SHIFT) 788 #define DIALOG7212_CP_DETECTOR_DROP_100MV (3U << DIALOG7212_CP_DETECTOR_DROP_SHIFT) 789 790 /* DIALOG7212_DAI_OFFSET 0x98 */ 791 #define DIALOG7212_DAI_OFFSET_MASK (0xFF) 792 #define DIALOG7212_DAI_OFFSET_SHIFT (0U) 793 #define DIALOG7212_DAI_OFFSET_VAL(x) (x << DIALOG7212_DAI_OFFSET_SHIFT) 794 795 /* DIALOG7212_DIG_CTRL 0x99 */ 796 #define DIALOG7212_DIG_CTRL_R_INV_MASK (1U << 7) 797 #define DIALOG7212_DIG_CTRL_L_INV_MASK (1U << 3) 798 799 /* DIALOG7212_ALC_CTRL2 0x9A */ 800 #define DIALOG7212_ALC_CTRL2_RELEASE_MASK (0xF0) 801 #define DIALOG7212_ALC_CTRL2_RELEASE_SHIFT (4U) 802 #define DIALOG7212_ALC_CTRL2_RELEASE(x) ((x) << DIALOG7212_ALC_CTRL2_RELEASE_SHIFT) 803 #define DIALOG7212_ALC_CTRL2_ATTACK_MASK (0x0F) 804 #define DIALOG7212_ALC_CTRL2_ATTACK_SHIFT (0U) 805 #define DIALOG7212_ALC_CTRL2_ATTACK(x) ((x) << DIALOG7212_ALC_CTRL2_RELEASE_SHIFT) 806 807 /* DIALOG7212_ALC_CTRL3 0x9B */ 808 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_MASK (0xC0) 809 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_SHIFT (6U) 810 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_1DIV4 (0U << DIALOG7212_ALC_CTRL3_INTEG_RELEASE_SHIFT) 811 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_1DIV16 (1U << DIALOG7212_ALC_CTRL3_INTEG_RELEASE_SHIFT) 812 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_1DIV256 (2U << DIALOG7212_ALC_CTRL3_INTEG_RELEASE_SHIFT) 813 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_MASK (0x30) 814 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_SHIFT (4U) 815 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_1DIV4 (0U << DIALOG7212_ALC_CTRL3_INTEG_ATTACK_SHIFT) 816 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_1DIV16 (1U << DIALOG7212_ALC_CTRL3_INTEG_ATTACK_SHIFT) 817 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_1DIV256 (2U << DIALOG7212_ALC_CTRL3_INTEG_ATTACK_SHIFT) 818 #define DIALOG7212_ALC_CTRL3_HOLD_MASK (0x0F) 819 #define DIALOG7212_ALC_CTRL3_HOLD_SHIFT (0U) 820 #define DIALOG7212_ALC_CTRL3_HOLD(x) ((x) << DIALOG7212_ALC_CTRL3_HOLD_SHIFT) 821 822 /* DIALOG7212_ALC_NOISE 0x9C */ 823 #define DIALOG7212_ALC_NOISE_MASK (0x3F) 824 #define DIALOG7212_ALC_NOISE_SHIFT (0U) 825 #define DIALOG7212_ALC_NOISE_VAL(x) ((x) << DIALOG7212_ALC_NOISE_SHIFT) 826 827 /* DIALOG7212_ALC_TARGET_MIN 0x9D */ 828 #define DIALOG7212_ALC_TARGET_MIN_THRESHOLD_MIN_MASK (0x3F) 829 #define DIALOG7212_ALC_TARGET_MIN_THRESHOLD_MIN_SHIFT (0U) 830 #define DIALOG7212_ALC_TARGET_MIN_THRESHOLD_MIN(x) ((x) << DIALOG7212_ALC_TARGET_MIN_THRESHOLD_MIN_SHIFT) 831 832 /* DIALOG7212_ALC_TARGET_MAX 0x9E */ 833 #define DIALOG7212_ALC_TARGET_MAX_THRESHOLD_MAX_MASK (0x3F) 834 #define DIALOG7212_ALC_TARGET_MAX_THRESHOLD_MAX_SHIFT (0U) 835 #define DIALOG7212_ALC_TARGET_MAX_THRESHOLD_MAX(x) ((x) << DIALOG7212_ALC_TARGET_MAX_THRESHOLD_MIN_SHIFT) 836 837 /* DIALOG7212_ALC_GAIN_LIMITS 0x9F */ 838 #define DIALOG7212_ALC_GAIN_LIMITS_GAIN_MAX_MASK (0xF0) 839 #define DIALOG7212_ALC_GAIN_LIMITS_GAIN_MAX_SHIFT (4U) 840 #define DIALOG7212_ALC_GAIN_LIMITS_GAIN_MAX(x) ((x) << DIALOG7212_ALC_GAIN_LIMITS_GAIN_MAX_SHIFT) 841 #define DIALOG7212_ALC_GAIN_LIMITS_ATTEN_MAX_MASK (0x0F) 842 #define DIALOG7212_ALC_GAIN_LIMITS_ATTEN_MAX_SHIFT (0U) 843 #define DIALOG7212_ALC_GAIN_LIMITS_ATTEN_MAX(x) ((x) << DIALOG7212_ALC_GAIN_LIMITS_ATTEN_MAX_SHIFT) 844 845 /* DIALOG7212_ALC_ANA_GAIN_LIMITS 0xA0 */ 846 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_MASK (0x70) 847 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT (4U) 848 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_0DB (1U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT) 849 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_6DB (2U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT) 850 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_12DB (3U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT) 851 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_18DB (4U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT) 852 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_24DB (5U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT) 853 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_30DB (6U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT) 854 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_36DB (7U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT) 855 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_MASK (0x07) 856 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT (0U) 857 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_0DB (1U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT) 858 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_6DB (2U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT) 859 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_12DB (3U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT) 860 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_18DB (4U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT) 861 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_24DB (5U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT) 862 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_30DB (6U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT) 863 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_36DB (7U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT) 864 865 /* DIALOG7212_ALC_ANTICLIP_CTRL 0xA1 */ 866 #define DIALOG7212_ALC_ANTICLIP_CTRL_EN_MASK (1U << 7) 867 868 /* DIALOG7212_ALC_ANTICLIP_LEVEL 0xA2 */ 869 #define DIALOG7212_ALC_ANTICLIP_LEVEL_MASK (0x7F) 870 #define DIALOG7212_ALC_ANTICLIP_LEVEL_SHIFT (0U) 871 #define DIALOG7212_ALC_ANTICLIP_LEVEL_VAL(x) ((x) << DIALOG7212_ALC_ANTICLIP_LEVEL_SHIFT) 872 873 /* DIALOG7212_DAC_NG_SETUP_TIME 0xAF */ 874 #define DIALOG7212_DAC_NG_SETUP_TIME_RAMPDN_RATE_MASK (1U << 3) 875 #define DIALOG7212_DAC_NG_SETUP_TIME_RAMPUP_RATE_MASK (1U << 2) 876 #define DIALOG7212_DAC_NG_SETUP_TIME_MASK (0x03) 877 #define DIALOG7212_DAC_NG_SETUP_TIME_SHIFT (0U) 878 #define DIALOG7212_DAC_NG_SETUP_TIME_256 (1U << DIALOG7212_DAC_NG_SETUP_TIME_SHIFT) 879 #define DIALOG7212_DAC_NG_SETUP_TIME_512 (2U << DIALOG7212_DAC_NG_SETUP_TIME_SHIFT) 880 #define DIALOG7212_DAC_NG_SETUP_TIME_1024 (3U << DIALOG7212_DAC_NG_SETUP_TIME_SHIFT) 881 #define DIALOG7212_DAC_NG_SETUP_TIME_2048 (4U << DIALOG7212_DAC_NG_SETUP_TIME_SHIFT) 882 883 /* DIALOG7212_DAC_NG_OFF_THRESH 0xB0 */ 884 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_MASK (0x07) 885 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT (0U) 886 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N90DB (0U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT) 887 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N84DB (1U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT) 888 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N78DB (2U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT) 889 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N72DB (3U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT) 890 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N66DB (4U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT) 891 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N60DB (5U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT) 892 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N54DB (6U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT) 893 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N48DB (7U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT) 894 895 /* DIALOG7212_DAC_NG_ON_THRESH 0xB1 */ 896 #define DIALOG7212_DAC_NG_ON_THRESHOLD_MASK (0x07) 897 #define DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT (0U) 898 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N90DB (0U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT) 899 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N84DB (1U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT) 900 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N78DB (2U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT) 901 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N72DB (3U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT) 902 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N66DB (4U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT) 903 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N60DB (5U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT) 904 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N54DB (6U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT) 905 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N48DB (7U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT) 906 907 /* DIALOG7212_DAC_NG_CTRL 0xB2 */ 908 #define DIALOG7212_DAC_NG_CTRL_EN_MASK (1U << 7) 909 910 /*************Tone Generation & Beep Registers************/ 911 /* DIALOG7212_TONE_GEN_CFG1 0xB4 */ 912 #define DIALOG7212_TONE_GEN_CFG1_START_STOPN_MASK (1U << 7) 913 #define DIALOG7212_TONE_GEN_CFG1_DMTF_EN_MASK (1U << 4) 914 #define DIALOG7212_TONE_GEN_CFG1_DMTF_REG_MASK (0x0F) 915 #define DIALOG7212_TONE_GEN_CFG1_DMTF_REG_SHIFT (0U) 916 #define DIALOG7212_TONE_GEN_CFG1_DMTF_REG(x) ((x) << DIALOG7212_TONE_GEN_CFG1_DMTF_REG_SHIFT) 917 918 /* DIALOG7212_TONE_GEN_CFG2 0xB5 */ 919 #define DIALOG7212_TONE_GEN_CFG2_GAIN_MASK (0xF0) 920 #define DIALOG7212_TONE_GEN_CFG2_GAIN_SHIFT (4U) 921 #define DIALOG7212_TONE_GEN_CFG2_GAIN(x) ((x) << DIALOG7212_TONE_GEN_CFG2_GAIN_SHIFT) 922 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_MASK (0x03) 923 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT (0U) 924 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SUM__BOTH (0U << DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT) 925 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SWG1_ONLY (1U << DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT) 926 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SWG2_ONLY (2U << DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT) 927 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SUM_BOTH (3U << DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT) 928 929 /* DIALOG7212_TONE_GEN_CYCLES 0xB6 */ 930 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_MASK (0x07) 931 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT (0U) 932 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_1 (0U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT) 933 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_2 (1U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT) 934 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_4 (2U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT) 935 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_8 (3U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT) 936 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_16 (4U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT) 937 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_32 (5U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT) 938 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_INFINITE (6U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT) 939 940 /* DIALOG7212_TONE_GEN_FREQ1_L 0xB7 */ 941 #define DIALOG7212_TONE_GEN_FREQ1_L_MASK (0xFF) 942 #define DIALOG7212_TONE_GEN_FREQ1_L_SHIFT (0U) 943 #define DIALOG7212_TONE_GEN_FREQ1_L_VAL(x) ((x) << DIALOG7212_TONE_GEN_FREQ1_L_SHIFT) 944 945 /* DIALOG7212_TONE_GEN_FREQ1_U 0xB8 */ 946 #define DIALOG7212_TONE_GEN_FREQ1_U_MASK (0xFF) 947 #define DIALOG7212_TONE_GEN_FREQ1_U_SHIFT (0U) 948 #define DIALOG7212_TONE_GEN_FREQ1_U_VAL(x) ((x) << DIALOG7212_TONE_GEN_FREQ1_U_SHIFT) 949 950 /* DIALOG7212_TONE_GEN_FREQ2_L 0xB9 */ 951 #define DIALOG7212_TONE_GEN_FREQ2_L_MASK (0xFF) 952 #define DIALOG7212_TONE_GEN_FREQ2_L_SHIFT (0U) 953 #define DIALOG7212_TONE_GEN_FREQ2_L_VAL(x) ((x) << DIALOG7212_TONE_GEN_FREQ2_L_SHIFT) 954 955 /* DIALOG7212_TONE_GEN_FREQ2_U 0xBA */ 956 #define DIALOG7212_TONE_GEN_FREQ2_U_MASK (0xFF) 957 #define DIALOG7212_TONE_GEN_FREQ2_U_SHIFT (0U) 958 #define DIALOG7212_TONE_GEN_FREQ2_U_VAL(x) ((x) << DIALOG7212_TONE_GEN_FREQ2_U_SHIFT) 959 960 /* DIALOG7212_TONE_GEN_ON_PER 0xBB */ 961 #define DIALOG7212_TONE_GEN_ON_PER_BEEP_ON_PER_MASK (0x3F) 962 #define DIALOG7212_TONE_GEN_ON_PER_BEEP_ON_PER_SHIFT (0U) 963 #define DIALOG7212_TONE_GEN_ON_PER_BEEP_ON_PER(x) ((x) << DIALOG7212_TONE_GEN_ON_PER_BEEP_ON_PER_SHIFT) 964 965 /* DIALOG7212_TONE_GEN_OFF_PER 0xBC */ 966 #define DIALOG7212_TONE_GEN_OFF_PER_BEEP_OFF_PER_MASK (0x3F) 967 #define DIALOG7212_TONE_GEN_OFF_PER_BEEP_OFF_PER_SHIFT (0U) 968 #define DIALOG7212_TONE_GEN_OFF_PER_BEEP_OFF_PER(x) ((x) << DIALOG7212_TONE_GEN_OFF_PER_BEEP_OFF_PER_SHIFT) 969 970 /*************System Controller Registers(2)*************/ 971 /* DIALOG7212_SYSTEM_STATUS 0xE0 */ 972 #define DIALOG7212_SYSTEM_STATUS_SC2_BUSY_MASK (1U << 1) 973 #define DIALOG7212_SYSTEM_STATUS_SC1_BUSY_MASK (1U << 0) 974 975 /* DIALOG7212_SYSTEM_ACTIVE 0xFD */ 976 #define DIALOG7212_SYSTEM_ACTIVE_MASK (1U << 0) 977 978 /*! @brief da7212 volume setting range */ 979 #define DA7212_HEADPHONE_MAX_VOLUME_VALUE 0x3FU 980 981 /*! @brief DA7212 input source select */ 982 typedef enum _da7212_Input 983 { 984 kDA7212_Input_AUX = 0x0, /*!< Input from AUX */ 985 kDA7212_Input_MIC1_Dig, /*!< Input from MIC1 Digital */ 986 kDA7212_Input_MIC1_An, /*!< Input from Mic1 Analog */ 987 kDA7212_Input_MIC2, /*!< Input from MIC2 */ 988 kDA7212_Input_MAX 989 } da7212_Input_t; 990 991 /*! @brief da7212 play channel */ 992 enum _da7212_play_channel 993 { 994 kDA7212_HeadphoneLeft = 1U, /*!< headphone left */ 995 kDA7212_HeadphoneRight = 2U, /*!< headphone right */ 996 kDA7212_Speaker = 4U, /*!< speaker channel */ 997 }; 998 999 /*! @brief DA7212 output device select */ 1000 typedef enum _da7212_Output 1001 { 1002 kDA7212_Output_HP = 0x0, /*!< Output to headphone */ 1003 kDA7212_Output_SP, /*!< Output to speaker */ 1004 kDA7212_Output_MAX 1005 } da7212_Output_t; 1006 1007 /*! @brief DA7212 module */ 1008 enum _da7212_module 1009 { 1010 kDA7212_ModuleADC, /*!< module ADC*/ 1011 kDA7212_ModuleDAC, /*!< module DAC */ 1012 kDA7212_ModuleHeadphone, /*!< module headphone */ 1013 kDA7212_ModuleSpeaker, /*!< module speaker */ 1014 }; 1015 1016 /*! @brief DA7212 functionality */ 1017 typedef enum _da7212_dac_source 1018 { 1019 kDA7212_DACSourceADC = 0x0U, /*!< DAC source from ADC */ 1020 kDA7212_DACSourceInputStream = 0x3U /*!< DAC source from */ 1021 } da7212_dac_source_t; 1022 1023 /*! @brief DA7212 volume */ 1024 typedef enum _da7212_volume 1025 { 1026 kDA7212_DACGainMute = 0x7, /*!< Mute DAC */ 1027 kDA7212_DACGainM72DB = 0x17, /*!< DAC volume -72db */ 1028 kDA7212_DACGainM60DB = 0x1F, /*!< DAC volume -60db */ 1029 kDA7212_DACGainM54DB = 0x27, /*!< DAC volume -54db */ 1030 kDA7212_DACGainM48DB = 0x2F, /*!< DAC volume -48db */ 1031 kDA7212_DACGainM42DB = 0x37, /*!< DAC volume -42db */ 1032 kDA7212_DACGainM36DB = 0x3F, /*!< DAC volume -36db */ 1033 kDA7212_DACGainM30DB = 0x47, /*!< DAC volume -30db */ 1034 kDA7212_DACGainM24DB = 0x4F, /*!< DAC volume -24db */ 1035 kDA7212_DACGainM18DB = 0x57, /*!< DAC volume -18db */ 1036 kDA7212_DACGainM12DB = 0x5F, /*!< DAC volume -12db */ 1037 kDA7212_DACGainM6DB = 0x67, /*!< DAC volume -6bb */ 1038 kDA7212_DACGain0DB = 0x6F, /*!< DAC volume +0db */ 1039 kDA7212_DACGain6DB = 0x77, /*!< DAC volume +6db */ 1040 kDA7212_DACGain12DB = 0x7F /*!< DAC volume +12db */ 1041 } da7212_volume_t; 1042 1043 /*! 1044 * @brief The audio data transfer protocol choice. 1045 */ 1046 typedef enum _da7212_protocol 1047 { 1048 kDA7212_BusI2S = 0x0, /*!< I2S Type */ 1049 kDA7212_BusLeftJustified, /*!< Left justified */ 1050 kDA7212_BusRightJustified, /*!< Right Justified */ 1051 kDA7212_BusDSPMode, /*!< DSP mode */ 1052 } da7212_protocol_t; 1053 1054 /*! @brief da7212 system clock source */ 1055 typedef enum _da7212_sys_clk_source 1056 { 1057 kDA7212_SysClkSourceMCLK = 0U, /*!< da7212 system clock soure from MCLK */ 1058 kDA7212_SysClkSourcePLL = 1U << 14, /*!< da7212 system clock soure from pLL */ 1059 } da7212_sys_clk_source_t; 1060 1061 /*! @brief DA7212 pll clock source */ 1062 typedef enum _da7212_pll_clk_source 1063 { 1064 kDA7212_PLLClkSourceMCLK = 0U, /*!< DA7212 PLL clock source from MCLK */ 1065 } da7212_pll_clk_source_t; 1066 1067 /*! @brief DA7212 output clock frequency */ 1068 typedef enum _da7212_pll_out_clk 1069 { 1070 kDA7212_PLLOutputClk11289600 = 11289600U, /*!< output 112896000U */ 1071 kDA7212_PLLOutputClk12288000 = 12288000U, /*!< output 12288000U */ 1072 } da7212_pll_out_clk_t; 1073 1074 /*!@brief master mode bits per frame */ 1075 typedef enum _da7212_master_bits 1076 { 1077 kDA7212_MasterBits32PerFrame = 0U, /*!< master mode bits32 per frame */ 1078 kDA7212_MasterBits64PerFrame = 1U, /*!< master mode bits64 per frame */ 1079 kDA7212_MasterBits128PerFrame = 2U, /*!< master mode bits128 per frame */ 1080 kDA7212_MasterBits256PerFrame = 3U, /*!< master mode bits256 per frame */ 1081 } da7212_master_bits_t; 1082 1083 /*! @brief da7212 pll configuration */ 1084 typedef struct _da7212_pll_config 1085 { 1086 da7212_pll_clk_source_t source; /*!< pll reference clock source */ 1087 uint32_t refClock_HZ; /*!< pll reference clock frequency */ 1088 da7212_pll_out_clk_t outputClock_HZ; /*!< pll output clock frequency */ 1089 } da7212_pll_config_t; 1090 1091 /*! @brief da7212 audio format */ 1092 typedef struct _da7212_audio_format 1093 { 1094 uint32_t mclk_HZ; /*!< master clock frequency */ 1095 uint32_t sampleRate; /*!< sample rate */ 1096 uint32_t bitWidth; /*!< bit width */ 1097 bool isBclkInvert; /*!< bit clock intervet */ 1098 } da7212_audio_format_t; 1099 1100 /*! @brief DA7212 configure structure */ 1101 typedef struct da7212_config 1102 { 1103 bool isMaster; /*!< If DA7212 is master, true means master, false means slave. */ 1104 da7212_protocol_t protocol; /*!< Audio bus format, can be I2S, LJ, RJ or DSP mode. */ 1105 da7212_dac_source_t dacSource; /*!< DA7212 data source. */ 1106 da7212_audio_format_t format; /*!< audio format */ 1107 uint8_t slaveAddress; /*!< device address */ 1108 codec_i2c_config_t i2cConfig; /*!< i2c configuration */ 1109 1110 da7212_sys_clk_source_t sysClkSource; /*!< system clock source */ 1111 da7212_pll_config_t *pll; /*!< pll configuration */ 1112 da7212_Input_t inputSource; /*!< AD212 input source*/ 1113 } da7212_config_t; 1114 1115 /*! @brief da7212 codec handler 1116 */ 1117 typedef struct _da7212_handle 1118 { 1119 da7212_config_t *config; /*!< da7212 config pointer */ 1120 uint8_t i2cHandle[DA7212_I2C_HANDLER_SIZE]; /*!< i2c handle */ 1121 } da7212_handle_t; 1122 1123 /******************************************************************************* 1124 * API 1125 ******************************************************************************/ 1126 1127 #if defined(__cplusplus) 1128 extern "C" { 1129 #endif 1130 1131 /*! 1132 * @brief DA7212 initialize function. 1133 * 1134 * @param handle DA7212 handle pointer. 1135 * @param codecConfig Codec configure structure. This parameter can be NULL, if NULL, set as default settings. 1136 * The default setting: 1137 * @code 1138 * sgtl_init_t codec_config 1139 * codec_config.route = kDA7212_RoutePlayback 1140 * codec_config.bus = kDA7212_BusI2S 1141 * codec_config.isMaster = false 1142 * @endcode 1143 */ 1144 status_t DA7212_Init(da7212_handle_t *handle, da7212_config_t *codecConfig); 1145 1146 /*! 1147 * @brief Set DA7212 audio format. 1148 * 1149 * @param handle DA7212 handle pointer. 1150 * @param masterClock_Hz Master clock frequency in Hz. If DA7212 is slave, use the frequency of master, if DA7212 as 1151 * master, it should be 1228000 while sample rate frequency is 8k/12K/16K/24K/32K/48K/96K, 11289600 whie sample rate is 1152 * 11.025K/22.05K/44.1K 1153 * @param sampleRate_Hz Sample rate frequency in Hz. 1154 * @param dataBits How many bits in a word of a audio frame, DA7212 only supports 16/20/24/32 bits. 1155 */ 1156 status_t DA7212_ConfigAudioFormat(da7212_handle_t *handle, 1157 uint32_t masterClock_Hz, 1158 uint32_t sampleRate_Hz, 1159 uint32_t dataBits); 1160 1161 /*! 1162 * @brief DA7212 set PLL configuration 1163 * This function will enable the GPIO1 FLL clock output function, so user can see 1164 * the generated fll output clock frequency from WM8904 GPIO1. 1165 * 1166 * @param handle DA7212 handler pointer. 1167 * @param config PLL configuration pointer. 1168 * 1169 */ 1170 status_t DA7212_SetPLLConfig(da7212_handle_t *handle, da7212_pll_config_t *config); 1171 1172 /*! 1173 * @brief Set DA7212 playback volume. 1174 * 1175 * @param handle DA7212 handle pointer. 1176 * @param volume The volume of playback. 1177 */ 1178 void DA7212_ChangeHPVolume(da7212_handle_t *handle, da7212_volume_t volume); 1179 1180 /*! 1181 * @brief Mute or unmute DA7212. 1182 * 1183 * @param handle DA7212 handle pointer. 1184 * @param isMuted True means mute, false means unmute. 1185 */ 1186 void DA7212_Mute(da7212_handle_t *handle, bool isMuted); 1187 1188 /*! 1189 * @brief Set the input data source of DA7212. 1190 * 1191 * @param handle DA7212 handle pointer. 1192 * @param DA7212_Input Input data source. 1193 */ 1194 void DA7212_ChangeInput(da7212_handle_t *handle, da7212_Input_t DA7212_Input); 1195 1196 /*! 1197 * @brief Set the output device of DA7212. 1198 * 1199 * @param handle DA7212 handle pointer. 1200 * @param DA7212_Output Output device of DA7212. 1201 */ 1202 void DA7212_ChangeOutput(da7212_handle_t *handle, da7212_Output_t DA7212_Output); 1203 1204 /*! 1205 * @brief Set module volume. 1206 * 1207 * @param handle DA7212 handle pointer. 1208 * @param channel shoule be a value of _da7212_channel. 1209 * @param volume volume range 0 - 0x3F mapped to range -57dB - 6dB. 1210 */ 1211 status_t DA7212_SetChannelVolume(da7212_handle_t *handle, uint32_t channel, uint32_t volume); 1212 1213 /*! 1214 * @brief Set module mute. 1215 * 1216 * @param handle DA7212 handle pointer. 1217 * @param channel shoule be a value of _da7212_channel. 1218 * @param isMute true is mute, false is unmute. 1219 */ 1220 status_t DA7212_SetChannelMute(da7212_handle_t *handle, uint32_t channel, bool isMute); 1221 1222 /*! 1223 * @brief Set protocol for DA7212. 1224 * 1225 * @param handle DA7212 handle pointer. 1226 * @param protocol da7212_protocol_t. 1227 */ 1228 status_t DA7212_SetProtocol(da7212_handle_t *handle, da7212_protocol_t protocol); 1229 1230 /*! 1231 * @brief Set master mode bits per frame for DA7212. 1232 * 1233 * @param handle DA7212 handle pointer. 1234 * @param bitWidth audio data bitwidth. 1235 */ 1236 status_t DA7212_SetMasterModeBits(da7212_handle_t *handle, uint32_t bitWidth); 1237 1238 /*! 1239 * @brief Write a register for DA7212. 1240 * 1241 * @param handle DA7212 handle pointer. 1242 * @param u8Register DA7212 register address to be written. 1243 * @param u8RegisterData Data to be written into regsiter 1244 */ 1245 status_t DA7212_WriteRegister(da7212_handle_t *handle, uint8_t u8Register, uint8_t u8RegisterData); 1246 1247 /*! 1248 * @brief Get a register value of DA7212. 1249 * 1250 * @param handle DA7212 handle pointer. 1251 * @param u8Register DA7212 register address to be read. 1252 * @param pu8RegisterData Pointer where the read out value to be stored. 1253 */ 1254 status_t DA7212_ReadRegister(da7212_handle_t *handle, uint8_t u8Register, uint8_t *pu8RegisterData); 1255 1256 /*! 1257 * @brief Deinit DA7212. 1258 * 1259 * @param handle DA7212 handle pointer. 1260 */ 1261 status_t DA7212_Deinit(da7212_handle_t *handle); 1262 1263 #if defined(__cplusplus) 1264 } 1265 #endif 1266 1267 /*! @} */ 1268 #endif /* _FSL_DIALOG7212_H_ */ 1269