audio-kernel: I2S/TDM backend dai-links

Add support for I2S/TDM backend dai-links for Kalama target

Change-Id: I0504a030afc534207d2d40ba6fd7fcebb2bb40f1
This commit is contained in:
Srijan Magapu
2022-03-16 17:40:02 -07:00
committed by Gerrit - the friendly Code Review server
parent cb778a4ecd
commit 4a4b666ba0
5 changed files with 78 additions and 4 deletions

View File

@@ -933,6 +933,27 @@ static struct snd_soc_dai_link msm_mi2s_dai_links[] = {
.ignore_suspend = 1,
SND_SOC_DAILINK_REG(sen_mi2s_tx),
},
{
.name = LPASS_BE_SEP_MI2S_RX,
.stream_name = LPASS_BE_SEP_MI2S_RX,
.playback_only = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ops = &msm_common_be_ops,
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(sep_mi2s_rx),
},
{
.name = LPASS_BE_SEP_MI2S_TX,
.stream_name = LPASS_BE_SEP_MI2S_TX,
.capture_only = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ops = &msm_common_be_ops,
.ignore_suspend = 1,
SND_SOC_DAILINK_REG(sep_mi2s_tx),
},
};
static struct snd_soc_dai_link msm_tdm_dai_links[] = {
@@ -1062,6 +1083,27 @@ static struct snd_soc_dai_link msm_tdm_dai_links[] = {
.ignore_suspend = 1,
SND_SOC_DAILINK_REG(sen_tdm_tx_0),
},
{
.name = LPASS_BE_SEP_TDM_RX_0,
.stream_name = LPASS_BE_SEP_TDM_RX_0,
.playback_only = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ops = &msm_common_be_ops,
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(sep_tdm_rx_0),
},
{
.name = LPASS_BE_SEP_TDM_TX_0,
.stream_name = LPASS_BE_SEP_TDM_TX_0,
.capture_only = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ops = &msm_common_be_ops,
.ignore_suspend = 1,
SND_SOC_DAILINK_REG(sep_tdm_tx_0),
},
};
static struct snd_soc_dai_link msm_kalama_dai_links[

View File

@@ -45,6 +45,8 @@
#define LPASS_BE_QUIN_MI2S_TX "MI2S-LPAIF_VA-TX-PRIMARY"
#define LPASS_BE_SEN_MI2S_RX "MI2S-LPAIF_WSA-RX-PRIMARY"
#define LPASS_BE_SEN_MI2S_TX "MI2S-LPAIF_WSA-TX-PRIMARY"
#define LPASS_BE_SEP_MI2S_RX "MI2S-LPAIF_AUD-RX-PRIMARY"
#define LPASS_BE_SEP_MI2S_TX "MI2S-LPAIF_AUD-TX-PRIMARY"
#define LPASS_BE_SLIMBUS_0_RX "SLIM-DEV1-RX-0"
#define LPASS_BE_SLIMBUS_0_TX "SLIM-DEV1-TX-0"
@@ -75,7 +77,8 @@
#define LPASS_BE_QUAT_TDM_TX_0 "TDM-LPAIF_RXTX-TX-PRIMARY"
#define LPASS_BE_QUIN_TDM_RX_0 "TDM-LPAIF_VA-RX-PRIMARY"
#define LPASS_BE_QUIN_TDM_TX_0 "TDM-LPAIF_VA-TX-PRIMARY"
#define LPASS_BE_SEP_TDM_RX_0 "TDM-LPAIF_AUD-RX-PRIMARY"
#define LPASS_BE_SEP_TDM_TX_0 "TDM-LPAIF_AUD-TX-PRIMARY"
#define LPASS_BE_USB_AUDIO_RX "USB_AUDIO-RX"
#define LPASS_BE_USB_AUDIO_TX "USB_AUDIO-TX"

View File

@@ -257,7 +257,7 @@ static int get_mi2s_tdm_auxpcm_intf_index(const char *stream_name)
else if (strnstr(stream_name, "LPAIF_VA", strlen(stream_name)))
return QUIN_MI2S_TDM_AUXPCM;
else if (strnstr(stream_name, "LPAIF_AUD", strlen(stream_name)))
return SEC_MI2S_TDM_AUXPCM;
return SEP_MI2S_TDM_AUXPCM;
else if (strnstr(stream_name, "LPAIF", strlen(stream_name))) {
if (strnstr(stream_name, "PRIMARY", strlen(stream_name)))
return PRI_MI2S_TDM_AUXPCM;
@@ -293,7 +293,7 @@ static int get_mi2s_clk_id(int index)
clk_id = CLOCK_ID_PRI_MI2S_IBIT;
break;
case SEC_MI2S_TDM_AUXPCM:
clk_id = CLOCK_ID_SEP_MI2S_IBIT;
clk_id = CLOCK_ID_SEC_MI2S_IBIT;
break;
case TER_MI2S_TDM_AUXPCM:
clk_id = CLOCK_ID_TER_MI2S_IBIT;
@@ -307,6 +307,9 @@ static int get_mi2s_clk_id(int index)
case SEN_MI2S_TDM_AUXPCM:
clk_id = CLOCK_ID_SEN_MI2S_IBIT;
break;
case SEP_MI2S_TDM_AUXPCM:
clk_id = CLOCK_ID_SEP_MI2S_IBIT;
break;
default:
pr_err("%s: Invalid interface index: %d\n", __func__, index);
}
@@ -323,7 +326,7 @@ static int get_tdm_clk_id(int index)
clk_id = CLOCK_ID_PRI_TDM_IBIT;
break;
case SEC_MI2S_TDM_AUXPCM:
clk_id = CLOCK_ID_SEP_TDM_IBIT;
clk_id = CLOCK_ID_SEC_TDM_IBIT;
break;
case TER_MI2S_TDM_AUXPCM:
clk_id = CLOCK_ID_TER_TDM_IBIT;
@@ -337,6 +340,9 @@ static int get_tdm_clk_id(int index)
case SEN_MI2S_TDM_AUXPCM:
clk_id = CLOCK_ID_SEN_TDM_IBIT;
break;
case SEP_MI2S_TDM_AUXPCM:
clk_id = CLOCK_ID_SEP_TDM_IBIT;
break;
default:
pr_err("%s: Invalid interface index: %d\n", __func__, index);
}
@@ -748,6 +754,8 @@ int msm_common_snd_init(struct platform_device *pdev, struct snd_soc_card *card)
"qcom,quin-mi2s-gpios", 0);
common_pdata->mi2s_gpio_p[SEN_MI2S_TDM_AUXPCM] = of_parse_phandle(pdev->dev.of_node,
"qcom,sen-mi2s-gpios", 0);
common_pdata->mi2s_gpio_p[SEP_MI2S_TDM_AUXPCM] = of_parse_phandle(pdev->dev.of_node,
"qcom,sep-mi2s-gpios", 0);
common_pdata->aud_dev_state = devm_kcalloc(&pdev->dev, card->num_links,
sizeof(uint8_t), GFP_KERNEL);
dev_info(&pdev->dev, "num_links %d \n", card->num_links);

View File

@@ -28,6 +28,7 @@ enum {
QUAT_MI2S_TDM_AUXPCM,
QUIN_MI2S_TDM_AUXPCM,
SEN_MI2S_TDM_AUXPCM,
SEP_MI2S_TDM_AUXPCM,
MI2S_TDM_AUXPCM_MAX,
};

View File

@@ -260,6 +260,16 @@ SND_SOC_DAILINK_DEFS(sen_mi2s_tx,
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(sep_mi2s_rx,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(sep_mi2s_tx,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(pri_tdm_rx_0,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
@@ -320,6 +330,16 @@ SND_SOC_DAILINK_DEFS(sen_tdm_tx_0,
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(sep_tdm_rx_0,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(sep_tdm_tx_0,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(vi_feedback,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("lpass-cdc", "wsa_macro_vifeedback")),