audio-kernel: I2S/TDM backend dai-links

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

Change-Id: I0504a030afc534207d2d40ba6fd7fcebb2bb40f1
Bu işleme şunda yer alıyor:
Srijan Magapu
2022-03-16 17:40:02 -07:00
işlemeyi yapan: Gerrit - the friendly Code Review server
ebeveyn cb778a4ecd
işleme 4a4b666ba0
5 değiştirilmiş dosya ile 78 ekleme ve 4 silme

Dosyayı Görüntüle

@@ -933,6 +933,27 @@ static struct snd_soc_dai_link msm_mi2s_dai_links[] = {
.ignore_suspend = 1, .ignore_suspend = 1,
SND_SOC_DAILINK_REG(sen_mi2s_tx), 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[] = { 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, .ignore_suspend = 1,
SND_SOC_DAILINK_REG(sen_tdm_tx_0), 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[ static struct snd_soc_dai_link msm_kalama_dai_links[

Dosyayı Görüntüle

@@ -45,6 +45,8 @@
#define LPASS_BE_QUIN_MI2S_TX "MI2S-LPAIF_VA-TX-PRIMARY" #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_RX "MI2S-LPAIF_WSA-RX-PRIMARY"
#define LPASS_BE_SEN_MI2S_TX "MI2S-LPAIF_WSA-TX-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_RX "SLIM-DEV1-RX-0"
#define LPASS_BE_SLIMBUS_0_TX "SLIM-DEV1-TX-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_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_RX_0 "TDM-LPAIF_VA-RX-PRIMARY"
#define LPASS_BE_QUIN_TDM_TX_0 "TDM-LPAIF_VA-TX-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_RX "USB_AUDIO-RX"
#define LPASS_BE_USB_AUDIO_TX "USB_AUDIO-TX" #define LPASS_BE_USB_AUDIO_TX "USB_AUDIO-TX"

Dosyayı Görüntüle

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

Dosyayı Görüntüle

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

Dosyayı Görüntüle

@@ -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_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); 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, SND_SOC_DAILINK_DEFS(pri_tdm_rx_0,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), 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_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_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); 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, SND_SOC_DAILINK_DEFS(vi_feedback,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("lpass-cdc", "wsa_macro_vifeedback")), DAILINK_COMP_ARRAY(COMP_CODEC("lpass-cdc", "wsa_macro_vifeedback")),