0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef __CS42L52_H__
0012 #define __CS42L52_H__
0013
0014 #define CS42L52_NAME "CS42L52"
0015 #define CS42L52_DEFAULT_CLK 12000000
0016 #define CS42L52_MIN_CLK 11000000
0017 #define CS42L52_MAX_CLK 27000000
0018 #define CS42L52_DEFAULT_FORMAT SNDRV_PCM_FMTBIT_S16_LE
0019 #define CS42L52_DEFAULT_MAX_CHANS 2
0020 #define CS42L52_SYSCLK 1
0021
0022 #define CS42L52_CHIP_SWICTH (1 << 17)
0023 #define CS42L52_ALL_IN_ONE (1 << 16)
0024 #define CS42L52_CHIP_ONE 0x00
0025 #define CS42L52_CHIP_TWO 0x01
0026 #define CS42L52_CHIP_THR 0x02
0027 #define CS42L52_CHIP_MASK 0x0f
0028
0029 #define CS42L52_FIX_BITS_CTL 0x00
0030 #define CS42L52_CHIP 0x01
0031 #define CS42L52_CHIP_ID 0xE0
0032 #define CS42L52_CHIP_ID_MASK 0xF8
0033 #define CS42L52_CHIP_REV_A0 0x00
0034 #define CS42L52_CHIP_REV_A1 0x01
0035 #define CS42L52_CHIP_REV_B0 0x02
0036 #define CS42L52_CHIP_REV_MASK 0x07
0037
0038 #define CS42L52_PWRCTL1 0x02
0039 #define CS42L52_PWRCTL1_PDN_ALL 0x9F
0040 #define CS42L52_PWRCTL1_PDN_CHRG 0x80
0041 #define CS42L52_PWRCTL1_PDN_PGAB 0x10
0042 #define CS42L52_PWRCTL1_PDN_PGAA 0x08
0043 #define CS42L52_PWRCTL1_PDN_ADCB 0x04
0044 #define CS42L52_PWRCTL1_PDN_ADCA 0x02
0045 #define CS42L52_PWRCTL1_PDN_CODEC 0x01
0046
0047 #define CS42L52_PWRCTL2 0x03
0048 #define CS42L52_PWRCTL2_OVRDB (1 << 4)
0049 #define CS42L52_PWRCTL2_OVRDA (1 << 3)
0050 #define CS42L52_PWRCTL2_PDN_MICB (1 << 2)
0051 #define CS42L52_PWRCTL2_PDN_MICB_SHIFT 2
0052 #define CS42L52_PWRCTL2_PDN_MICA (1 << 1)
0053 #define CS42L52_PWRCTL2_PDN_MICA_SHIFT 1
0054 #define CS42L52_PWRCTL2_PDN_MICBIAS (1 << 0)
0055 #define CS42L52_PWRCTL2_PDN_MICBIAS_SHIFT 0
0056
0057 #define CS42L52_PWRCTL3 0x04
0058 #define CS42L52_PWRCTL3_HPB_PDN_SHIFT 6
0059 #define CS42L52_PWRCTL3_HPB_ON_LOW 0x00
0060 #define CS42L52_PWRCTL3_HPB_ON_HIGH 0x01
0061 #define CS42L52_PWRCTL3_HPB_ALWAYS_ON 0x02
0062 #define CS42L52_PWRCTL3_HPB_ALWAYS_OFF 0x03
0063 #define CS42L52_PWRCTL3_HPA_PDN_SHIFT 4
0064 #define CS42L52_PWRCTL3_HPA_ON_LOW 0x00
0065 #define CS42L52_PWRCTL3_HPA_ON_HIGH 0x01
0066 #define CS42L52_PWRCTL3_HPA_ALWAYS_ON 0x02
0067 #define CS42L52_PWRCTL3_HPA_ALWAYS_OFF 0x03
0068 #define CS42L52_PWRCTL3_SPKB_PDN_SHIFT 2
0069 #define CS42L52_PWRCTL3_SPKB_ON_LOW 0x00
0070 #define CS42L52_PWRCTL3_SPKB_ON_HIGH 0x01
0071 #define CS42L52_PWRCTL3_SPKB_ALWAYS_ON 0x02
0072 #define CS42L52_PWRCTL3_PDN_SPKB (1 << 2)
0073 #define CS42L52_PWRCTL3_PDN_SPKA (1 << 0)
0074 #define CS42L52_PWRCTL3_SPKA_PDN_SHIFT 0
0075 #define CS42L52_PWRCTL3_SPKA_ON_LOW 0x00
0076 #define CS42L52_PWRCTL3_SPKA_ON_HIGH 0x01
0077 #define CS42L52_PWRCTL3_SPKA_ALWAYS_ON 0x02
0078
0079 #define CS42L52_DEFAULT_OUTPUT_STATE 0x05
0080 #define CS42L52_PWRCTL3_CONF_MASK 0x03
0081
0082 #define CS42L52_CLK_CTL 0x05
0083 #define CLK_AUTODECT_ENABLE (1 << 7)
0084 #define CLK_SPEED_SHIFT 5
0085 #define CLK_DS_MODE 0x00
0086 #define CLK_SS_MODE 0x01
0087 #define CLK_HS_MODE 0x02
0088 #define CLK_QS_MODE 0x03
0089 #define CLK_32K_SR_SHIFT 4
0090 #define CLK_32K 0x01
0091 #define CLK_NO_32K 0x00
0092 #define CLK_27M_MCLK_SHIFT 3
0093 #define CLK_27M_MCLK 0x01
0094 #define CLK_NO_27M 0x00
0095 #define CLK_RATIO_SHIFT 1
0096 #define CLK_R_128 0x00
0097 #define CLK_R_125 0x01
0098 #define CLK_R_132 0x02
0099 #define CLK_R_136 0x03
0100
0101 #define CS42L52_IFACE_CTL1 0x06
0102 #define CS42L52_IFACE_CTL1_MASTER (1 << 7)
0103 #define CS42L52_IFACE_CTL1_SLAVE (0 << 7)
0104 #define CS42L52_IFACE_CTL1_INV_SCLK (1 << 6)
0105 #define CS42L52_IFACE_CTL1_ADC_FMT_I2S (1 << 5)
0106 #define CS42L52_IFACE_CTL1_ADC_FMT_LEFT_J (0 << 5)
0107 #define CS42L52_IFACE_CTL1_DSP_MODE_EN (1 << 4)
0108 #define CS42L52_IFACE_CTL1_DAC_FMT_LEFT_J (0 << 2)
0109 #define CS42L52_IFACE_CTL1_DAC_FMT_I2S (1 << 2)
0110 #define CS42L52_IFACE_CTL1_DAC_FMT_RIGHT_J (2 << 2)
0111 #define CS42L52_IFACE_CTL1_WL_32BIT (0x00)
0112 #define CS42L52_IFACE_CTL1_WL_24BIT (0x01)
0113 #define CS42L52_IFACE_CTL1_WL_20BIT (0x02)
0114 #define CS42L52_IFACE_CTL1_WL_16BIT (0x03)
0115 #define CS42L52_IFACE_CTL1_WL_MASK 0xFFFF
0116
0117 #define CS42L52_IFACE_CTL2 0x07
0118 #define CS42L52_IFACE_CTL2_SC_MC_EQ (1 << 6)
0119 #define CS42L52_IFACE_CTL2_LOOPBACK (1 << 5)
0120 #define CS42L52_IFACE_CTL2_S_MODE_OUTPUT_EN (0 << 4)
0121 #define CS42L52_IFACE_CTL2_S_MODE_OUTPUT_HIZ (1 << 4)
0122 #define CS42L52_IFACE_CTL2_HP_SW_INV (1 << 3)
0123 #define CS42L52_IFACE_CTL2_BIAS_LVL 0x07
0124
0125 #define CS42L52_ADC_PGA_A 0x08
0126 #define CS42L52_ADC_PGA_B 0x09
0127 #define CS42L52_ADC_SEL_SHIFT 5
0128 #define CS42L52_ADC_SEL_AIN1 0x00
0129 #define CS42L52_ADC_SEL_AIN2 0x01
0130 #define CS42L52_ADC_SEL_AIN3 0x02
0131 #define CS42L52_ADC_SEL_AIN4 0x03
0132 #define CS42L52_ADC_SEL_PGA 0x04
0133
0134 #define CS42L52_ANALOG_HPF_CTL 0x0A
0135 #define CS42L52_HPF_CTL_ANLGSFTB (1 << 3)
0136 #define CS42L52_HPF_CTL_ANLGSFTA (1 << 0)
0137
0138 #define CS42L52_ADC_HPF_FREQ 0x0B
0139 #define CS42L52_ADC_MISC_CTL 0x0C
0140 #define CS42L52_ADC_MISC_CTL_SOURCE_DSP (1 << 6)
0141
0142 #define CS42L52_PB_CTL1 0x0D
0143 #define CS42L52_PB_CTL1_HP_GAIN_SHIFT 5
0144 #define CS42L52_PB_CTL1_HP_GAIN_03959 0x00
0145 #define CS42L52_PB_CTL1_HP_GAIN_04571 0x01
0146 #define CS42L52_PB_CTL1_HP_GAIN_05111 0x02
0147 #define CS42L52_PB_CTL1_HP_GAIN_06047 0x03
0148 #define CS42L52_PB_CTL1_HP_GAIN_07099 0x04
0149 #define CS42L52_PB_CTL1_HP_GAIN_08399 0x05
0150 #define CS42L52_PB_CTL1_HP_GAIN_10000 0x06
0151 #define CS42L52_PB_CTL1_HP_GAIN_11430 0x07
0152 #define CS42L52_PB_CTL1_INV_PCMB (1 << 3)
0153 #define CS42L52_PB_CTL1_INV_PCMA (1 << 2)
0154 #define CS42L52_PB_CTL1_MSTB_MUTE (1 << 1)
0155 #define CS42L52_PB_CTL1_MSTA_MUTE (1 << 0)
0156 #define CS42L52_PB_CTL1_MUTE_MASK 0x03
0157 #define CS42L52_PB_CTL1_MUTE 3
0158 #define CS42L52_PB_CTL1_UNMUTE 0
0159
0160 #define CS42L52_MISC_CTL 0x0E
0161 #define CS42L52_MISC_CTL_DEEMPH (1 << 2)
0162 #define CS42L52_MISC_CTL_DIGSFT (1 << 1)
0163 #define CS42L52_MISC_CTL_DIGZC (1 << 0)
0164
0165 #define CS42L52_PB_CTL2 0x0F
0166 #define CS42L52_PB_CTL2_HPB_MUTE (1 << 7)
0167 #define CS42L52_PB_CTL2_HPA_MUTE (1 << 6)
0168 #define CS42L52_PB_CTL2_SPKB_MUTE (1 << 5)
0169 #define CS42L52_PB_CTL2_SPKA_MUTE (1 << 4)
0170 #define CS42L52_PB_CTL2_SPK_SWAP (1 << 2)
0171 #define CS42L52_PB_CTL2_SPK_MONO (1 << 1)
0172 #define CS42L52_PB_CTL2_SPK_MUTE50 (1 << 0)
0173
0174 #define CS42L52_MICA_CTL 0x10
0175 #define CS42L52_MICB_CTL 0x11
0176 #define CS42L52_MIC_CTL_MIC_SEL_MASK 0xBF
0177 #define CS42L52_MIC_CTL_MIC_SEL_SHIFT 6
0178 #define CS42L52_MIC_CTL_TYPE_MASK 0x20
0179 #define CS42L52_MIC_CTL_TYPE_SHIFT 5
0180
0181
0182 #define CS42L52_PGAA_CTL 0x12
0183 #define CS42L52_PGAB_CTL 0x13
0184 #define CS42L52_PGAX_CTL_VOL_12DB 24
0185 #define CS42L52_PGAX_CTL_VOL_6DB 12
0186
0187 #define CS42L52_PASSTHRUA_VOL 0x14
0188 #define CS42L52_PASSTHRUB_VOL 0x15
0189
0190 #define CS42L52_ADCA_VOL 0x16
0191 #define CS42L52_ADCB_VOL 0x17
0192 #define CS42L52_ADCX_VOL_24DB 24
0193 #define CS42L52_ADCX_VOL_12DB 12
0194 #define CS42L52_ADCX_VOL_6DB 6
0195
0196 #define CS42L52_ADCA_MIXER_VOL 0x18
0197 #define CS42L52_ADCB_MIXER_VOL 0x19
0198 #define CS42L52_ADC_MIXER_VOL_12DB 0x18
0199
0200 #define CS42L52_PCMA_MIXER_VOL 0x1A
0201 #define CS42L52_PCMB_MIXER_VOL 0x1B
0202
0203 #define CS42L52_BEEP_FREQ 0x1C
0204 #define CS42L52_BEEP_VOL 0x1D
0205 #define CS42L52_BEEP_TONE_CTL 0x1E
0206 #define CS42L52_BEEP_RATE_SHIFT 4
0207 #define CS42L52_BEEP_RATE_MASK 0x0F
0208
0209 #define CS42L52_TONE_CTL 0x1F
0210 #define CS42L52_BEEP_EN_MASK 0x3F
0211
0212 #define CS42L52_MASTERA_VOL 0x20
0213 #define CS42L52_MASTERB_VOL 0x21
0214
0215 #define CS42L52_HPA_VOL 0x22
0216 #define CS42L52_HPB_VOL 0x23
0217 #define CS42L52_DEFAULT_HP_VOL 0xF0
0218
0219 #define CS42L52_SPKA_VOL 0x24
0220 #define CS42L52_SPKB_VOL 0x25
0221 #define CS42L52_DEFAULT_SPK_VOL 0xF0
0222
0223 #define CS42L52_ADC_PCM_MIXER 0x26
0224
0225 #define CS42L52_LIMITER_CTL1 0x27
0226 #define CS42L52_LIMITER_CTL2 0x28
0227 #define CS42L52_LIMITER_AT_RATE 0x29
0228
0229 #define CS42L52_ALC_CTL 0x2A
0230 #define CS42L52_ALC_CTL_ALCB_ENABLE_SHIFT 7
0231 #define CS42L52_ALC_CTL_ALCA_ENABLE_SHIFT 6
0232 #define CS42L52_ALC_CTL_FASTEST_ATTACK 0
0233
0234 #define CS42L52_ALC_RATE 0x2B
0235 #define CS42L52_ALC_SLOWEST_RELEASE 0x3F
0236
0237 #define CS42L52_ALC_THRESHOLD 0x2C
0238 #define CS42L52_ALC_MAX_RATE_SHIFT 5
0239 #define CS42L52_ALC_MIN_RATE_SHIFT 2
0240 #define CS42L52_ALC_RATE_0DB 0
0241 #define CS42L52_ALC_RATE_3DB 1
0242 #define CS42L52_ALC_RATE_6DB 2
0243
0244 #define CS42L52_NOISE_GATE_CTL 0x2D
0245 #define CS42L52_NG_ENABLE_SHIFT 6
0246 #define CS42L52_NG_THRESHOLD_SHIFT 2
0247 #define CS42L52_NG_MIN_70DB 2
0248 #define CS42L52_NG_DELAY_SHIFT 0
0249 #define CS42L52_NG_DELAY_100MS 1
0250
0251 #define CS42L52_CLK_STATUS 0x2E
0252 #define CS42L52_BATT_COMPEN 0x2F
0253
0254 #define CS42L52_BATT_LEVEL 0x30
0255 #define CS42L52_SPK_STATUS 0x31
0256 #define CS42L52_SPK_STATUS_PIN_SHIFT 3
0257 #define CS42L52_SPK_STATUS_PIN_HIGH 1
0258
0259 #define CS42L52_TEM_CTL 0x32
0260 #define CS42L52_TEM_CTL_SET 0x80
0261 #define CS42L52_THE_FOLDBACK 0x33
0262 #define CS42L52_CHARGE_PUMP 0x34
0263 #define CS42L52_CHARGE_PUMP_MASK 0xF0
0264 #define CS42L52_CHARGE_PUMP_SHIFT 4
0265 #define CS42L52_FIX_BITS1 0x3E
0266 #define CS42L52_FIX_BITS2 0x47
0267
0268 #define CS42L52_MAX_REGISTER 0x47
0269
0270 #endif