Audio porting for smart amp TAS2557.
Root cause:
Configure dai_link for smart amp.
How to fix:
N/A
Change-Id: I4053051660b4943667e1300a10c52117f594dab8
RiskArea:speaker
(cherry picked from commit a0a2846ea9bf4aa6547dc26d20e7ab7a1668b3c5)
(cherry picked from commit b3071f313f1ddc9356b4ca9c49d3caf415d7c9e8)
diff --git a/asoc/msm8952-dai-links.c b/asoc/msm8952-dai-links.c
index feb52b0..c40c031 100755
--- a/asoc/msm8952-dai-links.c
+++ b/asoc/msm8952-dai-links.c
@@ -11,6 +11,9 @@
*/
#include <linux/of.h>
+//[FairPhone][Audio][jinjia]=2020.05.19=2nd smart amp porting. -s
+#include <linux/gpio.h>
+//[FairPhone][Audio][jinjia]=2020.05.19=2nd smart amp porting. -e
#include <sound/core.h>
#include <sound/soc.h>
#include <sound/soc-dapm.h>
@@ -21,6 +24,12 @@
#define DEV_NAME_STR_LEN 32
+//[FairPhone][Audio][jinjia]=2020.05.19=2nd smart amp porting. -s
+#define PSTAGE_0 97
+#define PSTAGE_1 98
+#define PSTAGE_2 99
+//[FairPhone][Audio][jinjia]=2020.05.19=2nd smart amp porting. -e
+
/* dummy definition of below deprecated FE DAI's*/
enum {
MSM_FRONTEND_DAI_CS_VOICE = 39,
@@ -1281,6 +1290,26 @@
},
};
//[FairPhone][Audio][jinjia]=2018.11.21=smart amp porting. -e
+//[FairPhone][Audio][jinjia]=2020.05.19=2nd smart amp porting. -s
+static struct snd_soc_dai_link msm8952_quin_dai_link_tas2557[] = {
+ {
+ .name = LPASS_BE_QUIN_MI2S_RX,
+ .stream_name = "Quinary MI2S Playback",
+ .cpu_dai_name = "msm-dai-q6-mi2s.5",
+ .platform_name = "msm-pcm-routing",
+ .codec_dai_name = "tas2557 ASI1",
+ .codec_name = "tas2557.6-004c",
+ //.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS,
+ .no_pcm = 1,
+ .dpcm_playback = 1,
+ .id = MSM_BACKEND_DAI_QUINARY_MI2S_RX,
+ .be_hw_params_fixup = msm_quin_be_hw_params_fixup,
+ .ops = &msm8952_quin_mi2s_be_ops,
+ .ignore_pmdown_time = 1, /* dai link has playback support */
+ .ignore_suspend = 1,
+ },
+};
+//[FairPhone][Audio][jinjia]=2020.05.19=2nd smart amp porting. -e
static struct snd_soc_dai_link msm8952_tdm_be_dai_link[] = {
/* TDM be dai links */
@@ -1551,6 +1580,12 @@
struct snd_soc_card *card = &snd_soc_card_msm_card;
struct snd_soc_dai_link *msm8952_dai_links = NULL;
int num_links, ret, len1, len2, len3, len4, len5 = 0;
+//[FairPhone][Audio][jinjia]=2020.05.19=2nd smart amp porting. -s
+ int pstage_0 = 0; //GPIO 97
+ int pstage_1 = 0; //GPIO 98
+ int pstage_2 = 0; //GPIO 99
+//[FairPhone][Audio][jinjia]=2020.05.19=2nd smart amp porting. -e
+
enum codec_variant codec_ver = 0;
const char *tasha_lite[NUM_OF_TASHA_LITE_DEVICE] = {
"msm8952-tashalite-snd-card",
@@ -1595,18 +1630,66 @@
msm8952_tasha_be_dai, sizeof(msm8952_tasha_be_dai));
msm8952_dai_links = msm8952_tasha_dai_links;
}
+
+ //PSTAGE_0
+ ret = gpio_request(PSTAGE_0,"PSTAGE_0 GPIO_97");
+
+ if(ret<0){
+ printk("PSTAGE_0 failed to request \n");
+ }else{
+ gpio_direction_input(PSTAGE_0);
+ }
+ pstage_0 = gpio_get_value(PSTAGE_0);
+ gpio_free(PSTAGE_0);
+
+ //PSTAGE_1
+ ret = 0;
+
+ ret = gpio_request(PSTAGE_1,"PSTAGE_1 GPIO_98");
+
+ if(ret<0){
+ printk("PSTAGE_1 failed to request \n");
+ }else{
+ gpio_direction_input(PSTAGE_1);
+ }
+ pstage_1 = gpio_get_value(PSTAGE_1);
+ gpio_free(PSTAGE_1);
+
+ //PSTAGE_2
+ ret = 0;
+
+ ret = gpio_request(PSTAGE_2,"PSTAGE_2 GPIO_99");
+
+ if(ret<0){
+ printk("PSTAGE_2 failed to request \n");
+ }else{
+ gpio_direction_input(PSTAGE_2);
+ }
+ pstage_2 = gpio_get_value(PSTAGE_2);
+ gpio_free(PSTAGE_2);
+
+ if (pstage_2 == 1 && ((pstage_1 || pstage_0) == 1)) { //Remove hdmi-codec if (of_property_read_bool(dev->of_node, "qcom,hdmi-dba-codec-rx")) {
+ //PCB Variant : 8903MP and newer variants (PCB Variant = HLH,HHL,HHH)
+
+ dev_dbg(dev, "%s(): No aw8898 present, add quin dai for tas2257\n",
+ __func__);
+ memcpy(msm8952_dai_links + len5, msm8952_quin_dai_link_tas2557,
+ sizeof(msm8952_quin_dai_link_tas2557));
+ len5 += ARRAY_SIZE(msm8952_quin_dai_link_tas2557);
+//[FairPhone][Audio][jinjia]=2018.11.21=smart amp porting. -s
+ /*
if (of_property_read_bool(dev->of_node, "qcom,hdmi-dba-codec-rx")) {
dev_dbg(dev, "%s(): hdmi dba audio support present\n",
__func__);
-//[FairPhone][Audio][jinjia]=2018.11.21=smart amp porting. -s
- /*
memcpy(msm8952_dai_links + len5, msm8952_hdmi_dba_dai_link,
sizeof(msm8952_hdmi_dba_dai_link));
len5 += ARRAY_SIZE(msm8952_hdmi_dba_dai_link);
*/
//[FairPhone][Audio][jinjia]=2018.11.21=smart amp porting. -e
+
} else {
- dev_dbg(dev, "%s(): No hdmi dba present, add quin dai\n",
+ //PCB Variant : EP0 ~ 8901MP
+ dev_dbg(dev, "%s(): No tas2257 present, add quin dai for aw8898\n",
__func__);
memcpy(msm8952_dai_links + len5, msm8952_quin_dai_link,
sizeof(msm8952_quin_dai_link));