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