asoc: Add support for Rx and Tx codec dma interface

New codec dma interfaces have been introduced to
connect LPASS and Codec macros. Add playback
and capture DAIs for Rx and Tx codec.

CRs-Fixed: 2281591
Change-Id: I26ba49660d62accb96ea7b063e00b35917dfbdca
Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
This commit is contained in:
Aditya Bavanari 2018-05-16 22:10:34 +05:30
parent 348a4a6d2a
commit e90adf0fe7

View File

@ -9680,6 +9680,14 @@ static int msm_dai_q6_cdc_dma_set_channel_map(struct snd_soc_dai *dai,
switch (dai->id) {
case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
case AFE_PORT_ID_RX_CODEC_DMA_RX_0:
case AFE_PORT_ID_RX_CODEC_DMA_RX_1:
case AFE_PORT_ID_RX_CODEC_DMA_RX_2:
case AFE_PORT_ID_RX_CODEC_DMA_RX_3:
case AFE_PORT_ID_RX_CODEC_DMA_RX_4:
case AFE_PORT_ID_RX_CODEC_DMA_RX_5:
case AFE_PORT_ID_RX_CODEC_DMA_RX_6:
case AFE_PORT_ID_RX_CODEC_DMA_RX_7:
if (!rx_ch_mask) {
dev_err(dai->dev, "%s: invalid rx ch mask\n", __func__);
return -EINVAL;
@ -9697,6 +9705,12 @@ static int msm_dai_q6_cdc_dma_set_channel_map(struct snd_soc_dai *dai,
case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
case AFE_PORT_ID_TX_CODEC_DMA_TX_0:
case AFE_PORT_ID_TX_CODEC_DMA_TX_1:
case AFE_PORT_ID_TX_CODEC_DMA_TX_2:
case AFE_PORT_ID_TX_CODEC_DMA_TX_3:
case AFE_PORT_ID_TX_CODEC_DMA_TX_4:
case AFE_PORT_ID_TX_CODEC_DMA_TX_5:
if (!tx_ch_mask) {
dev_err(dai->dev, "%s: invalid tx ch mask\n", __func__);
return -EINVAL;
@ -10006,7 +10020,355 @@ static struct snd_soc_dai_driver msm_dai_q6_cdc_dma_dai[] = {
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.playback = {
.stream_name = "RX CDC DMA0 Playback",
.aif_name = "RX_CDC_DMA_RX_0",
.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 2,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_RX_CODEC_DMA_RX_0,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.capture = {
.stream_name = "TX CDC DMA0 Capture",
.aif_name = "TX_CDC_DMA_TX_0",
.rates = SNDRV_PCM_RATE_8000 |
SNDRV_PCM_RATE_16000 |
SNDRV_PCM_RATE_32000 |
SNDRV_PCM_RATE_48000 |
SNDRV_PCM_RATE_96000 |
SNDRV_PCM_RATE_192000 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 3,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_TX_CODEC_DMA_TX_0,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.playback = {
.stream_name = "RX CDC DMA1 Playback",
.aif_name = "RX_CDC_DMA_RX_1",
.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 2,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_RX_CODEC_DMA_RX_1,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.capture = {
.stream_name = "TX CDC DMA1 Capture",
.aif_name = "TX_CDC_DMA_TX_1",
.rates = SNDRV_PCM_RATE_8000 |
SNDRV_PCM_RATE_16000 |
SNDRV_PCM_RATE_32000 |
SNDRV_PCM_RATE_48000 |
SNDRV_PCM_RATE_96000 |
SNDRV_PCM_RATE_192000 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 3,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_TX_CODEC_DMA_TX_1,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.playback = {
.stream_name = "RX CDC DMA2 Playback",
.aif_name = "RX_CDC_DMA_RX_2",
.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 1,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_RX_CODEC_DMA_RX_2,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.capture = {
.stream_name = "TX CDC DMA2 Capture",
.aif_name = "TX_CDC_DMA_TX_2",
.rates = SNDRV_PCM_RATE_8000 |
SNDRV_PCM_RATE_16000 |
SNDRV_PCM_RATE_32000 |
SNDRV_PCM_RATE_48000 |
SNDRV_PCM_RATE_96000 |
SNDRV_PCM_RATE_192000 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 4,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_TX_CODEC_DMA_TX_2,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
}, {
.playback = {
.stream_name = "RX CDC DMA3 Playback",
.aif_name = "RX_CDC_DMA_RX_3",
.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 1,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_RX_CODEC_DMA_RX_3,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.capture = {
.stream_name = "TX CDC DMA3 Capture",
.aif_name = "TX_CDC_DMA_TX_3",
.rates = SNDRV_PCM_RATE_8000 |
SNDRV_PCM_RATE_16000 |
SNDRV_PCM_RATE_32000 |
SNDRV_PCM_RATE_48000 |
SNDRV_PCM_RATE_96000 |
SNDRV_PCM_RATE_192000 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 8,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_TX_CODEC_DMA_TX_3,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.playback = {
.stream_name = "RX CDC DMA4 Playback",
.aif_name = "RX_CDC_DMA_RX_4",
.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 6,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_RX_CODEC_DMA_RX_4,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.capture = {
.stream_name = "TX CDC DMA4 Capture",
.aif_name = "TX_CDC_DMA_TX_4",
.rates = SNDRV_PCM_RATE_8000 |
SNDRV_PCM_RATE_16000 |
SNDRV_PCM_RATE_32000 |
SNDRV_PCM_RATE_48000 |
SNDRV_PCM_RATE_96000 |
SNDRV_PCM_RATE_192000 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 8,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_TX_CODEC_DMA_TX_4,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.playback = {
.stream_name = "RX CDC DMA5 Playback",
.aif_name = "RX_CDC_DMA_RX_5",
.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 1,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_RX_CODEC_DMA_RX_5,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.capture = {
.stream_name = "TX CDC DMA5 Capture",
.aif_name = "TX_CDC_DMA_TX_5",
.rates = SNDRV_PCM_RATE_8000 |
SNDRV_PCM_RATE_16000 |
SNDRV_PCM_RATE_32000 |
SNDRV_PCM_RATE_48000 |
SNDRV_PCM_RATE_96000 |
SNDRV_PCM_RATE_192000 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 4,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_TX_CODEC_DMA_TX_5,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.playback = {
.stream_name = "RX CDC DMA6 Playback",
.aif_name = "RX_CDC_DMA_RX_6",
.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 4,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_RX_CODEC_DMA_RX_6,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
{
.playback = {
.stream_name = "RX CDC DMA7 Playback",
.aif_name = "RX_CDC_DMA_RX_7",
.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
SNDRV_PCM_RATE_384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S24_3LE |
SNDRV_PCM_FMTBIT_S32_LE,
.channels_min = 1,
.channels_max = 2,
.rate_min = 8000,
.rate_max = 384000,
},
.ops = &msm_dai_q6_cdc_dma_ops,
.id = AFE_PORT_ID_RX_CODEC_DMA_RX_7,
.probe = msm_dai_q6_dai_cdc_dma_probe,
.remove = msm_dai_q6_dai_cdc_dma_remove,
},
};
static const struct snd_soc_component_driver msm_q6_cdc_dma_dai_component = {