0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef CS4234_H
0010 #define CS4234_H
0011
0012 #define CS4234_DEVID_AB 0x01
0013 #define CS4234_DEVID_CD 0x02
0014 #define CS4234_DEVID_EF 0x03
0015 #define CS4234_REVID 0x05
0016
0017 #define CS4234_CLOCK_SP 0x06
0018 #define CS4234_BASE_RATE_MASK 0xC0
0019 #define CS4234_BASE_RATE_SHIFT 6
0020 #define CS4234_SPEED_MODE_MASK 0x30
0021 #define CS4234_SPEED_MODE_SHIFT 4
0022 #define CS4234_MCLK_RATE_MASK 0x0E
0023 #define CS4234_MCLK_RATE_SHIFT 1
0024
0025 #define CS4234_SAMPLE_WIDTH 0x07
0026 #define CS4234_SDOUTX_SW_MASK 0xC0
0027 #define CS4234_SDOUTX_SW_SHIFT 6
0028 #define CS4234_INPUT_SW_MASK 0x30
0029 #define CS4234_INPUT_SW_SHIFT 4
0030 #define CS4234_LOW_LAT_SW_MASK 0x0C
0031 #define CS4234_LOW_LAT_SW_SHIFT 2
0032 #define CS4234_DAC5_SW_MASK 0x03
0033 #define CS4234_DAC5_SW_SHIFT 0
0034
0035 #define CS4234_SP_CTRL 0x08
0036 #define CS4234_INVT_SCLK_MASK 0x80
0037 #define CS4234_INVT_SCLK_SHIFT 7
0038 #define CS4234_DAC5_SRC_MASK 0x70
0039 #define CS4234_DAC5_SRC_SHIFT 4
0040 #define CS4234_SP_FORMAT_MASK 0x0C
0041 #define CS4234_SP_FORMAT_SHIFT 2
0042 #define CS4234_SDO_CHAIN_MASK 0x02
0043 #define CS4234_SDO_CHAIN_SHIFT 1
0044 #define CS4234_MST_SLV_MASK 0x01
0045 #define CS4234_MST_SLV_SHIFT 0
0046
0047 #define CS4234_SP_DATA_SEL 0x09
0048 #define CS4234_DAC14_SRC_MASK 0x38
0049 #define CS4234_DAC14_SRC_SHIFT 3
0050 #define CS4234_LL_SRC_MASK 0x07
0051 #define CS4234_LL_SRC_SHIFT 0
0052
0053 #define CS4234_SDIN1_MASK1 0x0A
0054 #define CS4234_SDIN1_MASK2 0x0B
0055 #define CS4234_SDIN2_MASK1 0x0C
0056 #define CS4234_SDIN2_MASK2 0x0D
0057
0058 #define CS4234_TPS_CTRL 0x0E
0059 #define CS4234_TPS_MODE_MASK 0x80
0060 #define CS4234_TPS_MODE_SHIFT 7
0061 #define CS4234_TPS_OFST_MASK 0x70
0062 #define CS4234_TPS_OFST_SHIFT 4
0063 #define CS4234_GRP_DELAY_MASK 0x0F
0064 #define CS4234_GRP_DELAY_SHIFT 0
0065
0066 #define CS4234_ADC_CTRL1 0x0F
0067 #define CS4234_VA_SEL_MASK 0x20
0068 #define CS4234_VA_SEL_SHIFT 5
0069 #define CS4234_ENA_HPF_MASK 0x10
0070 #define CS4234_ENA_HPF_SHIFT 4
0071 #define CS4234_INV_ADC_MASK 0x0F
0072 #define CS4234_INV_ADC4_MASK 0x08
0073 #define CS4234_INV_ADC4_SHIFT 3
0074 #define CS4234_INV_ADC3_MASK 0x04
0075 #define CS4234_INV_ADC3_SHIFT 2
0076 #define CS4234_INV_ADC2_MASK 0x02
0077 #define CS4234_INV_ADC2_SHIFT 1
0078 #define CS4234_INV_ADC1_MASK 0x01
0079 #define CS4234_INV_ADC1_SHIFT 0
0080
0081 #define CS4234_ADC_CTRL2 0x10
0082 #define CS4234_MUTE_ADC4_MASK 0x80
0083 #define CS4234_MUTE_ADC4_SHIFT 7
0084 #define CS4234_MUTE_ADC3_MASK 0x40
0085 #define CS4234_MUTE_ADC3_SHIFT 6
0086 #define CS4234_MUTE_ADC2_MASK 0x20
0087 #define CS4234_MUTE_ADC2_SHIFT 5
0088 #define CS4234_MUTE_ADC1_MASK 0x10
0089 #define CS4234_MUTE_ADC1_SHIFT 4
0090 #define CS4234_PDN_ADC4_MASK 0x08
0091 #define CS4234_PDN_ADC4_SHIFT 3
0092 #define CS4234_PDN_ADC3_MASK 0x04
0093 #define CS4234_PDN_ADC3_SHIFT 2
0094 #define CS4234_PDN_ADC2_MASK 0x02
0095 #define CS4234_PDN_ADC2_SHIFT 1
0096 #define CS4234_PDN_ADC1_MASK 0x01
0097 #define CS4234_PDN_ADC1_SHIFT 0
0098
0099 #define CS4234_LOW_LAT_CTRL1 0x11
0100 #define CS4234_LL_NG_MASK 0xE0
0101 #define CS4234_LL_NG_SHIFT 5
0102 #define CS4234_INV_LL_MASK 0x0F
0103 #define CS4234_INV_LL4_MASK 0x08
0104 #define CS4234_INV_LL4_SHIFT 3
0105 #define CS4234_INV_LL3_MASK 0x04
0106 #define CS4234_INV_LL3_SHIFT 2
0107 #define CS4234_INV_LL2_MASK 0x02
0108 #define CS4234_INV_LL2_SHIFT 1
0109 #define CS4234_INV_LL1_MASK 0x01
0110 #define CS4234_INV_LL1_SHIFT 0
0111
0112 #define CS4234_DAC_CTRL1 0x12
0113 #define CS4234_DAC14_NG_MASK 0xE0
0114 #define CS4234_DAC14_NG_SHIFT 5
0115 #define CS4234_DAC14_DE_MASK 0x10
0116 #define CS4234_DAC14_DE_SHIFT 4
0117 #define CS4234_DAC5_DE_MASK 0x08
0118 #define CS4234_DAC5_DE_SHIFT 3
0119 #define CS4234_DAC5_MVC_MASK 0x04
0120 #define CS4234_DAC5_MVC_SHIFT 2
0121 #define CS4234_DAC5_CFG_FLTR_MASK 0x03
0122 #define CS4234_DAC5_CFG_FLTR_SHIFT 0
0123
0124 #define CS4234_DAC_CTRL2 0x13
0125 #define CS4234_DAC5_NG_MASK 0xE0
0126 #define CS4234_DAC5_NG_SHIFT 5
0127 #define CS4234_INV_DAC_MASK 0x1F
0128 #define CS4234_INV_DAC5_MASK 0x10
0129 #define CS4234_INV_DAC5_SHIFT 4
0130 #define CS4234_INV_DAC4_MASK 0x08
0131 #define CS4234_INV_DAC4_SHIFT 3
0132 #define CS4234_INV_DAC3_MASK 0x04
0133 #define CS4234_INV_DAC3_SHIFT 2
0134 #define CS4234_INV_DAC2_MASK 0x02
0135 #define CS4234_INV_DAC2_SHIFT 1
0136 #define CS4234_INV_DAC1_MASK 0x01
0137 #define CS4234_INV_DAC1_SHIFT 0
0138
0139 #define CS4234_DAC_CTRL3 0x14
0140 #define CS4234_DAC5_ATT_MASK 0x80
0141 #define CS4234_DAC5_ATT_SHIFT 7
0142 #define CS4234_DAC14_ATT_MASK 0x40
0143 #define CS4234_DAC14_ATT_SHIFT 6
0144 #define CS4234_MUTE_LL_MASK 0x20
0145 #define CS4234_MUTE_LL_SHIFT 5
0146 #define CS4234_MUTE_DAC5_MASK 0x10
0147 #define CS4234_MUTE_DAC5_SHIFT 4
0148 #define CS4234_MUTE_DAC4_MASK 0x08
0149 #define CS4234_MUTE_DAC4_SHIFT 3
0150 #define CS4234_MUTE_DAC3_MASK 0x04
0151 #define CS4234_MUTE_DAC3_SHIFT 2
0152 #define CS4234_MUTE_DAC2_MASK 0x02
0153 #define CS4234_MUTE_DAC2_SHIFT 1
0154 #define CS4234_MUTE_DAC1_MASK 0x01
0155 #define CS4234_MUTE_DAC1_SHIFT 0
0156
0157 #define CS4234_DAC_CTRL4 0x15
0158 #define CS4234_VQ_RAMP_MASK 0x80
0159 #define CS4234_VQ_RAMP_SHIFT 7
0160 #define CS4234_TPS_GAIN_MASK 0x40
0161 #define CS4234_TPS_GAIN_SHIFT 6
0162 #define CS4234_PDN_DAC5_MASK 0x10
0163 #define CS4234_PDN_DAC5_SHIFT 4
0164 #define CS4234_PDN_DAC4_MASK 0x08
0165 #define CS4234_PDN_DAC4_SHIFT 3
0166 #define CS4234_PDN_DAC3_MASK 0x04
0167 #define CS4234_PDN_DAC3_SHIFT 2
0168 #define CS4234_PDN_DAC2_MASK 0x02
0169 #define CS4234_PDN_DAC2_SHIFT 1
0170 #define CS4234_PDN_DAC1_MASK 0x01
0171 #define CS4234_PDN_DAC1_SHIFT 0
0172
0173 #define CS4234_VOLUME_MODE 0x16
0174 #define CS4234_MUTE_DELAY_MASK 0xC0
0175 #define CS4234_MUTE_DELAY_SHIFT 6
0176 #define CS4234_MIN_DELAY_MASK 0x38
0177 #define CS4234_MIN_DELAY_SHIFT 3
0178 #define CS4234_MAX_DELAY_MASK 0x07
0179 #define CS4234_MAX_DELAY_SHIFT 0
0180
0181 #define CS4234_MASTER_VOL 0x17
0182 #define CS4234_DAC1_VOL 0x18
0183 #define CS4234_DAC2_VOL 0x19
0184 #define CS4234_DAC3_VOL 0x1A
0185 #define CS4234_DAC4_VOL 0x1B
0186 #define CS4234_DAC5_VOL 0x1C
0187
0188 #define CS4234_INT_CTRL 0x1E
0189 #define CS4234_INT_MODE_MASK 0x80
0190 #define CS4234_INT_MODE_SHIFT 7
0191 #define CS4234_INT_PIN_MASK 0x60
0192 #define CS4234_INT_PIN_SHIFT 5
0193
0194 #define CS4234_INT_MASK1 0x1F
0195 #define CS4234_MSK_TST_MODE_MASK 0x80
0196 #define CS4234_MSK_TST_MODE_ERR_SHIFT 7
0197 #define CS4234_MSK_SP_ERR_MASK 0x40
0198 #define CS4234_MSK_SP_ERR_SHIFT 6
0199 #define CS4234_MSK_CLK_ERR_MASK 0x08
0200 #define CS4234_MSK_CLK_ERR_SHIFT 5
0201 #define CS4234_MSK_ADC4_OVFL_MASK 0x08
0202 #define CS4234_MSK_ADC4_OVFL_SHIFT 3
0203 #define CS4234_MSK_ADC3_OVFL_MASK 0x04
0204 #define CS4234_MSK_ADC3_OVFL_SHIFT 2
0205 #define CS4234_MSK_ADC2_OVFL_MASK 0x02
0206 #define CS4234_MSK_ADC2_OVFL_SHIFT 1
0207 #define CS4234_MSK_ADC1_OVFL_MASK 0x01
0208 #define CS4234_MSK_ADC1_OVFL_SHIFT 0
0209
0210 #define CS4234_INT_MASK2 0x20
0211 #define CS4234_MSK_DAC5_CLIP_MASK 0x10
0212 #define CS4234_MSK_DAC5_CLIP_SHIFT 4
0213 #define CS4234_MSK_DAC4_CLIP_MASK 0x08
0214 #define CS4234_MSK_DAC4_CLIP_SHIFT 3
0215 #define CS4234_MSK_DAC3_CLIP_MASK 0x04
0216 #define CS4234_MSK_DAC3_CLIP_SHIFT 2
0217 #define CS4234_MSK_DAC2_CLIP_MASK 0x02
0218 #define CS4234_MSK_DAC2_CLIP_SHIFT 1
0219 #define CS4234_MSK_DAC1_CLIP_MASK 0x01
0220 #define CS4234_MSK_DAC1_CLIP_SHIFT 0
0221
0222 #define CS4234_INT_NOTIFY1 0x21
0223 #define CS4234_TST_MODE_MASK 0x80
0224 #define CS4234_TST_MODE_SHIFT 7
0225 #define CS4234_SP_ERR_MASK 0x40
0226 #define CS4234_SP_ERR_SHIFT 6
0227 #define CS4234_CLK_MOD_ERR_MASK 0x08
0228 #define CS4234_CLK_MOD_ERR_SHIFT 5
0229 #define CS4234_ADC4_OVFL_MASK 0x08
0230 #define CS4234_ADC4_OVFL_SHIFT 3
0231 #define CS4234_ADC3_OVFL_MASK 0x04
0232 #define CS4234_ADC3_OVFL_SHIFT 2
0233 #define CS4234_ADC2_OVFL_MASK 0x02
0234 #define CS4234_ADC2_OVFL_SHIFT 1
0235 #define CS4234_ADC1_OVFL_MASK 0x01
0236 #define CS4234_ADC1_OVFL_SHIFT 0
0237
0238 #define CS4234_INT_NOTIFY2 0x22
0239 #define CS4234_DAC5_CLIP_MASK 0x10
0240 #define CS4234_DAC5_CLIP_SHIFT 4
0241 #define CS4234_DAC4_CLIP_MASK 0x08
0242 #define CS4234_DAC4_CLIP_SHIFT 3
0243 #define CS4234_DAC3_CLIP_MASK 0x04
0244 #define CS4234_DAC3_CLIP_SHIFT 2
0245 #define CS4234_DAC2_CLIP_MASK 0x02
0246 #define CS4234_DAC2_CLIP_SHIFT 1
0247 #define CS4234_DAC1_CLIP_MASK 0x01
0248 #define CS4234_DAC1_CLIP_SHIFT 0
0249
0250 #define CS4234_MAX_REGISTER CS4234_INT_NOTIFY2
0251
0252 #define CS4234_SUPPORTED_ID 0x423400
0253 #define CS4234_BOOT_TIME_US 3000
0254 #define CS4234_HOLD_RESET_TIME_US 1000
0255 #define CS4234_VQ_CHARGE_MS 1000
0256
0257 #define CS4234_PCM_RATES (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
0258 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_64000 | \
0259 SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
0260
0261 #define CS4234_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S18_3LE | \
0262 SNDRV_PCM_FMTBIT_S20_LE | SNDRV_PCM_FMTBIT_S24_LE | \
0263 SNDRV_PCM_FMTBIT_S24_3LE)
0264
0265 enum cs4234_supplies {
0266 CS4234_SUPPLY_VA = 0,
0267 CS4234_SUPPLY_VL,
0268 };
0269
0270 enum cs4234_va_sel {
0271 CS4234_3V3 = 0,
0272 CS4234_5V,
0273 };
0274
0275 enum cs4234_sp_format {
0276 CS4234_LEFT_J = 0,
0277 CS4234_I2S,
0278 CS4234_TDM,
0279 };
0280
0281 enum cs4234_base_rate_advisory {
0282 CS4234_48K = 0,
0283 CS4234_44K1,
0284 CS4234_32K,
0285 };
0286
0287 #endif