From 5d5cf4cb138bc06ff76b64f3970af87836451e4a Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 19:54:17 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Fixup GPS binding

Still doesn't work - UART controller does not detect
any transfers, so we're probably unsupported with
kernel SiRF driver. The chip appears to be GSD4t.

Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
 arch/arm/boot/dts/tegra20-glide.dts | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 107efb68c99e..b55effa69fbe 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -445,8 +445,13 @@
 
 	// GPS
 	serial@70006000 {
-		compatible = "nvidia,tegra20-hsuart";
+		// I get a DMA error when HSUART is enabled, fall back to 8250
+		// Also I get mysterious timed-out errors, no matter what GPIOs are.
+		// compatible = "nvidia,tegra20-hsuart";
 		status = "okay";
+		current-speed = <115200>;
+		// current-speed = <460800>;
+		// current-speed = <9600>;
 
 		/*
 		 * Wakeup GPIO is needed for kernel driver to work,
@@ -461,8 +466,10 @@
 
 			sirf,onoff-gpios = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_HIGH>;
 			// reset GPIO: B2
+			// sirf,onoff-gpios = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_LOW>;
 			// Also depends on this, but no way to specify it
 			clocks = <&tegra_car TEGRA20_CLK_BLINK>;
+			vcc-supply = <&gps_en>;
 		};
 #endif
 	};
@@ -1380,8 +1387,17 @@
 			gpio = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
 			enable-active-high;
 		};
-	};
 
+		gps_en: regulator@4 {
+			compatible = "regulator-fixed";
+			reg = <4>;
+			regulator-name = "gps-en";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			// gpio = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_HIGH>;
+			// gpio = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_HIGH>;
+		};
+	};
 
 	sound {
 		compatible = "nvidia,tegra-audio-wm8994";
-- 
2.22.0

