diff mbox series

[v2,08/19] arm64: dts: qcom: Disable USB U1/U2 entry for SA8775P

Message ID 20241213095237.1409174-9-quic_prashk@quicinc.com
State New
Headers show
Series Disable USB U1/U2 entry for QC targets | expand

Commit Message

Prashanth K Dec. 13, 2024, 9:52 a.m. UTC
From: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>

Disable U1 and U2 power-saving states to improve stability of USB.
These low-power link states, designed to reduce power consumption
during idle periods, can cause issues in latency-sensitive or high
throughput use cases. Over the years, some of the issues seen are
as follows:

1. In device mode of operation, when UVC is active, enabling U1/U2
is sometimes causing packets drops due to delay in entry/exit of
intermittent these low power states. These packet drops are often
reflected as missed isochronous transfers, as the controller wasn't
able to send packet in that microframe interval and hence glitches
are seen on the final transmitted video output.

2. On QCS6490-Rb3Gen2 Vision kit, ADB connection is heavily unstable
when U1/U2 is enabled. Often when link enters U2, there is a re-
enumeration seen and device is unusable for many use cases.

3. On QCS8300/QCS9100, it is observed that when Link enters U2, when
the cable is disconnected and reconnected to host PC in HS, there
is no link status change interrupt seen and the plug-in in HS doesn't
show up a bus reset and enumeration failure happens.

Disabling these intermittent power states enhances device stability
without affecting power usage.

Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
---
 arch/arm64/boot/dts/qcom/sa8775p.dtsi | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Konrad Dybcio Dec. 14, 2024, 12:06 a.m. UTC | #1
On 13.12.2024 10:52 AM, Prashanth K wrote:
> From: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
> 
> Disable U1 and U2 power-saving states to improve stability of USB.
> These low-power link states, designed to reduce power consumption
> during idle periods, can cause issues in latency-sensitive or high
> throughput use cases. Over the years, some of the issues seen are
> as follows:
> 
> 1. In device mode of operation, when UVC is active, enabling U1/U2
> is sometimes causing packets drops due to delay in entry/exit of
> intermittent these low power states. These packet drops are often
> reflected as missed isochronous transfers, as the controller wasn't
> able to send packet in that microframe interval and hence glitches
> are seen on the final transmitted video output.
> 
> 2. On QCS6490-Rb3Gen2 Vision kit, ADB connection is heavily unstable
> when U1/U2 is enabled. Often when link enters U2, there is a re-
> enumeration seen and device is unusable for many use cases.
> 
> 3. On QCS8300/QCS9100, it is observed that when Link enters U2, when
> the cable is disconnected and reconnected to host PC in HS, there
> is no link status change interrupt seen and the plug-in in HS doesn't
> show up a bus reset and enumeration failure happens.
> 
> Disabling these intermittent power states enhances device stability
> without affecting power usage.
> 
> Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
> Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
> ---

[...]

>  
> @@ -3570,6 +3576,8 @@ tcsr_mutex: hwlock@1f40000 {
>  			compatible = "qcom,tcsr-mutex";
>  			reg = <0x0 0x01f40000 0x0 0x20000>;
>  			#hwlock-cells = <1>;
> +				snps,dis-u1-entry-quirk;
> +				snps,dis-u2-entry-quirk;

Oh?

Konrad
Prashanth K Dec. 14, 2024, 5:31 a.m. UTC | #2
On 14-12-24 05:36 am, Konrad Dybcio wrote:
> On 13.12.2024 10:52 AM, Prashanth K wrote:
>> From: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
>>
>> Disable U1 and U2 power-saving states to improve stability of USB.
>> These low-power link states, designed to reduce power consumption
>> during idle periods, can cause issues in latency-sensitive or high
>> throughput use cases. Over the years, some of the issues seen are
>> as follows:
>>
>> 1. In device mode of operation, when UVC is active, enabling U1/U2
>> is sometimes causing packets drops due to delay in entry/exit of
>> intermittent these low power states. These packet drops are often
>> reflected as missed isochronous transfers, as the controller wasn't
>> able to send packet in that microframe interval and hence glitches
>> are seen on the final transmitted video output.
>>
>> 2. On QCS6490-Rb3Gen2 Vision kit, ADB connection is heavily unstable
>> when U1/U2 is enabled. Often when link enters U2, there is a re-
>> enumeration seen and device is unusable for many use cases.
>>
>> 3. On QCS8300/QCS9100, it is observed that when Link enters U2, when
>> the cable is disconnected and reconnected to host PC in HS, there
>> is no link status change interrupt seen and the plug-in in HS doesn't
>> show up a bus reset and enumeration failure happens.
>>
>> Disabling these intermittent power states enhances device stability
>> without affecting power usage.
>>
>> Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
>> Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
>> ---
> 
> [...]
> 
>>  
>> @@ -3570,6 +3576,8 @@ tcsr_mutex: hwlock@1f40000 {
>>  			compatible = "qcom,tcsr-mutex";
>>  			reg = <0x0 0x01f40000 0x0 0x20000>;
>>  			#hwlock-cells = <1>;
>> +				snps,dis-u1-entry-quirk;
>> +				snps,dis-u2-entry-quirk;
> 
> Oh?
> 
Thanks for pointing. I messed up, will update and send next version.

Regards,
Prashanth K
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
index 9f315a51a7c1..7a50991daaa6 100644
--- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi
+++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
@@ -3411,6 +3411,8 @@  usb_0_dwc3: usb@a600000 {
 				iommus = <&apps_smmu 0x080 0x0>;
 				phys = <&usb_0_hsphy>, <&usb_0_qmpphy>;
 				phy-names = "usb2-phy", "usb3-phy";
+				snps,dis-u1-entry-quirk;
+				snps,dis-u2-entry-quirk;
 			};
 		};
 
@@ -3500,6 +3502,8 @@  usb_1_dwc3: usb@a800000 {
 				iommus = <&apps_smmu 0x0a0 0x0>;
 				phys = <&usb_1_hsphy>, <&usb_1_qmpphy>;
 				phy-names = "usb2-phy", "usb3-phy";
+				snps,dis-u1-entry-quirk;
+				snps,dis-u2-entry-quirk;
 			};
 		};
 
@@ -3563,6 +3567,8 @@  usb_2_dwc3: usb@a400000 {
 				iommus = <&apps_smmu 0x020 0x0>;
 				phys = <&usb_2_hsphy>;
 				phy-names = "usb2-phy";
+				snps,dis-u1-entry-quirk;
+				snps,dis-u2-entry-quirk;
 			};
 		};
 
@@ -3570,6 +3576,8 @@  tcsr_mutex: hwlock@1f40000 {
 			compatible = "qcom,tcsr-mutex";
 			reg = <0x0 0x01f40000 0x0 0x20000>;
 			#hwlock-cells = <1>;
+				snps,dis-u1-entry-quirk;
+				snps,dis-u2-entry-quirk;
 		};
 
 		tcsr: syscon@1fc0000 {