Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * ALSA SoC Audio driver for CS4234 codec
0004  *
0005  * Copyright (C) 2020 Cirrus Logic, Inc. and
0006  *                    Cirrus Logic International Semiconductor Ltd.
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