0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef __CS35L33_H__
0011 #define __CS35L33_H__
0012
0013 #define CS35L33_CHIP_ID 0x00035A33
0014 #define CS35L33_DEVID_AB 0x01
0015 #define CS35L33_DEVID_CD 0x02
0016 #define CS35L33_DEVID_E 0x03
0017 #define CS35L33_FAB_ID 0x04
0018 #define CS35L33_REV_ID 0x05
0019 #define CS35L33_PWRCTL1 0x06
0020 #define CS35L33_PWRCTL2 0x07
0021 #define CS35L33_CLK_CTL 0x08
0022 #define CS35L33_BST_PEAK_CTL 0x09
0023 #define CS35L33_PROTECT_CTL 0x0A
0024 #define CS35L33_BST_CTL1 0x0B
0025 #define CS35L33_BST_CTL2 0x0C
0026 #define CS35L33_ADSP_CTL 0x0D
0027 #define CS35L33_ADC_CTL 0x0E
0028 #define CS35L33_DAC_CTL 0x0F
0029 #define CS35L33_DIG_VOL_CTL 0x10
0030 #define CS35L33_CLASSD_CTL 0x11
0031 #define CS35L33_AMP_CTL 0x12
0032 #define CS35L33_INT_MASK_1 0x13
0033 #define CS35L33_INT_MASK_2 0x14
0034 #define CS35L33_INT_STATUS_1 0x15
0035 #define CS35L33_INT_STATUS_2 0x16
0036 #define CS35L33_DIAG_LOCK 0x17
0037 #define CS35L33_DIAG_CTRL_1 0x18
0038 #define CS35L33_DIAG_CTRL_2 0x19
0039 #define CS35L33_HG_MEMLDO_CTL 0x23
0040 #define CS35L33_HG_REL_RATE 0x24
0041 #define CS35L33_LDO_DEL 0x25
0042 #define CS35L33_HG_HEAD 0x29
0043 #define CS35L33_HG_EN 0x2A
0044 #define CS35L33_TX_VMON 0x2D
0045 #define CS35L33_TX_IMON 0x2E
0046 #define CS35L33_TX_VPMON 0x2F
0047 #define CS35L33_TX_VBSTMON 0x30
0048 #define CS35L33_TX_FLAG 0x31
0049 #define CS35L33_TX_EN1 0x32
0050 #define CS35L33_TX_EN2 0x33
0051 #define CS35L33_TX_EN3 0x34
0052 #define CS35L33_TX_EN4 0x35
0053 #define CS35L33_RX_AUD 0x36
0054 #define CS35L33_RX_SPLY 0x37
0055 #define CS35L33_RX_ALIVE 0x38
0056 #define CS35L33_BST_CTL4 0x39
0057 #define CS35L33_HG_STATUS 0x3F
0058 #define CS35L33_MAX_REGISTER 0x59
0059
0060 #define CS35L33_MCLK_5644 5644800
0061 #define CS35L33_MCLK_6144 6144000
0062 #define CS35L33_MCLK_6 6000000
0063 #define CS35L33_MCLK_11289 11289600
0064 #define CS35L33_MCLK_12 12000000
0065 #define CS35L33_MCLK_12288 12288000
0066
0067
0068 #define CS35L33_PDN_AMP (1 << 7)
0069 #define CS35L33_PDN_BST (1 << 2)
0070 #define CS35L33_PDN_ALL 1
0071
0072
0073 #define CS35L33_PDN_VMON_SHIFT 7
0074 #define CS35L33_PDN_VMON (1 << CS35L33_PDN_VMON_SHIFT)
0075 #define CS35L33_PDN_IMON_SHIFT 6
0076 #define CS35L33_PDN_IMON (1 << CS35L33_PDN_IMON_SHIFT)
0077 #define CS35L33_PDN_VPMON_SHIFT 5
0078 #define CS35L33_PDN_VPMON (1 << CS35L33_PDN_VPMON_SHIFT)
0079 #define CS35L33_PDN_VBSTMON_SHIFT 4
0080 #define CS35L33_PDN_VBSTMON (1 << CS35L33_PDN_VBSTMON_SHIFT)
0081 #define CS35L33_SDOUT_3ST_I2S_SHIFT 3
0082 #define CS35L33_SDOUT_3ST_I2S (1 << CS35L33_SDOUT_3ST_I2S_SHIFT)
0083 #define CS35L33_PDN_SDIN_SHIFT 2
0084 #define CS35L33_PDN_SDIN (1 << CS35L33_PDN_SDIN_SHIFT)
0085 #define CS35L33_PDN_TDM_SHIFT 1
0086 #define CS35L33_PDN_TDM (1 << CS35L33_PDN_TDM_SHIFT)
0087
0088
0089 #define CS35L33_MCLKDIS (1 << 7)
0090 #define CS35L33_MCLKDIV2 (1 << 6)
0091 #define CS35L33_SDOUT_3ST_TDM (1 << 5)
0092 #define CS35L33_INT_FS_RATE (1 << 4)
0093 #define CS35L33_ADSP_FS 0xF
0094
0095
0096 #define CS35L33_ALIVE_WD_DIS (3 << 2)
0097
0098
0099 #define CS35L33_BST_CTL_SRC (1 << 6)
0100 #define CS35L33_BST_CTL_SHIFT (1 << 5)
0101 #define CS35L33_BST_CTL_MASK 0x3F
0102
0103
0104 #define CS35L33_TDM_WD_SEL (1 << 4)
0105 #define CS35L33_ALIVE_WD_DIS2 (1 << 3)
0106 #define CS35L33_VBST_SR_STEP 0x3
0107
0108
0109 #define CS35L33_ADSP_DRIVE (1 << 7)
0110 #define CS35L33_MS_MASK (1 << 6)
0111 #define CS35L33_SDIN_LOC (3 << 4)
0112 #define CS35L33_ALIVE_RATE 0x3
0113
0114
0115 #define CS35L33_INV_VMON (1 << 7)
0116 #define CS35L33_INV_IMON (1 << 6)
0117 #define CS35L33_ADC_NOTCH_DIS (1 << 5)
0118 #define CS35L33_IMON_SCALE 0xF
0119
0120
0121 #define CS35L33_INV_DAC (1 << 7)
0122 #define CS35L33_DAC_NOTCH_DIS (1 << 5)
0123 #define CS35L33_DIGSFT (1 << 4)
0124 #define CS35L33_DSR_RATE 0xF
0125
0126
0127 #define CS35L33_AMP_SD (1 << 6)
0128 #define CS35L33_AMP_DRV_SEL_SRC (1 << 5)
0129 #define CS35L33_AMP_DRV_SEL_MASK 0x10
0130 #define CS35L33_AMP_DRV_SEL_SHIFT 4
0131 #define CS35L33_AMP_CAL (1 << 3)
0132 #define CS35L33_GAIN_CHG_ZC_MASK 0x04
0133 #define CS35L33_GAIN_CHG_ZC_SHIFT 2
0134 #define CS35L33_CLASS_D_CTL_MASK 0x3F
0135
0136
0137 #define CS35L33_AMP_GAIN 0xF0
0138 #define CS35L33_CAL_ERR_RLS (1 << 3)
0139 #define CS35L33_AMP_SHORT_RLS (1 << 2)
0140 #define CS35L33_OTW_RLS (1 << 1)
0141 #define CS35L33_OTE_RLS 1
0142
0143
0144 #define CS35L33_M_CAL_ERR_SHIFT 6
0145 #define CS35L33_M_CAL_ERR (1 << CS35L33_M_CAL_ERR_SHIFT)
0146 #define CS35L33_M_ALIVE_ERR_SHIFT 5
0147 #define CS35L33_M_ALIVE_ERR (1 << CS35L33_M_ALIVE_ERR_SHIFT)
0148 #define CS35L33_M_AMP_SHORT_SHIFT 2
0149 #define CS35L33_M_AMP_SHORT (1 << CS35L33_M_AMP_SHORT_SHIFT)
0150 #define CS35L33_M_OTW_SHIFT 1
0151 #define CS35L33_M_OTW (1 << CS35L33_M_OTW_SHIFT)
0152 #define CS35L33_M_OTE_SHIFT 0
0153 #define CS35L33_M_OTE (1 << CS35L33_M_OTE_SHIFT)
0154
0155
0156 #define CS35L33_CAL_ERR (1 << 6)
0157 #define CS35L33_ALIVE_ERR (1 << 5)
0158 #define CS35L33_ADSPCLK_ERR (1 << 4)
0159 #define CS35L33_MCLK_ERR (1 << 3)
0160 #define CS35L33_AMP_SHORT (1 << 2)
0161 #define CS35L33_OTW (1 << 1)
0162 #define CS35L33_OTE (1 << 0)
0163
0164
0165 #define CS35L33_VMON_OVFL (1 << 7)
0166 #define CS35L33_IMON_OVFL (1 << 6)
0167 #define CS35L33_VPMON_OVFL (1 << 5)
0168 #define CS35L33_VBSTMON_OVFL (1 << 4)
0169 #define CS35L33_PDN_DONE 1
0170
0171
0172 #define CS35L33_BST_RGS 0x70
0173 #define CS35L33_BST_COEFF3 0xF
0174
0175
0176 #define CS35L33_MEM_DEPTH_SHIFT 5
0177 #define CS35L33_MEM_DEPTH_MASK (0x3 << CS35L33_MEM_DEPTH_SHIFT)
0178 #define CS35L33_LDO_THLD_SHIFT 1
0179 #define CS35L33_LDO_THLD_MASK (0xF << CS35L33_LDO_THLD_SHIFT)
0180 #define CS35L33_LDO_DISABLE_SHIFT 0
0181 #define CS35L33_LDO_DISABLE_MASK (0x1 << CS35L33_LDO_DISABLE_SHIFT)
0182
0183
0184 #define CS35L33_VP_HG_VA_SHIFT 5
0185 #define CS35L33_VP_HG_VA_MASK (0x7 << CS35L33_VP_HG_VA_SHIFT)
0186 #define CS35L33_LDO_ENTRY_DELAY_SHIFT 2
0187 #define CS35L33_LDO_ENTRY_DELAY_MASK (0x7 << CS35L33_LDO_ENTRY_DELAY_SHIFT)
0188 #define CS35L33_VP_HG_RATE_SHIFT 0
0189 #define CS35L33_VP_HG_RATE_MASK (0x3 << CS35L33_VP_HG_RATE_SHIFT)
0190
0191
0192 #define CS35L33_HD_RM_SHIFT 0
0193 #define CS35L33_HD_RM_MASK (0x7F << CS35L33_HD_RM_SHIFT)
0194
0195
0196 #define CS35L33_CLASS_HG_ENA_SHIFT 7
0197 #define CS35L33_CLASS_HG_EN_MASK (0x1 << CS35L33_CLASS_HG_ENA_SHIFT)
0198 #define CS35L33_VP_HG_AUTO_SHIFT 6
0199 #define CS35L33_VP_HG_AUTO_MASK (0x1 << 6)
0200 #define CS35L33_VP_HG_SHIFT 0
0201 #define CS35L33_VP_HG_MASK (0x1F << CS35L33_VP_HG_SHIFT)
0202
0203 #define CS35L33_RATES (SNDRV_PCM_RATE_8000_48000)
0204 #define CS35L33_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
0205 SNDRV_PCM_FMTBIT_S24_LE)
0206
0207
0208 #define CS35L33_X_STATE_SHIFT 7
0209 #define CS35L33_X_STATE (1 << CS35L33_X_STATE_SHIFT)
0210 #define CS35L33_X_LOC_SHIFT 0
0211 #define CS35L33_X_LOC (0x1F << CS35L33_X_LOC_SHIFT)
0212
0213
0214 #define CS35L33_AUDIN_RX_DEPTH_SHIFT 5
0215 #define CS35L33_AUDIN_RX_DEPTH (0x7 << CS35L33_AUDIN_RX_DEPTH_SHIFT)
0216
0217 #endif