usb: tegra: fix PHY selection code
authorStephen Warren <swarren@nvidia.com>
Wed, 30 Apr 2014 21:09:55 +0000 (15:09 -0600)
committerMarek Vasut <marex@denx.de>
Wed, 14 May 2014 22:21:17 +0000 (00:21 +0200)
commit9b20fe6f1affdfc7441481dc0acb55eadd80134f
treed5f594acdc8e9509dda572fe3e125cf0303931e7
parent4180b3dba25c2c28cc4502f1c9f1cbad2a9972b8
usb: tegra: fix PHY selection code

The TRM for Tegra30 and later all state that USBMODE_CM_HC must be set
before writing to hostpc1_devlc to select which PHY to use for a USB
controller. However, neither init_{utmi,ulpi}_usb_controller() do this
today, so the register writes they perform for PHY selection do not
work.

For the UTMI case, this was hacked around in commit 7e44d9320ed4 "ARM:
Tegra: USB: EHCI: Add support for Tegra30/Tegra114" by adding code to
ehci_hcd_init() which sets USBMODE_CM_HC and duplicates the PHY
selection register write. This code doesn't cover the ULPI case, so I
wouldn't be surprised if ULPI doesn't work with the current code, unless
the ordering requirement only ends up being an issue in HW for UTMI not
ULPI.

This patch fixes init_{utmi,ulpi}_usb_controller() to correctly set
USBMODE_CM_HC before selecting the PHY. Now that this works, we can
remove the duplicate UTMI-specific code in ehci_hcd_init(), thus
simplifying that function.

Cc: Jim Lin <jilin@nvidia.com>
Cc: Stefan Agner <stefan@agner.ch>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
drivers/usb/host/ehci-tegra.c