fsl,imx8qm-hsio.yaml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/phy/fsl,imx8qm-hsio.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: Freescale i.MX8QM SoC series High Speed IO(HSIO) SERDES PHY
  7. maintainers:
  8. - Richard Zhu <hongxing.zhu@nxp.com>
  9. properties:
  10. compatible:
  11. enum:
  12. - fsl,imx8qm-hsio
  13. - fsl,imx8qxp-hsio
  14. reg:
  15. items:
  16. - description: Base address and length of the PHY block
  17. - description: HSIO control and status registers(CSR) of the PHY
  18. - description: HSIO CSR of the controller bound to the PHY
  19. - description: HSIO CSR for MISC
  20. reg-names:
  21. items:
  22. - const: reg
  23. - const: phy
  24. - const: ctrl
  25. - const: misc
  26. "#phy-cells":
  27. const: 3
  28. description:
  29. The first defines lane index.
  30. The second defines the type of the PHY refer to the include phy.h.
  31. The third defines the controller index, indicated which controller
  32. is bound to the lane.
  33. clocks:
  34. minItems: 5
  35. maxItems: 14
  36. clock-names:
  37. minItems: 5
  38. maxItems: 14
  39. fsl,hsio-cfg:
  40. description: |
  41. Specifies the use case of the HSIO module in the hardware design.
  42. Regarding the design of i.MX8QM HSIO subsystem, HSIO module can be
  43. confiured as following three use cases.
  44. +---------------------------------------+
  45. | | i.MX8QM |
  46. |------------------|--------------------|
  47. | | Lane0| Lane1| Lane2|
  48. |------------------|------|------|------|
  49. | pciea-x2-sata | PCIEA| PCIEA| SATA |
  50. |------------------|------|------|------|
  51. | pciea-x2-pcieb | PCIEA| PCIEA| PCIEB|
  52. |------------------|------|------|------|
  53. | pciea-pcieb-sata | PCIEA| PCIEB| SATA |
  54. +---------------------------------------+
  55. $ref: /schemas/types.yaml#/definitions/string
  56. enum: [ pciea-x2-sata, pciea-x2-pcieb, pciea-pcieb-sata]
  57. default: pciea-pcieb-sata
  58. fsl,refclk-pad-mode:
  59. description:
  60. Specifies the mode of the refclk pad used. INPUT(PHY refclock is
  61. provided externally via the refclk pad) or OUTPUT(PHY refclock is
  62. derived from SoC internal source and provided on the refclk pad).
  63. This property not exists means unused(PHY refclock is derived from
  64. SoC internal source).
  65. $ref: /schemas/types.yaml#/definitions/string
  66. enum: [ input, output, unused ]
  67. default: unused
  68. power-domains:
  69. minItems: 1
  70. maxItems: 2
  71. required:
  72. - compatible
  73. - reg
  74. - reg-names
  75. - "#phy-cells"
  76. - clocks
  77. - clock-names
  78. - fsl,hsio-cfg
  79. allOf:
  80. - if:
  81. properties:
  82. compatible:
  83. contains:
  84. enum:
  85. - fsl,imx8qxp-hsio
  86. then:
  87. properties:
  88. clock-names:
  89. items:
  90. - const: pclk0
  91. - const: apb_pclk0
  92. - const: phy0_crr
  93. - const: ctl0_crr
  94. - const: misc_crr
  95. power-domains:
  96. maxItems: 1
  97. - if:
  98. properties:
  99. compatible:
  100. contains:
  101. enum:
  102. - fsl,imx8qm-hsio
  103. then:
  104. properties:
  105. clock-names:
  106. items:
  107. - const: pclk0
  108. - const: pclk1
  109. - const: apb_pclk0
  110. - const: apb_pclk1
  111. - const: pclk2
  112. - const: epcs_tx
  113. - const: epcs_rx
  114. - const: apb_pclk2
  115. - const: phy0_crr
  116. - const: phy1_crr
  117. - const: ctl0_crr
  118. - const: ctl1_crr
  119. - const: ctl2_crr
  120. - const: misc_crr
  121. power-domains:
  122. minItems: 2
  123. additionalProperties: false
  124. examples:
  125. - |
  126. #include <dt-bindings/clock/imx8-clock.h>
  127. #include <dt-bindings/clock/imx8-lpcg.h>
  128. #include <dt-bindings/firmware/imx/rsrc.h>
  129. #include <dt-bindings/phy/phy-imx8-pcie.h>
  130. phy@5f1a0000 {
  131. compatible = "fsl,imx8qxp-hsio";
  132. reg = <0x5f1a0000 0x10000>,
  133. <0x5f120000 0x10000>,
  134. <0x5f140000 0x10000>,
  135. <0x5f160000 0x10000>;
  136. reg-names = "reg", "phy", "ctrl", "misc";
  137. clocks = <&phyx1_lpcg IMX_LPCG_CLK_0>,
  138. <&phyx1_lpcg IMX_LPCG_CLK_4>,
  139. <&phyx1_crr1_lpcg IMX_LPCG_CLK_4>,
  140. <&pcieb_crr3_lpcg IMX_LPCG_CLK_4>,
  141. <&misc_crr5_lpcg IMX_LPCG_CLK_4>;
  142. clock-names = "pclk0", "apb_pclk0", "phy0_crr", "ctl0_crr", "misc_crr";
  143. power-domains = <&pd IMX_SC_R_SERDES_1>;
  144. #phy-cells = <3>;
  145. fsl,hsio-cfg = "pciea-pcieb-sata";
  146. fsl,refclk-pad-mode = "input";
  147. };
  148. ...