1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * cs35l35.h -- CS35L35 ALSA SoC audio driver 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright 2016 Cirrus Logic, Inc. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Author: Brian Austin <brian.austin@cirrus.com> 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef __CS35L35_H__ 11*4882a593Smuzhiyun #define __CS35L35_H__ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #define CS35L35_FIRSTREG 0x01 14*4882a593Smuzhiyun #define CS35L35_LASTREG 0x7E 15*4882a593Smuzhiyun #define CS35L35_CHIP_ID 0x00035A35 16*4882a593Smuzhiyun #define CS35L35_DEVID_AB 0x01 /* Device ID A & B [RO] */ 17*4882a593Smuzhiyun #define CS35L35_DEVID_CD 0x02 /* Device ID C & D [RO] */ 18*4882a593Smuzhiyun #define CS35L35_DEVID_E 0x03 /* Device ID E [RO] */ 19*4882a593Smuzhiyun #define CS35L35_FAB_ID 0x04 /* Fab ID [RO] */ 20*4882a593Smuzhiyun #define CS35L35_REV_ID 0x05 /* Revision ID [RO] */ 21*4882a593Smuzhiyun #define CS35L35_PWRCTL1 0x06 /* Power Ctl 1 */ 22*4882a593Smuzhiyun #define CS35L35_PWRCTL2 0x07 /* Power Ctl 2 */ 23*4882a593Smuzhiyun #define CS35L35_PWRCTL3 0x08 /* Power Ctl 3 */ 24*4882a593Smuzhiyun #define CS35L35_CLK_CTL1 0x0A /* Clocking Ctl 1 */ 25*4882a593Smuzhiyun #define CS35L35_CLK_CTL2 0x0B /* Clocking Ctl 2 */ 26*4882a593Smuzhiyun #define CS35L35_CLK_CTL3 0x0C /* Clocking Ctl 3 */ 27*4882a593Smuzhiyun #define CS35L35_SP_FMT_CTL1 0x0D /* Serial Port Format CTL1 */ 28*4882a593Smuzhiyun #define CS35L35_SP_FMT_CTL2 0x0E /* Serial Port Format CTL2 */ 29*4882a593Smuzhiyun #define CS35L35_SP_FMT_CTL3 0x0F /* Serial Port Format CTL3 */ 30*4882a593Smuzhiyun #define CS35L35_MAG_COMP_CTL 0x13 /* Magnitude Comp CTL */ 31*4882a593Smuzhiyun #define CS35L35_AMP_INP_DRV_CTL 0x14 /* Amp Input Drive Ctl */ 32*4882a593Smuzhiyun #define CS35L35_AMP_DIG_VOL_CTL 0x15 /* Amplifier Dig Volume Ctl */ 33*4882a593Smuzhiyun #define CS35L35_AMP_DIG_VOL 0x16 /* Amplifier Dig Volume */ 34*4882a593Smuzhiyun #define CS35L35_ADV_DIG_VOL 0x17 /* Advisory Digital Volume */ 35*4882a593Smuzhiyun #define CS35L35_PROTECT_CTL 0x18 /* Amp Gain - Prot Ctl Param */ 36*4882a593Smuzhiyun #define CS35L35_AMP_GAIN_AUD_CTL 0x19 /* Amp Serial Port Gain Ctl */ 37*4882a593Smuzhiyun #define CS35L35_AMP_GAIN_PDM_CTL 0x1A /* Amplifier Gain PDM Ctl */ 38*4882a593Smuzhiyun #define CS35L35_AMP_GAIN_ADV_CTL 0x1B /* Amplifier Gain Ctl */ 39*4882a593Smuzhiyun #define CS35L35_GPI_CTL 0x1C /* GPI Ctl */ 40*4882a593Smuzhiyun #define CS35L35_BST_CVTR_V_CTL 0x1D /* Boost Conv Voltage Ctl */ 41*4882a593Smuzhiyun #define CS35L35_BST_PEAK_I 0x1E /* Boost Conv Peak Current */ 42*4882a593Smuzhiyun #define CS35L35_BST_RAMP_CTL 0x20 /* Boost Conv Soft Ramp Ctl */ 43*4882a593Smuzhiyun #define CS35L35_BST_CONV_COEF_1 0x21 /* Boost Conv Coefficients 1 */ 44*4882a593Smuzhiyun #define CS35L35_BST_CONV_COEF_2 0x22 /* Boost Conv Coefficients 2 */ 45*4882a593Smuzhiyun #define CS35L35_BST_CONV_SLOPE_COMP 0x23 /* Boost Conv Slope Comp */ 46*4882a593Smuzhiyun #define CS35L35_BST_CONV_SW_FREQ 0x24 /* Boost Conv L BST SW Freq */ 47*4882a593Smuzhiyun #define CS35L35_CLASS_H_CTL 0x30 /* CLS H Control */ 48*4882a593Smuzhiyun #define CS35L35_CLASS_H_HEADRM_CTL 0x31 /* CLS H Headroom Ctl */ 49*4882a593Smuzhiyun #define CS35L35_CLASS_H_RELEASE_RATE 0x32 /* CLS H Release Rate */ 50*4882a593Smuzhiyun #define CS35L35_CLASS_H_FET_DRIVE_CTL 0x33 /* CLS H Weak FET Drive Ctl */ 51*4882a593Smuzhiyun #define CS35L35_CLASS_H_VP_CTL 0x34 /* CLS H VP Ctl */ 52*4882a593Smuzhiyun #define CS35L35_CLASS_H_STATUS 0x38 /* CLS H Status */ 53*4882a593Smuzhiyun #define CS35L35_VPBR_CTL 0x3A /* VPBR Ctl */ 54*4882a593Smuzhiyun #define CS35L35_VPBR_VOL_CTL 0x3B /* VPBR Volume Ctl */ 55*4882a593Smuzhiyun #define CS35L35_VPBR_TIMING_CTL 0x3C /* VPBR Timing Ctl */ 56*4882a593Smuzhiyun #define CS35L35_VPBR_MODE_VOL_CTL 0x3D /* VPBR Mode/Attack Vol Ctl */ 57*4882a593Smuzhiyun #define CS35L35_VPBR_ATTEN_STATUS 0x4B /* VPBR Attenuation Status */ 58*4882a593Smuzhiyun #define CS35L35_SPKR_MON_CTL 0x4E /* Speaker Monitoring Ctl */ 59*4882a593Smuzhiyun #define CS35L35_IMON_SCALE_CTL 0x51 /* IMON Scale Ctl */ 60*4882a593Smuzhiyun #define CS35L35_AUDIN_RXLOC_CTL 0x52 /* Audio Input RX Loc Ctl */ 61*4882a593Smuzhiyun #define CS35L35_ADVIN_RXLOC_CTL 0x53 /* Advisory Input RX Loc Ctl */ 62*4882a593Smuzhiyun #define CS35L35_VMON_TXLOC_CTL 0x54 /* VMON TX Loc Ctl */ 63*4882a593Smuzhiyun #define CS35L35_IMON_TXLOC_CTL 0x55 /* IMON TX Loc Ctl */ 64*4882a593Smuzhiyun #define CS35L35_VPMON_TXLOC_CTL 0x56 /* VPMON TX Loc Ctl */ 65*4882a593Smuzhiyun #define CS35L35_VBSTMON_TXLOC_CTL 0x57 /* VBSTMON TX Loc Ctl */ 66*4882a593Smuzhiyun #define CS35L35_VPBR_STATUS_TXLOC_CTL 0x58 /* VPBR Status TX Loc Ctl */ 67*4882a593Smuzhiyun #define CS35L35_ZERO_FILL_LOC_CTL 0x59 /* Zero Fill Loc Ctl */ 68*4882a593Smuzhiyun #define CS35L35_AUDIN_DEPTH_CTL 0x5A /* Audio Input Depth Ctl */ 69*4882a593Smuzhiyun #define CS35L35_SPKMON_DEPTH_CTL 0x5B /* SPK Mon Output Depth Ctl */ 70*4882a593Smuzhiyun #define CS35L35_SUPMON_DEPTH_CTL 0x5C /* Supply Mon Out Depth Ctl */ 71*4882a593Smuzhiyun #define CS35L35_ZEROFILL_DEPTH_CTL 0x5D /* Zero Fill Mon Output Ctl */ 72*4882a593Smuzhiyun #define CS35L35_MULT_DEV_SYNCH1 0x62 /* Multidevice Synch */ 73*4882a593Smuzhiyun #define CS35L35_MULT_DEV_SYNCH2 0x63 /* Multidevice Synch 2 */ 74*4882a593Smuzhiyun #define CS35L35_PROT_RELEASE_CTL 0x64 /* Protection Release Ctl */ 75*4882a593Smuzhiyun #define CS35L35_DIAG_MODE_REG_LOCK 0x68 /* Diagnostic Mode Reg Lock */ 76*4882a593Smuzhiyun #define CS35L35_DIAG_MODE_CTL_1 0x69 /* Diagnostic Mode Ctl 1 */ 77*4882a593Smuzhiyun #define CS35L35_DIAG_MODE_CTL_2 0x6A /* Diagnostic Mode Ctl 2 */ 78*4882a593Smuzhiyun #define CS35L35_INT_MASK_1 0x70 /* Interrupt Mask 1 */ 79*4882a593Smuzhiyun #define CS35L35_INT_MASK_2 0x71 /* Interrupt Mask 2 */ 80*4882a593Smuzhiyun #define CS35L35_INT_MASK_3 0x72 /* Interrupt Mask 3 */ 81*4882a593Smuzhiyun #define CS35L35_INT_MASK_4 0x73 /* Interrupt Mask 4 */ 82*4882a593Smuzhiyun #define CS35L35_INT_STATUS_1 0x74 /* Interrupt Status 1 */ 83*4882a593Smuzhiyun #define CS35L35_INT_STATUS_2 0x75 /* Interrupt Status 2 */ 84*4882a593Smuzhiyun #define CS35L35_INT_STATUS_3 0x76 /* Interrupt Status 3 */ 85*4882a593Smuzhiyun #define CS35L35_INT_STATUS_4 0x77 /* Interrupt Status 4 */ 86*4882a593Smuzhiyun #define CS35L35_PLL_STATUS 0x78 /* PLL Status */ 87*4882a593Smuzhiyun #define CS35L35_OTP_TRIM_STATUS 0x7E /* OTP Trim Status */ 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun #define CS35L35_MAX_REGISTER 0x7F 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun /* CS35L35_PWRCTL1 */ 92*4882a593Smuzhiyun #define CS35L35_SFT_RST 0x80 93*4882a593Smuzhiyun #define CS35L35_DISCHG_FLT 0x02 94*4882a593Smuzhiyun #define CS35L35_PDN_ALL 0x01 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun /* CS35L35_PWRCTL2 */ 97*4882a593Smuzhiyun #define CS35L35_PDN_VMON 0x80 98*4882a593Smuzhiyun #define CS35L35_PDN_IMON 0x40 99*4882a593Smuzhiyun #define CS35L35_PDN_CLASSH 0x20 100*4882a593Smuzhiyun #define CS35L35_PDN_VPBR 0x10 101*4882a593Smuzhiyun #define CS35L35_PDN_BST 0x04 102*4882a593Smuzhiyun #define CS35L35_PDN_AMP 0x01 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun /* CS35L35_PWRCTL3 */ 105*4882a593Smuzhiyun #define CS35L35_PDN_VBSTMON_OUT 0x10 106*4882a593Smuzhiyun #define CS35L35_PDN_VMON_OUT 0x08 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #define CS35L35_AUDIN_DEPTH_MASK 0x03 109*4882a593Smuzhiyun #define CS35L35_AUDIN_DEPTH_SHIFT 0 110*4882a593Smuzhiyun #define CS35L35_ADVIN_DEPTH_MASK 0x0C 111*4882a593Smuzhiyun #define CS35L35_ADVIN_DEPTH_SHIFT 2 112*4882a593Smuzhiyun #define CS35L35_SDIN_DEPTH_8 0x01 113*4882a593Smuzhiyun #define CS35L35_SDIN_DEPTH_16 0x02 114*4882a593Smuzhiyun #define CS35L35_SDIN_DEPTH_24 0x03 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun #define CS35L35_SDOUT_DEPTH_8 0x01 117*4882a593Smuzhiyun #define CS35L35_SDOUT_DEPTH_12 0x02 118*4882a593Smuzhiyun #define CS35L35_SDOUT_DEPTH_16 0x03 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun #define CS35L35_AUD_IN_LR_MASK 0x80 121*4882a593Smuzhiyun #define CS35L35_AUD_IN_LR_SHIFT 7 122*4882a593Smuzhiyun #define CS35L35_ADV_IN_LR_MASK 0x80 123*4882a593Smuzhiyun #define CS35L35_ADV_IN_LR_SHIFT 7 124*4882a593Smuzhiyun #define CS35L35_AUD_IN_LOC_MASK 0x0F 125*4882a593Smuzhiyun #define CS35L35_AUD_IN_LOC_SHIFT 0 126*4882a593Smuzhiyun #define CS35L35_ADV_IN_LOC_MASK 0x0F 127*4882a593Smuzhiyun #define CS35L35_ADV_IN_LOC_SHIFT 0 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun #define CS35L35_IMON_DEPTH_MASK 0x03 130*4882a593Smuzhiyun #define CS35L35_IMON_DEPTH_SHIFT 0 131*4882a593Smuzhiyun #define CS35L35_VMON_DEPTH_MASK 0x0C 132*4882a593Smuzhiyun #define CS35L35_VMON_DEPTH_SHIFT 2 133*4882a593Smuzhiyun #define CS35L35_VBSTMON_DEPTH_MASK 0x03 134*4882a593Smuzhiyun #define CS35L35_VBSTMON_DEPTH_SHIFT 0 135*4882a593Smuzhiyun #define CS35L35_VPMON_DEPTH_MASK 0x0C 136*4882a593Smuzhiyun #define CS35L35_VPMON_DEPTH_SHIFT 2 137*4882a593Smuzhiyun #define CS35L35_VPBRSTAT_DEPTH_MASK 0x30 138*4882a593Smuzhiyun #define CS35L35_VPBRSTAT_DEPTH_SHIFT 4 139*4882a593Smuzhiyun #define CS35L35_ZEROFILL_DEPTH_MASK 0x03 140*4882a593Smuzhiyun #define CS35L35_ZEROFILL_DEPTH_SHIFT 0x00 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun #define CS35L35_MON_TXLOC_MASK 0x3F 143*4882a593Smuzhiyun #define CS35L35_MON_TXLOC_SHIFT 0 144*4882a593Smuzhiyun #define CS35L35_MON_FRM_MASK 0x80 145*4882a593Smuzhiyun #define CS35L35_MON_FRM_SHIFT 7 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun #define CS35L35_IMON_SCALE_MASK 0xF8 148*4882a593Smuzhiyun #define CS35L35_IMON_SCALE_SHIFT 3 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun #define CS35L35_MS_MASK 0x80 151*4882a593Smuzhiyun #define CS35L35_MS_SHIFT 7 152*4882a593Smuzhiyun #define CS35L35_SPMODE_MASK 0x40 153*4882a593Smuzhiyun #define CS35L35_SP_DRV_MASK 0x10 154*4882a593Smuzhiyun #define CS35L35_SP_DRV_SHIFT 4 155*4882a593Smuzhiyun #define CS35L35_CLK_CTL2_MASK 0xFF 156*4882a593Smuzhiyun #define CS35L35_PDM_MODE_MASK 0x40 157*4882a593Smuzhiyun #define CS35L35_PDM_MODE_SHIFT 6 158*4882a593Smuzhiyun #define CS35L35_CLK_SOURCE_MASK 0x03 159*4882a593Smuzhiyun #define CS35L35_CLK_SOURCE_SHIFT 0 160*4882a593Smuzhiyun #define CS35L35_CLK_SOURCE_MCLK 0 161*4882a593Smuzhiyun #define CS35L35_CLK_SOURCE_SCLK 1 162*4882a593Smuzhiyun #define CS35L35_CLK_SOURCE_PDM 2 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun #define CS35L35_SP_SCLKS_MASK 0x0F 165*4882a593Smuzhiyun #define CS35L35_SP_SCLKS_SHIFT 0x00 166*4882a593Smuzhiyun #define CS35L35_SP_SCLKS_16FS 0x03 167*4882a593Smuzhiyun #define CS35L35_SP_SCLKS_32FS 0x07 168*4882a593Smuzhiyun #define CS35L35_SP_SCLKS_48FS 0x0B 169*4882a593Smuzhiyun #define CS35L35_SP_SCLKS_64FS 0x0F 170*4882a593Smuzhiyun #define CS35L35_SP_RATE_MASK 0xC0 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun #define CS35L35_PDN_BST_MASK 0x06 173*4882a593Smuzhiyun #define CS35L35_PDN_BST_FETON_SHIFT 1 174*4882a593Smuzhiyun #define CS35L35_PDN_BST_FETOFF_SHIFT 2 175*4882a593Smuzhiyun #define CS35L35_PWR2_PDN_MASK 0xE0 176*4882a593Smuzhiyun #define CS35L35_PWR3_PDN_MASK 0x1E 177*4882a593Smuzhiyun #define CS35L35_PDN_ALL_MASK 0x01 178*4882a593Smuzhiyun #define CS35L35_DISCHG_FILT_MASK 0x02 179*4882a593Smuzhiyun #define CS35L35_DISCHG_FILT_SHIFT 1 180*4882a593Smuzhiyun #define CS35L35_MCLK_DIS_MASK 0x04 181*4882a593Smuzhiyun #define CS35L35_MCLK_DIS_SHIFT 2 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun #define CS35L35_BST_CTL_MASK 0x7F 184*4882a593Smuzhiyun #define CS35L35_BST_CTL_SHIFT 0 185*4882a593Smuzhiyun #define CS35L35_BST_IPK_MASK 0x1F 186*4882a593Smuzhiyun #define CS35L35_BST_IPK_SHIFT 0 187*4882a593Smuzhiyun #define CS35L35_AMP_MUTE_MASK 0x20 188*4882a593Smuzhiyun #define CS35L35_AMP_MUTE_SHIFT 5 189*4882a593Smuzhiyun #define CS35L35_AMP_GAIN_ZC_MASK 0x10 190*4882a593Smuzhiyun #define CS35L35_AMP_GAIN_ZC_SHIFT 4 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun #define CS35L35_AMP_DIGSFT_MASK 0x02 193*4882a593Smuzhiyun #define CS35L35_AMP_DIGSFT_SHIFT 1 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun /* CS35L35_SP_FMT_CTL3 */ 196*4882a593Smuzhiyun #define CS35L35_SP_I2S_DRV_MASK 0x03 197*4882a593Smuzhiyun #define CS35L35_SP_I2S_DRV_SHIFT 0 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun /* Boost Converter Config */ 200*4882a593Smuzhiyun #define CS35L35_BST_CONV_COEFF_MASK 0xFF 201*4882a593Smuzhiyun #define CS35L35_BST_CONV_SLOPE_MASK 0xFF 202*4882a593Smuzhiyun #define CS35L35_BST_CONV_LBST_MASK 0x03 203*4882a593Smuzhiyun #define CS35L35_BST_CONV_SWFREQ_MASK 0xF0 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun /* Class H Algorithm Control */ 206*4882a593Smuzhiyun #define CS35L35_CH_STEREO_MASK 0x40 207*4882a593Smuzhiyun #define CS35L35_CH_STEREO_SHIFT 6 208*4882a593Smuzhiyun #define CS35L35_CH_BST_OVR_MASK 0x04 209*4882a593Smuzhiyun #define CS35L35_CH_BST_OVR_SHIFT 2 210*4882a593Smuzhiyun #define CS35L35_CH_BST_LIM_MASK 0x08 211*4882a593Smuzhiyun #define CS35L35_CH_BST_LIM_SHIFT 3 212*4882a593Smuzhiyun #define CS35L35_CH_MEM_DEPTH_MASK 0x01 213*4882a593Smuzhiyun #define CS35L35_CH_MEM_DEPTH_SHIFT 0 214*4882a593Smuzhiyun #define CS35L35_CH_HDRM_CTL_MASK 0x3F 215*4882a593Smuzhiyun #define CS35L35_CH_HDRM_CTL_SHIFT 0 216*4882a593Smuzhiyun #define CS35L35_CH_REL_RATE_MASK 0xFF 217*4882a593Smuzhiyun #define CS35L35_CH_REL_RATE_SHIFT 0 218*4882a593Smuzhiyun #define CS35L35_CH_WKFET_DIS_MASK 0x80 219*4882a593Smuzhiyun #define CS35L35_CH_WKFET_DIS_SHIFT 7 220*4882a593Smuzhiyun #define CS35L35_CH_WKFET_DEL_MASK 0x70 221*4882a593Smuzhiyun #define CS35L35_CH_WKFET_DEL_SHIFT 4 222*4882a593Smuzhiyun #define CS35L35_CH_WKFET_THLD_MASK 0x0F 223*4882a593Smuzhiyun #define CS35L35_CH_WKFET_THLD_SHIFT 0 224*4882a593Smuzhiyun #define CS35L35_CH_VP_AUTO_MASK 0x80 225*4882a593Smuzhiyun #define CS35L35_CH_VP_AUTO_SHIFT 7 226*4882a593Smuzhiyun #define CS35L35_CH_VP_RATE_MASK 0x60 227*4882a593Smuzhiyun #define CS35L35_CH_VP_RATE_SHIFT 5 228*4882a593Smuzhiyun #define CS35L35_CH_VP_MAN_MASK 0x1F 229*4882a593Smuzhiyun #define CS35L35_CH_VP_MAN_SHIFT 0 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun /* CS35L35_PROT_RELEASE_CTL */ 232*4882a593Smuzhiyun #define CS35L35_CAL_ERR_RLS 0x80 233*4882a593Smuzhiyun #define CS35L35_SHORT_RLS 0x04 234*4882a593Smuzhiyun #define CS35L35_OTW_RLS 0x02 235*4882a593Smuzhiyun #define CS35L35_OTE_RLS 0x01 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun /* INT Mask Registers */ 238*4882a593Smuzhiyun #define CS35L35_INT1_CRIT_MASK 0x38 239*4882a593Smuzhiyun #define CS35L35_INT2_CRIT_MASK 0xEF 240*4882a593Smuzhiyun #define CS35L35_INT3_CRIT_MASK 0xEE 241*4882a593Smuzhiyun #define CS35L35_INT4_CRIT_MASK 0xFF 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun /* PDN DONE Masks */ 244*4882a593Smuzhiyun #define CS35L35_M_PDN_DONE_SHIFT 4 245*4882a593Smuzhiyun #define CS35L35_M_PDN_DONE_MASK 0x10 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun /* CS35L35_INT_1 */ 248*4882a593Smuzhiyun #define CS35L35_CAL_ERR 0x80 249*4882a593Smuzhiyun #define CS35L35_OTP_ERR 0x40 250*4882a593Smuzhiyun #define CS35L35_LRCLK_ERR 0x20 251*4882a593Smuzhiyun #define CS35L35_SPCLK_ERR 0x10 252*4882a593Smuzhiyun #define CS35L35_MCLK_ERR 0x08 253*4882a593Smuzhiyun #define CS35L35_AMP_SHORT 0x04 254*4882a593Smuzhiyun #define CS35L35_OTW 0x02 255*4882a593Smuzhiyun #define CS35L35_OTE 0x01 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /* CS35L35_INT_2 */ 258*4882a593Smuzhiyun #define CS35L35_PDN_DONE 0x10 259*4882a593Smuzhiyun #define CS35L35_VPBR_ERR 0x02 260*4882a593Smuzhiyun #define CS35L35_VPBR_CLR 0x01 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun /* CS35L35_INT_3 */ 263*4882a593Smuzhiyun #define CS35L35_BST_HIGH 0x10 264*4882a593Smuzhiyun #define CS35L35_BST_HIGH_FLAG 0x08 265*4882a593Smuzhiyun #define CS35L35_BST_IPK_FLAG 0x04 266*4882a593Smuzhiyun #define CS35L35_LBST_SHORT 0x01 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun /* CS35L35_INT_4 */ 269*4882a593Smuzhiyun #define CS35L35_VMON_OVFL 0x08 270*4882a593Smuzhiyun #define CS35L35_IMON_OVFL 0x04 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun #define CS35L35_FORMATS (SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE | \ 273*4882a593Smuzhiyun SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun struct cs35l35_private { 276*4882a593Smuzhiyun struct device *dev; 277*4882a593Smuzhiyun struct cs35l35_platform_data pdata; 278*4882a593Smuzhiyun struct regmap *regmap; 279*4882a593Smuzhiyun struct regulator_bulk_data supplies[2]; 280*4882a593Smuzhiyun int num_supplies; 281*4882a593Smuzhiyun int sysclk; 282*4882a593Smuzhiyun int sclk; 283*4882a593Smuzhiyun bool pdm_mode; 284*4882a593Smuzhiyun bool i2s_mode; 285*4882a593Smuzhiyun bool slave_mode; 286*4882a593Smuzhiyun /* GPIO for /RST */ 287*4882a593Smuzhiyun struct gpio_desc *reset_gpio; 288*4882a593Smuzhiyun struct completion pdn_done; 289*4882a593Smuzhiyun }; 290*4882a593Smuzhiyun 291*4882a593Smuzhiyun static const char * const cs35l35_supplies[] = { 292*4882a593Smuzhiyun "VA", 293*4882a593Smuzhiyun "VP", 294*4882a593Smuzhiyun }; 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun #endif 297