mirror of
https://github.com/torvalds/linux.git
synced 2024-12-23 19:31:53 +00:00
883df42abf
When Tegra was converted to use the standard reset bindings, the PHY was forgotten, probably because all the resetting of the USB blocks were done in the EHCI driver. What also went unnoticed is that resetting the 1st on-chip USB module also wipes some of the UTMI pad configuration registers that are also used by the other USB blocks. So this fact needs to be described in the device tree, and the driver modified not to reset the 1st module at inappropriate times. In order to stay compatible with old device trees, the USB drivers will still function without these properties but with the old, potentially buggy behaviour. Signed-off-by: Tuomas Tynkkynen <ttynkkynen@nvidia.com> Acked-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
70 lines
3.4 KiB
Plaintext
70 lines
3.4 KiB
Plaintext
Tegra SOC USB PHY
|
|
|
|
The device node for Tegra SOC USB PHY:
|
|
|
|
Required properties :
|
|
- compatible : Should be "nvidia,tegra<chip>-usb-phy".
|
|
- reg : Defines the following set of registers, in the order listed:
|
|
- The PHY's own register set.
|
|
Always present.
|
|
- The register set of the PHY containing the UTMI pad control registers.
|
|
Present if-and-only-if phy_type == utmi.
|
|
- phy_type : Should be one of "utmi", "ulpi" or "hsic".
|
|
- clocks : Defines the clocks listed in the clock-names property.
|
|
- clock-names : The following clock names must be present:
|
|
- reg: The clock needed to access the PHY's own registers. This is the
|
|
associated EHCI controller's clock. Always present.
|
|
- pll_u: PLL_U. Always present.
|
|
- timer: The timeout clock (clk_m). Present if phy_type == utmi.
|
|
- utmi-pads: The clock needed to access the UTMI pad control registers.
|
|
Present if phy_type == utmi.
|
|
- ulpi-link: The clock Tegra provides to the ULPI PHY (cdev2).
|
|
Present if phy_type == ulpi, and ULPI link mode is in use.
|
|
- resets : Must contain an entry for each entry in reset-names.
|
|
See ../reset/reset.txt for details.
|
|
- reset-names : Must include the following entries:
|
|
- usb: The PHY's own reset signal.
|
|
- utmi-pads: The reset of the PHY containing the chip-wide UTMI pad control
|
|
registers. Required even if phy_type == ulpi.
|
|
|
|
Required properties for phy_type == ulpi:
|
|
- nvidia,phy-reset-gpio : The GPIO used to reset the PHY.
|
|
|
|
Required PHY timing params for utmi phy, for all chips:
|
|
- nvidia,hssync-start-delay : Number of 480 Mhz clock cycles to wait before
|
|
start of sync launches RxActive
|
|
- nvidia,elastic-limit : Variable FIFO Depth of elastic input store
|
|
- nvidia,idle-wait-delay : Number of 480 Mhz clock cycles of idle to wait
|
|
before declare IDLE.
|
|
- nvidia,term-range-adj : Range adjusment on terminations
|
|
- Either one of the following for HS driver output control:
|
|
- nvidia,xcvr-setup : integer, uses the provided value.
|
|
- nvidia,xcvr-setup-use-fuses : boolean, indicates that the value is read
|
|
from the on-chip fuses
|
|
If both are provided, nvidia,xcvr-setup-use-fuses takes precedence.
|
|
- nvidia,xcvr-lsfslew : LS falling slew rate control.
|
|
- nvidia,xcvr-lsrslew : LS rising slew rate control.
|
|
|
|
Required PHY timing params for utmi phy, only on Tegra30 and above:
|
|
- nvidia,xcvr-hsslew : HS slew rate control.
|
|
- nvidia,hssquelch-level : HS squelch detector level.
|
|
- nvidia,hsdiscon-level : HS disconnect detector level.
|
|
|
|
Optional properties:
|
|
- nvidia,has-legacy-mode : boolean indicates whether this controller can
|
|
operate in legacy mode (as APX 2500 / 2600). In legacy mode some
|
|
registers are accessed through the APB_MISC base address instead of
|
|
the USB controller.
|
|
- nvidia,is-wired : boolean. Indicates whether we can do certain kind of power
|
|
optimizations for the devices that are always connected. e.g. modem.
|
|
- dr_mode : dual role mode. Indicates the working mode for the PHY. Can be
|
|
"host", "peripheral", or "otg". Defaults to "host" if not defined.
|
|
host means this is a host controller
|
|
peripheral means it is device controller
|
|
otg means it can operate as either ("on the go")
|
|
- nvidia,has-utmi-pad-registers : boolean indicates whether this controller
|
|
contains the UTMI pad control registers common to all USB controllers.
|
|
|
|
VBUS control (required for dr_mode == otg, optional for dr_mode == host):
|
|
- vbus-supply: regulator for VBUS
|