staticbool rt5663_volatile_register(struct device *dev, unsignedint reg)
{ switch (reg) { case RT5663_RESET: case RT5663_SIL_DET_CTL: case RT5663_HP_IMP_GAIN_2: case RT5663_AD_DA_MIXER: case RT5663_FRAC_DIV_2: case RT5663_MICBIAS_1: case RT5663_ASRC_11_2: case RT5663_ADC_EQ_1: case RT5663_INT_ST_1: case RT5663_INT_ST_2: case RT5663_GPIO_STA1: case RT5663_SIN_GEN_1: case RT5663_IL_CMD_1: case RT5663_IL_CMD_5: case RT5663_IL_CMD_PWRSAV1: case RT5663_EM_JACK_TYPE_1: case RT5663_EM_JACK_TYPE_2: case RT5663_EM_JACK_TYPE_3: case RT5663_JD_CTRL2: case RT5663_VENDOR_ID: case RT5663_VENDOR_ID_1: case RT5663_VENDOR_ID_2: case RT5663_PLL_INT_REG: case RT5663_SOFT_RAMP: case RT5663_STO_DRE_1: case RT5663_STO_DRE_5: case RT5663_STO_DRE_6: case RT5663_STO_DRE_7: case RT5663_MIC_DECRO_1: case RT5663_MIC_DECRO_4: case RT5663_HP_IMP_SEN_1: case RT5663_HP_IMP_SEN_3: case RT5663_HP_IMP_SEN_4: case RT5663_HP_IMP_SEN_5: case RT5663_HP_CALIB_1_1: case RT5663_HP_CALIB_9: case RT5663_HP_CALIB_ST1: case RT5663_HP_CALIB_ST2: case RT5663_HP_CALIB_ST3: case RT5663_HP_CALIB_ST4: case RT5663_HP_CALIB_ST5: case RT5663_HP_CALIB_ST6: case RT5663_HP_CALIB_ST7: case RT5663_HP_CALIB_ST8: case RT5663_HP_CALIB_ST9: case RT5663_ANA_JD: returntrue; default: returnfalse;
}
}
staticbool rt5663_readable_register(struct device *dev, unsignedint reg)
{ switch (reg) { case RT5663_RESET: case RT5663_HP_OUT_EN: case RT5663_HP_LCH_DRE: case RT5663_HP_RCH_DRE: case RT5663_CALIB_BST: case RT5663_RECMIX: case RT5663_SIL_DET_CTL: case RT5663_PWR_SAV_SILDET: case RT5663_SIDETONE_CTL: case RT5663_STO1_DAC_DIG_VOL: case RT5663_STO1_ADC_DIG_VOL: case RT5663_STO1_BOOST: case RT5663_HP_IMP_GAIN_1: case RT5663_HP_IMP_GAIN_2: case RT5663_STO1_ADC_MIXER: case RT5663_AD_DA_MIXER: case RT5663_STO_DAC_MIXER: case RT5663_DIG_SIDE_MIXER: case RT5663_BYPASS_STO_DAC: case RT5663_CALIB_REC_MIX: case RT5663_PWR_DIG_1: case RT5663_PWR_DIG_2: case RT5663_PWR_ANLG_1: case RT5663_PWR_ANLG_2: case RT5663_PWR_ANLG_3: case RT5663_PWR_MIXER: case RT5663_SIG_CLK_DET: case RT5663_PRE_DIV_GATING_1: case RT5663_PRE_DIV_GATING_2: case RT5663_I2S1_SDP: case RT5663_ADDA_CLK_1: case RT5663_ADDA_RST: case RT5663_FRAC_DIV_1: case RT5663_FRAC_DIV_2: case RT5663_TDM_1: case RT5663_TDM_2: case RT5663_TDM_3: case RT5663_TDM_4: case RT5663_TDM_5: case RT5663_GLB_CLK: case RT5663_PLL_1: case RT5663_PLL_2: case RT5663_ASRC_1: case RT5663_ASRC_2: case RT5663_ASRC_4: case RT5663_DUMMY_REG: case RT5663_ASRC_8: case RT5663_ASRC_9: case RT5663_ASRC_11: case RT5663_DEPOP_1: case RT5663_DEPOP_2: case RT5663_DEPOP_3: case RT5663_HP_CHARGE_PUMP_1: case RT5663_HP_CHARGE_PUMP_2: case RT5663_MICBIAS_1: case RT5663_RC_CLK: case RT5663_ASRC_11_2: case RT5663_DUMMY_REG_2: case RT5663_REC_PATH_GAIN: case RT5663_AUTO_1MRC_CLK: case RT5663_ADC_EQ_1: case RT5663_ADC_EQ_2: case RT5663_IRQ_1: case RT5663_IRQ_2: case RT5663_IRQ_3: case RT5663_IRQ_4: case RT5663_IRQ_5: case RT5663_INT_ST_1: case RT5663_INT_ST_2: case RT5663_GPIO_1: case RT5663_GPIO_2: case RT5663_GPIO_STA1: case RT5663_SIN_GEN_1: case RT5663_SIN_GEN_2: case RT5663_SIN_GEN_3: case RT5663_SOF_VOL_ZC1: case RT5663_IL_CMD_1: case RT5663_IL_CMD_2: case RT5663_IL_CMD_3: case RT5663_IL_CMD_4: case RT5663_IL_CMD_5: case RT5663_IL_CMD_6: case RT5663_IL_CMD_7: case RT5663_IL_CMD_8: case RT5663_IL_CMD_PWRSAV1: case RT5663_IL_CMD_PWRSAV2: case RT5663_EM_JACK_TYPE_1: case RT5663_EM_JACK_TYPE_2: case RT5663_EM_JACK_TYPE_3: case RT5663_EM_JACK_TYPE_4: case RT5663_EM_JACK_TYPE_5: case RT5663_EM_JACK_TYPE_6: case RT5663_STO1_HPF_ADJ1: case RT5663_STO1_HPF_ADJ2: case RT5663_FAST_OFF_MICBIAS: case RT5663_JD_CTRL1: case RT5663_JD_CTRL2: case RT5663_DIG_MISC: case RT5663_VENDOR_ID: case RT5663_VENDOR_ID_1: case RT5663_VENDOR_ID_2: case RT5663_DIG_VOL_ZCD: case RT5663_ANA_BIAS_CUR_1: case RT5663_ANA_BIAS_CUR_2: case RT5663_ANA_BIAS_CUR_3: case RT5663_ANA_BIAS_CUR_4: case RT5663_ANA_BIAS_CUR_5: case RT5663_ANA_BIAS_CUR_6: case RT5663_BIAS_CUR_5: case RT5663_BIAS_CUR_6: case RT5663_BIAS_CUR_7: case RT5663_BIAS_CUR_8: case RT5663_DACREF_LDO: case RT5663_DUMMY_REG_3: case RT5663_BIAS_CUR_9: case RT5663_DUMMY_REG_4: case RT5663_VREFADJ_OP: case RT5663_VREF_RECMIX: case RT5663_CHARGE_PUMP_1: case RT5663_CHARGE_PUMP_1_2: case RT5663_CHARGE_PUMP_1_3: case RT5663_CHARGE_PUMP_2: case RT5663_DIG_IN_PIN1: case RT5663_PAD_DRV_CTL: case RT5663_PLL_INT_REG: case RT5663_CHOP_DAC_L: case RT5663_CHOP_ADC: case RT5663_CALIB_ADC: case RT5663_CHOP_DAC_R: case RT5663_DUMMY_CTL_DACLR: case RT5663_DUMMY_REG_5: case RT5663_SOFT_RAMP: case RT5663_TEST_MODE_1: case RT5663_TEST_MODE_2: case RT5663_TEST_MODE_3: case RT5663_STO_DRE_1: case RT5663_STO_DRE_2: case RT5663_STO_DRE_3: case RT5663_STO_DRE_4: case RT5663_STO_DRE_5: case RT5663_STO_DRE_6: case RT5663_STO_DRE_7: case RT5663_STO_DRE_8: case RT5663_STO_DRE_9: case RT5663_STO_DRE_10: case RT5663_MIC_DECRO_1: case RT5663_MIC_DECRO_2: case RT5663_MIC_DECRO_3: case RT5663_MIC_DECRO_4: case RT5663_MIC_DECRO_5: case RT5663_MIC_DECRO_6: case RT5663_HP_DECRO_1: case RT5663_HP_DECRO_2: case RT5663_HP_DECRO_3: case RT5663_HP_DECRO_4: case RT5663_HP_DECOUP: case RT5663_HP_IMP_SEN_MAP8: case RT5663_HP_IMP_SEN_MAP9: case RT5663_HP_IMP_SEN_MAP10: case RT5663_HP_IMP_SEN_MAP11: case RT5663_HP_IMP_SEN_1: case RT5663_HP_IMP_SEN_2: case RT5663_HP_IMP_SEN_3: case RT5663_HP_IMP_SEN_4: case RT5663_HP_IMP_SEN_5: case RT5663_HP_IMP_SEN_6: case RT5663_HP_IMP_SEN_7: case RT5663_HP_IMP_SEN_8: case RT5663_HP_IMP_SEN_9: case RT5663_HP_IMP_SEN_10: case RT5663_HP_IMP_SEN_11: case RT5663_HP_IMP_SEN_12: case RT5663_HP_IMP_SEN_13: case RT5663_HP_IMP_SEN_14: case RT5663_HP_IMP_SEN_15: case RT5663_HP_IMP_SEN_16: case RT5663_HP_IMP_SEN_17: case RT5663_HP_IMP_SEN_18: case RT5663_HP_IMP_SEN_19: case RT5663_HP_IMPSEN_DIG5: case RT5663_HP_IMPSEN_MAP1: case RT5663_HP_IMPSEN_MAP2: case RT5663_HP_IMPSEN_MAP3: case RT5663_HP_IMPSEN_MAP4: case RT5663_HP_IMPSEN_MAP5: case RT5663_HP_IMPSEN_MAP7: case RT5663_HP_LOGIC_1: case RT5663_HP_LOGIC_2: case RT5663_HP_CALIB_1: case RT5663_HP_CALIB_1_1: case RT5663_HP_CALIB_2: case RT5663_HP_CALIB_3: case RT5663_HP_CALIB_4: case RT5663_HP_CALIB_5: case RT5663_HP_CALIB_5_1: case RT5663_HP_CALIB_6: case RT5663_HP_CALIB_7: case RT5663_HP_CALIB_9: case RT5663_HP_CALIB_10: case RT5663_HP_CALIB_11: case RT5663_HP_CALIB_ST1: case RT5663_HP_CALIB_ST2: case RT5663_HP_CALIB_ST3: case RT5663_HP_CALIB_ST4: case RT5663_HP_CALIB_ST5: case RT5663_HP_CALIB_ST6: case RT5663_HP_CALIB_ST7: case RT5663_HP_CALIB_ST8: case RT5663_HP_CALIB_ST9: case RT5663_HP_AMP_DET: case RT5663_DUMMY_REG_6: case RT5663_HP_BIAS: case RT5663_CBJ_1: case RT5663_CBJ_2: case RT5663_CBJ_3: case RT5663_DUMMY_1: case RT5663_DUMMY_2: case RT5663_DUMMY_3: case RT5663_ANA_JD: case RT5663_ADC_LCH_LPF1_A1: case RT5663_ADC_RCH_LPF1_A1: case RT5663_ADC_LCH_LPF1_H0: case RT5663_ADC_RCH_LPF1_H0: case RT5663_ADC_LCH_BPF1_A1: case RT5663_ADC_RCH_BPF1_A1: case RT5663_ADC_LCH_BPF1_A2: case RT5663_ADC_RCH_BPF1_A2: case RT5663_ADC_LCH_BPF1_H0: case RT5663_ADC_RCH_BPF1_H0: case RT5663_ADC_LCH_BPF2_A1: case RT5663_ADC_RCH_BPF2_A1: case RT5663_ADC_LCH_BPF2_A2: case RT5663_ADC_RCH_BPF2_A2: case RT5663_ADC_LCH_BPF2_H0: case RT5663_ADC_RCH_BPF2_H0: case RT5663_ADC_LCH_BPF3_A1: case RT5663_ADC_RCH_BPF3_A1: case RT5663_ADC_LCH_BPF3_A2: case RT5663_ADC_RCH_BPF3_A2: case RT5663_ADC_LCH_BPF3_H0: case RT5663_ADC_RCH_BPF3_H0: case RT5663_ADC_LCH_BPF4_A1: case RT5663_ADC_RCH_BPF4_A1: case RT5663_ADC_LCH_BPF4_A2: case RT5663_ADC_RCH_BPF4_A2: case RT5663_ADC_LCH_BPF4_H0: case RT5663_ADC_RCH_BPF4_H0: case RT5663_ADC_LCH_HPF1_A1: case RT5663_ADC_RCH_HPF1_A1: case RT5663_ADC_LCH_HPF1_H0: case RT5663_ADC_RCH_HPF1_H0: case RT5663_ADC_EQ_PRE_VOL_L: case RT5663_ADC_EQ_PRE_VOL_R: case RT5663_ADC_EQ_POST_VOL_L: case RT5663_ADC_EQ_POST_VOL_R: returntrue; default: returnfalse;
}
}
staticbool rt5663_v2_volatile_register(struct device *dev, unsignedint reg)
{ switch (reg) { case RT5663_RESET: case RT5663_CBJ_TYPE_2: case RT5663_PDM_OUT_CTL: case RT5663_PDM_I2C_DATA_CTL1: case RT5663_PDM_I2C_DATA_CTL4: case RT5663_ALC_BK_GAIN: case RT5663_PLL_2: case RT5663_MICBIAS_1: case RT5663_ADC_EQ_1: case RT5663_INT_ST_1: case RT5663_GPIO_STA2: case RT5663_IL_CMD_1: case RT5663_IL_CMD_5: case RT5663_A_JD_CTRL: case RT5663_JD_CTRL2: case RT5663_VENDOR_ID: case RT5663_VENDOR_ID_1: case RT5663_VENDOR_ID_2: case RT5663_STO_DRE_1: case RT5663_STO_DRE_5: case RT5663_STO_DRE_6: case RT5663_STO_DRE_7: case RT5663_MONO_DYNA_6: case RT5663_STO1_SIL_DET: case RT5663_MONOL_SIL_DET: case RT5663_MONOR_SIL_DET: case RT5663_STO2_DAC_SIL: case RT5663_MONO_AMP_CAL_ST1: case RT5663_MONO_AMP_CAL_ST2: case RT5663_MONO_AMP_CAL_ST3: case RT5663_MONO_AMP_CAL_ST4: case RT5663_HP_IMP_SEN_2: case RT5663_HP_IMP_SEN_3: case RT5663_HP_IMP_SEN_4: case RT5663_HP_IMP_SEN_10: case RT5663_HP_CALIB_1: case RT5663_HP_CALIB_10: case RT5663_HP_CALIB_ST1: case RT5663_HP_CALIB_ST4: case RT5663_HP_CALIB_ST5: case RT5663_HP_CALIB_ST6: case RT5663_HP_CALIB_ST7: case RT5663_HP_CALIB_ST8: case RT5663_HP_CALIB_ST9: case RT5663_HP_CALIB_ST10: case RT5663_HP_CALIB_ST11: returntrue; default: returnfalse;
}
}
staticbool rt5663_v2_readable_register(struct device *dev, unsignedint reg)
{ switch (reg) { case RT5663_LOUT_CTRL: case RT5663_HP_AMP_2: case RT5663_MONO_OUT: case RT5663_MONO_GAIN: case RT5663_AEC_BST: case RT5663_IN1_IN2: case RT5663_IN3_IN4: case RT5663_INL1_INR1: case RT5663_CBJ_TYPE_2: case RT5663_CBJ_TYPE_3: case RT5663_CBJ_TYPE_4: case RT5663_CBJ_TYPE_5: case RT5663_CBJ_TYPE_8: case RT5663_DAC3_DIG_VOL: case RT5663_DAC3_CTRL: case RT5663_MONO_ADC_DIG_VOL: case RT5663_STO2_ADC_DIG_VOL: case RT5663_MONO_ADC_BST_GAIN: case RT5663_STO2_ADC_BST_GAIN: case RT5663_SIDETONE_CTRL: case RT5663_MONO1_ADC_MIXER: case RT5663_STO2_ADC_MIXER: case RT5663_MONO_DAC_MIXER: case RT5663_DAC2_SRC_CTRL: case RT5663_IF_3_4_DATA_CTL: case RT5663_IF_5_DATA_CTL: case RT5663_PDM_OUT_CTL: case RT5663_PDM_I2C_DATA_CTL1: case RT5663_PDM_I2C_DATA_CTL2: case RT5663_PDM_I2C_DATA_CTL3: case RT5663_PDM_I2C_DATA_CTL4: case RT5663_RECMIX1_NEW: case RT5663_RECMIX1L_0: case RT5663_RECMIX1L: case RT5663_RECMIX1R_0: case RT5663_RECMIX1R: case RT5663_RECMIX2_NEW: case RT5663_RECMIX2_L_2: case RT5663_RECMIX2_R: case RT5663_RECMIX2_R_2: case RT5663_CALIB_REC_LR: case RT5663_ALC_BK_GAIN: case RT5663_MONOMIX_GAIN: case RT5663_MONOMIX_IN_GAIN: case RT5663_OUT_MIXL_GAIN: case RT5663_OUT_LMIX_IN_GAIN: case RT5663_OUT_RMIX_IN_GAIN: case RT5663_OUT_RMIX_IN_GAIN1: case RT5663_LOUT_MIXER_CTRL: case RT5663_PWR_VOL: case RT5663_ADCDAC_RST: case RT5663_I2S34_SDP: case RT5663_I2S5_SDP: case RT5663_TDM_6: case RT5663_TDM_7: case RT5663_TDM_8: case RT5663_TDM_9: case RT5663_ASRC_3: case RT5663_ASRC_6: case RT5663_ASRC_7: case RT5663_PLL_TRK_13: case RT5663_I2S_M_CLK_CTL: case RT5663_FDIV_I2S34_M_CLK: case RT5663_FDIV_I2S34_M_CLK2: case RT5663_FDIV_I2S5_M_CLK: case RT5663_FDIV_I2S5_M_CLK2: case RT5663_V2_IRQ_4: case RT5663_GPIO_3: case RT5663_GPIO_4: case RT5663_GPIO_STA2: case RT5663_HP_AMP_DET1: case RT5663_HP_AMP_DET2: case RT5663_HP_AMP_DET3: case RT5663_MID_BD_HP_AMP: case RT5663_LOW_BD_HP_AMP: case RT5663_SOF_VOL_ZC2: case RT5663_ADC_STO2_ADJ1: case RT5663_ADC_STO2_ADJ2: case RT5663_A_JD_CTRL: case RT5663_JD1_TRES_CTRL: case RT5663_JD2_TRES_CTRL: case RT5663_V2_JD_CTRL2: case RT5663_DUM_REG_2: case RT5663_DUM_REG_3: case RT5663_VENDOR_ID: case RT5663_VENDOR_ID_1: case RT5663_VENDOR_ID_2: case RT5663_DACADC_DIG_VOL2: case RT5663_DIG_IN_PIN2: case RT5663_PAD_DRV_CTL1: case RT5663_SOF_RAM_DEPOP: case RT5663_VOL_TEST: case RT5663_TEST_MODE_4: case RT5663_TEST_MODE_5: case RT5663_STO_DRE_9: case RT5663_MONO_DYNA_1: case RT5663_MONO_DYNA_2: case RT5663_MONO_DYNA_3: case RT5663_MONO_DYNA_4: case RT5663_MONO_DYNA_5: case RT5663_MONO_DYNA_6: case RT5663_STO1_SIL_DET: case RT5663_MONOL_SIL_DET: case RT5663_MONOR_SIL_DET: case RT5663_STO2_DAC_SIL: case RT5663_PWR_SAV_CTL1: case RT5663_PWR_SAV_CTL2: case RT5663_PWR_SAV_CTL3: case RT5663_PWR_SAV_CTL4: case RT5663_PWR_SAV_CTL5: case RT5663_PWR_SAV_CTL6: case RT5663_MONO_AMP_CAL1: case RT5663_MONO_AMP_CAL2: case RT5663_MONO_AMP_CAL3: case RT5663_MONO_AMP_CAL4: case RT5663_MONO_AMP_CAL5: case RT5663_MONO_AMP_CAL6: case RT5663_MONO_AMP_CAL7: case RT5663_MONO_AMP_CAL_ST1: case RT5663_MONO_AMP_CAL_ST2: case RT5663_MONO_AMP_CAL_ST3: case RT5663_MONO_AMP_CAL_ST4: case RT5663_MONO_AMP_CAL_ST5: case RT5663_V2_HP_IMP_SEN_13: case RT5663_V2_HP_IMP_SEN_14: case RT5663_V2_HP_IMP_SEN_6: case RT5663_V2_HP_IMP_SEN_7: case RT5663_V2_HP_IMP_SEN_8: case RT5663_V2_HP_IMP_SEN_9: case RT5663_V2_HP_IMP_SEN_10: case RT5663_HP_LOGIC_3: case RT5663_HP_CALIB_ST10: case RT5663_HP_CALIB_ST11: case RT5663_PRO_REG_TBL_4: case RT5663_PRO_REG_TBL_5: case RT5663_PRO_REG_TBL_6: case RT5663_PRO_REG_TBL_7: case RT5663_PRO_REG_TBL_8: case RT5663_PRO_REG_TBL_9: case RT5663_SAR_ADC_INL_1: case RT5663_SAR_ADC_INL_2: case RT5663_SAR_ADC_INL_3: case RT5663_SAR_ADC_INL_4: case RT5663_SAR_ADC_INL_5: case RT5663_SAR_ADC_INL_6: case RT5663_SAR_ADC_INL_7: case RT5663_SAR_ADC_INL_8: case RT5663_SAR_ADC_INL_9: case RT5663_SAR_ADC_INL_10: case RT5663_SAR_ADC_INL_11: case RT5663_SAR_ADC_INL_12: case RT5663_DRC_CTRL_1: case RT5663_DRC1_CTRL_2: case RT5663_DRC1_CTRL_3: case RT5663_DRC1_CTRL_4: case RT5663_DRC1_CTRL_5: case RT5663_DRC1_CTRL_6: case RT5663_DRC1_HD_CTRL_1: case RT5663_DRC1_HD_CTRL_2: case RT5663_DRC1_PRI_REG_1: case RT5663_DRC1_PRI_REG_2: case RT5663_DRC1_PRI_REG_3: case RT5663_DRC1_PRI_REG_4: case RT5663_DRC1_PRI_REG_5: case RT5663_DRC1_PRI_REG_6: case RT5663_DRC1_PRI_REG_7: case RT5663_DRC1_PRI_REG_8: case RT5663_ALC_PGA_CTL_1: case RT5663_ALC_PGA_CTL_2: case RT5663_ALC_PGA_CTL_3: case RT5663_ALC_PGA_CTL_4: case RT5663_ALC_PGA_CTL_5: case RT5663_ALC_PGA_CTL_6: case RT5663_ALC_PGA_CTL_7: case RT5663_ALC_PGA_CTL_8: case RT5663_ALC_PGA_REG_1: case RT5663_ALC_PGA_REG_2: case RT5663_ALC_PGA_REG_3: case RT5663_ADC_EQ_RECOV_1: case RT5663_ADC_EQ_RECOV_2: case RT5663_ADC_EQ_RECOV_3: case RT5663_ADC_EQ_RECOV_4: case RT5663_ADC_EQ_RECOV_5: case RT5663_ADC_EQ_RECOV_6: case RT5663_ADC_EQ_RECOV_7: case RT5663_ADC_EQ_RECOV_8: case RT5663_ADC_EQ_RECOV_9: case RT5663_ADC_EQ_RECOV_10: case RT5663_ADC_EQ_RECOV_11: case RT5663_ADC_EQ_RECOV_12: case RT5663_ADC_EQ_RECOV_13: case RT5663_VID_HIDDEN: case RT5663_VID_CUSTOMER: case RT5663_SCAN_MODE: case RT5663_I2C_BYPA: returntrue; case RT5663_TDM_1: case RT5663_DEPOP_3: case RT5663_ASRC_11_2: case RT5663_INT_ST_2: case RT5663_GPIO_STA1: case RT5663_SIN_GEN_1: case RT5663_SIN_GEN_2: case RT5663_SIN_GEN_3: case RT5663_IL_CMD_PWRSAV1: case RT5663_IL_CMD_PWRSAV2: case RT5663_EM_JACK_TYPE_1: case RT5663_EM_JACK_TYPE_2: case RT5663_EM_JACK_TYPE_3: case RT5663_EM_JACK_TYPE_4: case RT5663_FAST_OFF_MICBIAS: case RT5663_ANA_BIAS_CUR_1: case RT5663_ANA_BIAS_CUR_2: case RT5663_BIAS_CUR_9: case RT5663_DUMMY_REG_4: case RT5663_VREF_RECMIX: case RT5663_CHARGE_PUMP_1_2: case RT5663_CHARGE_PUMP_1_3: case RT5663_CHARGE_PUMP_2: case RT5663_CHOP_DAC_R: case RT5663_DUMMY_CTL_DACLR: case RT5663_DUMMY_REG_5: case RT5663_SOFT_RAMP: case RT5663_TEST_MODE_1: case RT5663_STO_DRE_10: case RT5663_MIC_DECRO_1: case RT5663_MIC_DECRO_2: case RT5663_MIC_DECRO_3: case RT5663_MIC_DECRO_4: case RT5663_MIC_DECRO_5: case RT5663_MIC_DECRO_6: case RT5663_HP_DECRO_1: case RT5663_HP_DECRO_2: case RT5663_HP_DECRO_3: case RT5663_HP_DECRO_4: case RT5663_HP_DECOUP: case RT5663_HP_IMPSEN_MAP4: case RT5663_HP_IMPSEN_MAP5: case RT5663_HP_IMPSEN_MAP7: case RT5663_HP_CALIB_1: case RT5663_CBJ_1: case RT5663_CBJ_2: case RT5663_CBJ_3: returnfalse; default: return rt5663_readable_register(dev, reg);
}
}
/** * rt5663_v2_jack_detect - Detect headset. * @component: SoC audio component device. * @jack_insert: Jack insert or not. * * Detect whether is headset or not when jack inserted. * * Returns detect status.
*/
staticint rt5663_v2_jack_detect(struct snd_soc_component *component, int jack_insert)
{ struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); struct rt5663_priv *rt5663 = snd_soc_component_get_drvdata(component); int val, i = 0, sleep_time[5] = {300, 150, 100, 50, 30};
for (i = 0; i < rt5663->pdata.impedance_sensing_num; i++) { if (value >= rt5663->imp_table[i].imp_min &&
value <= rt5663->imp_table[i].imp_max) break;
}
if (rt5663_check_jd_status(component)) { /* jack in */ if (rt5663->jack_type == 0) { /* jack was out, report jack type */ switch (rt5663->codec_ver) { case CODEC_VER_1:
report = rt5663_v2_jack_detect(
rt5663->component, 1); break; case CODEC_VER_0:
report = rt5663_jack_detect(rt5663->component, 1); if (rt5663->pdata.impedance_sensing_num)
rt5663_impedance_sensing(rt5663->component); break; default:
dev_err(component->dev, "Unknown CODEC Version\n");
}
/* Delay the jack insert report to avoid pop noise */
msleep(30);
} else { /* jack is already in, report button event */
report = SND_JACK_HEADSET;
btn_type = rt5663_button_detect(rt5663->component); /** * rt5663 can report three kinds of button behavior, * one click, double click and hold. However, * currently we will report button pressed/released * event. So all the three button behaviors are * treated as button pressed.
*/ switch (btn_type) { case 0x8000: case 0x4000: case 0x2000:
report |= SND_JACK_BTN_0; break; case 0x1000: case 0x0800: case 0x0400:
report |= SND_JACK_BTN_1; break; case 0x0200: case 0x0100: case 0x0080:
report |= SND_JACK_BTN_2; break; case 0x0040: case 0x0020: case 0x0010:
report |= SND_JACK_BTN_3; break; case 0x0000: /* unpressed */ break; default:
btn_type = 0;
dev_err(rt5663->component->dev, "Unexpected button code 0x%04x\n",
btn_type); break;
} /* button release or spurious interrput*/ if (btn_type == 0) {
report = rt5663->jack_type;
cancel_delayed_work_sync(
&rt5663->jd_unplug_work);
} else {
queue_delayed_work(system_wq,
&rt5663->jd_unplug_work,
msecs_to_jiffies(500));
}
}
} else { /* jack out */ switch (rt5663->codec_ver) { case CODEC_VER_1:
report = rt5663_v2_jack_detect(rt5663->component, 0); break; case CODEC_VER_0:
report = rt5663_jack_detect(rt5663->component, 0); break; default:
dev_err(component->dev, "Unknown CODEC Version\n");
}
}
dev_dbg(component->dev, "%s jack report: 0x%04x\n", __func__, report);
snd_soc_jack_report(rt5663->hs_jack, report, SND_JACK_HEADSET |
SND_JACK_BTN_0 | SND_JACK_BTN_1 |
SND_JACK_BTN_2 | SND_JACK_BTN_3);
}
if (da_asrc_en || ad_asrc_en) if (rt5663->sysclk > rt5663->lrck * 384) return 1;
dev_err(component->dev, "sysclk < 384 x fs, disable i2s asrc\n");
return 0;
}
/** * rt5663_sel_asrc_clk_src - select ASRC clock source for a set of filters * @component: SoC audio component device. * @filter_mask: mask of filters. * @clk_src: clock source * * The ASRC function is for asynchronous MCLK and LRCK. Also, since RT5663 can * only support standard 32fs or 64fs i2s format, ASRC should be enabled to * support special i2s clock format such as Intel's 100fs(100 * sampling rate). * ASRC function will track i2s clock and generate a corresponding system clock * for codec. This function provides an API to select the clock source for a * set of filters specified by the mask. And the codec driver will turn on ASRC * for these filters if ASRC is selected as their clock source.
*/ int rt5663_sel_asrc_clk_src(struct snd_soc_component *component, unsignedint filter_mask, unsignedint clk_src)
{ struct rt5663_priv *rt5663 = snd_soc_component_get_drvdata(component); unsignedint asrc2_mask = 0; unsignedint asrc2_value = 0; unsignedint asrc3_mask = 0; unsignedint asrc3_value = 0;
switch (clk_src) { case RT5663_CLK_SEL_SYS: case RT5663_CLK_SEL_I2S1_ASRC: break;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.