nvidia,tegra124-xusb-padctl.txt 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734
  1. Device tree binding for NVIDIA Tegra XUSB pad controller
  2. ========================================================
  3. The Tegra XUSB pad controller manages a set of I/O lanes (with differential
  4. signals) which connect directly to pins/pads on the SoC package. Each lane
  5. is controlled by a HW block referred to as a "pad" in the Tegra hardware
  6. documentation. Each such "pad" may control either one or multiple lanes,
  7. and thus contains any logic common to all its lanes. Each lane can be
  8. separately configured and powered up.
  9. Some of the lanes are high-speed lanes, which can be used for PCIe, SATA or
  10. super-speed USB. Other lanes are for various types of low-speed, full-speed
  11. or high-speed USB (such as UTMI, ULPI and HSIC). The XUSB pad controller
  12. contains a software-configurable mux that sits between the I/O controller
  13. ports (e.g. PCIe) and the lanes.
  14. In addition to per-lane configuration, USB 3.0 ports may require additional
  15. settings on a per-board basis.
  16. Pads will be represented as children of the top-level XUSB pad controller
  17. device tree node. Each lane exposed by the pad will be represented by its
  18. own subnode and can be referenced by users of the lane using the standard
  19. PHY bindings, as described by the phy-bindings.txt file in this directory.
  20. The Tegra hardware documentation refers to the connection between the XUSB
  21. pad controller and the XUSB controller as "ports". This is confusing since
  22. "port" is typically used to denote the physical USB receptacle. The device
  23. tree binding in this document uses the term "port" to refer to the logical
  24. abstraction of the signals that are routed to a USB receptacle (i.e. a PHY
  25. for the USB signal, the VBUS power supply, the USB 2.0 companion port for
  26. USB 3.0 receptacles, ...).
  27. Required properties:
  28. --------------------
  29. - compatible: Must be:
  30. - Tegra124: "nvidia,tegra124-xusb-padctl"
  31. - Tegra132: "nvidia,tegra132-xusb-padctl", "nvidia,tegra124-xusb-padctl"
  32. - Tegra210: "nvidia,tegra210-xusb-padctl"
  33. - reg: Physical base address and length of the controller's registers.
  34. - resets: Must contain an entry for each entry in reset-names.
  35. - reset-names: Must include the following entries:
  36. - "padctl"
  37. Pad nodes:
  38. ==========
  39. A required child node named "pads" contains a list of subnodes, one for each
  40. of the pads exposed by the XUSB pad controller. Each pad may need additional
  41. resources that can be referenced in its pad node.
  42. The "status" property is used to enable or disable the use of a pad. If set
  43. to "disabled", the pad will not be used on the given board. In order to use
  44. the pad and any of its lanes, this property must be set to "okay".
  45. For Tegra124 and Tegra132, the following pads exist: usb2, ulpi, hsic, pcie
  46. and sata. No extra resources are required for operation of these pads.
  47. For Tegra210, the following pads exist: usb2, hsic, pcie and sata. Below is
  48. a description of the properties of each pad.
  49. UTMI pad:
  50. ---------
  51. Required properties:
  52. - clocks: Must contain an entry for each entry in clock-names.
  53. - clock-names: Must contain the following entries:
  54. - "trk": phandle and specifier referring to the USB2 tracking clock
  55. HSIC pad:
  56. ---------
  57. Required properties:
  58. - clocks: Must contain an entry for each entry in clock-names.
  59. - clock-names: Must contain the following entries:
  60. - "trk": phandle and specifier referring to the HSIC tracking clock
  61. PCIe pad:
  62. ---------
  63. Required properties:
  64. - clocks: Must contain an entry for each entry in clock-names.
  65. - clock-names: Must contain the following entries:
  66. - "pll": phandle and specifier referring to the PLLE
  67. - resets: Must contain an entry for each entry in reset-names.
  68. - reset-names: Must contain the following entries:
  69. - "phy": reset for the PCIe UPHY block
  70. SATA pad:
  71. ---------
  72. Required properties:
  73. - resets: Must contain an entry for each entry in reset-names.
  74. - reset-names: Must contain the following entries:
  75. - "phy": reset for the SATA UPHY block
  76. PHY nodes:
  77. ==========
  78. Each pad node has a child named "lanes" that contains one or more children of
  79. its own, each representing one of the lanes controlled by the pad.
  80. Required properties:
  81. --------------------
  82. - status: Defines the operation status of the PHY. Valid values are:
  83. - "disabled": the PHY is disabled
  84. - "okay": the PHY is enabled
  85. - #phy-cells: Should be 0. Since each lane represents a single PHY, there is
  86. no need for an additional specifier.
  87. - nvidia,function: The output function of the PHY. See below for a list of
  88. valid functions per SoC generation.
  89. For Tegra124 and Tegra132, the list of valid PHY nodes is given below:
  90. - usb2: usb2-0, usb2-1, usb2-2
  91. - functions: "snps", "xusb", "uart"
  92. - ulpi: ulpi-0
  93. - functions: "snps", "xusb"
  94. - hsic: hsic-0, hsic-1
  95. - functions: "snps", "xusb"
  96. - pcie: pcie-0, pcie-1, pcie-2, pcie-3, pcie-4
  97. - functions: "pcie", "usb3-ss"
  98. - sata: sata-0
  99. - functions: "usb3-ss", "sata"
  100. For Tegra210, the list of valid PHY nodes is given below:
  101. - usb2: usb2-0, usb2-1, usb2-2, usb2-3
  102. - functions: "snps", "xusb", "uart"
  103. - hsic: hsic-0, hsic-1
  104. - functions: "snps", "xusb"
  105. - pcie: pcie-0, pcie-1, pcie-2, pcie-3, pcie-4, pcie-5, pcie-6
  106. - functions: "pcie-x1", "usb3-ss", "pcie-x4"
  107. - sata: sata-0
  108. - functions: "usb3-ss", "sata"
  109. Port nodes:
  110. ===========
  111. A required child node named "ports" contains a list of all the ports exposed
  112. by the XUSB pad controller. Per-port configuration is only required for USB.
  113. USB2 ports:
  114. -----------
  115. Required properties:
  116. - status: Defines the operation status of the port. Valid values are:
  117. - "disabled": the port is disabled
  118. - "okay": the port is enabled
  119. - mode: A string that determines the mode in which to run the port. Valid
  120. values are:
  121. - "host": for USB host mode
  122. - "device": for USB device mode
  123. - "otg": for USB OTG mode
  124. Optional properties:
  125. - nvidia,internal: A boolean property whose presence determines that a port
  126. is internal. In the absence of this property the port is considered to be
  127. external.
  128. - vbus-supply: phandle to a regulator supplying the VBUS voltage.
  129. ULPI ports:
  130. -----------
  131. Optional properties:
  132. - status: Defines the operation status of the port. Valid values are:
  133. - "disabled": the port is disabled
  134. - "okay": the port is enabled
  135. - nvidia,internal: A boolean property whose presence determines that a port
  136. is internal. In the absence of this property the port is considered to be
  137. external.
  138. - vbus-supply: phandle to a regulator supplying the VBUS voltage.
  139. HSIC ports:
  140. -----------
  141. Required properties:
  142. - status: Defines the operation status of the port. Valid values are:
  143. - "disabled": the port is disabled
  144. - "okay": the port is enabled
  145. Optional properties:
  146. - vbus-supply: phandle to a regulator supplying the VBUS voltage.
  147. Super-speed USB ports:
  148. ----------------------
  149. Required properties:
  150. - status: Defines the operation status of the port. Valid values are:
  151. - "disabled": the port is disabled
  152. - "okay": the port is enabled
  153. - nvidia,usb2-companion: A single cell that specifies the physical port number
  154. to map this super-speed USB port to. The range of valid port numbers varies
  155. with the SoC generation:
  156. - 0-2: for Tegra124 and Tegra132
  157. - 0-3: for Tegra210
  158. Optional properties:
  159. - nvidia,internal: A boolean property whose presence determines that a port
  160. is internal. In the absence of this property the port is considered to be
  161. external.
  162. For Tegra124 and Tegra132, the XUSB pad controller exposes the following
  163. ports:
  164. - 3x USB2: usb2-0, usb2-1, usb2-2
  165. - 1x ULPI: ulpi-0
  166. - 2x HSIC: hsic-0, hsic-1
  167. - 2x super-speed USB: usb3-0, usb3-1
  168. For Tegra210, the XUSB pad controller exposes the following ports:
  169. - 4x USB2: usb2-0, usb2-1, usb2-2, usb2-3
  170. - 2x HSIC: hsic-0, hsic-1
  171. - 4x super-speed USB: usb3-0, usb3-1, usb3-2, usb3-3
  172. Examples:
  173. =========
  174. Tegra124 and Tegra132:
  175. ----------------------
  176. SoC include:
  177. padctl@7009f000 {
  178. /* for Tegra124 */
  179. compatible = "nvidia,tegra124-xusb-padctl";
  180. /* for Tegra132 */
  181. compatible = "nvidia,tegra132-xusb-padctl",
  182. "nvidia,tegra124-xusb-padctl";
  183. reg = <0x0 0x7009f000 0x0 0x1000>;
  184. resets = <&tegra_car 142>;
  185. reset-names = "padctl";
  186. pads {
  187. usb2 {
  188. status = "disabled";
  189. lanes {
  190. usb2-0 {
  191. status = "disabled";
  192. #phy-cells = <0>;
  193. };
  194. usb2-1 {
  195. status = "disabled";
  196. #phy-cells = <0>;
  197. };
  198. usb2-2 {
  199. status = "disabled";
  200. #phy-cells = <0>;
  201. };
  202. };
  203. };
  204. ulpi {
  205. status = "disabled";
  206. lanes {
  207. ulpi-0 {
  208. status = "disabled";
  209. #phy-cells = <0>;
  210. };
  211. };
  212. };
  213. hsic {
  214. status = "disabled";
  215. lanes {
  216. hsic-0 {
  217. status = "disabled";
  218. #phy-cells = <0>;
  219. };
  220. hsic-1 {
  221. status = "disabled";
  222. #phy-cells = <0>;
  223. };
  224. };
  225. };
  226. pcie {
  227. status = "disabled";
  228. lanes {
  229. pcie-0 {
  230. status = "disabled";
  231. #phy-cells = <0>;
  232. };
  233. pcie-1 {
  234. status = "disabled";
  235. #phy-cells = <0>;
  236. };
  237. pcie-2 {
  238. status = "disabled";
  239. #phy-cells = <0>;
  240. };
  241. pcie-3 {
  242. status = "disabled";
  243. #phy-cells = <0>;
  244. };
  245. pcie-4 {
  246. status = "disabled";
  247. #phy-cells = <0>;
  248. };
  249. };
  250. };
  251. sata {
  252. status = "disabled";
  253. lanes {
  254. sata-0 {
  255. status = "disabled";
  256. #phy-cells = <0>;
  257. };
  258. };
  259. };
  260. };
  261. ports {
  262. usb2-0 {
  263. status = "disabled";
  264. };
  265. usb2-1 {
  266. status = "disabled";
  267. };
  268. usb2-2 {
  269. status = "disabled";
  270. };
  271. ulpi-0 {
  272. status = "disabled";
  273. };
  274. hsic-0 {
  275. status = "disabled";
  276. };
  277. hsic-1 {
  278. status = "disabled";
  279. };
  280. usb3-0 {
  281. status = "disabled";
  282. };
  283. usb3-1 {
  284. status = "disabled";
  285. };
  286. };
  287. };
  288. Board file:
  289. padctl@7009f000 {
  290. status = "okay";
  291. pads {
  292. usb2 {
  293. status = "okay";
  294. lanes {
  295. usb2-0 {
  296. nvidia,function = "xusb";
  297. status = "okay";
  298. };
  299. usb2-1 {
  300. nvidia,function = "xusb";
  301. status = "okay";
  302. };
  303. usb2-2 {
  304. nvidia,function = "xusb";
  305. status = "okay";
  306. };
  307. };
  308. };
  309. pcie {
  310. status = "okay";
  311. lanes {
  312. pcie-0 {
  313. nvidia,function = "usb3-ss";
  314. status = "okay";
  315. };
  316. pcie-2 {
  317. nvidia,function = "pcie";
  318. status = "okay";
  319. };
  320. pcie-4 {
  321. nvidia,function = "pcie";
  322. status = "okay";
  323. };
  324. };
  325. };
  326. sata {
  327. status = "okay";
  328. lanes {
  329. sata-0 {
  330. nvidia,function = "sata";
  331. status = "okay";
  332. };
  333. };
  334. };
  335. };
  336. ports {
  337. /* Micro A/B */
  338. usb2-0 {
  339. status = "okay";
  340. mode = "otg";
  341. };
  342. /* Mini PCIe */
  343. usb2-1 {
  344. status = "okay";
  345. mode = "host";
  346. };
  347. /* USB3 */
  348. usb2-2 {
  349. status = "okay";
  350. mode = "host";
  351. vbus-supply = <&vdd_usb3_vbus>;
  352. };
  353. usb3-0 {
  354. nvidia,port = <2>;
  355. status = "okay";
  356. };
  357. };
  358. };
  359. Tegra210:
  360. ---------
  361. SoC include:
  362. padctl@7009f000 {
  363. compatible = "nvidia,tegra210-xusb-padctl";
  364. reg = <0x0 0x7009f000 0x0 0x1000>;
  365. resets = <&tegra_car 142>;
  366. reset-names = "padctl";
  367. status = "disabled";
  368. pads {
  369. usb2 {
  370. clocks = <&tegra_car TEGRA210_CLK_USB2_TRK>;
  371. clock-names = "trk";
  372. status = "disabled";
  373. lanes {
  374. usb2-0 {
  375. status = "disabled";
  376. #phy-cells = <0>;
  377. };
  378. usb2-1 {
  379. status = "disabled";
  380. #phy-cells = <0>;
  381. };
  382. usb2-2 {
  383. status = "disabled";
  384. #phy-cells = <0>;
  385. };
  386. usb2-3 {
  387. status = "disabled";
  388. #phy-cells = <0>;
  389. };
  390. };
  391. };
  392. hsic {
  393. clocks = <&tegra_car TEGRA210_CLK_HSIC_TRK>;
  394. clock-names = "trk";
  395. status = "disabled";
  396. lanes {
  397. hsic-0 {
  398. status = "disabled";
  399. #phy-cells = <0>;
  400. };
  401. hsic-1 {
  402. status = "disabled";
  403. #phy-cells = <0>;
  404. };
  405. };
  406. };
  407. pcie {
  408. clocks = <&tegra_car TEGRA210_CLK_PLL_E>;
  409. clock-names = "pll";
  410. resets = <&tegra_car 205>;
  411. reset-names = "phy";
  412. status = "disabled";
  413. lanes {
  414. pcie-0 {
  415. status = "disabled";
  416. #phy-cells = <0>;
  417. };
  418. pcie-1 {
  419. status = "disabled";
  420. #phy-cells = <0>;
  421. };
  422. pcie-2 {
  423. status = "disabled";
  424. #phy-cells = <0>;
  425. };
  426. pcie-3 {
  427. status = "disabled";
  428. #phy-cells = <0>;
  429. };
  430. pcie-4 {
  431. status = "disabled";
  432. #phy-cells = <0>;
  433. };
  434. pcie-5 {
  435. status = "disabled";
  436. #phy-cells = <0>;
  437. };
  438. pcie-6 {
  439. status = "disabled";
  440. #phy-cells = <0>;
  441. };
  442. };
  443. };
  444. sata {
  445. clocks = <&tegra_car TEGRA210_CLK_PLL_E>;
  446. clock-names = "pll";
  447. resets = <&tegra_car 204>;
  448. reset-names = "phy";
  449. status = "disabled";
  450. lanes {
  451. sata-0 {
  452. status = "disabled";
  453. #phy-cells = <0>;
  454. };
  455. };
  456. };
  457. };
  458. ports {
  459. usb2-0 {
  460. status = "disabled";
  461. };
  462. usb2-1 {
  463. status = "disabled";
  464. };
  465. usb2-2 {
  466. status = "disabled";
  467. };
  468. usb2-3 {
  469. status = "disabled";
  470. };
  471. hsic-0 {
  472. status = "disabled";
  473. };
  474. hsic-1 {
  475. status = "disabled";
  476. };
  477. usb3-0 {
  478. status = "disabled";
  479. };
  480. usb3-1 {
  481. status = "disabled";
  482. };
  483. usb3-2 {
  484. status = "disabled";
  485. };
  486. usb3-3 {
  487. status = "disabled";
  488. };
  489. };
  490. };
  491. Board file:
  492. padctl@7009f000 {
  493. status = "okay";
  494. pads {
  495. usb2 {
  496. status = "okay";
  497. lanes {
  498. usb2-0 {
  499. nvidia,function = "xusb";
  500. status = "okay";
  501. };
  502. usb2-1 {
  503. nvidia,function = "xusb";
  504. status = "okay";
  505. };
  506. usb2-2 {
  507. nvidia,function = "xusb";
  508. status = "okay";
  509. };
  510. usb2-3 {
  511. nvidia,function = "xusb";
  512. status = "okay";
  513. };
  514. };
  515. };
  516. pcie {
  517. status = "okay";
  518. lanes {
  519. pcie-0 {
  520. nvidia,function = "pcie-x1";
  521. status = "okay";
  522. };
  523. pcie-1 {
  524. nvidia,function = "pcie-x4";
  525. status = "okay";
  526. };
  527. pcie-2 {
  528. nvidia,function = "pcie-x4";
  529. status = "okay";
  530. };
  531. pcie-3 {
  532. nvidia,function = "pcie-x4";
  533. status = "okay";
  534. };
  535. pcie-4 {
  536. nvidia,function = "pcie-x4";
  537. status = "okay";
  538. };
  539. pcie-5 {
  540. nvidia,function = "usb3-ss";
  541. status = "okay";
  542. };
  543. pcie-6 {
  544. nvidia,function = "usb3-ss";
  545. status = "okay";
  546. };
  547. };
  548. };
  549. sata {
  550. status = "okay";
  551. lanes {
  552. sata-0 {
  553. nvidia,function = "sata";
  554. status = "okay";
  555. };
  556. };
  557. };
  558. };
  559. ports {
  560. usb2-0 {
  561. status = "okay";
  562. mode = "otg";
  563. };
  564. usb2-1 {
  565. status = "okay";
  566. vbus-supply = <&vdd_5v0_rtl>;
  567. mode = "host";
  568. };
  569. usb2-2 {
  570. status = "okay";
  571. vbus-supply = <&vdd_usb_vbus>;
  572. mode = "host";
  573. };
  574. usb2-3 {
  575. status = "okay";
  576. mode = "host";
  577. };
  578. usb3-0 {
  579. status = "okay";
  580. nvidia,lanes = "pcie-6";
  581. nvidia,port = <1>;
  582. };
  583. usb3-1 {
  584. status = "okay";
  585. nvidia,lanes = "pcie-5";
  586. nvidia,port = <2>;
  587. };
  588. };
  589. };