1 Allwinner A10 Display Pipeline
2 ==============================
4 The Allwinner A10 Display pipeline is composed of several components
5 that are going to be documented below:
10 The TV Encoder supports the composite and VGA output. It is one end of
14 - compatible: value should be "allwinner,sun4i-a10-tv-encoder".
15 - reg: base address and size of memory-mapped region
16 - clocks: the clocks driving the TV encoder
17 - resets: phandle to the reset controller driving the encoder
19 - ports: A ports node with endpoint definitions as defined in
20 Documentation/devicetree/bindings/media/video-interfaces.txt. The
21 first port should be the input endpoint.
26 The TCON acts as a timing controller for RGB, LVDS and TV interfaces.
29 - compatible: value must be either:
30 * allwinner,sun5i-a13-tcon
31 * allwinner,sun6i-a31-tcon
32 * allwinner,sun6i-a31s-tcon
33 * allwinner,sun8i-a33-tcon
34 - reg: base address and size of memory-mapped region
35 - interrupts: interrupt associated to this IP
36 - clocks: phandles to the clocks feeding the TCON. Three are needed:
37 - 'ahb': the interface clocks
38 - 'tcon-ch0': The clock driving the TCON channel 0
39 - resets: phandles to the reset controllers driving the encoder
40 - "lcd": the reset line for the TCON channel 0
42 - clock-names: the clock names mentioned above
43 - reset-names: the reset names mentioned above
44 - clock-output-names: Name of the pixel clock created
46 - ports: A ports node with endpoint definitions as defined in
47 Documentation/devicetree/bindings/media/video-interfaces.txt. The
48 first port should be the input endpoint, the second one the output
50 The output should have two endpoints. The first is the block
51 connected to the TCON channel 0 (usually a panel or a bridge), the
52 second the block connected to the TCON channel 1 (usually the TV
55 On SoCs other than the A33, there is one more clock required:
56 - 'tcon-ch1': The clock driving the TCON channel 1
61 The DRC (Dynamic Range Controller), found in the latest Allwinner SoCs
62 (A31, A23, A33), allows to dynamically adjust pixel
63 brightness/contrast based on histogram measurements for LCD content
64 adaptive backlight control.
68 - compatible: value must be one of:
69 * allwinner,sun6i-a31-drc
70 * allwinner,sun6i-a31s-drc
71 * allwinner,sun8i-a33-drc
72 - reg: base address and size of the memory-mapped region.
73 - interrupts: interrupt associated to this IP
74 - clocks: phandles to the clocks feeding the DRC
75 * ahb: the DRC interface clock
76 * mod: the DRC module clock
77 * ram: the DRC DRAM clock
78 - clock-names: the clock names mentioned above
79 - resets: phandles to the reset line driving the DRC
81 - ports: A ports node with endpoint definitions as defined in
82 Documentation/devicetree/bindings/media/video-interfaces.txt. The
83 first port should be the input endpoints, the second one the outputs
85 Display Engine Backend
86 ----------------------
88 The display engine backend exposes layers and sprites to the
92 - compatible: value must be one of:
93 * allwinner,sun5i-a13-display-backend
94 * allwinner,sun6i-a31-display-backend
95 * allwinner,sun8i-a33-display-backend
96 - reg: base address and size of the memory-mapped region.
97 - clocks: phandles to the clocks feeding the frontend and backend
98 * ahb: the backend interface clock
99 * mod: the backend module clock
100 * ram: the backend DRAM clock
101 - clock-names: the clock names mentioned above
102 - resets: phandles to the reset controllers driving the backend
104 - ports: A ports node with endpoint definitions as defined in
105 Documentation/devicetree/bindings/media/video-interfaces.txt. The
106 first port should be the input endpoints, the second one the output
108 On the A33, some additional properties are required:
109 - reg needs to have an additional region corresponding to the SAT
110 - reg-names need to be set, with "be" and "sat"
111 - clocks and clock-names need to have a phandle to the SAT bus
112 clocks, whose name will be "sat"
113 - resets and reset-names need to have a phandle to the SAT bus
114 resets, whose name will be "sat"
116 Display Engine Frontend
117 -----------------------
119 The display engine frontend does formats conversion, scaling,
120 deinterlacing and color space conversion.
123 - compatible: value must be one of:
124 * allwinner,sun5i-a13-display-frontend
125 * allwinner,sun6i-a31-display-frontend
126 * allwinner,sun8i-a33-display-frontend
127 - reg: base address and size of the memory-mapped region.
128 - interrupts: interrupt associated to this IP
129 - clocks: phandles to the clocks feeding the frontend and backend
130 * ahb: the backend interface clock
131 * mod: the backend module clock
132 * ram: the backend DRAM clock
133 - clock-names: the clock names mentioned above
134 - resets: phandles to the reset controllers driving the backend
136 - ports: A ports node with endpoint definitions as defined in
137 Documentation/devicetree/bindings/media/video-interfaces.txt. The
138 first port should be the input endpoints, the second one the outputs
141 Display Engine Pipeline
142 -----------------------
144 The display engine pipeline (and its entry point, since it can be
145 either directly the backend or the frontend) is represented as an
149 - compatible: value must be one of:
150 * allwinner,sun5i-a13-display-engine
151 * allwinner,sun6i-a31-display-engine
152 * allwinner,sun6i-a31s-display-engine
153 * allwinner,sun8i-a33-display-engine
155 - allwinner,pipelines: list of phandle to the display engine
161 compatible = "olimex,lcd-olinuxino-43-ts";
162 #address-cells = <1>;
166 #address-cells = <1>;
169 panel_input: endpoint {
170 remote-endpoint = <&tcon0_out_panel>;
175 tve0: tv-encoder@01c0a000 {
176 compatible = "allwinner,sun4i-a10-tv-encoder";
177 reg = <0x01c0a000 0x1000>;
178 clocks = <&ahb_gates 34>;
179 resets = <&tcon_ch0_clk 0>;
182 #address-cells = <1>;
185 tve0_in_tcon0: endpoint@0 {
187 remote-endpoint = <&tcon0_out_tve0>;
192 tcon0: lcd-controller@1c0c000 {
193 compatible = "allwinner,sun5i-a13-tcon";
194 reg = <0x01c0c000 0x1000>;
196 resets = <&tcon_ch0_clk 1>;
198 clocks = <&ahb_gates 36>,
204 clock-output-names = "tcon-pixel-clock";
207 #address-cells = <1>;
211 #address-cells = <1>;
215 tcon0_in_be0: endpoint@0 {
217 remote-endpoint = <&be0_out_tcon0>;
222 #address-cells = <1>;
226 tcon0_out_panel: endpoint@0 {
228 remote-endpoint = <&panel_input>;
231 tcon0_out_tve0: endpoint@1 {
233 remote-endpoint = <&tve0_in_tcon0>;
239 fe0: display-frontend@1e00000 {
240 compatible = "allwinner,sun5i-a13-display-frontend";
241 reg = <0x01e00000 0x20000>;
243 clocks = <&ahb_gates 46>, <&de_fe_clk>,
245 clock-names = "ahb", "mod",
247 resets = <&de_fe_clk>;
250 #address-cells = <1>;
254 #address-cells = <1>;
258 fe0_out_be0: endpoint {
259 remote-endpoint = <&be0_in_fe0>;
265 be0: display-backend@1e60000 {
266 compatible = "allwinner,sun5i-a13-display-backend";
267 reg = <0x01e60000 0x10000>;
268 clocks = <&ahb_gates 44>, <&de_be_clk>,
270 clock-names = "ahb", "mod",
272 resets = <&de_be_clk>;
275 #address-cells = <1>;
279 #address-cells = <1>;
283 be0_in_fe0: endpoint@0 {
285 remote-endpoint = <&fe0_out_be0>;
290 #address-cells = <1>;
294 be0_out_tcon0: endpoint@0 {
296 remote-endpoint = <&tcon0_in_be0>;
303 compatible = "allwinner,sun5i-a13-display-engine";
304 allwinner,pipelines = <&fe0>;