1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/display/arm,pl11x.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Arm PrimeCell Color LCD Controller PL110/PL111 8 9maintainers: 10 - Liviu Dudau <Liviu.Dudau@arm.com> 11 - Andre Przywara <andre.przywara@arm.com> 12 13description: 14 The Arm Primcell PL010/PL111 is an LCD controller IP, than scans out 15 a framebuffer region in system memory, and creates timed signals for 16 a variety of LCD panels. 17 18# We need a select here so we don't match all nodes with 'arm,primecell' 19select: 20 properties: 21 compatible: 22 contains: 23 enum: 24 - arm,pl110 25 - arm,pl111 26 required: 27 - compatible 28 29properties: 30 compatible: 31 items: 32 - enum: 33 - arm,pl110 34 - arm,pl111 35 - const: arm,primecell 36 37 reg: 38 maxItems: 1 39 40 interrupt-names: 41 oneOf: 42 - const: combined 43 description: 44 The IP provides four individual interrupt lines, but also one 45 combined line. If the integration only connects this line to the 46 interrupt controller, this single interrupt is noted here. 47 - items: 48 - const: mbe # CLCDMBEINTR 49 - const: vcomp # CLCDVCOMPINTR 50 - const: lnbu # CLCDLNBUINTR 51 - const: fuf # CLCDFUFINTR 52 53 interrupts: 54 minItems: 1 55 maxItems: 4 56 57 clock-names: 58 items: 59 - const: clcdclk 60 - const: apb_pclk 61 62 clocks: 63 items: 64 - description: The CLCDCLK reference clock for the controller. 65 - description: The HCLK AHB slave clock for the register access. 66 67 memory-region: 68 maxItems: 1 69 description: 70 Phandle to a node describing memory to be used for the framebuffer. 71 If not present, the framebuffer may be located anywhere in memory. 72 73 max-memory-bandwidth: 74 $ref: /schemas/types.yaml#/definitions/uint32 75 description: 76 Maximum bandwidth in bytes per second that the cell's memory interface 77 can handle. 78 If not present, the memory interface is fast enough to handle all 79 possible video modes. 80 81 port: 82 $ref: /schemas/graph.yaml#/$defs/port-base 83 additionalProperties: false 84 85 description: 86 Output endpoint of the controller, connecting the LCD panel signals. 87 88 properties: 89 endpoint: 90 $ref: /schemas/graph.yaml#/$defs/endpoint-base 91 unevaluatedProperties: false 92 93 properties: 94 arm,pl11x,tft-r0g0b0-pads: 95 $ref: /schemas/types.yaml#/definitions/uint32-array 96 items: 97 - description: index of CLD pad used for first red bit (R0) 98 - description: index of CLD pad used for first green bit (G0) 99 - description: index of CLD pad used for first blue bit (G0) 100 deprecated: true 101 description: | 102 DEPRECATED. An array of three 32-bit values, defining the way 103 CLD[23:0] pads are wired up. 104 The first value contains the index of the "CLD" external pin (pad) 105 used as R0 (first bit of the red component), the second value for 106 green, the third value for blue. 107 See also "LCD panel signal multiplexing details" paragraphs in the 108 PL110/PL111 Technical Reference Manuals. 109 This implicitly defines available color modes, for example: 110 - PL111 TFT 4:4:4 panel: 111 arm,pl11x,tft-r0g0b0-pads = <4 15 20>; 112 - PL110 TFT (1:)5:5:5 panel: 113 arm,pl11x,tft-r0g0b0-pads = <1 7 13>; 114 - PL111 TFT (1:)5:5:5 panel: 115 arm,pl11x,tft-r0g0b0-pads = <3 11 19>; 116 - PL111 TFT 5:6:5 panel: 117 arm,pl11x,tft-r0g0b0-pads = <3 10 19>; 118 - PL110 and PL111 TFT 8:8:8 panel: 119 arm,pl11x,tft-r0g0b0-pads = <0 8 16>; 120 - PL110 and PL111 TFT 8:8:8 panel, R & B components swapped: 121 arm,pl11x,tft-r0g0b0-pads = <16 8 0>; 122 123additionalProperties: false 124 125required: 126 - compatible 127 - reg 128 - clock-names 129 - clocks 130 - port 131 132allOf: 133 - if: 134 properties: 135 interrupts: 136 minItems: 2 137 required: 138 - interrupts 139 then: 140 required: 141 - interrupt-names 142 143examples: 144 - | 145 clcd@10020000 { 146 compatible = "arm,pl111", "arm,primecell"; 147 reg = <0x10020000 0x1000>; 148 interrupt-names = "combined"; 149 interrupts = <44>; 150 clocks = <&oscclk1>, <&oscclk2>; 151 clock-names = "clcdclk", "apb_pclk"; 152 max-memory-bandwidth = <94371840>; /* Bps, 1024x768@60 16bpp */ 153 154 port { 155 clcd_pads: endpoint { 156 remote-endpoint = <&clcd_panel>; 157 }; 158 }; 159 }; 160 161 panel { 162 compatible = "arm,rtsm-display", "panel-dpi"; 163 power-supply = <&vcc_supply>; 164 165 port { 166 clcd_panel: endpoint { 167 remote-endpoint = <&clcd_pads>; 168 }; 169 }; 170 171 panel-timing { 172 clock-frequency = <25175000>; 173 hactive = <640>; 174 hback-porch = <40>; 175 hfront-porch = <24>; 176 hsync-len = <96>; 177 vactive = <480>; 178 vback-porch = <32>; 179 vfront-porch = <11>; 180 vsync-len = <2>; 181 }; 182 }; 183... 184