mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 16:46:15 -04:00
Merge "ASoC: sa6155: add quin tdm dai links and update pinctrl"
This commit is contained in:
commit
40248a9dd0
1 changed files with 111 additions and 21 deletions
132
asoc/sa6155.c
132
asoc/sa6155.c
|
|
@ -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 */
|
||||
|
|
@ -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 */
|
||||
|
|
@ -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},
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -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},
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -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},
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -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},
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -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;
|
||||
|
|
@ -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);
|
||||
|
|
@ -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;
|
||||
|
|
@ -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);
|
||||
|
|
@ -4771,12 +4797,15 @@ 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) {
|
||||
pinctrl_info = &pdata->pinctrl_info[index];
|
||||
ret_pinctrl = msm_set_pinctrl(pinctrl_info,
|
||||
STATE_ACTIVE);
|
||||
if (ret_pinctrl)
|
||||
pr_err("%s: TDM TLMM pinctrl set failed with %d\n",
|
||||
__func__, ret_pinctrl);
|
||||
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);
|
||||
if (ret_pinctrl)
|
||||
pr_err("%s: TDM TLMM pinctrl set failed with %d\n",
|
||||
__func__, ret_pinctrl);
|
||||
}
|
||||
}
|
||||
mutex_unlock(&intf_conf->lock);
|
||||
|
||||
|
|
@ -4808,12 +4837,15 @@ 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) {
|
||||
pinctrl_info = &pdata->pinctrl_info[index];
|
||||
ret_pinctrl = msm_set_pinctrl(pinctrl_info,
|
||||
STATE_SLEEP);
|
||||
if (ret_pinctrl)
|
||||
pr_err("%s: TDM TLMM pinctrl set failed with %d\n",
|
||||
__func__, ret_pinctrl);
|
||||
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);
|
||||
if (ret_pinctrl)
|
||||
pr_err("%s: TDM TLMM pinctrl set failed with %d\n",
|
||||
__func__, ret_pinctrl);
|
||||
}
|
||||
}
|
||||
mutex_unlock(&intf_conf->lock);
|
||||
}
|
||||
|
|
@ -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[] = {
|
||||
|
|
@ -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…
Reference in a new issue