[Feature][T8TSK-153][GNSS]GPIO-81 and GPIO-82 were used to distinguish TMS or TCXO hw version
Change-Id: Ifa24cd33ed8e6547f4d9f8f2e3750dcc50ee3e63
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 6540816..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
@@ -652,26 +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;
-/*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;
+
+ 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*/
+
+/*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)
@@ -778,23 +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;
-#ifdef CONFIG_MTK_TCXO_SUPPORT
- void __iomem *conn_status_addr = scp->base + CONN_STATUS;
-#endif
+
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;
-#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
+ 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)