Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * ALSA SoC CS53L30 codec driver
0004  *
0005  * Copyright 2015 Cirrus Logic, Inc.
0006  *
0007  * Author: Paul Handrigan <Paul.Handrigan@cirrus.com>,
0008  *         Tim Howe <Tim.Howe@cirrus.com>
0009  */
0010 
0011 #ifndef __CS53L30_H__
0012 #define __CS53L30_H__
0013 
0014 /* I2C Registers */
0015 #define CS53L30_DEVID_AB    0x01     /* Device ID A & B [RO]. */
0016 #define CS53L30_DEVID_CD    0x02     /* Device ID C & D [RO]. */
0017 #define CS53L30_DEVID_E     0x03     /* Device ID E [RO]. */
0018 #define CS53L30_REVID       0x05     /* Revision ID [RO]. */
0019 #define CS53L30_PWRCTL      0x06     /* Power Control. */
0020 #define CS53L30_MCLKCTL     0x07     /* MCLK Control. */
0021 #define CS53L30_INT_SR_CTL  0x08     /* Internal Sample Rate Control. */
0022 #define CS53L30_MICBIAS_CTL 0x0A     /* Mic Bias Control. */
0023 #define CS53L30_ASPCFG_CTL  0x0C     /* ASP Config Control. */
0024 #define CS53L30_ASP_CTL1    0x0D     /* ASP1 Control. */
0025 #define CS53L30_ASP_TDMTX_CTL1  0x0E     /* ASP1 TDM TX Control 1 */
0026 #define CS53L30_ASP_TDMTX_CTL2  0x0F     /* ASP1 TDM TX Control 2 */
0027 #define CS53L30_ASP_TDMTX_CTL3  0x10     /* ASP1 TDM TX Control 3 */
0028 #define CS53L30_ASP_TDMTX_CTL4  0x11     /* ASP1 TDM TX Control 4 */
0029 #define CS53L30_ASP_TDMTX_EN1   0x12     /* ASP1 TDM TX Enable 1 */
0030 #define CS53L30_ASP_TDMTX_EN2   0x13     /* ASP1 TDM TX Enable 2 */
0031 #define CS53L30_ASP_TDMTX_EN3   0x14     /* ASP1 TDM TX Enable 3 */
0032 #define CS53L30_ASP_TDMTX_EN4   0x15     /* ASP1 TDM TX Enable 4 */
0033 #define CS53L30_ASP_TDMTX_EN5   0x16     /* ASP1 TDM TX Enable 5 */
0034 #define CS53L30_ASP_TDMTX_EN6   0x17     /* ASP1 TDM TX Enable 6 */
0035 #define CS53L30_ASP_CTL2    0x18     /* ASP2 Control. */
0036 #define CS53L30_SFT_RAMP    0x1A     /* Soft Ramp Control. */
0037 #define CS53L30_LRCK_CTL1   0x1B     /* LRCK Control 1. */
0038 #define CS53L30_LRCK_CTL2   0x1C     /* LRCK Control 2. */
0039 #define CS53L30_MUTEP_CTL1  0x1F     /* Mute Pin Control 1. */
0040 #define CS53L30_MUTEP_CTL2  0x20     /* Mute Pin Control 2. */
0041 #define CS53L30_INBIAS_CTL1 0x21     /* Input Bias Control 1. */
0042 #define CS53L30_INBIAS_CTL2 0x22     /* Input Bias Control 2. */
0043 #define CS53L30_DMIC1_STR_CTL   0x23     /* DMIC1 Stereo Control. */
0044 #define CS53L30_DMIC2_STR_CTL   0x24     /* DMIC2 Stereo Control. */
0045 #define CS53L30_ADCDMIC1_CTL1   0x25     /* ADC1/DMIC1 Control 1. */
0046 #define CS53L30_ADCDMIC1_CTL2   0x26     /* ADC1/DMIC1 Control 2. */
0047 #define CS53L30_ADC1_CTL3   0x27     /* ADC1 Control 3. */
0048 #define CS53L30_ADC1_NG_CTL 0x28     /* ADC1 Noise Gate Control. */
0049 #define CS53L30_ADC1A_AFE_CTL   0x29     /* ADC1A AFE Control. */
0050 #define CS53L30_ADC1B_AFE_CTL   0x2A     /* ADC1B AFE Control. */
0051 #define CS53L30_ADC1A_DIG_VOL   0x2B     /* ADC1A Digital Volume. */
0052 #define CS53L30_ADC1B_DIG_VOL   0x2C     /* ADC1B Digital Volume. */
0053 #define CS53L30_ADCDMIC2_CTL1   0x2D     /* ADC2/DMIC2 Control 1. */
0054 #define CS53L30_ADCDMIC2_CTL2   0x2E     /* ADC2/DMIC2 Control 2. */
0055 #define CS53L30_ADC2_CTL3   0x2F     /* ADC2 Control 3. */
0056 #define CS53L30_ADC2_NG_CTL 0x30     /* ADC2 Noise Gate Control. */
0057 #define CS53L30_ADC2A_AFE_CTL   0x31     /* ADC2A AFE Control. */
0058 #define CS53L30_ADC2B_AFE_CTL   0x32     /* ADC2B AFE Control. */
0059 #define CS53L30_ADC2A_DIG_VOL   0x33     /* ADC2A Digital Volume. */
0060 #define CS53L30_ADC2B_DIG_VOL   0x34     /* ADC2B Digital Volume. */
0061 #define CS53L30_INT_MASK    0x35     /* Interrupt Mask. */
0062 #define CS53L30_IS      0x36     /* Interrupt Status. */
0063 #define CS53L30_MAX_REGISTER    0x36
0064 
0065 #define CS53L30_TDM_SLOT_MAX        4
0066 #define CS53L30_ASP_TDMTX_CTL(x)    (CS53L30_ASP_TDMTX_CTL1 + (x))
0067 /* x : index for registers; n : index for slot; 8 slots per register */
0068 #define CS53L30_ASP_TDMTX_ENx(x)    (CS53L30_ASP_TDMTX_EN6 - (x))
0069 #define CS53L30_ASP_TDMTX_ENn(n)    CS53L30_ASP_TDMTX_ENx((n) >> 3)
0070 #define CS53L30_ASP_TDMTX_ENx_MAX   6
0071 
0072 /* Device ID */
0073 #define CS53L30_DEVID       0x53A30
0074 
0075 /* PDN_DONE Poll Maximum
0076  * If soft ramp is set it will take much longer to power down
0077  * the system.
0078  */
0079 #define CS53L30_PDN_POLL_MAX    90
0080 
0081 /* Bitfield Definitions */
0082 
0083 /* R6 (0x06) CS53L30_PWRCTL - Power Control */
0084 #define CS53L30_PDN_ULP_SHIFT       7
0085 #define CS53L30_PDN_ULP_MASK        (1 << CS53L30_PDN_ULP_SHIFT)
0086 #define CS53L30_PDN_ULP         (1 << CS53L30_PDN_ULP_SHIFT)
0087 #define CS53L30_PDN_LP_SHIFT        6
0088 #define CS53L30_PDN_LP_MASK     (1 << CS53L30_PDN_LP_SHIFT)
0089 #define CS53L30_PDN_LP          (1 << CS53L30_PDN_LP_SHIFT)
0090 #define CS53L30_DISCHARGE_FILT_SHIFT    5
0091 #define CS53L30_DISCHARGE_FILT_MASK (1 << CS53L30_DISCHARGE_FILT_SHIFT)
0092 #define CS53L30_DISCHARGE_FILT      (1 << CS53L30_DISCHARGE_FILT_SHIFT)
0093 #define CS53L30_THMS_PDN_SHIFT      4
0094 #define CS53L30_THMS_PDN_MASK       (1 << CS53L30_THMS_PDN_SHIFT)
0095 #define CS53L30_THMS_PDN        (1 << CS53L30_THMS_PDN_SHIFT)
0096 
0097 #define CS53L30_PWRCTL_DEFAULT      (CS53L30_THMS_PDN)
0098 
0099 /* R7 (0x07) CS53L30_MCLKCTL - MCLK Control */
0100 #define CS53L30_MCLK_DIS_SHIFT      7
0101 #define CS53L30_MCLK_DIS_MASK       (1 << CS53L30_MCLK_DIS_SHIFT)
0102 #define CS53L30_MCLK_DIS        (1 << CS53L30_MCLK_DIS_SHIFT)
0103 #define CS53L30_MCLK_INT_SCALE_SHIFT    6
0104 #define CS53L30_MCLK_INT_SCALE_MASK (1 << CS53L30_MCLK_INT_SCALE_SHIFT)
0105 #define CS53L30_MCLK_INT_SCALE      (1 << CS53L30_MCLK_INT_SCALE_SHIFT)
0106 #define CS53L30_DMIC_DRIVE_SHIFT    5
0107 #define CS53L30_DMIC_DRIVE_MASK     (1 << CS53L30_DMIC_DRIVE_SHIFT)
0108 #define CS53L30_DMIC_DRIVE      (1 << CS53L30_DMIC_DRIVE_SHIFT)
0109 #define CS53L30_MCLK_DIV_SHIFT      2
0110 #define CS53L30_MCLK_DIV_WIDTH      2
0111 #define CS53L30_MCLK_DIV_MASK       (((1 << CS53L30_MCLK_DIV_WIDTH) - 1) << CS53L30_MCLK_DIV_SHIFT)
0112 #define CS53L30_MCLK_DIV_BY_1       (0x0 << CS53L30_MCLK_DIV_SHIFT)
0113 #define CS53L30_MCLK_DIV_BY_2       (0x1 << CS53L30_MCLK_DIV_SHIFT)
0114 #define CS53L30_MCLK_DIV_BY_3       (0x2 << CS53L30_MCLK_DIV_SHIFT)
0115 #define CS53L30_SYNC_EN_SHIFT       1
0116 #define CS53L30_SYNC_EN_MASK        (1 << CS53L30_SYNC_EN_SHIFT)
0117 #define CS53L30_SYNC_EN         (1 << CS53L30_SYNC_EN_SHIFT)
0118 
0119 #define CS53L30_MCLKCTL_DEFAULT     (CS53L30_MCLK_DIV_BY_2)
0120 
0121 /* R8 (0x08) CS53L30_INT_SR_CTL - Internal Sample Rate Control */
0122 #define CS53L30_INTRNL_FS_RATIO_SHIFT   4
0123 #define CS53L30_INTRNL_FS_RATIO_MASK    (1 << CS53L30_INTRNL_FS_RATIO_SHIFT)
0124 #define CS53L30_INTRNL_FS_RATIO     (1 << CS53L30_INTRNL_FS_RATIO_SHIFT)
0125 #define CS53L30_MCLK_19MHZ_EN_SHIFT 0
0126 #define CS53L30_MCLK_19MHZ_EN_MASK  (1 << CS53L30_MCLK_19MHZ_EN_SHIFT)
0127 #define CS53L30_MCLK_19MHZ_EN       (1 << CS53L30_MCLK_19MHZ_EN_SHIFT)
0128 
0129 /* 0x6 << 1 is reserved bits */
0130 #define CS53L30_INT_SR_CTL_DEFAULT  (CS53L30_INTRNL_FS_RATIO | 0x6 << 1)
0131 
0132 /* R10 (0x0A) CS53L30_MICBIAS_CTL - Mic Bias Control */
0133 #define CS53L30_MIC4_BIAS_PDN_SHIFT 7
0134 #define CS53L30_MIC4_BIAS_PDN_MASK  (1 << CS53L30_MIC4_BIAS_PDN_SHIFT)
0135 #define CS53L30_MIC4_BIAS_PDN       (1 << CS53L30_MIC4_BIAS_PDN_SHIFT)
0136 #define CS53L30_MIC3_BIAS_PDN_SHIFT 6
0137 #define CS53L30_MIC3_BIAS_PDN_MASK  (1 << CS53L30_MIC3_BIAS_PDN_SHIFT)
0138 #define CS53L30_MIC3_BIAS_PDN       (1 << CS53L30_MIC3_BIAS_PDN_SHIFT)
0139 #define CS53L30_MIC2_BIAS_PDN_SHIFT 5
0140 #define CS53L30_MIC2_BIAS_PDN_MASK  (1 << CS53L30_MIC2_BIAS_PDN_SHIFT)
0141 #define CS53L30_MIC2_BIAS_PDN       (1 << CS53L30_MIC2_BIAS_PDN_SHIFT)
0142 #define CS53L30_MIC1_BIAS_PDN_SHIFT 4
0143 #define CS53L30_MIC1_BIAS_PDN_MASK  (1 << CS53L30_MIC1_BIAS_PDN_SHIFT)
0144 #define CS53L30_MIC1_BIAS_PDN       (1 << CS53L30_MIC1_BIAS_PDN_SHIFT)
0145 #define CS53L30_MICx_BIAS_PDN       (0xf << CS53L30_MIC1_BIAS_PDN_SHIFT)
0146 #define CS53L30_VP_MIN_SHIFT        2
0147 #define CS53L30_VP_MIN_MASK     (1 << CS53L30_VP_MIN_SHIFT)
0148 #define CS53L30_VP_MIN          (1 << CS53L30_VP_MIN_SHIFT)
0149 #define CS53L30_MIC_BIAS_CTRL_SHIFT 0
0150 #define CS53L30_MIC_BIAS_CTRL_WIDTH 2
0151 #define CS53L30_MIC_BIAS_CTRL_MASK  (((1 << CS53L30_MIC_BIAS_CTRL_WIDTH) - 1) << CS53L30_MIC_BIAS_CTRL_SHIFT)
0152 #define CS53L30_MIC_BIAS_CTRL_HIZ   (0 << CS53L30_MIC_BIAS_CTRL_SHIFT)
0153 #define CS53L30_MIC_BIAS_CTRL_1V8   (1 << CS53L30_MIC_BIAS_CTRL_SHIFT)
0154 #define CS53L30_MIC_BIAS_CTRL_2V75  (2 << CS53L30_MIC_BIAS_CTRL_SHIFT)
0155 
0156 #define CS53L30_MICBIAS_CTL_DEFAULT (CS53L30_MICx_BIAS_PDN | CS53L30_VP_MIN)
0157 
0158 /* R12 (0x0C) CS53L30_ASPCFG_CTL - ASP Configuration Control */
0159 #define CS53L30_ASP_MS_SHIFT        7
0160 #define CS53L30_ASP_MS_MASK     (1 << CS53L30_ASP_MS_SHIFT)
0161 #define CS53L30_ASP_MS          (1 << CS53L30_ASP_MS_SHIFT)
0162 #define CS53L30_ASP_SCLK_INV_SHIFT  4
0163 #define CS53L30_ASP_SCLK_INV_MASK   (1 << CS53L30_ASP_SCLK_INV_SHIFT)
0164 #define CS53L30_ASP_SCLK_INV        (1 << CS53L30_ASP_SCLK_INV_SHIFT)
0165 #define CS53L30_ASP_RATE_SHIFT      0
0166 #define CS53L30_ASP_RATE_WIDTH      4
0167 #define CS53L30_ASP_RATE_MASK       (((1 << CS53L30_ASP_RATE_WIDTH) - 1) << CS53L30_ASP_RATE_SHIFT)
0168 #define CS53L30_ASP_RATE_48K        (0xc << CS53L30_ASP_RATE_SHIFT)
0169 
0170 #define CS53L30_ASPCFG_CTL_DEFAULT  (CS53L30_ASP_RATE_48K)
0171 
0172 /* R13/R24 (0x0D/0x18) CS53L30_ASP_CTL1 & CS53L30_ASP_CTL2 - ASP Control 1~2 */
0173 #define CS53L30_ASP_TDM_PDN_SHIFT   7
0174 #define CS53L30_ASP_TDM_PDN_MASK    (1 << CS53L30_ASP_TDM_PDN_SHIFT)
0175 #define CS53L30_ASP_TDM_PDN     (1 << CS53L30_ASP_TDM_PDN_SHIFT)
0176 #define CS53L30_ASP_SDOUTx_PDN_SHIFT    6
0177 #define CS53L30_ASP_SDOUTx_PDN_MASK (1 << CS53L30_ASP_SDOUTx_PDN_SHIFT)
0178 #define CS53L30_ASP_SDOUTx_PDN      (1 << CS53L30_ASP_SDOUTx_PDN_SHIFT)
0179 #define CS53L30_ASP_3ST_SHIFT       5
0180 #define CS53L30_ASP_3ST_MASK        (1 << CS53L30_ASP_3ST_SHIFT)
0181 #define CS53L30_ASP_3ST         (1 << CS53L30_ASP_3ST_SHIFT)
0182 #define CS53L30_SHIFT_LEFT_SHIFT    4
0183 #define CS53L30_SHIFT_LEFT_MASK     (1 << CS53L30_SHIFT_LEFT_SHIFT)
0184 #define CS53L30_SHIFT_LEFT      (1 << CS53L30_SHIFT_LEFT_SHIFT)
0185 #define CS53L30_ASP_SDOUTx_DRIVE_SHIFT  0
0186 #define CS53L30_ASP_SDOUTx_DRIVE_MASK   (1 << CS53L30_ASP_SDOUTx_DRIVE_SHIFT)
0187 #define CS53L30_ASP_SDOUTx_DRIVE    (1 << CS53L30_ASP_SDOUTx_DRIVE_SHIFT)
0188 
0189 #define CS53L30_ASP_CTL1_DEFAULT    (CS53L30_ASP_TDM_PDN)
0190 #define CS53L30_ASP_CTL2_DEFAULT    (0)
0191 
0192 /* R14 (0x0E) ~ R17 (0x11) CS53L30_ASP_TDMTX_CTLx - ASP TDM TX Control 1~4 */
0193 #define CS53L30_ASP_CHx_TX_STATE_SHIFT  7
0194 #define CS53L30_ASP_CHx_TX_STATE_MASK   (1 << CS53L30_ASP_CHx_TX_STATE_SHIFT)
0195 #define CS53L30_ASP_CHx_TX_STATE    (1 << CS53L30_ASP_CHx_TX_STATE_SHIFT)
0196 #define CS53L30_ASP_CHx_TX_LOC_SHIFT    0
0197 #define CS53L30_ASP_CHx_TX_LOC_WIDTH    6
0198 #define CS53L30_ASP_CHx_TX_LOC_MASK (((1 << CS53L30_ASP_CHx_TX_LOC_WIDTH) - 1) << CS53L30_ASP_CHx_TX_LOC_SHIFT)
0199 #define CS53L30_ASP_CHx_TX_LOC_MAX  (47 << CS53L30_ASP_CHx_TX_LOC_SHIFT)
0200 #define CS53L30_ASP_CHx_TX_LOC(x)   ((x) << CS53L30_ASP_CHx_TX_LOC_SHIFT)
0201 
0202 #define CS53L30_ASP_TDMTX_CTLx_DEFAULT  (CS53L30_ASP_CHx_TX_LOC_MAX)
0203 
0204 /* R18 (0x12) ~ R23 (0x17) CS53L30_ASP_TDMTX_ENx - ASP TDM TX Enable 1~6 */
0205 #define CS53L30_ASP_TDMTX_ENx_DEFAULT   (0)
0206 
0207 /* R26 (0x1A) CS53L30_SFT_RAMP - Soft Ramp Control */
0208 #define CS53L30_DIGSFT_SHIFT        5
0209 #define CS53L30_DIGSFT_MASK     (1 << CS53L30_DIGSFT_SHIFT)
0210 #define CS53L30_DIGSFT          (1 << CS53L30_DIGSFT_SHIFT)
0211 
0212 #define CS53L30_SFT_RMP_DEFAULT     (0)
0213 
0214 /* R28 (0x1C) CS53L30_LRCK_CTL2 - LRCK Control 2 */
0215 #define CS53L30_LRCK_50_NPW_SHIFT   3
0216 #define CS53L30_LRCK_50_NPW_MASK    (1 << CS53L30_LRCK_50_NPW_SHIFT)
0217 #define CS53L30_LRCK_50_NPW     (1 << CS53L30_LRCK_50_NPW_SHIFT)
0218 #define CS53L30_LRCK_TPWH_SHIFT     0
0219 #define CS53L30_LRCK_TPWH_WIDTH     3
0220 #define CS53L30_LRCK_TPWH_MASK      (((1 << CS53L30_LRCK_TPWH_WIDTH) - 1) << CS53L30_LRCK_TPWH_SHIFT)
0221 #define CS53L30_LRCK_TPWH(x)        (((x) << CS53L30_LRCK_TPWH_SHIFT) & CS53L30_LRCK_TPWH_MASK)
0222 
0223 #define CS53L30_LRCK_CTLx_DEFAULT   (0)
0224 
0225 /* R31 (0x1F) CS53L30_MUTEP_CTL1 - MUTE Pin Control 1 */
0226 #define CS53L30_MUTE_PDN_ULP_SHIFT  7
0227 #define CS53L30_MUTE_PDN_ULP_MASK   (1 << CS53L30_MUTE_PDN_ULP_SHIFT)
0228 #define CS53L30_MUTE_PDN_ULP        (1 << CS53L30_MUTE_PDN_ULP_SHIFT)
0229 #define CS53L30_MUTE_PDN_LP_SHIFT   6
0230 #define CS53L30_MUTE_PDN_LP_MASK    (1 << CS53L30_MUTE_PDN_LP_SHIFT)
0231 #define CS53L30_MUTE_PDN_LP     (1 << CS53L30_MUTE_PDN_LP_SHIFT)
0232 #define CS53L30_MUTE_M4B_PDN_SHIFT  4
0233 #define CS53L30_MUTE_M4B_PDN_MASK   (1 << CS53L30_MUTE_M4B_PDN_SHIFT)
0234 #define CS53L30_MUTE_M4B_PDN        (1 << CS53L30_MUTE_M4B_PDN_SHIFT)
0235 #define CS53L30_MUTE_M3B_PDN_SHIFT  3
0236 #define CS53L30_MUTE_M3B_PDN_MASK   (1 << CS53L30_MUTE_M3B_PDN_SHIFT)
0237 #define CS53L30_MUTE_M3B_PDN        (1 << CS53L30_MUTE_M3B_PDN_SHIFT)
0238 #define CS53L30_MUTE_M2B_PDN_SHIFT  2
0239 #define CS53L30_MUTE_M2B_PDN_MASK   (1 << CS53L30_MUTE_M2B_PDN_SHIFT)
0240 #define CS53L30_MUTE_M2B_PDN        (1 << CS53L30_MUTE_M2B_PDN_SHIFT)
0241 #define CS53L30_MUTE_M1B_PDN_SHIFT  1
0242 #define CS53L30_MUTE_M1B_PDN_MASK   (1 << CS53L30_MUTE_M1B_PDN_SHIFT)
0243 #define CS53L30_MUTE_M1B_PDN        (1 << CS53L30_MUTE_M1B_PDN_SHIFT)
0244 /* Note: be careful - x starts from 0 */
0245 #define CS53L30_MUTE_MxB_PDN_SHIFT(x)   (CS53L30_MUTE_M1B_PDN_SHIFT + (x))
0246 #define CS53L30_MUTE_MxB_PDN_MASK(x)    (1 << CS53L30_MUTE_MxB_PDN_SHIFT(x))
0247 #define CS53L30_MUTE_MxB_PDN(x)     (1 << CS53L30_MUTE_MxB_PDN_SHIFT(x))
0248 #define CS53L30_MUTE_MB_ALL_PDN_SHIFT   0
0249 #define CS53L30_MUTE_MB_ALL_PDN_MASK    (1 << CS53L30_MUTE_MB_ALL_PDN_SHIFT)
0250 #define CS53L30_MUTE_MB_ALL_PDN     (1 << CS53L30_MUTE_MB_ALL_PDN_SHIFT)
0251 
0252 #define CS53L30_MUTEP_CTL1_MUTEALL  (0xdf)
0253 #define CS53L30_MUTEP_CTL1_DEFAULT  (0)
0254 
0255 /* R32 (0x20) CS53L30_MUTEP_CTL2 - MUTE Pin Control 2 */
0256 #define CS53L30_MUTE_PIN_POLARITY_SHIFT 7
0257 #define CS53L30_MUTE_PIN_POLARITY_MASK  (1 << CS53L30_MUTE_PIN_POLARITY_SHIFT)
0258 #define CS53L30_MUTE_PIN_POLARITY   (1 << CS53L30_MUTE_PIN_POLARITY_SHIFT)
0259 #define CS53L30_MUTE_ASP_TDM_PDN_SHIFT  6
0260 #define CS53L30_MUTE_ASP_TDM_PDN_MASK   (1 << CS53L30_MUTE_ASP_TDM_PDN_SHIFT)
0261 #define CS53L30_MUTE_ASP_TDM_PDN    (1 << CS53L30_MUTE_ASP_TDM_PDN_SHIFT)
0262 #define CS53L30_MUTE_ASP_SDOUT2_PDN_SHIFT 5
0263 #define CS53L30_MUTE_ASP_SDOUT2_PDN_MASK (1 << CS53L30_MUTE_ASP_SDOUT2_PDN_SHIFT)
0264 #define CS53L30_MUTE_ASP_SDOUT2_PDN (1 << CS53L30_MUTE_ASP_SDOUT2_PDN_SHIFT)
0265 #define CS53L30_MUTE_ASP_SDOUT1_PDN_SHIFT 4
0266 #define CS53L30_MUTE_ASP_SDOUT1_PDN_MASK (1 << CS53L30_MUTE_ASP_SDOUT1_PDN_SHIFT)
0267 #define CS53L30_MUTE_ASP_SDOUT1_PDN (1 << CS53L30_MUTE_ASP_SDOUT1_PDN_SHIFT)
0268 /* Note: be careful - x starts from 0 */
0269 #define CS53L30_MUTE_ASP_SDOUTx_PDN_SHIFT(x) ((x) + CS53L30_MUTE_ASP_SDOUT1_PDN_SHIFT)
0270 #define CS53L30_MUTE_ASP_SDOUTx_PDN_MASK(x) (1 << CS53L30_MUTE_ASP_SDOUTx_PDN_SHIFT(x))
0271 #define CS53L30_MUTE_ASP_SDOUTx_PDN (1 << CS53L30_MUTE_ASP_SDOUTx_PDN_SHIFT(x))
0272 #define CS53L30_MUTE_ADC2B_PDN_SHIFT    3
0273 #define CS53L30_MUTE_ADC2B_PDN_MASK (1 << CS53L30_MUTE_ADC2B_PDN_SHIFT)
0274 #define CS53L30_MUTE_ADC2B_PDN      (1 << CS53L30_MUTE_ADC2B_PDN_SHIFT)
0275 #define CS53L30_MUTE_ADC2A_PDN_SHIFT    2
0276 #define CS53L30_MUTE_ADC2A_PDN_MASK (1 << CS53L30_MUTE_ADC2A_PDN_SHIFT)
0277 #define CS53L30_MUTE_ADC2A_PDN      (1 << CS53L30_MUTE_ADC2A_PDN_SHIFT)
0278 #define CS53L30_MUTE_ADC1B_PDN_SHIFT    1
0279 #define CS53L30_MUTE_ADC1B_PDN_MASK (1 << CS53L30_MUTE_ADC1B_PDN_SHIFT)
0280 #define CS53L30_MUTE_ADC1B_PDN      (1 << CS53L30_MUTE_ADC1B_PDN_SHIFT)
0281 #define CS53L30_MUTE_ADC1A_PDN_SHIFT    0
0282 #define CS53L30_MUTE_ADC1A_PDN_MASK (1 << CS53L30_MUTE_ADC1A_PDN_SHIFT)
0283 #define CS53L30_MUTE_ADC1A_PDN      (1 << CS53L30_MUTE_ADC1A_PDN_SHIFT)
0284 
0285 #define CS53L30_MUTEP_CTL2_DEFAULT  (CS53L30_MUTE_PIN_POLARITY)
0286 
0287 /* R33 (0x21) CS53L30_INBIAS_CTL1 - Input Bias Control 1 */
0288 #define CS53L30_IN4M_BIAS_SHIFT     6
0289 #define CS53L30_IN4M_BIAS_WIDTH     2
0290 #define CS53L30_IN4M_BIAS_MASK      (((1 << CS53L30_IN4M_BIAS_WIDTH) - 1) << CS53L30_IN4M_BIAS_SHIFT)
0291 #define CS53L30_IN4M_BIAS_OPEN      (0 << CS53L30_IN4M_BIAS_SHIFT)
0292 #define CS53L30_IN4M_BIAS_PULL_DOWN (1 << CS53L30_IN4M_BIAS_SHIFT)
0293 #define CS53L30_IN4M_BIAS_VCM       (2 << CS53L30_IN4M_BIAS_SHIFT)
0294 #define CS53L30_IN4P_BIAS_SHIFT     4
0295 #define CS53L30_IN4P_BIAS_WIDTH     2
0296 #define CS53L30_IN4P_BIAS_MASK      (((1 << CS53L30_IN4P_BIAS_WIDTH) - 1) << CS53L30_IN4P_BIAS_SHIFT)
0297 #define CS53L30_IN4P_BIAS_OPEN      (0 << CS53L30_IN4P_BIAS_SHIFT)
0298 #define CS53L30_IN4P_BIAS_PULL_DOWN (1 << CS53L30_IN4P_BIAS_SHIFT)
0299 #define CS53L30_IN4P_BIAS_VCM       (2 << CS53L30_IN4P_BIAS_SHIFT)
0300 #define CS53L30_IN3M_BIAS_SHIFT     2
0301 #define CS53L30_IN3M_BIAS_WIDTH     2
0302 #define CS53L30_IN3M_BIAS_MASK      (((1 << CS53L30_IN3M_BIAS_WIDTH) - 1) << CS53L30_IN4M_BIAS_SHIFT)
0303 #define CS53L30_IN3M_BIAS_OPEN      (0 << CS53L30_IN3M_BIAS_SHIFT)
0304 #define CS53L30_IN3M_BIAS_PULL_DOWN (1 << CS53L30_IN3M_BIAS_SHIFT)
0305 #define CS53L30_IN3M_BIAS_VCM       (2 << CS53L30_IN3M_BIAS_SHIFT)
0306 #define CS53L30_IN3P_BIAS_SHIFT     0
0307 #define CS53L30_IN3P_BIAS_WIDTH     2
0308 #define CS53L30_IN3P_BIAS_MASK      (((1 << CS53L30_IN3P_BIAS_WIDTH) - 1) << CS53L30_IN3P_BIAS_SHIFT)
0309 #define CS53L30_IN3P_BIAS_OPEN      (0 << CS53L30_IN3P_BIAS_SHIFT)
0310 #define CS53L30_IN3P_BIAS_PULL_DOWN (1 << CS53L30_IN3P_BIAS_SHIFT)
0311 #define CS53L30_IN3P_BIAS_VCM       (2 << CS53L30_IN3P_BIAS_SHIFT)
0312 
0313 #define CS53L30_INBIAS_CTL1_DEFAULT (CS53L30_IN4M_BIAS_VCM | CS53L30_IN4P_BIAS_VCM |\
0314                      CS53L30_IN3M_BIAS_VCM | CS53L30_IN3P_BIAS_VCM)
0315 
0316 /* R34 (0x22) CS53L30_INBIAS_CTL2 - Input Bias Control 2 */
0317 #define CS53L30_IN2M_BIAS_SHIFT     6
0318 #define CS53L30_IN2M_BIAS_WIDTH     2
0319 #define CS53L30_IN2M_BIAS_MASK      (((1 << CS53L30_IN2M_BIAS_WIDTH) - 1) << CS53L30_IN2M_BIAS_SHIFT)
0320 #define CS53L30_IN2M_BIAS_OPEN      (0 << CS53L30_IN2M_BIAS_SHIFT)
0321 #define CS53L30_IN2M_BIAS_PULL_DOWN (1 << CS53L30_IN2M_BIAS_SHIFT)
0322 #define CS53L30_IN2M_BIAS_VCM       (2 << CS53L30_IN2M_BIAS_SHIFT)
0323 #define CS53L30_IN2P_BIAS_SHIFT     4
0324 #define CS53L30_IN2P_BIAS_WIDTH     2
0325 #define CS53L30_IN2P_BIAS_MASK      (((1 << CS53L30_IN2P_BIAS_WIDTH) - 1) << CS53L30_IN2P_BIAS_SHIFT)
0326 #define CS53L30_IN2P_BIAS_OPEN      (0 << CS53L30_IN2P_BIAS_SHIFT)
0327 #define CS53L30_IN2P_BIAS_PULL_DOWN (1 << CS53L30_IN2P_BIAS_SHIFT)
0328 #define CS53L30_IN2P_BIAS_VCM       (2 << CS53L30_IN2P_BIAS_SHIFT)
0329 #define CS53L30_IN1M_BIAS_SHIFT     2
0330 #define CS53L30_IN1M_BIAS_WIDTH     2
0331 #define CS53L30_IN1M_BIAS_MASK      (((1 << CS53L30_IN1M_BIAS_WIDTH) - 1) << CS53L30_IN1M_BIAS_SHIFT)
0332 #define CS53L30_IN1M_BIAS_OPEN      (0 << CS53L30_IN1M_BIAS_SHIFT)
0333 #define CS53L30_IN1M_BIAS_PULL_DOWN (1 << CS53L30_IN1M_BIAS_SHIFT)
0334 #define CS53L30_IN1M_BIAS_VCM       (2 << CS53L30_IN1M_BIAS_SHIFT)
0335 #define CS53L30_IN1P_BIAS_SHIFT     0
0336 #define CS53L30_IN1P_BIAS_WIDTH     2
0337 #define CS53L30_IN1P_BIAS_MASK      (((1 << CS53L30_IN1P_BIAS_WIDTH) - 1) << CS53L30_IN1P_BIAS_SHIFT)
0338 #define CS53L30_IN1P_BIAS_OPEN      (0 << CS53L30_IN1P_BIAS_SHIFT)
0339 #define CS53L30_IN1P_BIAS_PULL_DOWN (1 << CS53L30_IN1P_BIAS_SHIFT)
0340 #define CS53L30_IN1P_BIAS_VCM       (2 << CS53L30_IN1P_BIAS_SHIFT)
0341 
0342 #define CS53L30_INBIAS_CTL2_DEFAULT (CS53L30_IN2M_BIAS_VCM | CS53L30_IN2P_BIAS_VCM |\
0343                      CS53L30_IN1M_BIAS_VCM | CS53L30_IN1P_BIAS_VCM)
0344 
0345 /* R35 (0x23) & R36 (0x24) CS53L30_DMICx_STR_CTL - DMIC1 & DMIC2 Stereo Control */
0346 #define CS53L30_DMICx_STEREO_ENB_SHIFT  5
0347 #define CS53L30_DMICx_STEREO_ENB_MASK   (1 << CS53L30_DMICx_STEREO_ENB_SHIFT)
0348 #define CS53L30_DMICx_STEREO_ENB    (1 << CS53L30_DMICx_STEREO_ENB_SHIFT)
0349 
0350 /* 0x88 and 0xCC are reserved bits */
0351 #define CS53L30_DMIC1_STR_CTL_DEFAULT   (CS53L30_DMICx_STEREO_ENB | 0x88)
0352 #define CS53L30_DMIC2_STR_CTL_DEFAULT   (CS53L30_DMICx_STEREO_ENB | 0xCC)
0353 
0354 /* R37/R45 (0x25/0x2D) CS53L30_ADCDMICx_CTL1 - ADC1/DMIC1 & ADC2/DMIC2 Control 1 */
0355 #define CS53L30_ADCxB_PDN_SHIFT     7
0356 #define CS53L30_ADCxB_PDN_MASK      (1 << CS53L30_ADCxB_PDN_SHIFT)
0357 #define CS53L30_ADCxB_PDN       (1 << CS53L30_ADCxB_PDN_SHIFT)
0358 #define CS53L30_ADCxA_PDN_SHIFT     6
0359 #define CS53L30_ADCxA_PDN_MASK      (1 << CS53L30_ADCxA_PDN_SHIFT)
0360 #define CS53L30_ADCxA_PDN       (1 << CS53L30_ADCxA_PDN_SHIFT)
0361 #define CS53L30_DMICx_PDN_SHIFT     2
0362 #define CS53L30_DMICx_PDN_MASK      (1 << CS53L30_DMICx_PDN_SHIFT)
0363 #define CS53L30_DMICx_PDN       (1 << CS53L30_DMICx_PDN_SHIFT)
0364 #define CS53L30_DMICx_SCLK_DIV_SHIFT    1
0365 #define CS53L30_DMICx_SCLK_DIV_MASK (1 << CS53L30_DMICx_SCLK_DIV_SHIFT)
0366 #define CS53L30_DMICx_SCLK_DIV      (1 << CS53L30_DMICx_SCLK_DIV_SHIFT)
0367 #define CS53L30_CH_TYPE_SHIFT       0
0368 #define CS53L30_CH_TYPE_MASK        (1 << CS53L30_CH_TYPE_SHIFT)
0369 #define CS53L30_CH_TYPE         (1 << CS53L30_CH_TYPE_SHIFT)
0370 
0371 #define CS53L30_ADCDMICx_PDN_MASK   0xFF
0372 #define CS53L30_ADCDMICx_CTL1_DEFAULT   (CS53L30_DMICx_PDN)
0373 
0374 /* R38/R46 (0x26/0x2E) CS53L30_ADCDMICx_CTL2 - ADC1/DMIC1 & ADC2/DMIC2 Control 2 */
0375 #define CS53L30_ADCx_NOTCH_DIS_SHIFT    7
0376 #define CS53L30_ADCx_NOTCH_DIS_MASK (1 << CS53L30_ADCx_NOTCH_DIS_SHIFT)
0377 #define CS53L30_ADCx_NOTCH_DIS      (1 << CS53L30_ADCx_NOTCH_DIS_SHIFT)
0378 #define CS53L30_ADCxB_INV_SHIFT     5
0379 #define CS53L30_ADCxB_INV_MASK      (1 << CS53L30_ADCxB_INV_SHIFT)
0380 #define CS53L30_ADCxB_INV       (1 << CS53L30_ADCxB_INV_SHIFT)
0381 #define CS53L30_ADCxA_INV_SHIFT     4
0382 #define CS53L30_ADCxA_INV_MASK      (1 << CS53L30_ADCxA_INV_SHIFT)
0383 #define CS53L30_ADCxA_INV       (1 << CS53L30_ADCxA_INV_SHIFT)
0384 #define CS53L30_ADCxB_DIG_BOOST_SHIFT   1
0385 #define CS53L30_ADCxB_DIG_BOOST_MASK    (1 << CS53L30_ADCxB_DIG_BOOST_SHIFT)
0386 #define CS53L30_ADCxB_DIG_BOOST     (1 << CS53L30_ADCxB_DIG_BOOST_SHIFT)
0387 #define CS53L30_ADCxA_DIG_BOOST_SHIFT   0
0388 #define CS53L30_ADCxA_DIG_BOOST_MASK    (1 << CS53L30_ADCxA_DIG_BOOST_SHIFT)
0389 #define CS53L30_ADCxA_DIG_BOOST     (1 << CS53L30_ADCxA_DIG_BOOST_SHIFT)
0390 
0391 #define CS53L30_ADCDMIC1_CTL2_DEFAULT   (0)
0392 
0393 /* R39/R47 (0x27/0x2F) CS53L30_ADCx_CTL3 - ADC1/ADC2 Control 3 */
0394 #define CS53L30_ADCx_HPF_EN_SHIFT   3
0395 #define CS53L30_ADCx_HPF_EN_MASK    (1 << CS53L30_ADCx_HPF_EN_SHIFT)
0396 #define CS53L30_ADCx_HPF_EN     (1 << CS53L30_ADCx_HPF_EN_SHIFT)
0397 #define CS53L30_ADCx_HPF_CF_SHIFT   1
0398 #define CS53L30_ADCx_HPF_CF_WIDTH   2
0399 #define CS53L30_ADCx_HPF_CF_MASK    (((1 << CS53L30_ADCx_HPF_CF_WIDTH) - 1) << CS53L30_ADCx_HPF_CF_SHIFT)
0400 #define CS53L30_ADCx_HPF_CF_1HZ86   (0 << CS53L30_ADCx_HPF_CF_SHIFT)
0401 #define CS53L30_ADCx_HPF_CF_120HZ   (1 << CS53L30_ADCx_HPF_CF_SHIFT)
0402 #define CS53L30_ADCx_HPF_CF_235HZ   (2 << CS53L30_ADCx_HPF_CF_SHIFT)
0403 #define CS53L30_ADCx_HPF_CF_466HZ   (3 << CS53L30_ADCx_HPF_CF_SHIFT)
0404 #define CS53L30_ADCx_NG_ALL_SHIFT   0
0405 #define CS53L30_ADCx_NG_ALL_MASK    (1 << CS53L30_ADCx_NG_ALL_SHIFT)
0406 #define CS53L30_ADCx_NG_ALL     (1 << CS53L30_ADCx_NG_ALL_SHIFT)
0407 
0408 #define CS53L30_ADCx_CTL3_DEFAULT   (CS53L30_ADCx_HPF_EN)
0409 
0410 /* R40/R48 (0x28/0x30) CS53L30_ADCx_NG_CTL - ADC1/ADC2 Noise Gate Control */
0411 #define CS53L30_ADCxB_NG_SHIFT      7
0412 #define CS53L30_ADCxB_NG_MASK       (1 << CS53L30_ADCxB_NG_SHIFT)
0413 #define CS53L30_ADCxB_NG        (1 << CS53L30_ADCxB_NG_SHIFT)
0414 #define CS53L30_ADCxA_NG_SHIFT      6
0415 #define CS53L30_ADCxA_NG_MASK       (1 << CS53L30_ADCxA_NG_SHIFT)
0416 #define CS53L30_ADCxA_NG        (1 << CS53L30_ADCxA_NG_SHIFT)
0417 #define CS53L30_ADCx_NG_BOOST_SHIFT 5
0418 #define CS53L30_ADCx_NG_BOOST_MASK  (1 << CS53L30_ADCx_NG_BOOST_SHIFT)
0419 #define CS53L30_ADCx_NG_BOOST       (1 << CS53L30_ADCx_NG_BOOST_SHIFT)
0420 #define CS53L30_ADCx_NG_THRESH_SHIFT    2
0421 #define CS53L30_ADCx_NG_THRESH_WIDTH    3
0422 #define CS53L30_ADCx_NG_THRESH_MASK (((1 << CS53L30_ADCx_NG_THRESH_WIDTH) - 1) << CS53L30_ADCx_NG_THRESH_SHIFT)
0423 #define CS53L30_ADCx_NG_DELAY_SHIFT 0
0424 #define CS53L30_ADCx_NG_DELAY_WIDTH 2
0425 #define CS53L30_ADCx_NG_DELAY_MASK  (((1 << CS53L30_ADCx_NG_DELAY_WIDTH) - 1) << CS53L30_ADCx_NG_DELAY_SHIFT)
0426 
0427 #define CS53L30_ADCx_NG_CTL_DEFAULT (0)
0428 
0429 /* R41/R42/R49/R50 (0x29/0x2A/0x31/0x32) CS53L30_ADCxy_AFE_CTL - ADC1A/1B/2A/2B AFE Control */
0430 #define CS53L30_ADCxy_PREAMP_SHIFT  6
0431 #define CS53L30_ADCxy_PREAMP_WIDTH  2
0432 #define CS53L30_ADCxy_PREAMP_MASK   (((1 << CS53L30_ADCxy_PREAMP_WIDTH) - 1) << CS53L30_ADCxy_PREAMP_SHIFT)
0433 #define CS53L30_ADCxy_PGA_VOL_SHIFT 0
0434 #define CS53L30_ADCxy_PGA_VOL_WIDTH 6
0435 #define CS53L30_ADCxy_PGA_VOL_MASK  (((1 << CS53L30_ADCxy_PGA_VOL_WIDTH) - 1) << CS53L30_ADCxy_PGA_VOL_SHIFT)
0436 
0437 #define CS53L30_ADCxy_AFE_CTL_DEFAULT   (0)
0438 
0439 /* R43/R44/R51/R52 (0x2B/0x2C/0x33/0x34) CS53L30_ADCxy_DIG_VOL - ADC1A/1B/2A/2B Digital Volume */
0440 #define CS53L30_ADCxy_VOL_MUTE      (0x80)
0441 
0442 #define CS53L30_ADCxy_DIG_VOL_DEFAULT   (0x0)
0443 
0444 /* CS53L30_INT */
0445 #define CS53L30_PDN_DONE        (1 << 7)
0446 #define CS53L30_THMS_TRIP       (1 << 6)
0447 #define CS53L30_SYNC_DONE       (1 << 5)
0448 #define CS53L30_ADC2B_OVFL      (1 << 4)
0449 #define CS53L30_ADC2A_OVFL      (1 << 3)
0450 #define CS53L30_ADC1B_OVFL      (1 << 2)
0451 #define CS53L30_ADC1A_OVFL      (1 << 1)
0452 #define CS53L30_MUTE_PIN        (1 << 0)
0453 #define CS53L30_DEVICE_INT_MASK     0xFF
0454 
0455 #endif  /* __CS53L30_H__ */