104 lines
4.3 KiB
Plaintext
104 lines
4.3 KiB
Plaintext
|
Device tree binding for NVIDIA Tegra XUSB device mode controller (xUDC)
|
|||
|
============================
|
|||
|
|
|||
|
The Tegra xUDC controller supports both USB 2.0 HighSpeed/FullSpeed and
|
|||
|
USB 3.0 SuperSpeed protocols.
|
|||
|
|
|||
|
Required properties:
|
|||
|
--------------------
|
|||
|
- compatible: For Tegra186, must contain "nvidia,tegra186-xudc".
|
|||
|
For Tegra194, must contain "nvidia,tegra194-xudc".
|
|||
|
For Tegra210, must contain "nvidia,tegra210-xudc".
|
|||
|
For Tegra210b01, must contain "nvidia,tegra210b01-xudc".
|
|||
|
- reg: For Tegra210 and Tegra210b01, must contain the base and length of
|
|||
|
the xUDC device registers, xUDC FPCI registers and xUDC IPFS registers.
|
|||
|
For Tegra186 and Tegra194, must contain the base and length of the xUDC
|
|||
|
device registers, xUDC FPCI registers.
|
|||
|
- interrupts: Must be the xUDC device interrupt.
|
|||
|
- clocks: For Tegra186 and Tegra194, must contain the entries of "xusb_dev",
|
|||
|
"xusb_ss", "xusb_ss_src", and "xusb_fs_src".
|
|||
|
For Tegra210 and Tegra210b01, must contain the entries of "xusb_dev",
|
|||
|
"xusb_ss", "xusb_ssp_src", "xusb_hs_src", and "xusb_fs_src".
|
|||
|
See ../clock/clock-bindings.txt for details.
|
|||
|
- iommus: phandle and IOMMU specifier for the IOMMU that serves the XUSB
|
|||
|
device. See ../iommu/iommu.txt for details.
|
|||
|
|
|||
|
Required properties for Tegra xudc:
|
|||
|
---------------------------------
|
|||
|
- nvidia,xusb-padctl: phandle to the XUSB pad controller that is used to
|
|||
|
configure the USB pads used by the XHCI controller.
|
|||
|
- phys: Must contain an entry for each entry in phy-names.
|
|||
|
See ../phy/phy-bindings.txt for details.
|
|||
|
- phy-names: Should include an entry for each PHY used by the controller.
|
|||
|
Names must be "usb2", and "usb3" if support SuperSpeed device mode.
|
|||
|
- "usb3" phy, SuperSpeed (SSTX+/SSTX-/SSRX+/SSRX-) data lines.
|
|||
|
- "usb2" phy, USB 2.0 (D+/D-) data lines.
|
|||
|
- extcon-cables: OTG support. Must contains an excon-cable entry which
|
|||
|
detects USB VBUS pin. See ../extcon/extcon-gpio-states.txt for details.
|
|||
|
When the extcon cable state is 1, OTG port will transition to device mode.
|
|||
|
- extcon-cable-names: Must be "vbus".
|
|||
|
|
|||
|
For Tegra186:
|
|||
|
- avdd-usb-supply: USB controller power supply. Must supply 3.3 V.
|
|||
|
|
|||
|
For Tegra210 and Tegra210b01:
|
|||
|
- hvdd_usb-supply: PEX USB 3.0 pads power supply. Must supply 1.8 V.
|
|||
|
- avddio-usb-supply: USB 2.0 pads power supply. Must supply 3.3 V.
|
|||
|
- avdd-pll-utmip-supply: UTMI PLL power supply. Must supply 1.8 V.
|
|||
|
|
|||
|
Optional properties:
|
|||
|
--------------------
|
|||
|
- charger-detector: USB charger detection support. Must be the phandle of the
|
|||
|
USB charger detection driver DT node.
|
|||
|
- nvidia,boost_cpu_freq: The value to which CPU frequency is to be boosted.
|
|||
|
This is only the minimum frequency; DVFS can scale up CPU frequency further
|
|||
|
based on need and CPU load. CPU boost frequency through PMQOS is enabled
|
|||
|
for the xUDC controller only when this field’s value is greater than zero.
|
|||
|
The boost is applicable only to large bulk transfers on bulk endpoints;
|
|||
|
other endpoints do not need to be boosted.
|
|||
|
Example :
|
|||
|
Before boosting on Quill-prod:
|
|||
|
Output of "cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq"
|
|||
|
345600
|
|||
|
2419200
|
|||
|
2419200
|
|||
|
345600
|
|||
|
345600
|
|||
|
345600
|
|||
|
After boosting on QUill-prod: (nvidia,boost_cpu_freq = <800>)
|
|||
|
Output of "cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq"
|
|||
|
806400
|
|||
|
2419200
|
|||
|
2419200
|
|||
|
806400
|
|||
|
806400
|
|||
|
806400
|
|||
|
- emc-frequency: Set the value which EMC frequency will be requested.
|
|||
|
xUDC controller will request EMC bandwidth through BWMGR for Bulk transfers.
|
|||
|
|
|||
|
Example:
|
|||
|
--------
|
|||
|
xudc@3550000 {
|
|||
|
compatible = "nvidia,tegra186-xudc";
|
|||
|
reg = <0x0 0x03550000 0x0 0x8000>,
|
|||
|
<0x0 0x03558000 0x0 0x1000>;
|
|||
|
interrupts = <0 166 0x4>;
|
|||
|
iommus = <&smmu TEGRA_SID_XUSB_DEV>;
|
|||
|
clocks = <&tegra_car TEGRA186_CLK_XUSB_CORE_DEV>,
|
|||
|
<&tegra_car TEGRA186_CLK_XUSB_SS>,
|
|||
|
<&tegra_car TEGRA186_CLK_XUSB_CORE_SS>,
|
|||
|
<&tegra_car TEGRA186_CLK_XUSB_FS>;
|
|||
|
|
|||
|
nvidia,xusb-padctl = <&xusb_padctl>;
|
|||
|
phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>, /* USB 3.0 micro-AB, J503 */
|
|||
|
<&{/xusb_padctl@3520000/pads/usb2/lanes/usb3-1}>; /* USB 3.0 micro-AB, J503 */
|
|||
|
phy-names = "usb2", "usb3";
|
|||
|
extcon-cables = <&vbus_id_extcon 0>;
|
|||
|
extcon-cable-names = "vbus";
|
|||
|
#extcon-cells = <1>;
|
|||
|
avdd-usb-supply = <&spmic_sd3_3v3>;
|
|||
|
|
|||
|
charger-detector = <&tegra_usb_cd>;
|
|||
|
nvidia,boost_cpu_freq = <1200>;
|
|||
|
};
|