Loading asoc/sa6155.c +111 −21 Original line number Diff line number Diff line Loading @@ -221,10 +221,10 @@ static struct dev_config tdm_rx_cfg[TDM_INTERFACE_MAX][TDM_PORT_MAX] = { {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_7 */ }, { /* QUIN TDM */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_0 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_1 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_2 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_3 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 2}, /* RX_0 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 2}, /* RX_1 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 2}, /* RX_2 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 2}, /* RX_3 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_4 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_5 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_6 */ Loading Loading @@ -275,7 +275,7 @@ static struct dev_config tdm_tx_cfg[TDM_INTERFACE_MAX][TDM_PORT_MAX] = { {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_7 */ }, { /* QUIN TDM */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_0 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 6}, /* TX_0 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_1 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_2 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_3 */ Loading Loading @@ -431,7 +431,7 @@ static unsigned int tdm_rx_slot_offset {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {28, 0xFFFF}, } }; Loading Loading @@ -486,7 +486,7 @@ static unsigned int tdm_tx_slot_offset {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {20, 0xFFFF}, } }; Loading Loading @@ -547,7 +547,7 @@ static unsigned int tdm_rx_slot_offset_custom {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0, 0xFFFF}, } }; Loading Loading @@ -601,7 +601,7 @@ static unsigned int tdm_tx_slot_offset_custom {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0, 0xFFFF}, } }; Loading Loading @@ -4335,6 +4335,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, rate->min = rate->max = tdm_rx_cfg[TDM_QUIN][TDM_3].sample_rate; break; case AFE_PORT_ID_QUINARY_TDM_RX_7: channels->min = channels->max = tdm_rx_cfg[TDM_QUIN][TDM_7].channels; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, tdm_rx_cfg[TDM_QUIN][TDM_7].bit_format); rate->min = rate->max = tdm_rx_cfg[TDM_QUIN][TDM_7].sample_rate; break; case AFE_PORT_ID_QUINARY_TDM_TX: channels->min = channels->max = tdm_tx_cfg[TDM_QUIN][TDM_0].channels; Loading Loading @@ -4367,6 +4375,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, rate->min = rate->max = tdm_tx_cfg[TDM_QUIN][TDM_3].sample_rate; break; case AFE_PORT_ID_QUINARY_TDM_TX_7: channels->min = channels->max = tdm_tx_cfg[TDM_QUIN][TDM_7].channels; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, tdm_tx_cfg[TDM_QUIN][TDM_7].bit_format); rate->min = rate->max = tdm_tx_cfg[TDM_QUIN][TDM_7].sample_rate; break; default: pr_err("%s: dai id 0x%x not supported\n", __func__, cpu_dai->id); Loading Loading @@ -4637,6 +4653,11 @@ static int sa6155_tdm_snd_hw_params(struct snd_pcm_substream *substream, slot_width = tdm_slot[TDM_QUIN].width; slot_offset = tdm_rx_slot_offset[TDM_QUIN][TDM_3]; break; case AFE_PORT_ID_QUINARY_TDM_RX_7: slots = tdm_slot[TDM_QUIN].num; slot_width = tdm_slot[TDM_QUIN].width; slot_offset = tdm_rx_slot_offset[TDM_QUIN][TDM_7]; break; case AFE_PORT_ID_QUINARY_TDM_TX: slots = tdm_slot[TDM_QUIN].num; slot_width = tdm_slot[TDM_QUIN].width; Loading @@ -4657,6 +4678,11 @@ static int sa6155_tdm_snd_hw_params(struct snd_pcm_substream *substream, slot_width = tdm_slot[TDM_QUIN].width; slot_offset = tdm_tx_slot_offset[TDM_QUIN][TDM_3]; break; case AFE_PORT_ID_QUINARY_TDM_TX_7: slots = tdm_slot[TDM_QUIN].num; slot_width = tdm_slot[TDM_QUIN].width; slot_offset = tdm_tx_slot_offset[TDM_QUIN][TDM_7]; break; default: pr_err("%s: dai id 0x%x not supported\n", __func__, cpu_dai->id); Loading Loading @@ -4771,6 +4797,8 @@ static int sa6155_tdm_snd_startup(struct snd_pcm_substream *substream) intf_conf = &pdata->tdm_intf_conf[index]; mutex_lock(&intf_conf->lock); if (++intf_conf->ref_cnt == 1) { if (index == TDM_TERT || index == TDM_QUAT || index == TDM_QUIN) { pinctrl_info = &pdata->pinctrl_info[index]; ret_pinctrl = msm_set_pinctrl(pinctrl_info, STATE_ACTIVE); Loading @@ -4778,6 +4806,7 @@ static int sa6155_tdm_snd_startup(struct snd_pcm_substream *substream) pr_err("%s: TDM TLMM pinctrl set failed with %d\n", __func__, ret_pinctrl); } } mutex_unlock(&intf_conf->lock); err: Loading Loading @@ -4808,6 +4837,8 @@ static void sa6155_tdm_snd_shutdown(struct snd_pcm_substream *substream) intf_conf = &pdata->tdm_intf_conf[index]; mutex_lock(&intf_conf->lock); if (--intf_conf->ref_cnt == 0) { if (index == TDM_TERT || index == TDM_QUAT || index == TDM_QUIN) { pinctrl_info = &pdata->pinctrl_info[index]; ret_pinctrl = msm_set_pinctrl(pinctrl_info, STATE_SLEEP); Loading @@ -4815,6 +4846,7 @@ static void sa6155_tdm_snd_shutdown(struct snd_pcm_substream *substream) pr_err("%s: TDM TLMM pinctrl set failed with %d\n", __func__, ret_pinctrl); } } mutex_unlock(&intf_conf->lock); } Loading Loading @@ -5805,6 +5837,36 @@ static struct snd_soc_dai_link msm_auto_fe_dai_links[] = { .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, { .name = "Quinary TDM RX 7 Hostless", .stream_name = "Quinary TDM RX 7 Hostless", .cpu_dai_name = "QUIN_TDM_RX_7_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .dpcm_playback = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, .ignore_pmdown_time = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, { .name = "Quinary TDM TX 7 Hostless", .stream_name = "Quinary TDM TX 7 Hostless", .cpu_dai_name = "QUIN_TDM_TX_7_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .dpcm_capture = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, .ignore_pmdown_time = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, }; static struct snd_soc_dai_link msm_custom_fe_dai_links[] = { Loading Loading @@ -6666,6 +6728,34 @@ static struct snd_soc_dai_link msm_auto_be_dai_links[] = { .ops = &sa6155_tdm_be_ops, .ignore_suspend = 1, }, { .name = LPASS_BE_QUIN_TDM_RX_7, .stream_name = "Quinary TDM7 Playback", .cpu_dai_name = "msm-dai-q6-tdm.36942", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_playback = 1, .id = MSM_BACKEND_DAI_QUIN_TDM_RX_7, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &sa6155_tdm_be_ops, .ignore_suspend = 1, }, { .name = LPASS_BE_QUIN_TDM_TX_7, .stream_name = "Quinary TDM7 Capture", .cpu_dai_name = "msm-dai-q6-tdm.36943", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_capture = 1, .id = MSM_BACKEND_DAI_QUIN_TDM_TX_7, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &sa6155_tdm_be_ops, .ignore_suspend = 1, }, }; static struct snd_soc_dai_link ext_disp_be_dai_link[] = { Loading Loading
asoc/sa6155.c +111 −21 Original line number Diff line number Diff line Loading @@ -221,10 +221,10 @@ static struct dev_config tdm_rx_cfg[TDM_INTERFACE_MAX][TDM_PORT_MAX] = { {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_7 */ }, { /* QUIN TDM */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_0 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_1 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_2 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_3 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 2}, /* RX_0 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 2}, /* RX_1 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 2}, /* RX_2 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 2}, /* RX_3 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_4 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_5 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* RX_6 */ Loading Loading @@ -275,7 +275,7 @@ static struct dev_config tdm_tx_cfg[TDM_INTERFACE_MAX][TDM_PORT_MAX] = { {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_7 */ }, { /* QUIN TDM */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_0 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 6}, /* TX_0 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_1 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_2 */ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_3 */ Loading Loading @@ -431,7 +431,7 @@ static unsigned int tdm_rx_slot_offset {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {28, 0xFFFF}, } }; Loading Loading @@ -486,7 +486,7 @@ static unsigned int tdm_tx_slot_offset {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {20, 0xFFFF}, } }; Loading Loading @@ -547,7 +547,7 @@ static unsigned int tdm_rx_slot_offset_custom {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0, 0xFFFF}, } }; Loading Loading @@ -601,7 +601,7 @@ static unsigned int tdm_tx_slot_offset_custom {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0, 0xFFFF}, } }; Loading Loading @@ -4335,6 +4335,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, rate->min = rate->max = tdm_rx_cfg[TDM_QUIN][TDM_3].sample_rate; break; case AFE_PORT_ID_QUINARY_TDM_RX_7: channels->min = channels->max = tdm_rx_cfg[TDM_QUIN][TDM_7].channels; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, tdm_rx_cfg[TDM_QUIN][TDM_7].bit_format); rate->min = rate->max = tdm_rx_cfg[TDM_QUIN][TDM_7].sample_rate; break; case AFE_PORT_ID_QUINARY_TDM_TX: channels->min = channels->max = tdm_tx_cfg[TDM_QUIN][TDM_0].channels; Loading Loading @@ -4367,6 +4375,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, rate->min = rate->max = tdm_tx_cfg[TDM_QUIN][TDM_3].sample_rate; break; case AFE_PORT_ID_QUINARY_TDM_TX_7: channels->min = channels->max = tdm_tx_cfg[TDM_QUIN][TDM_7].channels; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, tdm_tx_cfg[TDM_QUIN][TDM_7].bit_format); rate->min = rate->max = tdm_tx_cfg[TDM_QUIN][TDM_7].sample_rate; break; default: pr_err("%s: dai id 0x%x not supported\n", __func__, cpu_dai->id); Loading Loading @@ -4637,6 +4653,11 @@ static int sa6155_tdm_snd_hw_params(struct snd_pcm_substream *substream, slot_width = tdm_slot[TDM_QUIN].width; slot_offset = tdm_rx_slot_offset[TDM_QUIN][TDM_3]; break; case AFE_PORT_ID_QUINARY_TDM_RX_7: slots = tdm_slot[TDM_QUIN].num; slot_width = tdm_slot[TDM_QUIN].width; slot_offset = tdm_rx_slot_offset[TDM_QUIN][TDM_7]; break; case AFE_PORT_ID_QUINARY_TDM_TX: slots = tdm_slot[TDM_QUIN].num; slot_width = tdm_slot[TDM_QUIN].width; Loading @@ -4657,6 +4678,11 @@ static int sa6155_tdm_snd_hw_params(struct snd_pcm_substream *substream, slot_width = tdm_slot[TDM_QUIN].width; slot_offset = tdm_tx_slot_offset[TDM_QUIN][TDM_3]; break; case AFE_PORT_ID_QUINARY_TDM_TX_7: slots = tdm_slot[TDM_QUIN].num; slot_width = tdm_slot[TDM_QUIN].width; slot_offset = tdm_tx_slot_offset[TDM_QUIN][TDM_7]; break; default: pr_err("%s: dai id 0x%x not supported\n", __func__, cpu_dai->id); Loading Loading @@ -4771,6 +4797,8 @@ static int sa6155_tdm_snd_startup(struct snd_pcm_substream *substream) intf_conf = &pdata->tdm_intf_conf[index]; mutex_lock(&intf_conf->lock); if (++intf_conf->ref_cnt == 1) { if (index == TDM_TERT || index == TDM_QUAT || index == TDM_QUIN) { pinctrl_info = &pdata->pinctrl_info[index]; ret_pinctrl = msm_set_pinctrl(pinctrl_info, STATE_ACTIVE); Loading @@ -4778,6 +4806,7 @@ static int sa6155_tdm_snd_startup(struct snd_pcm_substream *substream) pr_err("%s: TDM TLMM pinctrl set failed with %d\n", __func__, ret_pinctrl); } } mutex_unlock(&intf_conf->lock); err: Loading Loading @@ -4808,6 +4837,8 @@ static void sa6155_tdm_snd_shutdown(struct snd_pcm_substream *substream) intf_conf = &pdata->tdm_intf_conf[index]; mutex_lock(&intf_conf->lock); if (--intf_conf->ref_cnt == 0) { if (index == TDM_TERT || index == TDM_QUAT || index == TDM_QUIN) { pinctrl_info = &pdata->pinctrl_info[index]; ret_pinctrl = msm_set_pinctrl(pinctrl_info, STATE_SLEEP); Loading @@ -4815,6 +4846,7 @@ static void sa6155_tdm_snd_shutdown(struct snd_pcm_substream *substream) pr_err("%s: TDM TLMM pinctrl set failed with %d\n", __func__, ret_pinctrl); } } mutex_unlock(&intf_conf->lock); } Loading Loading @@ -5805,6 +5837,36 @@ static struct snd_soc_dai_link msm_auto_fe_dai_links[] = { .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, { .name = "Quinary TDM RX 7 Hostless", .stream_name = "Quinary TDM RX 7 Hostless", .cpu_dai_name = "QUIN_TDM_RX_7_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .dpcm_playback = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, .ignore_pmdown_time = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, { .name = "Quinary TDM TX 7 Hostless", .stream_name = "Quinary TDM TX 7 Hostless", .cpu_dai_name = "QUIN_TDM_TX_7_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .dpcm_capture = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, .ignore_pmdown_time = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, }; static struct snd_soc_dai_link msm_custom_fe_dai_links[] = { Loading Loading @@ -6666,6 +6728,34 @@ static struct snd_soc_dai_link msm_auto_be_dai_links[] = { .ops = &sa6155_tdm_be_ops, .ignore_suspend = 1, }, { .name = LPASS_BE_QUIN_TDM_RX_7, .stream_name = "Quinary TDM7 Playback", .cpu_dai_name = "msm-dai-q6-tdm.36942", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_playback = 1, .id = MSM_BACKEND_DAI_QUIN_TDM_RX_7, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &sa6155_tdm_be_ops, .ignore_suspend = 1, }, { .name = LPASS_BE_QUIN_TDM_TX_7, .stream_name = "Quinary TDM7 Capture", .cpu_dai_name = "msm-dai-q6-tdm.36943", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_capture = 1, .id = MSM_BACKEND_DAI_QUIN_TDM_TX_7, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &sa6155_tdm_be_ops, .ignore_suspend = 1, }, }; static struct snd_soc_dai_link ext_disp_be_dai_link[] = { Loading