xref: /freebsd/sys/contrib/device-tree/Bindings/display/arm,pl11x.yaml (revision b97ee269eae3cbaf35c18f51a459aea581c2a7dc)
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