fsl,imx8qxp-csr.yaml 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/mfd/fsl,imx8qxp-csr.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: Freescale i.MX8qm/qxp Control and Status Registers Module
  7. maintainers:
  8. - Liu Ying <victor.liu@nxp.com>
  9. description: |
  10. As a system controller, the Freescale i.MX8qm/qxp Control and Status
  11. Registers(CSR) module represents a set of miscellaneous registers of a
  12. specific subsystem. It may provide control and/or status report interfaces
  13. to a mix of standalone hardware devices within that subsystem. One typical
  14. use-case is for some other nodes to acquire a reference to the syscon node
  15. by phandle, and the other typical use-case is that the operating system
  16. should consider all subnodes of the CSR module as separate child devices.
  17. properties:
  18. $nodename:
  19. pattern: "^syscon@[0-9a-f]+$"
  20. compatible:
  21. items:
  22. - enum:
  23. - fsl,imx8qxp-mipi-lvds-csr
  24. - fsl,imx8qm-lvds-csr
  25. - const: syscon
  26. - const: simple-mfd
  27. reg:
  28. maxItems: 1
  29. clocks:
  30. maxItems: 1
  31. clock-names:
  32. const: ipg
  33. patternProperties:
  34. "^(ldb|phy|pxl2dpi)$":
  35. type: object
  36. description: The possible child devices of the CSR module.
  37. required:
  38. - compatible
  39. - reg
  40. - clocks
  41. - clock-names
  42. allOf:
  43. - if:
  44. properties:
  45. compatible:
  46. contains:
  47. const: fsl,imx8qxp-mipi-lvds-csr
  48. then:
  49. required:
  50. - pxl2dpi
  51. - ldb
  52. - if:
  53. properties:
  54. compatible:
  55. contains:
  56. const: fsl,imx8qm-lvds-csr
  57. then:
  58. required:
  59. - phy
  60. - ldb
  61. additionalProperties: false
  62. examples:
  63. - |
  64. #include <dt-bindings/clock/imx8-lpcg.h>
  65. #include <dt-bindings/firmware/imx/rsrc.h>
  66. mipi_lvds_0_csr: syscon@56221000 {
  67. compatible = "fsl,imx8qxp-mipi-lvds-csr", "syscon", "simple-mfd";
  68. reg = <0x56221000 0x1000>;
  69. clocks = <&mipi_lvds_0_di_mipi_lvds_regs_lpcg IMX_LPCG_CLK_4>;
  70. clock-names = "ipg";
  71. mipi_lvds_0_pxl2dpi: pxl2dpi {
  72. compatible = "fsl,imx8qxp-pxl2dpi";
  73. fsl,sc-resource = <IMX_SC_R_MIPI_0>;
  74. power-domains = <&pd IMX_SC_R_MIPI_0>;
  75. ports {
  76. #address-cells = <1>;
  77. #size-cells = <0>;
  78. port@0 {
  79. #address-cells = <1>;
  80. #size-cells = <0>;
  81. reg = <0>;
  82. mipi_lvds_0_pxl2dpi_dc0_pixel_link0: endpoint@0 {
  83. reg = <0>;
  84. remote-endpoint = <&dc0_pixel_link0_mipi_lvds_0_pxl2dpi>;
  85. };
  86. mipi_lvds_0_pxl2dpi_dc0_pixel_link1: endpoint@1 {
  87. reg = <1>;
  88. remote-endpoint = <&dc0_pixel_link1_mipi_lvds_0_pxl2dpi>;
  89. };
  90. };
  91. port@1 {
  92. #address-cells = <1>;
  93. #size-cells = <0>;
  94. reg = <1>;
  95. mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0: endpoint@0 {
  96. reg = <0>;
  97. remote-endpoint = <&mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi>;
  98. };
  99. mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1: endpoint@1 {
  100. reg = <1>;
  101. remote-endpoint = <&mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi>;
  102. };
  103. };
  104. };
  105. };
  106. mipi_lvds_0_ldb: ldb {
  107. #address-cells = <1>;
  108. #size-cells = <0>;
  109. compatible = "fsl,imx8qxp-ldb";
  110. clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_MISC2>,
  111. <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_BYPASS>;
  112. clock-names = "pixel", "bypass";
  113. power-domains = <&pd IMX_SC_R_LVDS_0>;
  114. channel@0 {
  115. #address-cells = <1>;
  116. #size-cells = <0>;
  117. reg = <0>;
  118. phys = <&mipi_lvds_0_phy>;
  119. phy-names = "lvds_phy";
  120. port@0 {
  121. reg = <0>;
  122. mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi: endpoint {
  123. remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0>;
  124. };
  125. };
  126. port@1 {
  127. reg = <1>;
  128. /* ... */
  129. };
  130. };
  131. channel@1 {
  132. #address-cells = <1>;
  133. #size-cells = <0>;
  134. reg = <1>;
  135. phys = <&mipi_lvds_0_phy>;
  136. phy-names = "lvds_phy";
  137. port@0 {
  138. reg = <0>;
  139. mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi: endpoint {
  140. remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1>;
  141. };
  142. };
  143. port@1 {
  144. reg = <1>;
  145. /* ... */
  146. };
  147. };
  148. };
  149. };
  150. mipi_lvds_0_phy: phy@56228300 {
  151. compatible = "fsl,imx8qxp-mipi-dphy";
  152. reg = <0x56228300 0x100>;
  153. clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_PHY>;
  154. clock-names = "phy_ref";
  155. #phy-cells = <0>;
  156. fsl,syscon = <&mipi_lvds_0_csr>;
  157. power-domains = <&pd IMX_SC_R_MIPI_0>;
  158. };