From 76a461f74bd51e6383b6bbffbc5befe53f9c1336 Mon Sep 17 00:00:00 2001 From: Venu Byravarasu Date: Thu, 13 Dec 2012 20:59:08 +0000 Subject: [PATCH] --- yaml --- r: 355561 b: refs/heads/master c: 585355c5b54e2ecdcd6463aec264d907bc416727 h: refs/heads/master i: 355559: a1d18ae8971ce6686727fbb8ec52347260238235 v: v3 --- [refs] | 2 +- trunk/drivers/usb/host/ehci-tegra.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 6298f13d4e80..3c0117f0e6c9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b4e074788a4a461431e25906358c6e62cb8daf9d +refs/heads/master: 585355c5b54e2ecdcd6463aec264d907bc416727 diff --git a/trunk/drivers/usb/host/ehci-tegra.c b/trunk/drivers/usb/host/ehci-tegra.c index acf17556bd87..55a9cdee2949 100644 --- a/trunk/drivers/usb/host/ehci-tegra.c +++ b/trunk/drivers/usb/host/ehci-tegra.c @@ -43,6 +43,7 @@ struct tegra_ehci_hcd { struct usb_phy *transceiver; int host_resumed; int port_resuming; + bool needs_double_reset; enum tegra_usb_phy_port_speed port_speed; }; @@ -184,7 +185,7 @@ static int tegra_ehci_hub_control( } /* For USB1 port we need to issue Port Reset twice internally */ - if (tegra->phy->instance == 0 && + if (tegra->needs_double_reset && (typeReq == SetPortFeature && wValue == USB_PORT_FEAT_RESET)) { spin_unlock_irqrestore(&ehci->lock, flags); return tegra_ehci_internal_port_reset(ehci, status_reg); @@ -666,6 +667,9 @@ static int tegra_ehci_probe(struct platform_device *pdev) clk_prepare_enable(tegra->emc_clk); clk_set_rate(tegra->emc_clk, 400000000); + tegra->needs_double_reset = of_property_read_bool(pdev->dev.of_node, + "nvidia,needs-double-reset"); + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(&pdev->dev, "Failed to get I/O memory\n");