[Bugfix][API-730][GNSS]Merge MTK TCXO Patch,Fixed bug where TCXO affects GNSS cannot power on immediately

Change-Id: Id73a30cb8f5d333ee1966866a8e5390d1e2799a8
diff --git a/src/kernel/linux/v4.19/drivers/soc/mediatek/mtk-scpsys.c b/src/kernel/linux/v4.19/drivers/soc/mediatek/mtk-scpsys.c
index d9736f0..6540816 100755
--- a/src/kernel/linux/v4.19/drivers/soc/mediatek/mtk-scpsys.c
+++ b/src/kernel/linux/v4.19/drivers/soc/mediatek/mtk-scpsys.c
@@ -62,10 +62,15 @@
 #define SPM_WB_PWR_CON			0x02ec	/* MT7622 */
 /* NETSYS_S_SRAM_CON (0x10006000+0x378)*/
 #define NETSYS_S_SRAM_CON		0x0378
-
+/* CONN_STATUS (0x10006000+0x62C)*/
+/*Typethree add for tcxo power problem 2023/01/12 start*/
+#define CONN_STATUS			0x062C
+/*Typethree add for tcxo power problem 2023/01/12 end*/
 #define SPM_PWR_STATUS			0x060c
 #define SPM_PWR_STATUS_2ND		0x0610
-
+/*Typethree add for tcxo power problem 2023/01/12 start*/
+#define CONN_STATUS_BIT			BIT(0)
+/*Typethree add for tcxo power problem 2023/01/12 end*/
 #define PWR_RST_B_BIT			BIT(0)
 #define PWR_ISO_BIT			BIT(1)
 #define PWR_ON_BIT			BIT(2)
@@ -647,8 +652,26 @@
 	struct scp_domain *scpd = container_of(genpd, struct scp_domain, genpd);
 	struct scp *scp = scpd->scp;
 	void __iomem *ctl_addr = scp->base + scpd->data->ctl_offs;
+/*Typethree add for tcxo power problem 2023/01/12 start*/
+#ifdef CONFIG_MTK_TCXO_SUPPORT
+    void __iomem *conn_status_addr = scp->base + CONN_STATUS;
+#endif
+/*Typethree add for tcxo power problem 2023/01/12 end*/
 	u32 val;
 	int ret, tmp;
+/*Typethree add for tcxo power problem 2023/01/12 start*/
+#ifdef CONFIG_MTK_TCXO_SUPPORT
+	val = readl(conn_status_addr);
+	if (strcmp(genpd->name, "conn") == 0) {
+		if ((val & CONN_STATUS_BIT) == CONN_STATUS_BIT)
+			dev_err(scp->dev, "gps try to power on\n");
+		else {
+			dev_err(scp->dev, "Skip conn power on\n");
+			return 0;
+		}
+	}
+#endif
+/*Typethree add for tcxo power problem 2023/01/12 end*/
 
 	ret = scpsys_regulator_enable(scpd);
 	if (ret < 0)
@@ -755,9 +778,24 @@
 	struct scp_domain *scpd = container_of(genpd, struct scp_domain, genpd);
 	struct scp *scp = scpd->scp;
 	void __iomem *ctl_addr = scp->base + scpd->data->ctl_offs;
+#ifdef CONFIG_MTK_TCXO_SUPPORT
+    void __iomem *conn_status_addr = scp->base + CONN_STATUS;
+#endif
 	u32 val;
 	int ret, tmp;
 
+#ifdef CONFIG_MTK_TCXO_SUPPORT
+	val = readl(conn_status_addr);
+	if (strcmp(genpd->name, "conn") == 0) {
+		if ((val & CONN_STATUS_BIT) == CONN_STATUS_BIT)
+			dev_err(scp->dev, "gps try to power off\n");
+		else {
+			dev_err(scp->dev, "Skip conn power off\n");
+			return 0;
+		}
+	}
+#endif
+
 	ret = scpsys_bus_protect_enable(scpd);
 	if (ret < 0)
 		goto out;