ASoC: wcd934x: add ASRC mixing support
WCD934X supports mixing of integer sample rate clips with fractional sample rate clips using ASRC(asynchronous sample rate converter) block. Add support to use ASRC block in codec. CRs-Fixed: 1054643 Change-Id: I3a04cc902c74b49e1d40c5a52acbf1f7c907c34e Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
This commit is contained in:
parent
2071a4cd7d
commit
1aa6e9851e
3 changed files with 693 additions and 377 deletions
|
@ -731,7 +731,8 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
|
|||
{"RX INT1_2 MUX", "RX5", "CDC_IF RX5 MUX"},
|
||||
{"RX INT1_2 MUX", "RX6", "CDC_IF RX6 MUX"},
|
||||
{"RX INT1_2 MUX", "RX7", "CDC_IF RX7 MUX"},
|
||||
{"RX INT1 SEC MIX", NULL, "RX INT1_2 MUX"},
|
||||
{"RX INT1_2 INTERP", NULL, "RX INT1_2 MUX"},
|
||||
{"RX INT1 SEC MIX", NULL, "RX INT1_2 INTERP"},
|
||||
|
||||
/* Mixing path INT2 */
|
||||
{"RX INT2_2 MUX", "RX0", "CDC_IF RX0 MUX"},
|
||||
|
@ -742,7 +743,8 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
|
|||
{"RX INT2_2 MUX", "RX5", "CDC_IF RX5 MUX"},
|
||||
{"RX INT2_2 MUX", "RX6", "CDC_IF RX6 MUX"},
|
||||
{"RX INT2_2 MUX", "RX7", "CDC_IF RX7 MUX"},
|
||||
{"RX INT2 SEC MIX", NULL, "RX INT2_2 MUX"},
|
||||
{"RX INT2_2 INTERP", NULL, "RX INT2_2 MUX"},
|
||||
{"RX INT2 SEC MIX", NULL, "RX INT2_2 INTERP"},
|
||||
|
||||
/* Mixing path INT3 */
|
||||
{"RX INT3_2 MUX", "RX0", "CDC_IF RX0 MUX"},
|
||||
|
@ -753,7 +755,8 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
|
|||
{"RX INT3_2 MUX", "RX5", "CDC_IF RX5 MUX"},
|
||||
{"RX INT3_2 MUX", "RX6", "CDC_IF RX6 MUX"},
|
||||
{"RX INT3_2 MUX", "RX7", "CDC_IF RX7 MUX"},
|
||||
{"RX INT3 SEC MIX", NULL, "RX INT3_2 MUX"},
|
||||
{"RX INT3_2 INTERP", NULL, "RX INT3_2 MUX"},
|
||||
{"RX INT3 SEC MIX", NULL, "RX INT3_2 INTERP"},
|
||||
|
||||
/* Mixing path INT4 */
|
||||
{"RX INT4_2 MUX", "RX0", "CDC_IF RX0 MUX"},
|
||||
|
@ -764,7 +767,8 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
|
|||
{"RX INT4_2 MUX", "RX5", "CDC_IF RX5 MUX"},
|
||||
{"RX INT4_2 MUX", "RX6", "CDC_IF RX6 MUX"},
|
||||
{"RX INT4_2 MUX", "RX7", "CDC_IF RX7 MUX"},
|
||||
{"RX INT4 SEC MIX", NULL, "RX INT4_2 MUX"},
|
||||
{"RX INT4_2 INTERP", NULL, "RX INT4_2 MUX"},
|
||||
{"RX INT4 SEC MIX", NULL, "RX INT4_2 INTERP"},
|
||||
|
||||
/* Mixing path INT7 */
|
||||
{"RX INT7_2 MUX", "RX0", "CDC_IF RX0 MUX"},
|
||||
|
@ -775,7 +779,8 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
|
|||
{"RX INT7_2 MUX", "RX5", "CDC_IF RX5 MUX"},
|
||||
{"RX INT7_2 MUX", "RX6", "CDC_IF RX6 MUX"},
|
||||
{"RX INT7_2 MUX", "RX7", "CDC_IF RX7 MUX"},
|
||||
{"RX INT7 SEC MIX", NULL, "RX INT7_2 MUX"},
|
||||
{"RX INT7_2 INTERP", NULL, "RX INT7_2 MUX"},
|
||||
{"RX INT7 SEC MIX", NULL, "RX INT7_2 INTERP"},
|
||||
|
||||
/* Mixing path INT8 */
|
||||
{"RX INT8_2 MUX", "RX0", "CDC_IF RX0 MUX"},
|
||||
|
@ -786,67 +791,70 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
|
|||
{"RX INT8_2 MUX", "RX5", "CDC_IF RX5 MUX"},
|
||||
{"RX INT8_2 MUX", "RX6", "CDC_IF RX6 MUX"},
|
||||
{"RX INT8_2 MUX", "RX7", "CDC_IF RX7 MUX"},
|
||||
{"RX INT8 SEC MIX", NULL, "RX INT8_2 MUX"},
|
||||
{"RX INT8_2 INTERP", NULL, "RX INT8_2 MUX"},
|
||||
{"RX INT8 SEC MIX", NULL, "RX INT8_2 INTERP"},
|
||||
|
||||
{"RX INT0 SEC MIX", NULL, "RX INT0_1 MIX1"},
|
||||
{"RX INT0_1 INTERP", NULL, "RX INT0_1 MIX1"},
|
||||
{"RX INT0 SEC MIX", NULL, "RX INT0_1 INTERP"},
|
||||
{"RX INT0 MIX2", NULL, "RX INT0 SEC MIX"},
|
||||
{"RX INT0 MIX2", NULL, "RX INT0 MIX2 INP"},
|
||||
{"RX INT0 INTERP", NULL, "RX INT0 MIX2"},
|
||||
{"RX INT0 DEM MUX", "CLSH_DSM_OUT", "RX INT0 INTERP"},
|
||||
{"RX INT0 DEM MUX", "CLSH_DSM_OUT", "RX INT0 MIX2"},
|
||||
{"RX INT0 DAC", NULL, "RX INT0 DEM MUX"},
|
||||
{"RX INT0 DAC", NULL, "RX_BIAS"},
|
||||
{"EAR PA", NULL, "RX INT0 DAC"},
|
||||
{"EAR", NULL, "EAR PA"},
|
||||
|
||||
{"RX INT1 SEC MIX", NULL, "RX INT1_1 MIX1"},
|
||||
{"RX INT1_1 INTERP", NULL, "RX INT1_1 MIX1"},
|
||||
{"RX INT1 SEC MIX", NULL, "RX INT1_1 INTERP"},
|
||||
{"RX INT1 MIX2", NULL, "RX INT1 SEC MIX"},
|
||||
{"RX INT1 MIX2", NULL, "RX INT1 MIX2 INP"},
|
||||
{"RX INT1 INTERP", NULL, "RX INT1 MIX2"},
|
||||
{"RX INT1 DEM MUX", "CLSH_DSM_OUT", "RX INT1 INTERP"},
|
||||
{"RX INT1 DEM MUX", "CLSH_DSM_OUT", "RX INT1 MIX2"},
|
||||
{"RX INT1 DAC", NULL, "RX INT1 DEM MUX"},
|
||||
{"RX INT1 DAC", NULL, "RX_BIAS"},
|
||||
{"HPHL PA", NULL, "RX INT1 DAC"},
|
||||
{"HPHL", NULL, "HPHL PA"},
|
||||
|
||||
{"RX INT2 SEC MIX", NULL, "RX INT2_1 MIX1"},
|
||||
{"RX INT2_1 INTERP", NULL, "RX INT2_1 MIX1"},
|
||||
{"RX INT2 SEC MIX", NULL, "RX INT2_1 INTERP"},
|
||||
{"RX INT2 MIX2", NULL, "RX INT2 SEC MIX"},
|
||||
{"RX INT2 MIX2", NULL, "RX INT2 MIX2 INP"},
|
||||
{"RX INT2 INTERP", NULL, "RX INT2 MIX2"},
|
||||
{"RX INT2 DEM MUX", "CLSH_DSM_OUT", "RX INT2 INTERP"},
|
||||
{"RX INT2 DEM MUX", "CLSH_DSM_OUT", "RX INT2 MIX2"},
|
||||
{"RX INT2 DAC", NULL, "RX INT2 DEM MUX"},
|
||||
{"RX INT2 DAC", NULL, "RX_BIAS"},
|
||||
{"HPHR PA", NULL, "RX INT2 DAC"},
|
||||
{"HPHR", NULL, "HPHR PA"},
|
||||
|
||||
{"RX INT3 SEC MIX", NULL, "RX INT3_1 MIX1"},
|
||||
{"RX INT3_1 INTERP", NULL, "RX INT3_1 MIX1"},
|
||||
{"RX INT3 SEC MIX", NULL, "RX INT3_1 INTERP"},
|
||||
{"RX INT3 MIX2", NULL, "RX INT3 SEC MIX"},
|
||||
{"RX INT3 MIX2", NULL, "RX INT3 MIX2 INP"},
|
||||
{"RX INT3 INTERP", NULL, "RX INT3 MIX2"},
|
||||
{"RX INT3 DAC", NULL, "RX INT3 INTERP"},
|
||||
{"RX INT3 DAC", NULL, "RX INT3 MIX2"},
|
||||
{"RX INT3 DAC", NULL, "RX_BIAS"},
|
||||
{"LINEOUT1 PA", NULL, "RX INT3 DAC"},
|
||||
{"LINEOUT1", NULL, "LINEOUT1 PA"},
|
||||
|
||||
{"RX INT4_1 INTERP", NULL, "RX INT4_1 MIX1"},
|
||||
{"RX INT4 SEC MIX", NULL, "RX INT4_1 INTERP"},
|
||||
{"RX INT4 SEC MIX", NULL, "RX INT4_1 MIX1"},
|
||||
{"RX INT4 MIX2", NULL, "RX INT4 SEC MIX"},
|
||||
{"RX INT4 MIX2", NULL, "RX INT4 MIX2 INP"},
|
||||
{"RX INT4 INTERP", NULL, "RX INT4 MIX2"},
|
||||
{"RX INT4 DAC", NULL, "RX INT4 INTERP"},
|
||||
{"RX INT4 DAC", NULL, "RX INT4 MIX2"},
|
||||
{"RX INT4 DAC", NULL, "RX_BIAS"},
|
||||
{"LINEOUT2 PA", NULL, "RX INT4 DAC"},
|
||||
{"LINEOUT2", NULL, "LINEOUT2 PA"},
|
||||
|
||||
{"RX INT7 SEC MIX", NULL, "RX INT7_1 MIX1"},
|
||||
{"RX INT7_1 INTERP", NULL, "RX INT7_1 MIX1"},
|
||||
{"RX INT7 SEC MIX", NULL, "RX INT7_1 INTERP"},
|
||||
{"RX INT7 MIX2", NULL, "RX INT7 SEC MIX"},
|
||||
{"RX INT7 MIX2", NULL, "RX INT7 MIX2 INP"},
|
||||
{"RX INT7 INTERP", NULL, "RX INT7 MIX2"},
|
||||
{"RX INT7 CHAIN", NULL, "RX INT7 INTERP"},
|
||||
{"RX INT7 CHAIN", NULL, "RX INT7 MIX2"},
|
||||
{"RX INT7 CHAIN", NULL, "RX_BIAS"},
|
||||
{"SPK1 OUT", NULL, "RX INT7 CHAIN"},
|
||||
|
||||
{"RX INT8_1 INTERP", NULL, "RX INT8_1 MIX1"},
|
||||
{"RX INT8 SEC MIX", NULL, "RX INT8_1 INTERP"},
|
||||
{"RX INT8 SEC MIX", NULL, "RX INT8_1 MIX1"},
|
||||
{"RX INT8 INTERP", NULL, "RX INT8 SEC MIX"},
|
||||
{"RX INT8 CHAIN", NULL, "RX INT8 INTERP"},
|
||||
{"RX INT8 CHAIN", NULL, "RX INT8 SEC MIX"},
|
||||
{"RX INT8 CHAIN", NULL, "RX_BIAS"},
|
||||
{"SPK2 OUT", NULL, "RX INT8 CHAIN"},
|
||||
|
||||
|
@ -1014,6 +1022,67 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
|
|||
{"RX INT4 MIX2 INP", "SRC1", "SRC1"},
|
||||
{"RX INT7 MIX2 INP", "SRC0", "SRC0"},
|
||||
{"RX INT7 MIX2 INP", "SRC1", "SRC1"},
|
||||
|
||||
/* Native clk main path routing */
|
||||
{"RX INT1_1 NATIVE MUX", "ON", "RX INT1_1 MIX1"},
|
||||
{"RX INT1_1 INTERP", NULL, "RX INT1_1 NATIVE MUX"},
|
||||
{"RX INT1_1 NATIVE MUX", NULL, "RX INT1 NATIVE SUPPLY"},
|
||||
|
||||
{"RX INT2_1 NATIVE MUX", "ON", "RX INT2_1 MIX1"},
|
||||
{"RX INT2_1 INTERP", NULL, "RX INT2_1 NATIVE MUX"},
|
||||
{"RX INT2_1 NATIVE MUX", NULL, "RX INT2 NATIVE SUPPLY"},
|
||||
|
||||
{"RX INT3_1 NATIVE MUX", "ON", "RX INT3_1 MIX1"},
|
||||
{"RX INT3_1 INTERP", NULL, "RX INT3_1 NATIVE MUX"},
|
||||
{"RX INT3_1 NATIVE MUX", NULL, "RX INT3 NATIVE SUPPLY"},
|
||||
|
||||
{"RX INT4_1 NATIVE MUX", "ON", "RX INT4_1 MIX1"},
|
||||
{"RX INT4_1 INTERP", NULL, "RX INT4_1 NATIVE MUX"},
|
||||
{"RX INT4_1 NATIVE MUX", NULL, "RX INT4 NATIVE SUPPLY"},
|
||||
|
||||
/* Native clk mix path routing */
|
||||
{"RX INT1_2 NATIVE MUX", "ON", "RX INT1_2 MUX"},
|
||||
{"RX INT1_2 INTERP", NULL, "RX INT1_2 NATIVE MUX"},
|
||||
{"RX INT1_2 NATIVE MUX", NULL, "RX INT1 NATIVE SUPPLY"},
|
||||
|
||||
{"RX INT2_2 NATIVE MUX", "ON", "RX INT2_2 MUX"},
|
||||
{"RX INT2_2 INTERP", NULL, "RX INT2_2 NATIVE MUX"},
|
||||
{"RX INT2_2 NATIVE MUX", NULL, "RX INT2 NATIVE SUPPLY"},
|
||||
|
||||
{"RX INT3_2 NATIVE MUX", "ON", "RX INT3_2 MUX"},
|
||||
{"RX INT3_2 INTERP", NULL, "RX INT3_2 NATIVE MUX"},
|
||||
{"RX INT3_2 NATIVE MUX", NULL, "RX INT3 NATIVE SUPPLY"},
|
||||
|
||||
{"RX INT4_2 NATIVE MUX", "ON", "RX INT4_2 MUX"},
|
||||
{"RX INT4_2 INTERP", NULL, "RX INT4_2 NATIVE MUX"},
|
||||
{"RX INT4_2 NATIVE MUX", NULL, "RX INT4 NATIVE SUPPLY"},
|
||||
|
||||
{"RX INT7_2 NATIVE MUX", "ON", "RX INT7_2 MUX"},
|
||||
{"RX INT7_2 INTERP", NULL, "RX INT7_2 NATIVE MUX"},
|
||||
{"RX INT7_2 NATIVE MUX", NULL, "RX INT7 NATIVE SUPPLY"},
|
||||
|
||||
{"RX INT8_2 NATIVE MUX", "ON", "RX INT8_2 MUX"},
|
||||
{"RX INT8_2 INTERP", NULL, "RX INT8_2 NATIVE MUX"},
|
||||
{"RX INT8_2 NATIVE MUX", NULL, "RX INT8 NATIVE SUPPLY"},
|
||||
|
||||
/* ASRC Routing */
|
||||
{"ASRC0 MUX", "ASRC_IN_HPHL", "RX INT1_2 INTERP"},
|
||||
{"RX INT1 SEC MIX", "HPHL Switch", "ASRC0 MUX"},
|
||||
|
||||
{"ASRC1 MUX", "ASRC_IN_HPHR", "RX INT2_2 INTERP"},
|
||||
{"RX INT2 SEC MIX", "HPHR Switch", "ASRC1 MUX"},
|
||||
|
||||
{"ASRC0 MUX", "ASRC_IN_LO1", "RX INT3_2 INTERP"},
|
||||
{"RX INT3 SEC MIX", "LO1 Switch", "ASRC0 MUX"},
|
||||
|
||||
{"ASRC1 MUX", "ASRC_IN_LO2", "RX INT4_2 INTERP"},
|
||||
{"RX INT4 SEC MIX", "LO2 Switch", "ASRC1 MUX"},
|
||||
|
||||
{"ASRC2 MUX", "ASRC_IN_SPKR1", "RX INT7_2 INTERP"},
|
||||
{"RX INT7 SEC MIX", NULL, "ASRC2 MUX"},
|
||||
|
||||
{"ASRC3 MUX", "ASRC_IN_SPKR2", "RX INT8_2 INTERP"},
|
||||
{"RX INT8 SEC MIX", NULL, "ASRC3 MUX"},
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -163,4 +163,6 @@ extern int tavil_mbhc_micb_adjust_voltage(struct snd_soc_codec *codec,
|
|||
int req_volt,
|
||||
int micb_num);
|
||||
extern struct wcd934x_mbhc *tavil_soc_get_mbhc(struct snd_soc_codec *codec);
|
||||
extern int tavil_codec_enable_interp_clk(struct snd_soc_codec *codec,
|
||||
int event, int intp_idx);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue