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));
