brcm,bcm-vc4.txt 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. Broadcom VC4 (VideoCore4) GPU
  2. The VC4 device present on the Raspberry Pi includes a display system
  3. with HDMI output and the HVS (Hardware Video Scaler) for compositing
  4. display planes.
  5. Required properties for VC4:
  6. - compatible: Should be "brcm,bcm2835-vc4" or "brcm,cygnus-vc4"
  7. Required properties for Pixel Valve:
  8. - compatible: Should be one of "brcm,bcm2835-pixelvalve0",
  9. "brcm,bcm2835-pixelvalve1", or "brcm,bcm2835-pixelvalve2"
  10. - reg: Physical base address and length of the PV's registers
  11. - interrupts: The interrupt number
  12. See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
  13. Required properties for HVS:
  14. - compatible: Should be "brcm,bcm2835-hvs"
  15. - reg: Physical base address and length of the HVS's registers
  16. - interrupts: The interrupt number
  17. See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
  18. Required properties for HDMI
  19. - compatible: Should be "brcm,bcm2835-hdmi"
  20. - reg: Physical base address and length of the two register ranges
  21. ("HDMI" and "HD", in that order)
  22. - interrupts: The interrupt numbers
  23. See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
  24. - ddc: phandle of the I2C controller used for DDC EDID probing
  25. - clocks: a) hdmi: The HDMI state machine clock
  26. b) pixel: The pixel clock.
  27. Optional properties for HDMI:
  28. - hpd-gpios: The GPIO pin for HDMI hotplug detect (if it doesn't appear
  29. as an interrupt/status bit in the HDMI controller
  30. itself). See bindings/pinctrl/brcm,bcm2835-gpio.txt
  31. - dmas: Should contain one entry pointing to the DMA channel used to
  32. transfer audio data
  33. - dma-names: Should contain "audio-rx"
  34. Required properties for DPI:
  35. - compatible: Should be "brcm,bcm2835-dpi"
  36. - reg: Physical base address and length of the registers
  37. - clocks: a) core: The core clock the unit runs on
  38. b) pixel: The pixel clock that feeds the pixelvalve
  39. - port: Port node with a single endpoint connecting to the panel
  40. device, as defined in [1]
  41. Required properties for VEC:
  42. - compatible: Should be "brcm,bcm2835-vec"
  43. - reg: Physical base address and length of the registers
  44. - clocks: The core clock the unit runs on
  45. - interrupts: The interrupt number
  46. See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
  47. Required properties for V3D:
  48. - compatible: Should be "brcm,bcm2835-v3d" or "brcm,cygnus-v3d"
  49. - reg: Physical base address and length of the V3D's registers
  50. - interrupts: The interrupt number
  51. See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
  52. Optional properties for V3D:
  53. - clocks: The clock the unit runs on
  54. Required properties for DSI:
  55. - compatible: Should be "brcm,bcm2835-dsi0" or "brcm,bcm2835-dsi1"
  56. - reg: Physical base address and length of the DSI block's registers
  57. - interrupts: The interrupt number
  58. See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
  59. - clocks: a) phy: The DSI PLL clock feeding the DSI analog PHY
  60. b) escape: The DSI ESC clock from CPRMAN
  61. c) pixel: The DSI pixel clock from CPRMAN
  62. - clock-output-names:
  63. The 3 clocks output from the DSI analog PHY: dsi[01]_byte,
  64. dsi[01]_ddr2, and dsi[01]_ddr
  65. Required properties for the TXP (writeback) block:
  66. - compatible: Should be "brcm,bcm2835-txp"
  67. - reg: Physical base address and length of the TXP block's registers
  68. - interrupts: The interrupt number
  69. See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
  70. [1] Documentation/devicetree/bindings/media/video-interfaces.txt
  71. Example:
  72. pixelvalve@7e807000 {
  73. compatible = "brcm,bcm2835-pixelvalve2";
  74. reg = <0x7e807000 0x100>;
  75. interrupts = <2 10>; /* pixelvalve */
  76. };
  77. hvs@7e400000 {
  78. compatible = "brcm,bcm2835-hvs";
  79. reg = <0x7e400000 0x6000>;
  80. interrupts = <2 1>;
  81. };
  82. hdmi: hdmi@7e902000 {
  83. compatible = "brcm,bcm2835-hdmi";
  84. reg = <0x7e902000 0x600>,
  85. <0x7e808000 0x100>;
  86. interrupts = <2 8>, <2 9>;
  87. ddc = <&i2c2>;
  88. hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
  89. clocks = <&clocks BCM2835_PLLH_PIX>,
  90. <&clocks BCM2835_CLOCK_HSM>;
  91. clock-names = "pixel", "hdmi";
  92. };
  93. dpi: dpi@7e208000 {
  94. compatible = "brcm,bcm2835-dpi";
  95. reg = <0x7e208000 0x8c>;
  96. clocks = <&clocks BCM2835_CLOCK_VPU>,
  97. <&clocks BCM2835_CLOCK_DPI>;
  98. clock-names = "core", "pixel";
  99. #address-cells = <1>;
  100. #size-cells = <0>;
  101. port {
  102. dpi_out: endpoint@0 {
  103. remote-endpoint = <&panel_in>;
  104. };
  105. };
  106. };
  107. dsi1: dsi@7e700000 {
  108. compatible = "brcm,bcm2835-dsi1";
  109. reg = <0x7e700000 0x8c>;
  110. interrupts = <2 12>;
  111. #address-cells = <1>;
  112. #size-cells = <0>;
  113. #clock-cells = <1>;
  114. clocks = <&clocks BCM2835_PLLD_DSI1>,
  115. <&clocks BCM2835_CLOCK_DSI1E>,
  116. <&clocks BCM2835_CLOCK_DSI1P>;
  117. clock-names = "phy", "escape", "pixel";
  118. clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
  119. pitouchscreen: panel@0 {
  120. compatible = "raspberrypi,touchscreen";
  121. reg = <0>;
  122. <...>
  123. };
  124. };
  125. vec: vec@7e806000 {
  126. compatible = "brcm,bcm2835-vec";
  127. reg = <0x7e806000 0x1000>;
  128. clocks = <&clocks BCM2835_CLOCK_VEC>;
  129. interrupts = <2 27>;
  130. };
  131. v3d: v3d@7ec00000 {
  132. compatible = "brcm,bcm2835-v3d";
  133. reg = <0x7ec00000 0x1000>;
  134. interrupts = <1 10>;
  135. };
  136. vc4: gpu {
  137. compatible = "brcm,bcm2835-vc4";
  138. };
  139. panel: panel {
  140. compatible = "ontat,yx700wv03", "simple-panel";
  141. port {
  142. panel_in: endpoint {
  143. remote-endpoint = <&dpi_out>;
  144. };
  145. };
  146. };