summaryrefslogtreecommitdiff
path: root/sound/soc/msm/msm8998.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/msm/msm8998.c')
-rw-r--r--sound/soc/msm/msm8998.c51
1 files changed, 37 insertions, 14 deletions
diff --git a/sound/soc/msm/msm8998.c b/sound/soc/msm/msm8998.c
index e715770d909a..9159ea642816 100644
--- a/sound/soc/msm/msm8998.c
+++ b/sound/soc/msm/msm8998.c
@@ -434,7 +434,8 @@ static char const *tdm_sample_rate_text[] = {"KHZ_8", "KHZ_16", "KHZ_32",
static const char *const auxpcm_rate_text[] = {"KHZ_8", "KHZ_16"};
static char const *mi2s_rate_text[] = {"KHZ_8", "KHZ_16",
"KHZ_32", "KHZ_44P1", "KHZ_48",
- "KHZ_96", "KHZ_192"};
+ "KHZ_88P2", "KHZ_96", "KHZ_176P4",
+ "KHZ_192"};
static const char *const mi2s_ch_text[] = {"One", "Two", "Three", "Four",
"Five", "Six", "Seven",
"Eight"};
@@ -557,6 +558,13 @@ static struct snd_soc_dapm_route wcd_audio_paths[] = {
{"MIC BIAS4", NULL, "MCLK"},
};
+static u32 mi2s_ebit_clk[MI2S_MAX] = {
+ Q6AFE_LPASS_CLK_ID_PRI_MI2S_EBIT,
+ Q6AFE_LPASS_CLK_ID_SEC_MI2S_EBIT,
+ Q6AFE_LPASS_CLK_ID_TER_MI2S_EBIT,
+ Q6AFE_LPASS_CLK_ID_QUAD_MI2S_EBIT,
+};
+
static struct afe_clk_set mi2s_clk[MI2S_MAX] = {
{
AFE_API_VERSION_I2S_CONFIG,
@@ -2221,12 +2229,18 @@ static int mi2s_get_sample_rate_val(int sample_rate)
case SAMPLING_RATE_48KHZ:
sample_rate_val = 4;
break;
- case SAMPLING_RATE_96KHZ:
+ case SAMPLING_RATE_88P2KHZ:
sample_rate_val = 5;
break;
- case SAMPLING_RATE_192KHZ:
+ case SAMPLING_RATE_96KHZ:
sample_rate_val = 6;
break;
+ case SAMPLING_RATE_176P4KHZ:
+ sample_rate_val = 7;
+ break;
+ case SAMPLING_RATE_192KHZ:
+ sample_rate_val = 8;
+ break;
default:
sample_rate_val = 4;
break;
@@ -2255,9 +2269,15 @@ static int mi2s_get_sample_rate(int value)
sample_rate = SAMPLING_RATE_48KHZ;
break;
case 5:
- sample_rate = SAMPLING_RATE_96KHZ;
+ sample_rate = SAMPLING_RATE_88P2KHZ;
break;
case 6:
+ sample_rate = SAMPLING_RATE_96KHZ;
+ break;
+ case 7:
+ sample_rate = SAMPLING_RATE_176P4KHZ;
+ break;
+ case 8:
sample_rate = SAMPLING_RATE_192KHZ;
break;
default:
@@ -4508,6 +4528,11 @@ static int msm_mi2s_snd_startup(struct snd_pcm_substream *substream)
*/
mutex_lock(&mi2s_intf_conf[index].lock);
if (++mi2s_intf_conf[index].ref_cnt == 1) {
+ /* Check if msm needs to provide the clock to the interface */
+ if (!mi2s_intf_conf[index].msm_is_mi2s_master) {
+ fmt = SND_SOC_DAIFMT_CBM_CFM;
+ mi2s_clk[index].clk_id = mi2s_ebit_clk[index];
+ }
ret = msm_mi2s_set_sclk(substream, true);
if (IS_ERR_VALUE(ret)) {
dev_err(rtd->card->dev,
@@ -4527,9 +4552,6 @@ static int msm_mi2s_snd_startup(struct snd_pcm_substream *substream)
ret = -EINVAL;
goto clk_off;
}
- /* Check if msm needs to provide the clock to the interface */
- if (!mi2s_intf_conf[index].msm_is_mi2s_master)
- fmt = SND_SOC_DAIFMT_CBM_CFM;
ret = snd_soc_dai_set_fmt(cpu_dai, fmt);
if (IS_ERR_VALUE(ret)) {
pr_err("%s: set fmt cpu dai failed for MI2S (%d), err:%d\n",
@@ -5306,12 +5328,13 @@ static struct snd_soc_dai_link msm_common_dai_links[] = {
.be_id = MSM_FRONTEND_DAI_MULTIMEDIA15,
},
{
- .name = MSM_DAILINK_NAME(Compress9),
- .stream_name = "Compress9",
+ .name = MSM_DAILINK_NAME(ULL_NOIRQ_2),
+ .stream_name = "MM_NOIRQ_2",
.cpu_dai_name = "MultiMedia16",
- .platform_name = "msm-compress-dsp",
+ .platform_name = "msm-pcm-dsp-noirq",
.dynamic = 1,
.dpcm_playback = 1,
+ .dpcm_capture = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.codec_dai_name = "snd-soc-dummy-dai",
@@ -5500,7 +5523,7 @@ static struct snd_soc_dai_link msm_common_misc_fe_dai_links[] = {
{
.name = MSM_DAILINK_NAME(Transcode Loopback Playback),
.stream_name = "Transcode Loopback Playback",
- .cpu_dai_name = "MultiMedia14",
+ .cpu_dai_name = "MultiMedia26",
.platform_name = "msm-transcode-loopback",
.dynamic = 1,
.dpcm_playback = 1,
@@ -5511,12 +5534,12 @@ static struct snd_soc_dai_link msm_common_misc_fe_dai_links[] = {
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
/* this dainlink has playback support */
- .be_id = MSM_FRONTEND_DAI_MULTIMEDIA14,
+ .be_id = MSM_FRONTEND_DAI_MULTIMEDIA26,
},
{
.name = MSM_DAILINK_NAME(Transcode Loopback Capture),
.stream_name = "Transcode Loopback Capture",
- .cpu_dai_name = "MultiMedia18",
+ .cpu_dai_name = "MultiMedia27",
.platform_name = "msm-transcode-loopback",
.dynamic = 1,
.dpcm_capture = 1,
@@ -5526,7 +5549,7 @@ static struct snd_soc_dai_link msm_common_misc_fe_dai_links[] = {
.codec_name = "snd-soc-dummy",
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
- .be_id = MSM_FRONTEND_DAI_MULTIMEDIA18,
+ .be_id = MSM_FRONTEND_DAI_MULTIMEDIA27,
},
{
.name = "MultiMedia21",