Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/display/arm,pl11x.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: Arm PrimeCell Color LCD Controller PL110/PL111
0008 
0009 maintainers:
0010   - Liviu Dudau <Liviu.Dudau@arm.com>
0011   - Andre Przywara <andre.przywara@arm.com>
0012 
0013 description:
0014   The Arm Primcell PL010/PL111 is an LCD controller IP, than scans out
0015   a framebuffer region in system memory, and creates timed signals for
0016   a variety of LCD panels.
0017 
0018 # We need a select here so we don't match all nodes with 'arm,primecell'
0019 select:
0020   properties:
0021     compatible:
0022       contains:
0023         enum:
0024           - arm,pl110
0025           - arm,pl111
0026   required:
0027     - compatible
0028 
0029 properties:
0030   compatible:
0031     items:
0032       - enum:
0033           - arm,pl110
0034           - arm,pl111
0035       - const: arm,primecell
0036 
0037   reg:
0038     maxItems: 1
0039 
0040   interrupt-names:
0041     oneOf:
0042       - const: combined
0043         description:
0044           The IP provides four individual interrupt lines, but also one
0045           combined line. If the integration only connects this line to the
0046           interrupt controller, this single interrupt is noted here.
0047       - items:
0048           - const: mbe        # CLCDMBEINTR
0049           - const: vcomp      # CLCDVCOMPINTR
0050           - const: lnbu       # CLCDLNBUINTR
0051           - const: fuf        # CLCDFUFINTR
0052 
0053   interrupts:
0054     minItems: 1
0055     maxItems: 4
0056 
0057   clock-names:
0058     items:
0059       - const: clcdclk
0060       - const: apb_pclk
0061 
0062   clocks:
0063     items:
0064       - description: The CLCDCLK reference clock for the controller.
0065       - description: The HCLK AHB slave clock for the register access.
0066 
0067   memory-region:
0068     maxItems: 1
0069     description:
0070       Phandle to a node describing memory to be used for the framebuffer.
0071       If not present, the framebuffer may be located anywhere in memory.
0072 
0073   max-memory-bandwidth:
0074     $ref: /schemas/types.yaml#/definitions/uint32
0075     description:
0076       Maximum bandwidth in bytes per second that the cell's memory interface
0077       can handle.
0078       If not present, the memory interface is fast enough to handle all
0079       possible video modes.
0080 
0081   port:
0082     $ref: /schemas/graph.yaml#/$defs/port-base
0083     additionalProperties: false
0084 
0085     description:
0086       Output endpoint of the controller, connecting the LCD panel signals.
0087 
0088     properties:
0089       endpoint:
0090         $ref: /schemas/graph.yaml#/$defs/endpoint-base
0091         unevaluatedProperties: false
0092 
0093         properties:
0094           arm,pl11x,tft-r0g0b0-pads:
0095             $ref: /schemas/types.yaml#/definitions/uint32-array
0096             items:
0097               - description: index of CLD pad used for first red bit (R0)
0098               - description: index of CLD pad used for first green bit (G0)
0099               - description: index of CLD pad used for first blue bit (G0)
0100             deprecated: true
0101             description: |
0102               DEPRECATED. An array of three 32-bit values, defining the way
0103               CLD[23:0] pads are wired up.
0104               The first value contains the index of the "CLD" external pin (pad)
0105               used as R0 (first bit of the red component), the second value for
0106               green, the third value for blue.
0107               See also "LCD panel signal multiplexing details" paragraphs in the
0108               PL110/PL111 Technical Reference Manuals.
0109               This implicitly defines available color modes, for example:
0110               - PL111 TFT 4:4:4 panel:
0111                   arm,pl11x,tft-r0g0b0-pads = <4 15 20>;
0112               - PL110 TFT (1:)5:5:5 panel:
0113                   arm,pl11x,tft-r0g0b0-pads = <1 7 13>;
0114               - PL111 TFT (1:)5:5:5 panel:
0115                   arm,pl11x,tft-r0g0b0-pads = <3 11 19>;
0116               - PL111 TFT 5:6:5 panel:
0117                   arm,pl11x,tft-r0g0b0-pads = <3 10 19>;
0118               - PL110 and PL111 TFT 8:8:8 panel:
0119                   arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
0120               - PL110 and PL111 TFT 8:8:8 panel, R & B components swapped:
0121                   arm,pl11x,tft-r0g0b0-pads = <16 8 0>;
0122 
0123 additionalProperties: false
0124 
0125 required:
0126   - compatible
0127   - reg
0128   - clock-names
0129   - clocks
0130   - port
0131 
0132 allOf:
0133   - if:
0134       properties:
0135         interrupts:
0136           minItems: 2
0137       required:
0138         - interrupts
0139     then:
0140       required:
0141         - interrupt-names
0142 
0143 examples:
0144   - |
0145     clcd@10020000 {
0146         compatible = "arm,pl111", "arm,primecell";
0147         reg = <0x10020000 0x1000>;
0148         interrupt-names = "combined";
0149         interrupts = <44>;
0150         clocks = <&oscclk1>, <&oscclk2>;
0151         clock-names = "clcdclk", "apb_pclk";
0152         max-memory-bandwidth = <94371840>; /* Bps, 1024x768@60 16bpp */
0153 
0154         port {
0155             clcd_pads: endpoint {
0156                 remote-endpoint = <&clcd_panel>;
0157             };
0158         };
0159     };
0160 
0161     panel {
0162         compatible = "arm,rtsm-display";
0163 
0164         port {
0165             clcd_panel: endpoint {
0166                 remote-endpoint = <&clcd_pads>;
0167             };
0168         };
0169     };
0170 ...