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:

işlemeyi yapan:
Gerrit - the friendly Code Review server

ebeveyn
cb778a4ecd
işleme
4a4b666ba0
@@ -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[
|
||||||
|
@@ -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"
|
||||||
|
@@ -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);
|
||||||
|
@@ -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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -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")),
|
||||||
|
Yeni konuda referans
Bir kullanıcı engelle