staticbool rt5659_volatile_register(struct device *dev, unsignedint reg)
{ switch (reg) { case RT5659_RESET: case RT5659_EJD_CTRL_2: case RT5659_SILENCE_CTRL: case RT5659_DAC2_DIG_VOL: case RT5659_HP_IMP_GAIN_2: case RT5659_PDM_OUT_CTRL: case RT5659_PDM_DATA_CTRL_1: case RT5659_PDM_DATA_CTRL_4: case RT5659_HAPTIC_GEN_CTRL_1: case RT5659_HAPTIC_GEN_CTRL_3: case RT5659_HAPTIC_LPF_CTRL_3: case RT5659_CLK_DET: case RT5659_MICBIAS_1: case RT5659_ASRC_11: case RT5659_ADC_EQ_CTRL_1: case RT5659_DAC_EQ_CTRL_1: case RT5659_INT_ST_1: case RT5659_INT_ST_2: case RT5659_GPIO_STA: case RT5659_SINE_GEN_CTRL_1: case RT5659_IL_CMD_1: case RT5659_4BTN_IL_CMD_1: case RT5659_PSV_IL_CMD_1: case RT5659_AJD1_CTRL: case RT5659_AJD2_AJD3_CTRL: case RT5659_JD_CTRL_3: case RT5659_VENDOR_ID: case RT5659_VENDOR_ID_1: case RT5659_DEVICE_ID: case RT5659_MEMORY_TEST: case RT5659_SOFT_RAMP_DEPOP_DAC_CLK_CTRL: case RT5659_VOL_TEST: case RT5659_STO_NG2_CTRL_1: case RT5659_STO_NG2_CTRL_5: case RT5659_STO_NG2_CTRL_6: case RT5659_STO_NG2_CTRL_7: case RT5659_MONO_NG2_CTRL_1: case RT5659_MONO_NG2_CTRL_5: case RT5659_MONO_NG2_CTRL_6: case RT5659_HP_IMP_SENS_CTRL_1: case RT5659_HP_IMP_SENS_CTRL_3: case RT5659_HP_IMP_SENS_CTRL_4: case RT5659_HP_CALIB_CTRL_1: case RT5659_HP_CALIB_CTRL_9: case RT5659_HP_CALIB_STA_1: case RT5659_HP_CALIB_STA_2: case RT5659_HP_CALIB_STA_3: case RT5659_HP_CALIB_STA_4: case RT5659_HP_CALIB_STA_5: case RT5659_HP_CALIB_STA_6: case RT5659_HP_CALIB_STA_7: case RT5659_HP_CALIB_STA_8: case RT5659_HP_CALIB_STA_9: case RT5659_MONO_AMP_CALIB_CTRL_1: case RT5659_MONO_AMP_CALIB_CTRL_3: case RT5659_MONO_AMP_CALIB_STA_1: case RT5659_MONO_AMP_CALIB_STA_2: case RT5659_MONO_AMP_CALIB_STA_3: case RT5659_MONO_AMP_CALIB_STA_4: case RT5659_SPK_PWR_LMT_STA_1: case RT5659_SPK_PWR_LMT_STA_2: case RT5659_SPK_PWR_LMT_STA_3: case RT5659_SPK_PWR_LMT_STA_4: case RT5659_SPK_PWR_LMT_STA_5: case RT5659_SPK_PWR_LMT_STA_6: case RT5659_SPK_DC_CAILB_CTRL_1: case RT5659_SPK_DC_CAILB_STA_1: case RT5659_SPK_DC_CAILB_STA_2: case RT5659_SPK_DC_CAILB_STA_3: case RT5659_SPK_DC_CAILB_STA_4: case RT5659_SPK_DC_CAILB_STA_5: case RT5659_SPK_DC_CAILB_STA_6: case RT5659_SPK_DC_CAILB_STA_7: case RT5659_SPK_DC_CAILB_STA_8: case RT5659_SPK_DC_CAILB_STA_9: case RT5659_SPK_DC_CAILB_STA_10: case RT5659_SPK_VDD_STA_1: case RT5659_SPK_VDD_STA_2: case RT5659_SPK_DC_DET_CTRL_1: case RT5659_PURE_DC_DET_CTRL_1: case RT5659_PURE_DC_DET_CTRL_2: case RT5659_DRC1_PRIV_1: case RT5659_DRC1_PRIV_4: case RT5659_DRC1_PRIV_5: case RT5659_DRC1_PRIV_6: case RT5659_DRC1_PRIV_7: case RT5659_DRC2_PRIV_1: case RT5659_DRC2_PRIV_4: case RT5659_DRC2_PRIV_5: case RT5659_DRC2_PRIV_6: case RT5659_DRC2_PRIV_7: case RT5659_ALC_PGA_STA_1: case RT5659_ALC_PGA_STA_2: case RT5659_ALC_PGA_STA_3: returntrue; default: returnfalse;
}
}
staticbool rt5659_readable_register(struct device *dev, unsignedint reg)
{ switch (reg) { case RT5659_RESET: case RT5659_SPO_VOL: case RT5659_HP_VOL: case RT5659_LOUT: case RT5659_MONO_OUT: case RT5659_HPL_GAIN: case RT5659_HPR_GAIN: case RT5659_MONO_GAIN: case RT5659_SPDIF_CTRL_1: case RT5659_SPDIF_CTRL_2: case RT5659_CAL_BST_CTRL: case RT5659_IN1_IN2: case RT5659_IN3_IN4: case RT5659_INL1_INR1_VOL: case RT5659_EJD_CTRL_1: case RT5659_EJD_CTRL_2: case RT5659_EJD_CTRL_3: case RT5659_SILENCE_CTRL: case RT5659_PSV_CTRL: case RT5659_SIDETONE_CTRL: case RT5659_DAC1_DIG_VOL: case RT5659_DAC2_DIG_VOL: case RT5659_DAC_CTRL: case RT5659_STO1_ADC_DIG_VOL: case RT5659_MONO_ADC_DIG_VOL: case RT5659_STO2_ADC_DIG_VOL: case RT5659_STO1_BOOST: case RT5659_MONO_BOOST: case RT5659_STO2_BOOST: case RT5659_HP_IMP_GAIN_1: case RT5659_HP_IMP_GAIN_2: case RT5659_STO1_ADC_MIXER: case RT5659_MONO_ADC_MIXER: case RT5659_AD_DA_MIXER: case RT5659_STO_DAC_MIXER: case RT5659_MONO_DAC_MIXER: case RT5659_DIG_MIXER: case RT5659_A_DAC_MUX: case RT5659_DIG_INF23_DATA: case RT5659_PDM_OUT_CTRL: case RT5659_PDM_DATA_CTRL_1: case RT5659_PDM_DATA_CTRL_2: case RT5659_PDM_DATA_CTRL_3: case RT5659_PDM_DATA_CTRL_4: case RT5659_SPDIF_CTRL: case RT5659_REC1_GAIN: case RT5659_REC1_L1_MIXER: case RT5659_REC1_L2_MIXER: case RT5659_REC1_R1_MIXER: case RT5659_REC1_R2_MIXER: case RT5659_CAL_REC: case RT5659_REC2_L1_MIXER: case RT5659_REC2_L2_MIXER: case RT5659_REC2_R1_MIXER: case RT5659_REC2_R2_MIXER: case RT5659_SPK_L_MIXER: case RT5659_SPK_R_MIXER: case RT5659_SPO_AMP_GAIN: case RT5659_ALC_BACK_GAIN: case RT5659_MONOMIX_GAIN: case RT5659_MONOMIX_IN_GAIN: case RT5659_OUT_L_GAIN: case RT5659_OUT_L_MIXER: case RT5659_OUT_R_GAIN: case RT5659_OUT_R_MIXER: case RT5659_LOUT_MIXER: case RT5659_HAPTIC_GEN_CTRL_1: case RT5659_HAPTIC_GEN_CTRL_2: case RT5659_HAPTIC_GEN_CTRL_3: case RT5659_HAPTIC_GEN_CTRL_4: case RT5659_HAPTIC_GEN_CTRL_5: case RT5659_HAPTIC_GEN_CTRL_6: case RT5659_HAPTIC_GEN_CTRL_7: case RT5659_HAPTIC_GEN_CTRL_8: case RT5659_HAPTIC_GEN_CTRL_9: case RT5659_HAPTIC_GEN_CTRL_10: case RT5659_HAPTIC_GEN_CTRL_11: case RT5659_HAPTIC_LPF_CTRL_1: case RT5659_HAPTIC_LPF_CTRL_2: case RT5659_HAPTIC_LPF_CTRL_3: case RT5659_PWR_DIG_1: case RT5659_PWR_DIG_2: case RT5659_PWR_ANLG_1: case RT5659_PWR_ANLG_2: case RT5659_PWR_ANLG_3: case RT5659_PWR_MIXER: case RT5659_PWR_VOL: case RT5659_PRIV_INDEX: case RT5659_CLK_DET: case RT5659_PRIV_DATA: case RT5659_PRE_DIV_1: case RT5659_PRE_DIV_2: case RT5659_I2S1_SDP: case RT5659_I2S2_SDP: case RT5659_I2S3_SDP: case RT5659_ADDA_CLK_1: case RT5659_ADDA_CLK_2: case RT5659_DMIC_CTRL_1: case RT5659_DMIC_CTRL_2: case RT5659_TDM_CTRL_1: case RT5659_TDM_CTRL_2: case RT5659_TDM_CTRL_3: case RT5659_TDM_CTRL_4: case RT5659_TDM_CTRL_5: case RT5659_GLB_CLK: case RT5659_PLL_CTRL_1: case RT5659_PLL_CTRL_2: case RT5659_ASRC_1: case RT5659_ASRC_2: case RT5659_ASRC_3: case RT5659_ASRC_4: case RT5659_ASRC_5: case RT5659_ASRC_6: case RT5659_ASRC_7: case RT5659_ASRC_8: case RT5659_ASRC_9: case RT5659_ASRC_10: case RT5659_DEPOP_1: case RT5659_DEPOP_2: case RT5659_DEPOP_3: case RT5659_HP_CHARGE_PUMP_1: case RT5659_HP_CHARGE_PUMP_2: case RT5659_MICBIAS_1: case RT5659_MICBIAS_2: case RT5659_ASRC_11: case RT5659_ASRC_12: case RT5659_ASRC_13: case RT5659_REC_M1_M2_GAIN_CTRL: case RT5659_RC_CLK_CTRL: case RT5659_CLASSD_CTRL_1: case RT5659_CLASSD_CTRL_2: case RT5659_ADC_EQ_CTRL_1: case RT5659_ADC_EQ_CTRL_2: case RT5659_DAC_EQ_CTRL_1: case RT5659_DAC_EQ_CTRL_2: case RT5659_DAC_EQ_CTRL_3: case RT5659_IRQ_CTRL_1: case RT5659_IRQ_CTRL_2: case RT5659_IRQ_CTRL_3: case RT5659_IRQ_CTRL_4: case RT5659_IRQ_CTRL_5: case RT5659_IRQ_CTRL_6: case RT5659_INT_ST_1: case RT5659_INT_ST_2: case RT5659_GPIO_CTRL_1: case RT5659_GPIO_CTRL_2: case RT5659_GPIO_CTRL_3: case RT5659_GPIO_CTRL_4: case RT5659_GPIO_CTRL_5: case RT5659_GPIO_STA: case RT5659_SINE_GEN_CTRL_1: case RT5659_SINE_GEN_CTRL_2: case RT5659_SINE_GEN_CTRL_3: case RT5659_HP_AMP_DET_CTRL_1: case RT5659_HP_AMP_DET_CTRL_2: case RT5659_SV_ZCD_1: case RT5659_SV_ZCD_2: case RT5659_IL_CMD_1: case RT5659_IL_CMD_2: case RT5659_IL_CMD_3: case RT5659_IL_CMD_4: case RT5659_4BTN_IL_CMD_1: case RT5659_4BTN_IL_CMD_2: case RT5659_4BTN_IL_CMD_3: case RT5659_PSV_IL_CMD_1: case RT5659_PSV_IL_CMD_2: case RT5659_ADC_STO1_HP_CTRL_1: case RT5659_ADC_STO1_HP_CTRL_2: case RT5659_ADC_MONO_HP_CTRL_1: case RT5659_ADC_MONO_HP_CTRL_2: case RT5659_AJD1_CTRL: case RT5659_AJD2_AJD3_CTRL: case RT5659_JD1_THD: case RT5659_JD2_THD: case RT5659_JD3_THD: case RT5659_JD_CTRL_1: case RT5659_JD_CTRL_2: case RT5659_JD_CTRL_3: case RT5659_JD_CTRL_4: case RT5659_DIG_MISC: case RT5659_DUMMY_2: case RT5659_DUMMY_3: case RT5659_VENDOR_ID: case RT5659_VENDOR_ID_1: case RT5659_DEVICE_ID: case RT5659_DAC_ADC_DIG_VOL: case RT5659_BIAS_CUR_CTRL_1: case RT5659_BIAS_CUR_CTRL_2: case RT5659_BIAS_CUR_CTRL_3: case RT5659_BIAS_CUR_CTRL_4: case RT5659_BIAS_CUR_CTRL_5: case RT5659_BIAS_CUR_CTRL_6: case RT5659_BIAS_CUR_CTRL_7: case RT5659_BIAS_CUR_CTRL_8: case RT5659_BIAS_CUR_CTRL_9: case RT5659_BIAS_CUR_CTRL_10: case RT5659_MEMORY_TEST: case RT5659_VREF_REC_OP_FB_CAP_CTRL: case RT5659_CLASSD_0: case RT5659_CLASSD_1: case RT5659_CLASSD_2: case RT5659_CLASSD_3: case RT5659_CLASSD_4: case RT5659_CLASSD_5: case RT5659_CLASSD_6: case RT5659_CLASSD_7: case RT5659_CLASSD_8: case RT5659_CLASSD_9: case RT5659_CLASSD_10: case RT5659_CHARGE_PUMP_1: case RT5659_CHARGE_PUMP_2: case RT5659_DIG_IN_CTRL_1: case RT5659_DIG_IN_CTRL_2: case RT5659_PAD_DRIVING_CTRL: case RT5659_SOFT_RAMP_DEPOP: case RT5659_PLL: case RT5659_CHOP_DAC: case RT5659_CHOP_ADC: case RT5659_CALIB_ADC_CTRL: case RT5659_SOFT_RAMP_DEPOP_DAC_CLK_CTRL: case RT5659_VOL_TEST: case RT5659_TEST_MODE_CTRL_1: case RT5659_TEST_MODE_CTRL_2: case RT5659_TEST_MODE_CTRL_3: case RT5659_TEST_MODE_CTRL_4: case RT5659_BASSBACK_CTRL: case RT5659_MP3_PLUS_CTRL_1: case RT5659_MP3_PLUS_CTRL_2: case RT5659_MP3_HPF_A1: case RT5659_MP3_HPF_A2: case RT5659_MP3_HPF_H0: case RT5659_MP3_LPF_H0: case RT5659_3D_SPK_CTRL: case RT5659_3D_SPK_COEF_1: case RT5659_3D_SPK_COEF_2: case RT5659_3D_SPK_COEF_3: case RT5659_3D_SPK_COEF_4: case RT5659_3D_SPK_COEF_5: case RT5659_3D_SPK_COEF_6: case RT5659_3D_SPK_COEF_7: case RT5659_STO_NG2_CTRL_1: case RT5659_STO_NG2_CTRL_2: case RT5659_STO_NG2_CTRL_3: case RT5659_STO_NG2_CTRL_4: case RT5659_STO_NG2_CTRL_5: case RT5659_STO_NG2_CTRL_6: case RT5659_STO_NG2_CTRL_7: case RT5659_STO_NG2_CTRL_8: case RT5659_MONO_NG2_CTRL_1: case RT5659_MONO_NG2_CTRL_2: case RT5659_MONO_NG2_CTRL_3: case RT5659_MONO_NG2_CTRL_4: case RT5659_MONO_NG2_CTRL_5: case RT5659_MONO_NG2_CTRL_6: case RT5659_MID_HP_AMP_DET: case RT5659_LOW_HP_AMP_DET: case RT5659_LDO_CTRL: case RT5659_HP_DECROSS_CTRL_1: case RT5659_HP_DECROSS_CTRL_2: case RT5659_HP_DECROSS_CTRL_3: case RT5659_HP_DECROSS_CTRL_4: case RT5659_HP_IMP_SENS_CTRL_1: case RT5659_HP_IMP_SENS_CTRL_2: case RT5659_HP_IMP_SENS_CTRL_3: case RT5659_HP_IMP_SENS_CTRL_4: case RT5659_HP_IMP_SENS_MAP_1: case RT5659_HP_IMP_SENS_MAP_2: case RT5659_HP_IMP_SENS_MAP_3: case RT5659_HP_IMP_SENS_MAP_4: case RT5659_HP_IMP_SENS_MAP_5: case RT5659_HP_IMP_SENS_MAP_6: case RT5659_HP_IMP_SENS_MAP_7: case RT5659_HP_IMP_SENS_MAP_8: case RT5659_HP_LOGIC_CTRL_1: case RT5659_HP_LOGIC_CTRL_2: case RT5659_HP_CALIB_CTRL_1: case RT5659_HP_CALIB_CTRL_2: case RT5659_HP_CALIB_CTRL_3: case RT5659_HP_CALIB_CTRL_4: case RT5659_HP_CALIB_CTRL_5: case RT5659_HP_CALIB_CTRL_6: case RT5659_HP_CALIB_CTRL_7: case RT5659_HP_CALIB_CTRL_9: case RT5659_HP_CALIB_CTRL_10: case RT5659_HP_CALIB_CTRL_11: case RT5659_HP_CALIB_STA_1: case RT5659_HP_CALIB_STA_2: case RT5659_HP_CALIB_STA_3: case RT5659_HP_CALIB_STA_4: case RT5659_HP_CALIB_STA_5: case RT5659_HP_CALIB_STA_6: case RT5659_HP_CALIB_STA_7: case RT5659_HP_CALIB_STA_8: case RT5659_HP_CALIB_STA_9: case RT5659_MONO_AMP_CALIB_CTRL_1: case RT5659_MONO_AMP_CALIB_CTRL_2: case RT5659_MONO_AMP_CALIB_CTRL_3: case RT5659_MONO_AMP_CALIB_CTRL_4: case RT5659_MONO_AMP_CALIB_CTRL_5: case RT5659_MONO_AMP_CALIB_STA_1: case RT5659_MONO_AMP_CALIB_STA_2: case RT5659_MONO_AMP_CALIB_STA_3: case RT5659_MONO_AMP_CALIB_STA_4: case RT5659_SPK_PWR_LMT_CTRL_1: case RT5659_SPK_PWR_LMT_CTRL_2: case RT5659_SPK_PWR_LMT_CTRL_3: case RT5659_SPK_PWR_LMT_STA_1: case RT5659_SPK_PWR_LMT_STA_2: case RT5659_SPK_PWR_LMT_STA_3: case RT5659_SPK_PWR_LMT_STA_4: case RT5659_SPK_PWR_LMT_STA_5: case RT5659_SPK_PWR_LMT_STA_6: case RT5659_FLEX_SPK_BST_CTRL_1: case RT5659_FLEX_SPK_BST_CTRL_2: case RT5659_FLEX_SPK_BST_CTRL_3: case RT5659_FLEX_SPK_BST_CTRL_4: case RT5659_SPK_EX_LMT_CTRL_1: case RT5659_SPK_EX_LMT_CTRL_2: case RT5659_SPK_EX_LMT_CTRL_3: case RT5659_SPK_EX_LMT_CTRL_4: case RT5659_SPK_EX_LMT_CTRL_5: case RT5659_SPK_EX_LMT_CTRL_6: case RT5659_SPK_EX_LMT_CTRL_7: case RT5659_ADJ_HPF_CTRL_1: case RT5659_ADJ_HPF_CTRL_2: case RT5659_SPK_DC_CAILB_CTRL_1: case RT5659_SPK_DC_CAILB_CTRL_2: case RT5659_SPK_DC_CAILB_CTRL_3: case RT5659_SPK_DC_CAILB_CTRL_4: case RT5659_SPK_DC_CAILB_CTRL_5: case RT5659_SPK_DC_CAILB_STA_1: case RT5659_SPK_DC_CAILB_STA_2: case RT5659_SPK_DC_CAILB_STA_3: case RT5659_SPK_DC_CAILB_STA_4: case RT5659_SPK_DC_CAILB_STA_5: case RT5659_SPK_DC_CAILB_STA_6: case RT5659_SPK_DC_CAILB_STA_7: case RT5659_SPK_DC_CAILB_STA_8: case RT5659_SPK_DC_CAILB_STA_9: case RT5659_SPK_DC_CAILB_STA_10: case RT5659_SPK_VDD_STA_1: case RT5659_SPK_VDD_STA_2: case RT5659_SPK_DC_DET_CTRL_1: case RT5659_SPK_DC_DET_CTRL_2: case RT5659_SPK_DC_DET_CTRL_3: case RT5659_PURE_DC_DET_CTRL_1: case RT5659_PURE_DC_DET_CTRL_2: case RT5659_DUMMY_4: case RT5659_DUMMY_5: case RT5659_DUMMY_6: case RT5659_DRC1_CTRL_1: case RT5659_DRC1_CTRL_2: case RT5659_DRC1_CTRL_3: case RT5659_DRC1_CTRL_4: case RT5659_DRC1_CTRL_5: case RT5659_DRC1_CTRL_6: case RT5659_DRC1_HARD_LMT_CTRL_1: case RT5659_DRC1_HARD_LMT_CTRL_2: case RT5659_DRC2_CTRL_1: case RT5659_DRC2_CTRL_2: case RT5659_DRC2_CTRL_3: case RT5659_DRC2_CTRL_4: case RT5659_DRC2_CTRL_5: case RT5659_DRC2_CTRL_6: case RT5659_DRC2_HARD_LMT_CTRL_1: case RT5659_DRC2_HARD_LMT_CTRL_2: case RT5659_DRC1_PRIV_1: case RT5659_DRC1_PRIV_2: case RT5659_DRC1_PRIV_3: case RT5659_DRC1_PRIV_4: case RT5659_DRC1_PRIV_5: case RT5659_DRC1_PRIV_6: case RT5659_DRC1_PRIV_7: case RT5659_DRC2_PRIV_1: case RT5659_DRC2_PRIV_2: case RT5659_DRC2_PRIV_3: case RT5659_DRC2_PRIV_4: case RT5659_DRC2_PRIV_5: case RT5659_DRC2_PRIV_6: case RT5659_DRC2_PRIV_7: case RT5659_MULTI_DRC_CTRL: case RT5659_CROSS_OVER_1: case RT5659_CROSS_OVER_2: case RT5659_CROSS_OVER_3: case RT5659_CROSS_OVER_4: case RT5659_CROSS_OVER_5: case RT5659_CROSS_OVER_6: case RT5659_CROSS_OVER_7: case RT5659_CROSS_OVER_8: case RT5659_CROSS_OVER_9: case RT5659_CROSS_OVER_10: case RT5659_ALC_PGA_CTRL_1: case RT5659_ALC_PGA_CTRL_2: case RT5659_ALC_PGA_CTRL_3: case RT5659_ALC_PGA_CTRL_4: case RT5659_ALC_PGA_CTRL_5: case RT5659_ALC_PGA_CTRL_6: case RT5659_ALC_PGA_CTRL_7: case RT5659_ALC_PGA_CTRL_8: case RT5659_ALC_PGA_STA_1: case RT5659_ALC_PGA_STA_2: case RT5659_ALC_PGA_STA_3: case RT5659_DAC_L_EQ_PRE_VOL: case RT5659_DAC_R_EQ_PRE_VOL: case RT5659_DAC_L_EQ_POST_VOL: case RT5659_DAC_R_EQ_POST_VOL: case RT5659_DAC_L_EQ_LPF1_A1: case RT5659_DAC_L_EQ_LPF1_H0: case RT5659_DAC_R_EQ_LPF1_A1: case RT5659_DAC_R_EQ_LPF1_H0: case RT5659_DAC_L_EQ_BPF2_A1: case RT5659_DAC_L_EQ_BPF2_A2: case RT5659_DAC_L_EQ_BPF2_H0: case RT5659_DAC_R_EQ_BPF2_A1: case RT5659_DAC_R_EQ_BPF2_A2: case RT5659_DAC_R_EQ_BPF2_H0: case RT5659_DAC_L_EQ_BPF3_A1: case RT5659_DAC_L_EQ_BPF3_A2: case RT5659_DAC_L_EQ_BPF3_H0: case RT5659_DAC_R_EQ_BPF3_A1: case RT5659_DAC_R_EQ_BPF3_A2: case RT5659_DAC_R_EQ_BPF3_H0: case RT5659_DAC_L_EQ_BPF4_A1: case RT5659_DAC_L_EQ_BPF4_A2: case RT5659_DAC_L_EQ_BPF4_H0: case RT5659_DAC_R_EQ_BPF4_A1: case RT5659_DAC_R_EQ_BPF4_A2: case RT5659_DAC_R_EQ_BPF4_H0: case RT5659_DAC_L_EQ_HPF1_A1: case RT5659_DAC_L_EQ_HPF1_H0: case RT5659_DAC_R_EQ_HPF1_A1: case RT5659_DAC_R_EQ_HPF1_H0: case RT5659_DAC_L_EQ_HPF2_A1: case RT5659_DAC_L_EQ_HPF2_A2: case RT5659_DAC_L_EQ_HPF2_H0: case RT5659_DAC_R_EQ_HPF2_A1: case RT5659_DAC_R_EQ_HPF2_A2: case RT5659_DAC_R_EQ_HPF2_H0: case RT5659_DAC_L_BI_EQ_BPF1_H0_1: case RT5659_DAC_L_BI_EQ_BPF1_H0_2: case RT5659_DAC_L_BI_EQ_BPF1_B1_1: case RT5659_DAC_L_BI_EQ_BPF1_B1_2: case RT5659_DAC_L_BI_EQ_BPF1_B2_1: case RT5659_DAC_L_BI_EQ_BPF1_B2_2: case RT5659_DAC_L_BI_EQ_BPF1_A1_1: case RT5659_DAC_L_BI_EQ_BPF1_A1_2: case RT5659_DAC_L_BI_EQ_BPF1_A2_1: case RT5659_DAC_L_BI_EQ_BPF1_A2_2: case RT5659_DAC_R_BI_EQ_BPF1_H0_1: case RT5659_DAC_R_BI_EQ_BPF1_H0_2: case RT5659_DAC_R_BI_EQ_BPF1_B1_1: case RT5659_DAC_R_BI_EQ_BPF1_B1_2: case RT5659_DAC_R_BI_EQ_BPF1_B2_1: case RT5659_DAC_R_BI_EQ_BPF1_B2_2: case RT5659_DAC_R_BI_EQ_BPF1_A1_1: case RT5659_DAC_R_BI_EQ_BPF1_A1_2: case RT5659_DAC_R_BI_EQ_BPF1_A2_1: case RT5659_DAC_R_BI_EQ_BPF1_A2_2: case RT5659_ADC_L_EQ_LPF1_A1: case RT5659_ADC_R_EQ_LPF1_A1: case RT5659_ADC_L_EQ_LPF1_H0: case RT5659_ADC_R_EQ_LPF1_H0: case RT5659_ADC_L_EQ_BPF1_A1: case RT5659_ADC_R_EQ_BPF1_A1: case RT5659_ADC_L_EQ_BPF1_A2: case RT5659_ADC_R_EQ_BPF1_A2: case RT5659_ADC_L_EQ_BPF1_H0: case RT5659_ADC_R_EQ_BPF1_H0: case RT5659_ADC_L_EQ_BPF2_A1: case RT5659_ADC_R_EQ_BPF2_A1: case RT5659_ADC_L_EQ_BPF2_A2: case RT5659_ADC_R_EQ_BPF2_A2: case RT5659_ADC_L_EQ_BPF2_H0: case RT5659_ADC_R_EQ_BPF2_H0: case RT5659_ADC_L_EQ_BPF3_A1: case RT5659_ADC_R_EQ_BPF3_A1: case RT5659_ADC_L_EQ_BPF3_A2: case RT5659_ADC_R_EQ_BPF3_A2: case RT5659_ADC_L_EQ_BPF3_H0: case RT5659_ADC_R_EQ_BPF3_H0: case RT5659_ADC_L_EQ_BPF4_A1: case RT5659_ADC_R_EQ_BPF4_A1: case RT5659_ADC_L_EQ_BPF4_A2: case RT5659_ADC_R_EQ_BPF4_A2: case RT5659_ADC_L_EQ_BPF4_H0: case RT5659_ADC_R_EQ_BPF4_H0: case RT5659_ADC_L_EQ_HPF1_A1: case RT5659_ADC_R_EQ_HPF1_A1: case RT5659_ADC_L_EQ_HPF1_H0: case RT5659_ADC_R_EQ_HPF1_H0: case RT5659_ADC_L_EQ_PRE_VOL: case RT5659_ADC_R_EQ_PRE_VOL: case RT5659_ADC_L_EQ_POST_VOL: case RT5659_ADC_R_EQ_POST_VOL: returntrue; default: returnfalse;
}
}
if (enable) {
snd_soc_component_write(component, RT5659_4BTN_IL_CMD_1, 0x000b);
/* MICBIAS1 and Mic Det Power for button detect*/
snd_soc_dapm_force_enable_pin(dapm, "MICBIAS1");
snd_soc_dapm_force_enable_pin(dapm, "Mic Det Power");
snd_soc_dapm_sync(dapm);
snd_soc_component_update_bits(component, RT5659_IRQ_CTRL_2,
RT5659_IL_IRQ_MASK, RT5659_IL_IRQ_EN);
snd_soc_component_update_bits(component, RT5659_4BTN_IL_CMD_2,
RT5659_4BTN_IL_MASK, RT5659_4BTN_IL_EN);
} else {
snd_soc_component_update_bits(component, RT5659_4BTN_IL_CMD_2,
RT5659_4BTN_IL_MASK, RT5659_4BTN_IL_DIS);
snd_soc_component_update_bits(component, RT5659_IRQ_CTRL_2,
RT5659_IL_IRQ_MASK, RT5659_IL_IRQ_DIS); /* MICBIAS1 and Mic Det Power for button detect*/
snd_soc_dapm_disable_pin(dapm, "MICBIAS1");
snd_soc_dapm_disable_pin(dapm, "Mic Det Power");
snd_soc_dapm_sync(dapm);
}
}
/** * rt5659_headset_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 rt5659_headset_detect(struct snd_soc_component *component, int jack_insert)
{ struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); int val, i = 0, sleep_time[5] = {300, 150, 100, 50, 30}; int reg_63;
while (i < 5) {
msleep(sleep_time[i]);
val = snd_soc_component_read(component, RT5659_EJD_CTRL_2) & 0x0003;
i++; if (val == 0x1 || val == 0x2 || val == 0x3) break;
}
val = snd_soc_component_read(rt5659->component, RT5659_INT_ST_1) & 0x0080; if (!val) { /* jack in */ if (rt5659->jack_type == 0) { /* jack was out, report jack type */
report = rt5659_headset_detect(rt5659->component, 1);
} else { /* jack is already in, report button event */
report = SND_JACK_HEADSET;
btn_type = rt5659_button_detect(rt5659->component); /** * rt5659 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(rt5659->component->dev, "Unexpected button code 0x%04x\n",
btn_type); break;
}
/* button release or spurious interrput*/ if (btn_type == 0)
report = rt5659->jack_type;
}
} else { /* jack out */
report = rt5659_headset_detect(rt5659->component, 0);
}
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.