diff mbox

[1/2] ARM: tegra: modify Tegra30 USB2 default phy_type to UTMI

Message ID 1387331565-3994-1-git-send-email-ebrower@nvidia.com
State Superseded, archived
Headers show

Commit Message

Eric Brower Dec. 18, 2013, 1:52 a.m. UTC
Modify Tegra30 default USB2 phy_type to UTMI; this matches
power-on-reset defaults and is expected to be the common case.

The current implementation is likely an incorrect
carry-over from Tegra20, where USB2 does default to ULPI.

Signed-off-by: Eric Brower <ebrower@nvidia.com>
---
No upstream Tegra30 dts files reference USB2, so this should be a
safe change; anyone using an out-of-tree dts with USB2, sparsely
populated from the Tegra30 dtsi, may have an issue.

 arch/arm/boot/dts/tegra30.dtsi | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

Comments

Stephen Warren Dec. 18, 2013, 9:15 p.m. UTC | #1
On 12/17/2013 06:52 PM, Eric Brower wrote:
> Modify Tegra30 default USB2 phy_type to UTMI; this matches
> power-on-reset defaults and is expected to be the common case.
> 
> The current implementation is likely an incorrect
> carry-over from Tegra20, where USB2 does default to ULPI.

> diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi

>  	phy2: usb-phy@7d004000 {
>  		compatible = "nvidia,tegra30-usb-phy";
> -		reg = <0x7d004000 0x4000>;
> -		phy_type = "ulpi";
> +		reg = <0x7d004000 0x4000 0x7d004000 0x4000>;

Are you sure the second entry in the reg property is correct here? In
Tegra20, the UTMI pad registers are in the USB1 (USBD) register space
for both USB controllers, and I would guess the same applies for all 3
controllers on Tegra30, since both USB1 and USB3 on Tegra30 already
point this reg entry at USBD's reg space, plus you've listed USBD as the
clock entry for utmi-pads, rather than USB2, which would be consistent
with the reg value.

Still, this patch does seem to work for me...
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Brower Dec. 20, 2013, 2:03 a.m. UTC | #2
On 12/18/2013 01:15 PM, Stephen Warren wrote:
> On 12/17/2013 06:52 PM, Eric Brower wrote:
>> Modify Tegra30 default USB2 phy_type to UTMI; this matches
>> power-on-reset defaults and is expected to be the common case.
>>
>> The current implementation is likely an incorrect
>> carry-over from Tegra20, where USB2 does default to ULPI.
>
>> diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
>
>>   	phy2: usb-phy@7d004000 {
>>   		compatible = "nvidia,tegra30-usb-phy";
>> -		reg = <0x7d004000 0x4000>;
>> -		phy_type = "ulpi";
>> +		reg = <0x7d004000 0x4000 0x7d004000 0x4000>;
>
> Are you sure the second entry in the reg property is correct here? In
> Tegra20, the UTMI pad registers are in the USB1 (USBD) register space
> for both USB controllers, and I would guess the same applies for all 3
> controllers on Tegra30, since both USB1 and USB3 on Tegra30 already
> point this reg entry at USBD's reg space, plus you've listed USBD as the
> clock entry for utmi-pads, rather than USB2, which would be consistent
> with the reg value.
>
> Still, this patch does seem to work for me...
>

The second entry in the reg property is indeed incorrect-- I'll send a 
new version of the series.

Though each controller has UTMIP BIAS pad registers, bias pad settings 
must be configured via USB1 only; the USB2 and USB3 BIAS pad registers 
are a no-connect-- this explains why it works as-is (USB1 configures 
bias pad settings), but is not correct for the dtsi.

Thanks for the catch!
Eric

--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
index 2bd55cf..bedd379 100644
--- a/arch/arm/boot/dts/tegra30.dtsi
+++ b/arch/arm/boot/dts/tegra30.dtsi
@@ -669,7 +669,7 @@ 
 		compatible = "nvidia,tegra30-ehci", "usb-ehci";
 		reg = <0x7d004000 0x4000>;
 		interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
-		phy_type = "ulpi";
+		phy_type = "utmi";
 		clocks = <&tegra_car TEGRA30_CLK_USB2>;
 		nvidia,phy = <&phy2>;
 		status = "disabled";
@@ -677,12 +677,23 @@ 
 
 	phy2: usb-phy@7d004000 {
 		compatible = "nvidia,tegra30-usb-phy";
-		reg = <0x7d004000 0x4000>;
-		phy_type = "ulpi";
+		reg = <0x7d004000 0x4000 0x7d004000 0x4000>;
+		phy_type = "utmi";
 		clocks = <&tegra_car TEGRA30_CLK_USB2>,
 			 <&tegra_car TEGRA30_CLK_PLL_U>,
-			 <&tegra_car TEGRA30_CLK_CDEV2>;
-		clock-names = "reg", "pll_u", "ulpi-link";
+			 <&tegra_car TEGRA30_CLK_USBD>;
+		clock-names = "reg", "pll_u", "utmi-pads";
+		nvidia,hssync-start-delay = <9>;
+		nvidia,idle-wait-delay = <17>;
+		nvidia,elastic-limit = <16>;
+		nvidia,term-range-adj = <6>;
+		nvidia,xcvr-setup = <51>;
+		nvidia.xcvr-setup-use-fuses;
+		nvidia,xcvr-lsfslew = <2>;
+		nvidia,xcvr-lsrslew = <2>;
+		nvidia,xcvr-hsslew = <32>;
+		nvidia,hssquelch-level = <2>;
+		nvidia,hsdiscon-level = <5>;
 		status = "disabled";
 	};