[Feature][T8TSK-81]Merged and upload MR3.0 New Modify content,merged meta-sdk,modem

Change-Id: Idb6c80fcf349c0db72e7ca3fa5b1fd7944ec1290
diff --git a/src/kernel/linux/v4.19/drivers/soc/mediatek/Kconfig b/src/kernel/linux/v4.19/drivers/soc/mediatek/Kconfig
index c82a4f4..7945f5c 100644
--- a/src/kernel/linux/v4.19/drivers/soc/mediatek/Kconfig
+++ b/src/kernel/linux/v4.19/drivers/soc/mediatek/Kconfig
@@ -83,6 +83,10 @@
 	  platform could enter deeper sleep mode when cpu preparing to
 	  power down if it have sufficient time between warmboot.
 
+#Typethree@2023.2.01 modify for TCXO hw version start
+
+#Typethree@2023.2.01 modify for TCXO hw version end
+
 config MTK_IPI
 	tristate "MediaTek IPI Support"
 	depends on RPMSG_MTK
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..2c822d1 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
@@ -25,6 +25,9 @@
 #include <dt-bindings/power/mt8173-power.h>
 #include <dt-bindings/power/mt6880-power.h>
 #include <dt-bindings/power/mt6890-power.h>
+/*Typethree add for tcxo power problem 2023/01/30 start*/
+#include <linux/gpio.h>
+/*Typethree add for tcxo power problem 2023/01/30 end*/
 #include "mtk-scpsys.h"
 
 #define MTCMOS_BRINGUP      0
@@ -62,10 +65,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 +655,28 @@
 	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;
-	u32 val;
+    
+    u32 val;
 	int ret, tmp;
+	
+/*Typethree add for tcxo power problem 2023/01/30 start*/
+	int gpio_81 = gpio_get_value(81+268);
+	int gpio_82 = gpio_get_value(82+268);
+    void __iomem *conn_status_addr = scp->base + CONN_STATUS;
+
+    if (gpio_81 != 0 && gpio_82 == 0) //TCXO open
+    {
+        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;
+            }
+        }
+    }
+/*Typethree add for tcxo power problem 2023/01/30 end*/
 
 	ret = scpsys_regulator_enable(scpd);
 	if (ret < 0)
@@ -755,8 +783,27 @@
 	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;
+
 	u32 val;
 	int ret, tmp;
+/*Typethree add for tcxo power problem 2023/01/30 start*/
+	int gpio_81 = gpio_get_value(81+268);
+	int gpio_82 = gpio_get_value(82+268);
+    void __iomem *conn_status_addr = scp->base + CONN_STATUS;
+
+    if (gpio_81 != 0 && gpio_82 == 0)
+    {
+        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;
+            }
+        }
+    }
+/*Typethree add for tcxo power problem 2023/01/30 end*/
 
 	ret = scpsys_bus_protect_enable(scpd);
 	if (ret < 0)