qcom,ufs.yaml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/ufs/qcom,ufs.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: Qualcomm Universal Flash Storage (UFS) Controller
  7. maintainers:
  8. - Bjorn Andersson <bjorn.andersson@linaro.org>
  9. - Andy Gross <agross@kernel.org>
  10. # Select only our matches, not all jedec,ufs-2.0
  11. select:
  12. properties:
  13. compatible:
  14. contains:
  15. enum:
  16. - qcom,msm8994-ufshc
  17. - qcom,msm8996-ufshc
  18. - qcom,qcs615-ufshc
  19. - qcom,sdm845-ufshc
  20. - qcom,sm6115-ufshc
  21. - qcom,sm6125-ufshc
  22. - qcom,sm6350-ufshc
  23. - qcom,sm8150-ufshc
  24. required:
  25. - compatible
  26. properties:
  27. compatible:
  28. items:
  29. - enum:
  30. - qcom,msm8994-ufshc
  31. - qcom,msm8996-ufshc
  32. - qcom,qcs615-ufshc
  33. - qcom,sdm845-ufshc
  34. - qcom,sm6115-ufshc
  35. - qcom,sm6125-ufshc
  36. - qcom,sm6350-ufshc
  37. - qcom,sm8150-ufshc
  38. - const: qcom,ufshc
  39. - const: jedec,ufs-2.0
  40. qcom,ice:
  41. $ref: /schemas/types.yaml#/definitions/phandle
  42. description: phandle to the Inline Crypto Engine node
  43. reg:
  44. minItems: 1
  45. maxItems: 2
  46. reg-names:
  47. items:
  48. - const: std
  49. - const: ice
  50. required:
  51. - compatible
  52. - reg
  53. allOf:
  54. - $ref: qcom,ufs-common.yaml
  55. - if:
  56. properties:
  57. compatible:
  58. contains:
  59. enum:
  60. - qcom,sdm845-ufshc
  61. - qcom,sm6350-ufshc
  62. - qcom,sm8150-ufshc
  63. then:
  64. properties:
  65. clocks:
  66. minItems: 9
  67. maxItems: 9
  68. clock-names:
  69. items:
  70. - const: core_clk
  71. - const: bus_aggr_clk
  72. - const: iface_clk
  73. - const: core_clk_unipro
  74. - const: ref_clk
  75. - const: tx_lane0_sync_clk
  76. - const: rx_lane0_sync_clk
  77. - const: rx_lane1_sync_clk
  78. - const: ice_core_clk
  79. reg:
  80. minItems: 2
  81. reg-names:
  82. minItems: 2
  83. required:
  84. - reg-names
  85. - if:
  86. properties:
  87. compatible:
  88. contains:
  89. enum:
  90. - qcom,msm8996-ufshc
  91. then:
  92. properties:
  93. clocks:
  94. minItems: 9
  95. maxItems: 9
  96. clock-names:
  97. items:
  98. - const: core_clk
  99. - const: bus_clk
  100. - const: bus_aggr_clk
  101. - const: iface_clk
  102. - const: core_clk_unipro
  103. - const: core_clk_ice
  104. - const: ref_clk
  105. - const: tx_lane0_sync_clk
  106. - const: rx_lane0_sync_clk
  107. reg:
  108. maxItems: 1
  109. reg-names:
  110. maxItems: 1
  111. - if:
  112. properties:
  113. compatible:
  114. contains:
  115. enum:
  116. - qcom,qcs615-ufshc
  117. - qcom,sm6115-ufshc
  118. - qcom,sm6125-ufshc
  119. then:
  120. properties:
  121. clocks:
  122. minItems: 8
  123. maxItems: 8
  124. clock-names:
  125. items:
  126. - const: core_clk
  127. - const: bus_aggr_clk
  128. - const: iface_clk
  129. - const: core_clk_unipro
  130. - const: ref_clk
  131. - const: tx_lane0_sync_clk
  132. - const: rx_lane0_sync_clk
  133. - const: ice_core_clk
  134. reg:
  135. minItems: 2
  136. reg-names:
  137. minItems: 2
  138. required:
  139. - reg-names
  140. # TODO: define clock bindings for qcom,msm8994-ufshc
  141. - if:
  142. required:
  143. - qcom,ice
  144. then:
  145. properties:
  146. reg:
  147. maxItems: 1
  148. clocks:
  149. minItems: 7
  150. maxItems: 8
  151. else:
  152. properties:
  153. reg:
  154. minItems: 1
  155. maxItems: 2
  156. clocks:
  157. minItems: 7
  158. maxItems: 9
  159. unevaluatedProperties: false
  160. examples:
  161. - |
  162. #include <dt-bindings/clock/qcom,gcc-sm8150.h>
  163. #include <dt-bindings/clock/qcom,rpmh.h>
  164. #include <dt-bindings/gpio/gpio.h>
  165. #include <dt-bindings/interconnect/qcom,sm8150.h>
  166. #include <dt-bindings/interrupt-controller/arm-gic.h>
  167. soc {
  168. #address-cells = <2>;
  169. #size-cells = <2>;
  170. ufs@1d84000 {
  171. compatible = "qcom,sm8150-ufshc", "qcom,ufshc",
  172. "jedec,ufs-2.0";
  173. reg = <0x0 0x01d84000 0x0 0x2500>,
  174. <0x0 0x01d90000 0x0 0x8000>;
  175. reg-names = "std", "ice";
  176. interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
  177. phys = <&ufs_mem_phy_lanes>;
  178. phy-names = "ufsphy";
  179. lanes-per-direction = <2>;
  180. #reset-cells = <1>;
  181. resets = <&gcc GCC_UFS_PHY_BCR>;
  182. reset-names = "rst";
  183. reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
  184. vcc-supply = <&vreg_l7b_2p5>;
  185. vcc-max-microamp = <1100000>;
  186. vccq-supply = <&vreg_l9b_1p2>;
  187. vccq-max-microamp = <1200000>;
  188. power-domains = <&gcc UFS_PHY_GDSC>;
  189. iommus = <&apps_smmu 0x300 0>;
  190. clocks = <&gcc GCC_UFS_PHY_AXI_CLK>,
  191. <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
  192. <&gcc GCC_UFS_PHY_AHB_CLK>,
  193. <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>,
  194. <&rpmhcc RPMH_CXO_CLK>,
  195. <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>,
  196. <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>,
  197. <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>,
  198. <&gcc GCC_UFS_PHY_ICE_CORE_CLK>;
  199. clock-names = "core_clk",
  200. "bus_aggr_clk",
  201. "iface_clk",
  202. "core_clk_unipro",
  203. "ref_clk",
  204. "tx_lane0_sync_clk",
  205. "rx_lane0_sync_clk",
  206. "rx_lane1_sync_clk",
  207. "ice_core_clk";
  208. freq-table-hz = <37500000 300000000>,
  209. <0 0>,
  210. <0 0>,
  211. <37500000 300000000>,
  212. <0 0>,
  213. <0 0>,
  214. <0 0>,
  215. <0 0>,
  216. <0 300000000>;
  217. };
  218. };