From 45bf3d4f248ea2d770a1625fdee8899dc40329af Mon Sep 17 00:00:00 2001
From: Pavel Kubelun <be.dissent@gmail.com>
Date: Sat, 24 Dec 2016 01:51:07 +0300
Subject: [PATCH] ipq806x: disable usb3 phy suspend and add usb tcsr control

According to Qualcomm SDK usb3 phy suspend should be disabled for
ipq806x.
This may solve issue on some ipq806x devices that breaks usb3
storage peripherals during system boot.

Signed-off-by: Pavel Kubelun <be.dissent@gmail.com>
---
 .../files/arch/arm/boot/dts/qcom-ipq8065.dtsi |  6 ++++
 .../315-disable-usb3-phy-suspend.patch        | 36 +++++++++++++++++++
 ...-add-gmac-nodes-to-ipq806x-platforms.patch |  2 +-
 3 files changed, 43 insertions(+), 1 deletion(-)
 create mode 100644 target/linux/ipq806x/patches-4.4/315-disable-usb3-phy-suspend.patch

diff --git a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8065.dtsi b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8065.dtsi
index d4fbbe29f1..e795aef0e3 100644
--- a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8065.dtsi
+++ b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8065.dtsi
@@ -863,6 +863,8 @@
 			clocks = <&gcc USB30_0_MASTER_CLK>;
 			clock-names = "core";
 
+			syscon-tcsr = <&tcsr 0xb0 1>;
+
 			ranges;
 
 			status = "disabled";
@@ -876,6 +878,7 @@
 				phys = <&hs_phy_0>, <&ss_phy_0>;
 				phy-names = "usb2-phy", "usb3-phy";
 				dr_mode = "host";
+				snps,dis_u3_susphy_quirk;
 			};
 		};
 
@@ -886,6 +889,8 @@
 			clocks = <&gcc USB30_1_MASTER_CLK>;
 			clock-names = "core";
 
+			syscon-tcsr = <&tcsr 0xb0 0>;
+
 			ranges;
 
 			status = "disabled";
@@ -897,6 +902,7 @@
 				phys = <&hs_phy_1>, <&ss_phy_1>;
 				phy-names = "usb2-phy", "usb3-phy";
 				dr_mode = "host";
+				snps,dis_u3_susphy_quirk;
 			};
 		};
 
diff --git a/target/linux/ipq806x/patches-4.4/315-disable-usb3-phy-suspend.patch b/target/linux/ipq806x/patches-4.4/315-disable-usb3-phy-suspend.patch
new file mode 100644
index 0000000000..4b5d480d33
--- /dev/null
+++ b/target/linux/ipq806x/patches-4.4/315-disable-usb3-phy-suspend.patch
@@ -0,0 +1,36 @@
+--- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
++++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
+@@ -678,6 +678,8 @@
+ 			clocks = <&gcc USB30_0_MASTER_CLK>;
+ 			clock-names = "core";
+ 
++			syscon-tcsr = <&tcsr 0xb0 1>;
++
+ 			ranges;
+ 
+ 			status = "disabled";
+@@ -689,6 +691,7 @@
+ 				phys = <&hs_phy_0>, <&ss_phy_0>;
+ 				phy-names = "usb2-phy", "usb3-phy";
+ 				dr_mode = "host";
++				snps,dis_u3_susphy_quirk;
+ 			};
+ 		};
+ 
+@@ -699,6 +702,8 @@
+ 			clocks = <&gcc USB30_1_MASTER_CLK>;
+ 			clock-names = "core";
+ 
++			syscon-tcsr = <&tcsr 0xb0 0>;
++
+ 			ranges;
+ 
+ 			status = "disabled";
+@@ -710,6 +715,7 @@
+ 				phys = <&hs_phy_1>, <&ss_phy_1>;
+ 				phy-names = "usb2-phy", "usb3-phy";
+ 				dr_mode = "host";
++				snps,dis_u3_susphy_quirk;
+ 			};
+ 		};
+ 
diff --git a/target/linux/ipq806x/patches-4.4/708-ARM-dts-qcom-add-gmac-nodes-to-ipq806x-platforms.patch b/target/linux/ipq806x/patches-4.4/708-ARM-dts-qcom-add-gmac-nodes-to-ipq806x-platforms.patch
index f6f357253f..b3d854562d 100644
--- a/target/linux/ipq806x/patches-4.4/708-ARM-dts-qcom-add-gmac-nodes-to-ipq806x-platforms.patch
+++ b/target/linux/ipq806x/patches-4.4/708-ARM-dts-qcom-add-gmac-nodes-to-ipq806x-platforms.patch
@@ -121,7 +121,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
  };
 --- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
 +++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
-@@ -904,6 +904,92 @@
+@@ -910,6 +910,92 @@
  
  			status = "disabled";
  		};
-- 
GitLab