3
0
replicant-device_samsung_ga.../yamaha-mc1n2-audio/device/galaxys2.c
Christian Neumüller 98c6cc4c4c Disable digital noise gate (fixes CYAN-4506).
This fixes CYAN-4505 (Sound cuts out at low volume) [1].
One might think that the digital noise gate (DNG) is better left enabled to
reduce the static noise but in my tests, only the "payload" audio was cut off,
while the static continued. For me it seems that this feature of the sound chip
was not intended for use in a smartphone.

[1]: https://jira.cyanogenmod.org/browse/CYAN-4506.

Change-Id: I4e41c594695f85574ed35e2aef59d6b768403606
2014-08-01 19:04:37 +02:00

861 lines
39 KiB
C

/*
* Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define LOG_TAG "Yamaha-MC1N2-Audio"
#include <cutils/log.h>
#include <yamaha-mc1n2-audio.h>
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_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,
};