diff options
Diffstat (limited to 'drivers/usb/host/ehci-tegra.c')
| -rw-r--r-- | drivers/usb/host/ehci-tegra.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index 27ac6ad53c3d..7ef00ecb0da1 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c | |||
| @@ -509,8 +509,31 @@ static struct platform_driver tegra_ehci_driver = { | |||
| 509 | } | 509 | } |
| 510 | }; | 510 | }; |
| 511 | 511 | ||
| 512 | static int tegra_ehci_reset(struct usb_hcd *hcd) | ||
| 513 | { | ||
| 514 | struct ehci_hcd *ehci = hcd_to_ehci(hcd); | ||
| 515 | int retval; | ||
| 516 | int txfifothresh; | ||
| 517 | |||
| 518 | retval = ehci_setup(hcd); | ||
| 519 | if (retval) | ||
| 520 | return retval; | ||
| 521 | |||
| 522 | /* | ||
| 523 | * We should really pull this value out of tegra_ehci_soc_config, but | ||
| 524 | * to avoid needing access to it, make use of the fact that Tegra20 is | ||
| 525 | * the only one so far that needs a value of 10, and Tegra20 is the | ||
| 526 | * only one which doesn't set has_hostpc. | ||
| 527 | */ | ||
| 528 | txfifothresh = ehci->has_hostpc ? 0x10 : 10; | ||
| 529 | ehci_writel(ehci, txfifothresh << 16, &ehci->regs->txfill_tuning); | ||
| 530 | |||
| 531 | return 0; | ||
| 532 | } | ||
| 533 | |||
| 512 | static const struct ehci_driver_overrides tegra_overrides __initconst = { | 534 | static const struct ehci_driver_overrides tegra_overrides __initconst = { |
| 513 | .extra_priv_size = sizeof(struct tegra_ehci_hcd), | 535 | .extra_priv_size = sizeof(struct tegra_ehci_hcd), |
| 536 | .reset = tegra_ehci_reset, | ||
| 514 | }; | 537 | }; |
| 515 | 538 | ||
| 516 | static int __init ehci_tegra_init(void) | 539 | static int __init ehci_tegra_init(void) |
