0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef __CS35L34_H__
0011 #define __CS35L34_H__
0012
0013 #define CS35L34_CHIP_ID 0x00035A34
0014 #define CS35L34_DEVID_AB 0x01
0015 #define CS35L34_DEVID_CD 0x02
0016 #define CS35L34_DEVID_E 0x03
0017 #define CS35L34_FAB_ID 0x04
0018 #define CS35L34_REV_ID 0x05
0019 #define CS35L34_PWRCTL1 0x06
0020 #define CS35L34_PWRCTL2 0x07
0021 #define CS35L34_PWRCTL3 0x08
0022 #define CS35L34_ADSP_CLK_CTL 0x0A
0023 #define CS35L34_MCLK_CTL 0x0B
0024 #define CS35L34_AMP_INP_DRV_CTL 0x14
0025 #define CS35L34_AMP_DIG_VOL_CTL 0x15
0026 #define CS35L34_AMP_DIG_VOL 0x16
0027 #define CS35L34_AMP_ANLG_GAIN_CTL 0x17
0028 #define CS35L34_PROTECT_CTL 0x18
0029 #define CS35L34_AMP_KEEP_ALIVE_CTL 0x1A
0030 #define CS35L34_BST_CVTR_V_CTL 0x1D
0031 #define CS35L34_BST_PEAK_I 0x1E
0032 #define CS35L34_BST_RAMP_CTL 0x20
0033 #define CS35L34_BST_CONV_COEF_1 0x21
0034 #define CS35L34_BST_CONV_COEF_2 0x22
0035 #define CS35L34_BST_CONV_SLOPE_COMP 0x23
0036 #define CS35L34_BST_CONV_SW_FREQ 0x24
0037 #define CS35L34_CLASS_H_CTL 0x30
0038 #define CS35L34_CLASS_H_HEADRM_CTL 0x31
0039 #define CS35L34_CLASS_H_RELEASE_RATE 0x32
0040 #define CS35L34_CLASS_H_FET_DRIVE_CTL 0x33
0041 #define CS35L34_CLASS_H_STATUS 0x38
0042 #define CS35L34_VPBR_CTL 0x3A
0043 #define CS35L34_VPBR_VOL_CTL 0x3B
0044 #define CS35L34_VPBR_TIMING_CTL 0x3C
0045 #define CS35L34_PRED_MAX_ATTEN_SPK_LOAD 0x40
0046 #define CS35L34_PRED_BROWNOUT_THRESH 0x41
0047 #define CS35L34_PRED_BROWNOUT_VOL_CTL 0x42
0048 #define CS35L34_PRED_BROWNOUT_RATE_CTL 0x43
0049 #define CS35L34_PRED_WAIT_CTL 0x44
0050 #define CS35L34_PRED_ZVP_INIT_IMP_CTL 0x46
0051 #define CS35L34_PRED_MAN_SAFE_VPI_CTL 0x47
0052 #define CS35L34_VPBR_ATTEN_STATUS 0x4B
0053 #define CS35L34_PRED_BRWNOUT_ATT_STATUS 0x4C
0054 #define CS35L34_SPKR_MON_CTL 0x4E
0055 #define CS35L34_ADSP_I2S_CTL 0x50
0056 #define CS35L34_ADSP_TDM_CTL 0x51
0057 #define CS35L34_TDM_TX_CTL_1_VMON 0x52
0058 #define CS35L34_TDM_TX_CTL_2_IMON 0x53
0059 #define CS35L34_TDM_TX_CTL_3_VPMON 0x54
0060 #define CS35L34_TDM_TX_CTL_4_VBSTMON 0x55
0061 #define CS35L34_TDM_TX_CTL_5_FLAG1 0x56
0062 #define CS35L34_TDM_TX_CTL_6_FLAG2 0x57
0063 #define CS35L34_TDM_TX_SLOT_EN_1 0x5A
0064 #define CS35L34_TDM_TX_SLOT_EN_2 0x5B
0065 #define CS35L34_TDM_TX_SLOT_EN_3 0x5C
0066 #define CS35L34_TDM_TX_SLOT_EN_4 0x5D
0067 #define CS35L34_TDM_RX_CTL_1_AUDIN 0x5E
0068 #define CS35L34_TDM_RX_CTL_3_ALIVE 0x60
0069 #define CS35L34_MULT_DEV_SYNCH1 0x62
0070 #define CS35L34_MULT_DEV_SYNCH2 0x63
0071 #define CS35L34_PROT_RELEASE_CTL 0x64
0072 #define CS35L34_DIAG_MODE_REG_LOCK 0x68
0073 #define CS35L34_DIAG_MODE_CTL_1 0x69
0074 #define CS35L34_DIAG_MODE_CTL_2 0x6A
0075 #define CS35L34_INT_MASK_1 0x70
0076 #define CS35L34_INT_MASK_2 0x71
0077 #define CS35L34_INT_MASK_3 0x72
0078 #define CS35L34_INT_MASK_4 0x73
0079 #define CS35L34_INT_STATUS_1 0x74
0080 #define CS35L34_INT_STATUS_2 0x75
0081 #define CS35L34_INT_STATUS_3 0x76
0082 #define CS35L34_INT_STATUS_4 0x77
0083 #define CS35L34_OTP_TRIM_STATUS 0x7E
0084
0085 #define CS35L34_MAX_REGISTER 0x7F
0086 #define CS35L34_REGISTER_COUNT 0x4E
0087
0088 #define CS35L34_MCLK_5644 5644800
0089 #define CS35L34_MCLK_6144 6144000
0090 #define CS35L34_MCLK_6 6000000
0091 #define CS35L34_MCLK_11289 11289600
0092 #define CS35L34_MCLK_12 12000000
0093 #define CS35L34_MCLK_12288 12288000
0094
0095
0096 #define CS35L34_SFT_RST (1 << 7)
0097 #define CS35L34_DISCHG_FLT (1 << 1)
0098 #define CS35L34_PDN_ALL 1
0099
0100
0101 #define CS35L34_PDN_VMON (1 << 7)
0102 #define CS35L34_PDN_IMON (1 << 6)
0103 #define CS35L34_PDN_CLASSH (1 << 5)
0104 #define CS35L34_PDN_VPBR (1 << 4)
0105 #define CS35L34_PDN_PRED (1 << 3)
0106 #define CS35L34_PDN_BST (1 << 2)
0107 #define CS35L34_PDN_AMP 1
0108
0109
0110 #define CS35L34_MCLK_DIS (1 << 7)
0111 #define CS35L34_PDN_VBSTMON_OUT (1 << 4)
0112 #define CS35L34_PDN_VMON_OUT (1 << 3)
0113
0114 #define CS35L34_PDN_SDOUT (1 << 2)
0115 #define CS35L34_PDN_SDIN (1 << 1)
0116 #define CS35L34_PDN_TDM 1
0117
0118
0119 #define CS35L34_ADSP_RATE 0xF
0120 #define CS35L34_ADSP_DRIVE (1 << 4)
0121 #define CS35L34_ADSP_M_S (1 << 7)
0122
0123
0124 #define CS35L34_MCLK_DIV (1 << 4)
0125 #define CS35L34_MCLK_RATE_MASK 0x7
0126 #define CS35L34_MCLK_RATE_6P1440 0x2
0127 #define CS35L34_MCLK_RATE_6P0000 0x1
0128 #define CS35L34_MCLK_RATE_5P6448 0x0
0129 #define CS35L34_MCLKDIS (1 << 7)
0130 #define CS35L34_MCLKDIV2 (1 << 6)
0131 #define CS35L34_SDOUT_3ST_TDM (1 << 5)
0132 #define CS35L34_INT_FS_RATE (1 << 4)
0133 #define CS35L34_ADSP_FS 0xF
0134
0135
0136 #define CS35L34_DRV_STR_SRC (1 << 1)
0137 #define CS35L34_DRV_STR 1
0138
0139
0140 #define CS35L34_AMP_DSR_RATE_MASK 0xF0
0141 #define CS35L34_AMP_DSR_RATE_SHIFT (1 << 4)
0142 #define CS35L34_NOTCH_DIS (1 << 3)
0143 #define CS35L34_AMP_DIGSFT (1 << 1)
0144 #define CS35L34_INV 1
0145
0146
0147 #define CS35L34_OTW_ATTN_MASK 0xC
0148 #define CS35L34_OTW_THRD_MASK 0x3
0149 #define CS35L34_MUTE (1 << 5)
0150 #define CS35L34_GAIN_ZC (1 << 4)
0151 #define CS35L34_GAIN_ZC_MASK 0x10
0152 #define CS35L34_GAIN_ZC_SHIFT 4
0153
0154
0155 #define CS35L34_ALIVE_WD_DIS (1 << 2)
0156
0157
0158 #define CS35L34_BST_CVTL_MASK 0x3F
0159
0160
0161 #define CS35L34_BST_PEAK_MASK 0x3F
0162
0163
0164 #define CS35L34_I2S_LOC_MASK 0xC
0165 #define CS35L34_I2S_LOC_SHIFT 2
0166
0167
0168 #define CS35L34_SYNC2_MASK 0xF
0169
0170
0171 #define CS35L34_CAL_ERR_RLS (1 << 7)
0172 #define CS35L34_SHORT_RLS (1 << 2)
0173 #define CS35L34_OTW_RLS (1 << 1)
0174 #define CS35L34_OTE_RLS 1
0175
0176
0177 #define CS35L34_M_CAL_ERR_SHIFT 7
0178 #define CS35L34_M_CAL_ERR (1 << CS35L34_M_CAL_ERR_SHIFT)
0179 #define CS35L34_M_ALIVE_ERR_SHIFT 5
0180 #define CS35L34_M_ALIVE_ERR (1 << CS35L34_M_ALIVE_ERR_SHIFT)
0181 #define CS35L34_M_ADSP_CLK_SHIFT 4
0182 #define CS35L34_M_ADSP_CLK_ERR (1 << CS35L34_M_ADSP_CLK_SHIFT)
0183 #define CS35L34_M_MCLK_SHIFT 3
0184 #define CS35L34_M_MCLK_ERR (1 << CS35L34_M_MCLK_SHIFT)
0185 #define CS35L34_M_AMP_SHORT_SHIFT 2
0186 #define CS35L34_M_AMP_SHORT (1 << CS35L34_M_AMP_SHORT_SHIFT)
0187 #define CS35L34_M_OTW_SHIFT 1
0188 #define CS35L34_M_OTW (1 << CS35L34_M_OTW_SHIFT)
0189 #define CS35L34_M_OTE_SHIFT 0
0190 #define CS35L34_M_OTE (1 << CS35L34_M_OTE_SHIFT)
0191
0192
0193 #define CS35L34_M_PDN_DONE_SHIFT 4
0194 #define CS35L34_M_PDN_DONE (1 << CS35L34_M_PDN_DONE_SHIFT)
0195 #define CS35L34_M_PRED_SHIFT 3
0196 #define CS35L34_M_PRED_ERR (1 << CS35L34_M_PRED_SHIFT)
0197 #define CS35L34_M_PRED_CLR_SHIFT 2
0198 #define CS35L34_M_PRED_CLR (1 << CS35L34_M_PRED_CLR_SHIFT)
0199 #define CS35L34_M_VPBR_SHIFT 1
0200 #define CS35L34_M_VPBR_ERR (1 << CS35L34_M_VPBR_SHIFT)
0201 #define CS35L34_M_VPBR_CLR_SHIFT 0
0202 #define CS35L34_M_VPBR_CLR (1 << CS35L34_M_VPBR_CLR_SHIFT)
0203
0204
0205 #define CS35L34_M_BST_HIGH_SHIFT 4
0206 #define CS35L34_M_BST_HIGH (1 << CS35L34_M_BST_HIGH_SHIFT)
0207 #define CS35L34_M_BST_HIGH_FLAG_SHIFT 3
0208 #define CS35L34_M_BST_HIGH_FLAG (1 << CS35L34_M_BST_HIGH_FLAG_SHIFT)
0209 #define CS35L34_M_BST_IPK_FLAG_SHIFT 2
0210 #define CS35L34_M_BST_IPK_FLAG (1 << CS35L34_M_BST_IPK_FLAG_SHIFT)
0211 #define CS35L34_M_LBST_SHORT_SHIFT 0
0212 #define CS35L34_M_LBST_SHORT (1 << CS35L34_M_LBST_SHORT_SHIFT)
0213
0214
0215 #define CS35L34_M_VMON_OVFL_SHIFT 3
0216 #define CS35L34_M_VMON_OVFL (1 << CS35L34_M_VMON_OVFL_SHIFT)
0217 #define CS35L34_M_IMON_OVFL_SHIFT 2
0218 #define CS35L34_M_IMON_OVFL (1 << CS35L34_M_IMON_OVFL_SHIFT)
0219 #define CS35L34_M_VPMON_OVFL_SHIFT 1
0220 #define CS35L34_M_VPMON_OVFL (1 << CS35L34_M_VPMON_OVFL_SHIFT)
0221 #define CS35L34_M_VBSTMON_OVFL_SHIFT 1
0222 #define CS35L34_M_VBSTMON_OVFL (1 << CS35L34_M_VBSTMON_OVFL_SHIFT)
0223
0224
0225 #define CS35L34_CAL_ERR (1 << CS35L34_M_CAL_ERR_SHIFT)
0226 #define CS35L34_ALIVE_ERR (1 << CS35L34_M_ALIVE_ERR_SHIFT)
0227 #define CS35L34_M_ADSP_CLK_ERR (1 << CS35L34_M_ADSP_CLK_SHIFT)
0228 #define CS35L34_MCLK_ERR (1 << CS35L34_M_MCLK_SHIFT)
0229 #define CS35L34_AMP_SHORT (1 << CS35L34_M_AMP_SHORT_SHIFT)
0230 #define CS35L34_OTW (1 << CS35L34_M_OTW_SHIFT)
0231 #define CS35L34_OTE (1 << CS35L34_M_OTE_SHIFT)
0232
0233
0234 #define CS35L34_PDN_DONE (1 << CS35L34_M_PDN_DONE_SHIFT)
0235 #define CS35L34_PRED_ERR (1 << CS35L34_M_PRED_SHIFT)
0236 #define CS35L34_PRED_CLR (1 << CS35L34_M_PRED_CLR_SHIFT)
0237 #define CS35L34_VPBR_ERR (1 << CS35L34_M_VPBR_SHIFT)
0238 #define CS35L34_VPBR_CLR (1 << CS35L34_M_VPBR_CLR_SHIFT)
0239
0240
0241 #define CS35L34_BST_HIGH (1 << CS35L34_M_BST_HIGH_SHIFT)
0242 #define CS35L34_BST_HIGH_FLAG (1 << CS35L34_M_BST_HIGH_FLAG_SHIFT)
0243 #define CS35L34_BST_IPK_FLAG (1 << CS35L34_M_BST_IPK_FLAG_SHIFT)
0244 #define CS35L34_LBST_SHORT (1 << CS35L34_M_LBST_SHORT_SHIFT)
0245
0246
0247 #define CS35L34_VMON_OVFL (1 << CS35L34_M_VMON_OVFL_SHIFT)
0248 #define CS35L34_IMON_OVFL (1 << CS35L34_M_IMON_OVFL_SHIFT)
0249 #define CS35L34_VPMON_OVFL (1 << CS35L34_M_VPMON_OVFL_SHIFT)
0250 #define CS35L34_VBSTMON_OVFL (1 << CS35L34_M_VBSTMON_OVFL_SHIFT)
0251
0252
0253 #define CS35L34_X_STATE_SHIFT 7
0254 #define CS35L34_X_STATE (1 << CS35L34_X_STATE_SHIFT)
0255 #define CS35L34_X_LOC_SHIFT 0
0256 #define CS35L34_X_LOC (0x1F << CS35L34_X_LOC_SHIFT)
0257
0258 #define CS35L34_RATES (SNDRV_PCM_RATE_48000 | \
0259 SNDRV_PCM_RATE_44100 | \
0260 SNDRV_PCM_RATE_32000)
0261 #define CS35L34_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
0262 SNDRV_PCM_FMTBIT_S24_LE | \
0263 SNDRV_PCM_FMTBIT_S32_LE)
0264
0265 #endif