/* * Copyright (C) 2012 Paul Kocialkowski * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #define LOG_TAG "Yamaha-MC1N2-Audio" #include #include struct yamaha_mc1n2_audio_params_init galaxys2_params_init = { .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info = { .asHpOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asHpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asHpOut[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asHpOut[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asHpOut[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asHpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asHpOut[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asHpOut[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asHpOut[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asHpOut[1].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asHpOut[1].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asHpOut[1].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asHpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asHpOut[1].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asSpOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asSpOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asSpOut[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asSpOut[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asSpOut[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asSpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asSpOut[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asSpOut[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asSpOut[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asSpOut[1].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asSpOut[1].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asSpOut[1].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asSpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asSpOut[1].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asRcOut[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asRcOut[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asRcOut[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asRcOut[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asRcOut[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asRcOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asRcOut[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asLout1[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asLout1[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asLout1[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asLout1[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asLout1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asLout1[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asLout1[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asLout1[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asLout1[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asLout1[1].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asLout1[1].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asLout1[1].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asLout1[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asLout1[1].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asLout2[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asLout2[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asLout2[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asLout2[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asLout2[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asLout2[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asLout2[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asLout2[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asLout2[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asLout2[1].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asLout2[1].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asLout2[1].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asLout2[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asLout2[1].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asPeak[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asPeak[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asPeak[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asPeak[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asPeak[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asPeak[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asPeak[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asDit0[0].abSrcOnOff = { 0x00 }, .asDit1[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asDit1[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asDit1[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asDit1[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asDit1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asDit1[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asDit1[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asDit2[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asDit2[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asDit2[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asDit2[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asDit2[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asDit2[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asDac[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asDac[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asDac[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asDac[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asDac[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asDac[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asDac[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asDac[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asDac[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asDac[1].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asDac[1].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asDac[1].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asDac[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asDac[1].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asAe[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asAe[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asAe[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asAe[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asAe[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asAe[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asAe[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asCdsp[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asCdsp[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asCdsp[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asCdsp[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asCdsp[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asCdsp[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asCdsp[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asCdsp[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asCdsp[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asCdsp[1].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asCdsp[1].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asCdsp[1].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asCdsp[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asCdsp[1].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asCdsp[2].abSrcOnOff = { 0x00 }, .asCdsp[3].abSrcOnOff = { 0x00 }, .asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asAdc0[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asAdc0[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asAdc0[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asAdc0[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asAdc0[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asAdc0[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asAdc0[1].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asAdc0[1].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asAdc0[1].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asAdc0[1].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asAdc0[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asAdc0[1].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asAdc1[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asAdc1[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asAdc1[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asAdc1[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asAdc1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asAdc1[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asAdc1[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asMix[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asMix[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asMix[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asMix[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asMix[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asMix[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .asBias[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .asBias[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .asBias[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .asBias[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .asBias[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_OFF | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .asBias[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .asBias[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, }, .dac_info = { .bMasterSwap = MCDRV_DSWAP_OFF, .bVoiceSwap = MCDRV_DSWAP_OFF, .bDcCut = MCDRV_DCCUT_ON, }, .adc_info = { .bAgcAdjust = MCDRV_AGCADJ_0, .bAgcOn = MCDRV_AGC_OFF, .bMono = MCDRV_ADC_STEREO, }, .sp_info = { .bSwap = MCDRV_SPSWAP_OFF, }, .pdm_info = { .bClk = MCDRV_PDM_CLK_64, .bAgcAdjust = MCDRV_AGCADJ_0, .bAgcOn = MCDRV_AGC_OFF, .bPdmEdge = MCDRV_PDMEDGE_LH, .bPdmWait = MCDRV_PDMWAIT_10, .bPdmSel = MCDRV_PDMSEL_L1R2, .bMono = MCDRV_PDM_STEREO, }, .dng_info = { .abOnOff[MCDRV_DNG_ITEM_HP] = MCDRV_DNG_OFF, .abThreshold[MCDRV_DNG_ITEM_HP] = MCDRV_DNG_THRES_60, .abHold[MCDRV_DNG_ITEM_HP] = MCDRV_DNG_HOLD_500, .abAttack[MCDRV_DNG_ITEM_HP] = MCDRV_DNG_ATTACK_100, .abRelease[MCDRV_DNG_ITEM_HP] = MCDRV_DNG_RELEASE_940, .abTarget[MCDRV_DNG_ITEM_HP] = MCDRV_DNG_TARGET_MUTE, .abOnOff[MCDRV_DNG_ITEM_SP] = MCDRV_DNG_OFF, .abThreshold[MCDRV_DNG_ITEM_SP] = MCDRV_DNG_THRES_60, .abHold[MCDRV_DNG_ITEM_SP] = MCDRV_DNG_HOLD_500, .abAttack[MCDRV_DNG_ITEM_SP] = MCDRV_DNG_ATTACK_100, .abRelease[MCDRV_DNG_ITEM_SP] = MCDRV_DNG_RELEASE_940, .abTarget[MCDRV_DNG_ITEM_SP] = MCDRV_DNG_TARGET_MUTE, .abOnOff[MCDRV_DNG_ITEM_RC] = MCDRV_DNG_OFF, .abThreshold[MCDRV_DNG_ITEM_RC] = MCDRV_DNG_THRES_60, .abHold[MCDRV_DNG_ITEM_RC] = MCDRV_DNG_HOLD_500, .abAttack[MCDRV_DNG_ITEM_RC] = MCDRV_DNG_ATTACK_100, .abRelease[MCDRV_DNG_ITEM_RC] = MCDRV_DNG_RELEASE_940, .abTarget[MCDRV_DNG_ITEM_RC] = MCDRV_DNG_TARGET_MUTE, }, .syseq_info = { .bOnOff = MCDRV_SYSEQ_OFF, .abParam = { 0x10, 0xc4, 0x50, 0x12, 0xc4, 0x40, 0x02, 0xa9, 0x60, 0xed, 0x3b, 0xc0, 0xfc, 0x92, 0x40 }, }, }; struct yamaha_mc1n2_audio_params_route galaxys2_params_routes[] = { { .device = AUDIO_DEVICE_OUT_EARPIECE, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_OUTPUT, .ae_info = { .bOnOff = 0, .abBex = { 0 }, .abWide = { 0 }, .abDrc = { 0 }, .abEq5 = { 0 }, .abEq3 = { 0 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON | MCDRV_SRC5_DAC_L_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_OUT_SPEAKER, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_OUTPUT, .ae_info = { .bOnOff = 0, .abBex = { 0 }, .abWide = { 0 }, .abDrc = { 0 }, .abEq5 = { 0 }, .abEq3 = { 0 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_OUT_WIRED_HEADPHONE, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_OUTPUT, .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asHpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON, .path_info.asHpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_OUT_WIRED_HEADSET, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_OUTPUT, .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asHpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON, .path_info.asHpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_OUTPUT, .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON, .path_info.asLout1[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR0_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_IN_BUILTIN_MIC, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_INPUT, .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .path_info.asDit0[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .path_info.asDit0[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .path_info.asDit0[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .path_info.asDit0[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .path_info.asDit0[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .path_info.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .path_info.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON, .path_info.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_IN_WIRED_HEADSET, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_INPUT, .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_OFF | MCDRV_SRC0_MIC2_OFF | MCDRV_SRC0_MIC1_OFF, .path_info.asDit0[0].abSrcOnOff[1] = MCDRV_SRC1_LINE1_M_OFF | MCDRV_SRC1_LINE1_R_OFF | MCDRV_SRC1_LINE1_L_OFF, .path_info.asDit0[0].abSrcOnOff[2] = MCDRV_SRC2_LINE2_M_OFF | MCDRV_SRC2_LINE2_R_OFF | MCDRV_SRC2_LINE2_L_OFF, .path_info.asDit0[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_DIRECT_OFF | MCDRV_SRC3_DIR2_OFF | MCDRV_SRC3_DIR1_OFF | MCDRV_SRC3_DIR0_OFF, .path_info.asDit0[0].abSrcOnOff[4] = MCDRV_SRC4_ADC1_OFF | MCDRV_SRC4_ADC0_ON | MCDRV_SRC4_PDM_OFF | MCDRV_SRC4_DTMF_OFF, .path_info.asDit0[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_OFF | MCDRV_SRC5_DAC_R_OFF | MCDRV_SRC5_DAC_L_OFF, .path_info.asDit0[0].abSrcOnOff[6] = MCDRV_SRC6_CDSP_DIRECT_OFF | MCDRV_SRC6_CDSP_OFF | MCDRV_SRC6_AE_OFF | MCDRV_SRC6_MIX_OFF, .path_info.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON, .path_info.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_OUT_EARPIECE, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_MODEM, .ae_info = { .bOnOff = 0, .abBex = { 0 }, .abWide = { 0 }, .abDrc = { 0 }, .abEq5 = { 0 }, .abEq3 = { 0 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON | MCDRV_SRC5_DAC_L_ON, .path_info.asDit1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON, .path_info.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR1_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_OUT_WIRED_HEADPHONE, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_MODEM, .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asHpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON, .path_info.asHpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON, .path_info.asDit1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON, .path_info.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC1_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR1_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_OUT_WIRED_HEADSET, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_MODEM, .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asHpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_L_ON, .path_info.asHpOut[1].abSrcOnOff[5] = MCDRV_SRC5_DAC_R_ON, .path_info.asDit1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON, .path_info.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC2_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR1_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_OUT_SPEAKER, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_MODEM, .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff[5] = MCDRV_SRC5_DAC_M_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asDit1[0].abSrcOnOff[4] = MCDRV_SRC4_ADC0_ON, .path_info.asDac[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asAdc0[0].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON, .path_info.asAdc0[1].abSrcOnOff[0] = MCDRV_SRC0_MIC3_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR1_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, { .device = AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, .direction = YAMAHA_MC1N2_AUDIO_DIRECTION_MODEM, .ae_info = { .bOnOff = 0x00, .abBex = { 0x00 }, .abWide = { 0x00 }, .abDrc = { 0x00 }, .abEq5 = { 0x00 }, .abEq3 = { 0x00 }, }, .path_info.asHpOut[0].abSrcOnOff = { 0 }, .path_info.asHpOut[1].abSrcOnOff = { 0 }, .path_info.asSpOut[0].abSrcOnOff = { 0 }, .path_info.asSpOut[1].abSrcOnOff = { 0 }, .path_info.asRcOut[0].abSrcOnOff = { 0 }, .path_info.asLout1[0].abSrcOnOff = { 0 }, .path_info.asLout1[1].abSrcOnOff = { 0 }, .path_info.asLout2[0].abSrcOnOff = { 0 }, .path_info.asLout2[1].abSrcOnOff = { 0 }, .path_info.asPeak[0].abSrcOnOff = { 0 }, .path_info.asDit0[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff = { 0 }, .path_info.asDit2[0].abSrcOnOff = { 0 }, .path_info.asDac[0].abSrcOnOff = { 0 }, .path_info.asDac[1].abSrcOnOff = { 0 }, .path_info.asAe[0].abSrcOnOff = { 0 }, .path_info.asCdsp[0].abSrcOnOff = { 0 }, .path_info.asCdsp[1].abSrcOnOff = { 0 }, .path_info.asCdsp[2].abSrcOnOff = { 0 }, .path_info.asCdsp[3].abSrcOnOff = { 0 }, .path_info.asAdc0[0].abSrcOnOff = { 0 }, .path_info.asAdc0[1].abSrcOnOff = { 0 }, .path_info.asAdc1[0].abSrcOnOff = { 0 }, .path_info.asMix[0].abSrcOnOff = { 0 }, .path_info.asBias[0].abSrcOnOff = { 0 }, .path_info.asDit1[0].abSrcOnOff[3] = MCDRV_SRC3_DIR2_ON, .path_info.asDit2[0].abSrcOnOff[6] = MCDRV_SRC6_MIX_ON, .path_info.asMix[0].abSrcOnOff[3] = MCDRV_SRC3_DIR1_ON, .dac_info = { .bMasterSwap = 0, .bVoiceSwap = 0, .bDcCut = 0, }, }, }; struct yamaha_mc1n2_audio_device_ops galaxys2_ops = { .hw_node = "/dev/snd/hwC0D0", .hw_fd = -1, .params = { .init = &galaxys2_params_init, .routes = &galaxys2_params_routes, .routes_count = sizeof(galaxys2_params_routes) / sizeof(struct yamaha_mc1n2_audio_params_route), }, }; struct yamaha_mc1n2_audio_pdata galaxys2_pdata = { .name = "galaxys2", .ops = &galaxys2_ops, };