Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * da7213.h - DA7213 ASoC Codec Driver
0004  *
0005  * Copyright (c) 2013 Dialog Semiconductor
0006  *
0007  * Author: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
0008  */
0009 
0010 #ifndef _DA7213_H
0011 #define _DA7213_H
0012 
0013 #include <linux/clk.h>
0014 #include <linux/regmap.h>
0015 #include <linux/regulator/consumer.h>
0016 #include <sound/da7213.h>
0017 
0018 /*
0019  * Registers
0020  */
0021 
0022 /* Status Registers */
0023 #define DA7213_STATUS1          0x02
0024 #define DA7213_PLL_STATUS       0x03
0025 #define DA7213_AUX_L_GAIN_STATUS    0x04
0026 #define DA7213_AUX_R_GAIN_STATUS    0x05
0027 #define DA7213_MIC_1_GAIN_STATUS    0x06
0028 #define DA7213_MIC_2_GAIN_STATUS    0x07
0029 #define DA7213_MIXIN_L_GAIN_STATUS  0x08
0030 #define DA7213_MIXIN_R_GAIN_STATUS  0x09
0031 #define DA7213_ADC_L_GAIN_STATUS    0x0A
0032 #define DA7213_ADC_R_GAIN_STATUS    0x0B
0033 #define DA7213_DAC_L_GAIN_STATUS    0x0C
0034 #define DA7213_DAC_R_GAIN_STATUS    0x0D
0035 #define DA7213_HP_L_GAIN_STATUS     0x0E
0036 #define DA7213_HP_R_GAIN_STATUS     0x0F
0037 #define DA7213_LINE_GAIN_STATUS     0x10
0038 
0039 /* System Initialisation Registers */
0040 #define DA7213_DIG_ROUTING_DAI      0x21
0041 #define DA7213_SR           0x22
0042 #define DA7213_REFERENCES       0x23
0043 #define DA7213_PLL_FRAC_TOP     0x24
0044 #define DA7213_PLL_FRAC_BOT     0x25
0045 #define DA7213_PLL_INTEGER      0x26
0046 #define DA7213_PLL_CTRL         0x27
0047 #define DA7213_DAI_CLK_MODE     0x28
0048 #define DA7213_DAI_CTRL         0x29
0049 #define DA7213_DIG_ROUTING_DAC      0x2A
0050 #define DA7213_ALC_CTRL1        0x2B
0051 
0052 /* Input - Gain, Select and Filter Registers */
0053 #define DA7213_AUX_L_GAIN       0x30
0054 #define DA7213_AUX_R_GAIN       0x31
0055 #define DA7213_MIXIN_L_SELECT       0x32
0056 #define DA7213_MIXIN_R_SELECT       0x33
0057 #define DA7213_MIXIN_L_GAIN     0x34
0058 #define DA7213_MIXIN_R_GAIN     0x35
0059 #define DA7213_ADC_L_GAIN       0x36
0060 #define DA7213_ADC_R_GAIN       0x37
0061 #define DA7213_ADC_FILTERS1     0x38
0062 #define DA7213_MIC_1_GAIN       0x39
0063 #define DA7213_MIC_2_GAIN       0x3A
0064 
0065 /* Output - Gain, Select and Filter Registers */
0066 #define DA7213_DAC_FILTERS5     0x40
0067 #define DA7213_DAC_FILTERS2     0x41
0068 #define DA7213_DAC_FILTERS3     0x42
0069 #define DA7213_DAC_FILTERS4     0x43
0070 #define DA7213_DAC_FILTERS1     0x44
0071 #define DA7213_DAC_L_GAIN       0x45
0072 #define DA7213_DAC_R_GAIN       0x46
0073 #define DA7213_CP_CTRL          0x47
0074 #define DA7213_HP_L_GAIN        0x48
0075 #define DA7213_HP_R_GAIN        0x49
0076 #define DA7213_LINE_GAIN        0x4A
0077 #define DA7213_MIXOUT_L_SELECT      0x4B
0078 #define DA7213_MIXOUT_R_SELECT      0x4C
0079 
0080 /* System Controller Registers */
0081 #define DA7213_SYSTEM_MODES_INPUT   0x50
0082 #define DA7213_SYSTEM_MODES_OUTPUT  0x51
0083 
0084 /* Control Registers */
0085 #define DA7213_AUX_L_CTRL       0x60
0086 #define DA7213_AUX_R_CTRL       0x61
0087 #define DA7213_MICBIAS_CTRL     0x62
0088 #define DA7213_MIC_1_CTRL       0x63
0089 #define DA7213_MIC_2_CTRL       0x64
0090 #define DA7213_MIXIN_L_CTRL     0x65
0091 #define DA7213_MIXIN_R_CTRL     0x66
0092 #define DA7213_ADC_L_CTRL       0x67
0093 #define DA7213_ADC_R_CTRL       0x68
0094 #define DA7213_DAC_L_CTRL       0x69
0095 #define DA7213_DAC_R_CTRL       0x6A
0096 #define DA7213_HP_L_CTRL        0x6B
0097 #define DA7213_HP_R_CTRL        0x6C
0098 #define DA7213_LINE_CTRL        0x6D
0099 #define DA7213_MIXOUT_L_CTRL        0x6E
0100 #define DA7213_MIXOUT_R_CTRL        0x6F
0101 
0102 /* Configuration Registers */
0103 #define DA7213_LDO_CTRL         0x90
0104 #define DA7213_IO_CTRL          0x91
0105 #define DA7213_GAIN_RAMP_CTRL       0x92
0106 #define DA7213_MIC_CONFIG       0x93
0107 #define DA7213_PC_COUNT         0x94
0108 #define DA7213_CP_VOL_THRESHOLD1    0x95
0109 #define DA7213_CP_DELAY         0x96
0110 #define DA7213_CP_DETECTOR      0x97
0111 #define DA7213_DAI_OFFSET       0x98
0112 #define DA7213_DIG_CTRL         0x99
0113 #define DA7213_ALC_CTRL2        0x9A
0114 #define DA7213_ALC_CTRL3        0x9B
0115 #define DA7213_ALC_NOISE        0x9C
0116 #define DA7213_ALC_TARGET_MIN       0x9D
0117 #define DA7213_ALC_TARGET_MAX       0x9E
0118 #define DA7213_ALC_GAIN_LIMITS      0x9F
0119 #define DA7213_ALC_ANA_GAIN_LIMITS  0xA0
0120 #define DA7213_ALC_ANTICLIP_CTRL    0xA1
0121 #define DA7213_ALC_ANTICLIP_LEVEL   0xA2
0122 
0123 #define DA7213_ALC_OFFSET_AUTO_M_L  0xA3
0124 #define DA7213_ALC_OFFSET_AUTO_U_L  0xA4
0125 #define DA7213_ALC_OFFSET_MAN_M_L   0xA6
0126 #define DA7213_ALC_OFFSET_MAN_U_L   0xA7
0127 #define DA7213_ALC_OFFSET_AUTO_M_R  0xA8
0128 #define DA7213_ALC_OFFSET_AUTO_U_R  0xA9
0129 #define DA7213_ALC_OFFSET_MAN_M_R   0xAB
0130 #define DA7213_ALC_OFFSET_MAN_U_R   0xAC
0131 #define DA7213_ALC_CIC_OP_LVL_CTRL  0xAD
0132 #define DA7213_ALC_CIC_OP_LVL_DATA  0xAE
0133 #define DA7213_DAC_NG_SETUP_TIME    0xAF
0134 #define DA7213_DAC_NG_OFF_THRESHOLD 0xB0
0135 #define DA7213_DAC_NG_ON_THRESHOLD  0xB1
0136 #define DA7213_DAC_NG_CTRL      0xB2
0137 
0138 
0139 /*
0140  * Bit fields
0141  */
0142 
0143 /* DA7213_PLL_STATUS = 0x03 */
0144 #define DA7219_PLL_SRM_LOCK                 (0x1 << 1)
0145 
0146 /* DA7213_SR = 0x22 */
0147 #define DA7213_SR_8000                      (0x1 << 0)
0148 #define DA7213_SR_11025                     (0x2 << 0)
0149 #define DA7213_SR_12000                     (0x3 << 0)
0150 #define DA7213_SR_16000                     (0x5 << 0)
0151 #define DA7213_SR_22050                     (0x6 << 0)
0152 #define DA7213_SR_24000                     (0x7 << 0)
0153 #define DA7213_SR_32000                     (0x9 << 0)
0154 #define DA7213_SR_44100                     (0xA << 0)
0155 #define DA7213_SR_48000                     (0xB << 0)
0156 #define DA7213_SR_88200                     (0xE << 0)
0157 #define DA7213_SR_96000                     (0xF << 0)
0158 
0159 /* DA7213_REFERENCES = 0x23 */
0160 #define DA7213_BIAS_EN                      (0x1 << 3)
0161 #define DA7213_VMID_EN                      (0x1 << 7)
0162 
0163 /* DA7213_PLL_CTRL = 0x27 */
0164 #define DA7213_PLL_INDIV_5_TO_9_MHZ             (0x0 << 2)
0165 #define DA7213_PLL_INDIV_9_TO_18_MHZ                (0x1 << 2)
0166 #define DA7213_PLL_INDIV_18_TO_36_MHZ               (0x2 << 2)
0167 #define DA7213_PLL_INDIV_36_TO_54_MHZ               (0x3 << 2)
0168 #define DA7213_PLL_INDIV_MASK                   (0x3 << 2)
0169 #define DA7213_PLL_MCLK_SQR_EN                  (0x1 << 4)
0170 #define DA7213_PLL_32K_MODE                 (0x1 << 5)
0171 #define DA7213_PLL_SRM_EN                   (0x1 << 6)
0172 #define DA7213_PLL_EN                       (0x1 << 7)
0173 #define DA7213_PLL_MODE_MASK                    (0x7 << 5)
0174 
0175 /* DA7213_DAI_CLK_MODE = 0x28 */
0176 #define DA7213_DAI_BCLKS_PER_WCLK_32                (0x0 << 0)
0177 #define DA7213_DAI_BCLKS_PER_WCLK_64                (0x1 << 0)
0178 #define DA7213_DAI_BCLKS_PER_WCLK_128               (0x2 << 0)
0179 #define DA7213_DAI_BCLKS_PER_WCLK_256               (0x3 << 0)
0180 #define DA7213_DAI_BCLKS_PER_WCLK_MASK              (0x3 << 0)
0181 #define DA7213_DAI_CLK_POL_INV                  (0x1 << 2)
0182 #define DA7213_DAI_CLK_POL_MASK                 (0x1 << 2)
0183 #define DA7213_DAI_WCLK_POL_INV                 (0x1 << 3)
0184 #define DA7213_DAI_WCLK_POL_MASK                (0x1 << 3)
0185 #define DA7213_DAI_CLK_EN_MASK                  (0x1 << 7)
0186 
0187 /* DA7213_DAI_CTRL = 0x29 */
0188 #define DA7213_DAI_FORMAT_I2S_MODE              (0x0 << 0)
0189 #define DA7213_DAI_FORMAT_LEFT_J                (0x1 << 0)
0190 #define DA7213_DAI_FORMAT_RIGHT_J               (0x2 << 0)
0191 #define DA7213_DAI_FORMAT_DSP                   (0x3 << 0)
0192 #define DA7213_DAI_FORMAT_MASK                  (0x3 << 0)
0193 #define DA7213_DAI_WORD_LENGTH_S16_LE               (0x0 << 2)
0194 #define DA7213_DAI_WORD_LENGTH_S20_LE               (0x1 << 2)
0195 #define DA7213_DAI_WORD_LENGTH_S24_LE               (0x2 << 2)
0196 #define DA7213_DAI_WORD_LENGTH_S32_LE               (0x3 << 2)
0197 #define DA7213_DAI_WORD_LENGTH_MASK             (0x3 << 2)
0198 #define DA7213_DAI_EN_SHIFT                 7
0199 
0200 /* DA7213_DIG_ROUTING_DAI = 0x21 */
0201 #define DA7213_DAI_L_SRC_SHIFT                  0
0202 #define DA7213_DAI_R_SRC_SHIFT                  4
0203 #define DA7213_DAI_SRC_MAX                  4
0204 
0205 /* DA7213_DIG_ROUTING_DAC = 0x2A */
0206 #define DA7213_DAC_L_SRC_SHIFT                  0
0207 #define DA7213_DAC_L_MONO_SHIFT                 3
0208 #define DA7213_DAC_R_SRC_SHIFT                  4
0209 #define DA7213_DAC_R_MONO_SHIFT                 7
0210 #define DA7213_DAC_SRC_MAX                  4
0211 #define DA7213_DAC_MONO_MAX                 0x1
0212 
0213 /* DA7213_ALC_CTRL1 = 0x2B */
0214 #define DA7213_ALC_OFFSET_EN_SHIFT              0
0215 #define DA7213_ALC_OFFSET_EN_MAX                0x1
0216 #define DA7213_ALC_OFFSET_EN                    (0x1 << 0)
0217 #define DA7213_ALC_SYNC_MODE                    (0x1 << 1)
0218 #define DA7213_ALC_CALIB_MODE_MAN               (0x1 << 2)
0219 #define DA7213_ALC_L_EN_SHIFT                   3
0220 #define DA7213_ALC_AUTO_CALIB_EN                (0x1 << 4)
0221 #define DA7213_ALC_CALIB_OVERFLOW               (0x1 << 5)
0222 #define DA7213_ALC_R_EN_SHIFT                   7
0223 #define DA7213_ALC_EN_MAX                   0x1
0224 
0225 /* DA7213_AUX_L/R_GAIN = 0x30/0x31 */
0226 #define DA7213_AUX_AMP_GAIN_SHIFT               0
0227 #define DA7213_AUX_AMP_GAIN_MAX                 0x3F
0228 
0229 /* DA7213_MIXIN_L/R_SELECT = 0x32/0x33 */
0230 #define DA7213_DMIC_EN_SHIFT                    7
0231 #define DA7213_DMIC_EN_MAX                  0x1
0232 
0233 /* DA7213_MIXIN_L_SELECT = 0x32 */
0234 #define DA7213_MIXIN_L_MIX_SELECT_AUX_L_SHIFT           0
0235 #define DA7213_MIXIN_L_MIX_SELECT_MIC_1_SHIFT           1
0236 #define DA7213_MIXIN_L_MIX_SELECT_MIC_1             (0x1 << 1)
0237 #define DA7213_MIXIN_L_MIX_SELECT_MIC_2_SHIFT           2
0238 #define DA7213_MIXIN_L_MIX_SELECT_MIC_2             (0x1 << 2)
0239 #define DA7213_MIXIN_L_MIX_SELECT_MIXIN_R_SHIFT         3
0240 #define DA7213_MIXIN_L_MIX_SELECT_MAX               0x1
0241 
0242 /* DA7213_MIXIN_R_SELECT =  0x33 */
0243 #define DA7213_MIXIN_R_MIX_SELECT_AUX_R_SHIFT           0
0244 #define DA7213_MIXIN_R_MIX_SELECT_MIC_2_SHIFT           1
0245 #define DA7213_MIXIN_R_MIX_SELECT_MIC_2             (0x1 << 1)
0246 #define DA7213_MIXIN_R_MIX_SELECT_MIC_1_SHIFT           2
0247 #define DA7213_MIXIN_R_MIX_SELECT_MIC_1             (0x1 << 2)
0248 #define DA7213_MIXIN_R_MIX_SELECT_MIXIN_L_SHIFT         3
0249 #define DA7213_MIXIN_R_MIX_SELECT_MAX               0x1
0250 #define DA7213_MIC_BIAS_OUTPUT_SELECT_2             (0x1 << 6)
0251 
0252 /* DA7213_MIXIN_L/R_GAIN = 0x34/0x35 */
0253 #define DA7213_MIXIN_AMP_GAIN_SHIFT             0
0254 #define DA7213_MIXIN_AMP_GAIN_MAX               0xF
0255 
0256 /* DA7213_ADC_L/R_GAIN = 0x36/0x37 */
0257 #define DA7213_ADC_AMP_GAIN_SHIFT               0
0258 #define DA7213_ADC_AMP_GAIN_MAX                 0x7F
0259 
0260 /* DA7213_ADC/DAC_FILTERS1 = 0x38/0x44 */
0261 #define DA7213_VOICE_HPF_CORNER_SHIFT               0
0262 #define DA7213_VOICE_HPF_CORNER_MAX             8
0263 #define DA7213_VOICE_EN_SHIFT                   3
0264 #define DA7213_VOICE_EN_MAX                 0x1
0265 #define DA7213_AUDIO_HPF_CORNER_SHIFT               4
0266 #define DA7213_AUDIO_HPF_CORNER_MAX             4
0267 #define DA7213_HPF_EN_SHIFT                 7
0268 #define DA7213_HPF_EN_MAX                   0x1
0269 
0270 /* DA7213_MIC_1/2_GAIN = 0x39/0x3A */
0271 #define DA7213_MIC_AMP_GAIN_SHIFT               0
0272 #define DA7213_MIC_AMP_GAIN_MAX                 0x7
0273 
0274 /* DA7213_DAC_FILTERS5 = 0x40 */
0275 #define DA7213_DAC_SOFTMUTE_EN_SHIFT                7
0276 #define DA7213_DAC_SOFTMUTE_EN_MAX              0x1
0277 #define DA7213_DAC_SOFTMUTE_RATE_SHIFT              4
0278 #define DA7213_DAC_SOFTMUTE_RATE_MAX                7
0279 
0280 /* DA7213_DAC_FILTERS2/3/4 = 0x41/0x42/0x43 */
0281 #define DA7213_DAC_EQ_BAND_MAX                  0xF
0282 
0283 /* DA7213_DAC_FILTERS2 = 0x41 */
0284 #define DA7213_DAC_EQ_BAND1_SHIFT               0
0285 #define DA7213_DAC_EQ_BAND2_SHIFT               4
0286 
0287 /* DA7213_DAC_FILTERS2 = 0x42 */
0288 #define DA7213_DAC_EQ_BAND3_SHIFT               0
0289 #define DA7213_DAC_EQ_BAND4_SHIFT               4
0290 
0291 /* DA7213_DAC_FILTERS4 = 0x43 */
0292 #define DA7213_DAC_EQ_BAND5_SHIFT               0
0293 #define DA7213_DAC_EQ_EN_SHIFT                  7
0294 #define DA7213_DAC_EQ_EN_MAX                    0x1
0295 
0296 /* DA7213_DAC_L/R_GAIN = 0x45/0x46 */
0297 #define DA7213_DAC_AMP_GAIN_SHIFT               0
0298 #define DA7213_DAC_AMP_GAIN_MAX                 0x7F
0299 
0300 /* DA7213_HP_L/R_GAIN = 0x45/0x46 */
0301 #define DA7213_HP_AMP_GAIN_SHIFT                0
0302 #define DA7213_HP_AMP_GAIN_MAX                  0x3F
0303 
0304 /* DA7213_CP_CTRL = 0x47 */
0305 #define DA7213_CP_EN_SHIFT                  7
0306 
0307 /* DA7213_LINE_GAIN = 0x4A */
0308 #define DA7213_LINE_AMP_GAIN_SHIFT              0
0309 #define DA7213_LINE_AMP_GAIN_MAX                0x3F
0310 
0311 /* DA7213_MIXOUT_L_SELECT = 0x4B */
0312 #define DA7213_MIXOUT_L_MIX_SELECT_AUX_L_SHIFT          0
0313 #define DA7213_MIXOUT_L_MIX_SELECT_MIXIN_L_SHIFT        1
0314 #define DA7213_MIXOUT_L_MIX_SELECT_MIXIN_R_SHIFT        2
0315 #define DA7213_MIXOUT_L_MIX_SELECT_DAC_L_SHIFT          3
0316 #define DA7213_MIXOUT_L_MIX_SELECT_AUX_L_INVERTED_SHIFT     4
0317 #define DA7213_MIXOUT_L_MIX_SELECT_MIXIN_L_INVERTED_SHIFT   5
0318 #define DA7213_MIXOUT_L_MIX_SELECT_MIXIN_R_INVERTED_SHIFT   6
0319 #define DA7213_MIXOUT_L_MIX_SELECT_MAX              0x1
0320 
0321 /* DA7213_MIXOUT_R_SELECT = 0x4C */
0322 #define DA7213_MIXOUT_R_MIX_SELECT_AUX_R_SHIFT          0
0323 #define DA7213_MIXOUT_R_MIX_SELECT_MIXIN_R_SHIFT        1
0324 #define DA7213_MIXOUT_R_MIX_SELECT_MIXIN_L_SHIFT        2
0325 #define DA7213_MIXOUT_R_MIX_SELECT_DAC_R_SHIFT          3
0326 #define DA7213_MIXOUT_R_MIX_SELECT_AUX_R_INVERTED_SHIFT     4
0327 #define DA7213_MIXOUT_R_MIX_SELECT_MIXIN_R_INVERTED_SHIFT   5
0328 #define DA7213_MIXOUT_R_MIX_SELECT_MIXIN_L_INVERTED_SHIFT   6
0329 #define DA7213_MIXOUT_R_MIX_SELECT_MAX              0x1
0330 
0331 /*
0332  * DA7213_AUX_L/R_CTRL = 0x60/0x61,
0333  * DA7213_MIC_1/2_CTRL = 0x63/0x64,
0334  * DA7213_MIXIN_L/R_CTRL = 0x65/0x66,
0335  * DA7213_ADC_L/R_CTRL = 0x65/0x66,
0336  * DA7213_DAC_L/R_CTRL = 0x69/0x6A,
0337  * DA7213_HP_L/R_CTRL = 0x6B/0x6C,
0338  * DA7213_LINE_CTRL = 0x6D
0339  */
0340 #define DA7213_MUTE_EN_SHIFT                    6
0341 #define DA7213_MUTE_EN_MAX                  0x1
0342 #define DA7213_MUTE_EN                      (0x1 << 6)
0343 
0344 /*
0345  * DA7213_AUX_L/R_CTRL = 0x60/0x61,
0346  * DA7213_MIXIN_L/R_CTRL = 0x65/0x66,
0347  * DA7213_ADC_L/R_CTRL = 0x65/0x66,
0348  * DA7213_DAC_L/R_CTRL = 0x69/0x6A,
0349  * DA7213_HP_L/R_CTRL = 0x6B/0x6C,
0350  * DA7213_LINE_CTRL = 0x6D
0351  */
0352 #define DA7213_GAIN_RAMP_EN_SHIFT               5
0353 #define DA7213_GAIN_RAMP_EN_MAX                 0x1
0354 #define DA7213_GAIN_RAMP_EN                 (0x1 << 5)
0355 
0356 /*
0357  * DA7213_AUX_L/R_CTRL = 0x60/0x61,
0358  * DA7213_MIXIN_L/R_CTRL = 0x65/0x66,
0359  * DA7213_HP_L/R_CTRL = 0x6B/0x6C,
0360  * DA7213_LINE_CTRL = 0x6D
0361  */
0362 #define DA7213_ZC_EN_SHIFT                  4
0363 #define DA7213_ZC_EN_MAX                    0x1
0364 
0365 /*
0366  * DA7213_AUX_L/R_CTRL = 0x60/0x61,
0367  * DA7213_MIC_1/2_CTRL = 0x63/0x64,
0368  * DA7213_MIXIN_L/R_CTRL = 0x65/0x66,
0369  * DA7213_HP_L/R_CTRL = 0x6B/0x6C,
0370  * DA7213_MIXOUT_L/R_CTRL = 0x6E/0x6F,
0371  * DA7213_LINE_CTRL = 0x6D
0372  */
0373 #define DA7213_AMP_EN_SHIFT                 7
0374 
0375 /* DA7213_MIC_1/2_CTRL = 0x63/0x64 */
0376 #define DA7213_MIC_AMP_IN_SEL_SHIFT             2
0377 #define DA7213_MIC_AMP_IN_SEL_MAX               3
0378 
0379 /* DA7213_MICBIAS_CTRL = 0x62 */
0380 #define DA7213_MICBIAS1_LEVEL_SHIFT             0
0381 #define DA7213_MICBIAS1_LEVEL_MASK              (0x3 << 0)
0382 #define DA7213_MICBIAS1_EN_SHIFT                3
0383 #define DA7213_MICBIAS2_LEVEL_SHIFT             4
0384 #define DA7213_MICBIAS2_LEVEL_MASK              (0x3 << 4)
0385 #define DA7213_MICBIAS2_EN_SHIFT                7
0386 
0387 /* DA7213_MIXIN_L/R_CTRL = 0x65/0x66 */
0388 #define DA7213_MIXIN_MIX_EN                 (0x1 << 3)
0389 
0390 /* DA7213_ADC_L/R_CTRL = 0x67/0x68 */
0391 #define DA7213_ADC_EN_SHIFT                 7
0392 #define DA7213_ADC_EN                       (0x1 << 7)
0393 
0394 /* DA7213_DAC_L/R_CTRL =  0x69/0x6A*/
0395 #define DA7213_DAC_EN_SHIFT                 7
0396 
0397 /* DA7213_HP_L/R_CTRL = 0x6B/0x6C */
0398 #define DA7213_HP_AMP_OE                    (0x1 << 3)
0399 
0400 /* DA7213_LINE_CTRL = 0x6D */
0401 #define DA7213_LINE_AMP_OE                  (0x1 << 3)
0402 
0403 /* DA7213_MIXOUT_L/R_CTRL = 0x6E/0x6F */
0404 #define DA7213_MIXOUT_MIX_EN                    (0x1 << 3)
0405 
0406 /* DA7213_GAIN_RAMP_CTRL = 0x92 */
0407 #define DA7213_GAIN_RAMP_RATE_SHIFT             0
0408 #define DA7213_GAIN_RAMP_RATE_MAX               4
0409 
0410 /* DA7213_MIC_CONFIG = 0x93 */
0411 #define DA7213_DMIC_DATA_SEL_SHIFT              0
0412 #define DA7213_DMIC_DATA_SEL_MASK               (0x1 << 0)
0413 #define DA7213_DMIC_SAMPLEPHASE_SHIFT               1
0414 #define DA7213_DMIC_SAMPLEPHASE_MASK                (0x1 << 1)
0415 #define DA7213_DMIC_CLK_RATE_SHIFT              2
0416 #define DA7213_DMIC_CLK_RATE_MASK               (0x1 << 2)
0417 
0418 /* DA7213_PC_COUNT = 0x94 */
0419 #define DA7213_PC_FREERUN_MASK                  (0x1 << 0)
0420 
0421 /* DA7213_DIG_CTRL = 0x99 */
0422 #define DA7213_DAC_L_INV_SHIFT                  3
0423 #define DA7213_DAC_R_INV_SHIFT                  7
0424 #define DA7213_DAC_INV_MAX                  0x1
0425 
0426 /* DA7213_ALC_CTRL2 = 0x9A */
0427 #define DA7213_ALC_ATTACK_SHIFT                 0
0428 #define DA7213_ALC_ATTACK_MAX                   13
0429 #define DA7213_ALC_RELEASE_SHIFT                4
0430 #define DA7213_ALC_RELEASE_MAX                  11
0431 
0432 /* DA7213_ALC_CTRL3 = 0x9B */
0433 #define DA7213_ALC_HOLD_SHIFT                   0
0434 #define DA7213_ALC_HOLD_MAX                 16
0435 #define DA7213_ALC_INTEG_ATTACK_SHIFT               4
0436 #define DA7213_ALC_INTEG_RELEASE_SHIFT              6
0437 #define DA7213_ALC_INTEG_MAX                    4
0438 
0439 /*
0440  * DA7213_ALC_NOISE = 0x9C,
0441  * DA7213_ALC_TARGET_MIN/MAX = 0x9D/0x9E
0442  */
0443 #define DA7213_ALC_THRESHOLD_SHIFT              0
0444 #define DA7213_ALC_THRESHOLD_MAX                0x3F
0445 
0446 /* DA7213_ALC_GAIN_LIMITS = 0x9F */
0447 #define DA7213_ALC_ATTEN_MAX_SHIFT              0
0448 #define DA7213_ALC_GAIN_MAX_SHIFT               4
0449 #define DA7213_ALC_ATTEN_GAIN_MAX_MAX               0xF
0450 
0451 /* DA7213_ALC_ANA_GAIN_LIMITS = 0xA0 */
0452 #define DA7213_ALC_ANA_GAIN_MIN_SHIFT               0
0453 #define DA7213_ALC_ANA_GAIN_MAX_SHIFT               4
0454 #define DA7213_ALC_ANA_GAIN_MAX                 0x7
0455 
0456 /* DA7213_ALC_ANTICLIP_CTRL = 0xA1 */
0457 #define DA7213_ALC_ANTICLIP_EN_SHIFT                7
0458 #define DA7213_ALC_ANTICLIP_EN_MAX              0x1
0459 
0460 /* DA7213_ALC_ANTICLIP_LEVEL = 0xA2 */
0461 #define DA7213_ALC_ANTICLIP_LEVEL_SHIFT             0
0462 #define DA7213_ALC_ANTICLIP_LEVEL_MAX               0x7F
0463 
0464 /* DA7213_ALC_CIC_OP_LVL_CTRL = 0xAD */
0465 #define DA7213_ALC_DATA_MIDDLE                  (0x2 << 0)
0466 #define DA7213_ALC_DATA_TOP                 (0x3 << 0)
0467 #define DA7213_ALC_CIC_OP_CHANNEL_LEFT              (0x0 << 7)
0468 #define DA7213_ALC_CIC_OP_CHANNEL_RIGHT             (0x1 << 7)
0469 
0470 /* DA7213_DAC_NG_SETUP_TIME = 0xAF */
0471 #define DA7213_DAC_NG_SETUP_TIME_SHIFT              0
0472 #define DA7213_DAC_NG_SETUP_TIME_MAX                4
0473 #define DA7213_DAC_NG_RAMPUP_RATE_SHIFT             2
0474 #define DA7213_DAC_NG_RAMPDN_RATE_SHIFT             3
0475 #define DA7213_DAC_NG_RAMP_RATE_MAX             2
0476 
0477 /* DA7213_DAC_NG_OFF/ON_THRESH = 0xB0/0xB1 */
0478 #define DA7213_DAC_NG_THRESHOLD_SHIFT               0
0479 #define DA7213_DAC_NG_THRESHOLD_MAX             0x7
0480 
0481 /* DA7213_DAC_NG_CTRL = 0xB2 */
0482 #define DA7213_DAC_NG_EN_SHIFT                  7
0483 #define DA7213_DAC_NG_EN_MAX                    0x1
0484 
0485 
0486 /*
0487  * General defines
0488  */
0489 
0490 /* Register inversion */
0491 #define DA7213_NO_INVERT        0
0492 #define DA7213_INVERT           1
0493 
0494 /* Byte related defines */
0495 #define DA7213_BYTE_SHIFT       8
0496 #define DA7213_BYTE_MASK        0xFF
0497 
0498 /* ALC related */
0499 #define DA7213_ALC_OFFSET_15_8      0x00FF00
0500 #define DA7213_ALC_OFFSET_19_16     0x0F0000
0501 #define DA7213_ALC_AVG_ITERATIONS   5
0502 
0503 /* PLL related */
0504 #define DA7213_PLL_FREQ_OUT_90316800        90316800
0505 #define DA7213_PLL_FREQ_OUT_98304000        98304000
0506 #define DA7213_PLL_FREQ_OUT_94310400        94310400
0507 #define DA7213_PLL_INDIV_5_TO_9_MHZ_VAL     2
0508 #define DA7213_PLL_INDIV_9_TO_18_MHZ_VAL    4
0509 #define DA7213_PLL_INDIV_18_TO_36_MHZ_VAL   8
0510 #define DA7213_PLL_INDIV_36_TO_54_MHZ_VAL   16
0511 #define DA7213_SRM_CHECK_RETRIES        8
0512 
0513 enum da7213_clk_src {
0514     DA7213_CLKSRC_MCLK = 0,
0515     DA7213_CLKSRC_MCLK_SQR,
0516 };
0517 
0518 enum da7213_sys_clk {
0519     DA7213_SYSCLK_MCLK = 0,
0520     DA7213_SYSCLK_PLL,
0521     DA7213_SYSCLK_PLL_SRM,
0522     DA7213_SYSCLK_PLL_32KHZ
0523 };
0524 
0525 /* Regulators */
0526 enum da7213_supplies {
0527     DA7213_SUPPLY_VDDA = 0,
0528     DA7213_SUPPLY_VDDIO,
0529     DA7213_NUM_SUPPLIES,
0530 };
0531 
0532 /* Codec private data */
0533 struct da7213_priv {
0534     struct regmap *regmap;
0535     struct regulator_bulk_data supplies[DA7213_NUM_SUPPLIES];
0536     struct clk *mclk;
0537     unsigned int mclk_rate;
0538     unsigned int out_rate;
0539     int clk_src;
0540     bool master;
0541     bool alc_calib_auto;
0542     bool alc_en;
0543     bool fixed_clk_auto_pll;
0544     struct da7213_platform_data *pdata;
0545 };
0546 
0547 #endif /* _DA7213_H */