Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.13 422 lines 12 kB view raw
1Allwinner A10 Display Pipeline 2============================== 3 4The Allwinner A10 Display pipeline is composed of several components 5that are going to be documented below: 6 7For the input port of all components up to the TCON in the display 8pipeline, if there are multiple components, the local endpoint IDs 9must correspond to the index of the upstream block. For example, if 10the remote endpoint is Frontend 1, then the local endpoint ID must 11be 1. 12 13Conversely, for the output ports of the same group, the remote endpoint 14ID must be the index of the local hardware block. If the local backend 15is backend 1, then the remote endpoint ID must be 1. 16 17HDMI Encoder 18------------ 19 20The HDMI Encoder supports the HDMI video and audio outputs, and does 21CEC. It is one end of the pipeline. 22 23Required properties: 24 - compatible: value must be one of: 25 * allwinner,sun5i-a10s-hdmi 26 - reg: base address and size of memory-mapped region 27 - interrupts: interrupt associated to this IP 28 - clocks: phandles to the clocks feeding the HDMI encoder 29 * ahb: the HDMI interface clock 30 * mod: the HDMI module clock 31 * pll-0: the first video PLL 32 * pll-1: the second video PLL 33 - clock-names: the clock names mentioned above 34 - dmas: phandles to the DMA channels used by the HDMI encoder 35 * ddc-tx: The channel for DDC transmission 36 * ddc-rx: The channel for DDC reception 37 * audio-tx: The channel used for audio transmission 38 - dma-names: the channel names mentioned above 39 40 - ports: A ports node with endpoint definitions as defined in 41 Documentation/devicetree/bindings/media/video-interfaces.txt. The 42 first port should be the input endpoint. The second should be the 43 output, usually to an HDMI connector. 44 45TV Encoder 46---------- 47 48The TV Encoder supports the composite and VGA output. It is one end of 49the pipeline. 50 51Required properties: 52 - compatible: value should be "allwinner,sun4i-a10-tv-encoder". 53 - reg: base address and size of memory-mapped region 54 - clocks: the clocks driving the TV encoder 55 - resets: phandle to the reset controller driving the encoder 56 57- ports: A ports node with endpoint definitions as defined in 58 Documentation/devicetree/bindings/media/video-interfaces.txt. The 59 first port should be the input endpoint. 60 61TCON 62---- 63 64The TCON acts as a timing controller for RGB, LVDS and TV interfaces. 65 66Required properties: 67 - compatible: value must be either: 68 * allwinner,sun5i-a13-tcon 69 * allwinner,sun6i-a31-tcon 70 * allwinner,sun6i-a31s-tcon 71 * allwinner,sun8i-a33-tcon 72 * allwinner,sun8i-v3s-tcon 73 - reg: base address and size of memory-mapped region 74 - interrupts: interrupt associated to this IP 75 - clocks: phandles to the clocks feeding the TCON. Three are needed: 76 - 'ahb': the interface clocks 77 - 'tcon-ch0': The clock driving the TCON channel 0 78 - resets: phandles to the reset controllers driving the encoder 79 - "lcd": the reset line for the TCON channel 0 80 81 - clock-names: the clock names mentioned above 82 - reset-names: the reset names mentioned above 83 - clock-output-names: Name of the pixel clock created 84 85- ports: A ports node with endpoint definitions as defined in 86 Documentation/devicetree/bindings/media/video-interfaces.txt. The 87 first port should be the input endpoint, the second one the output 88 89 The output may have multiple endpoints. The TCON has two channels, 90 usually with the first channel being used for the panels interfaces 91 (RGB, LVDS, etc.), and the second being used for the outputs that 92 require another controller (TV Encoder, HDMI, etc.). The endpoints 93 will take an extra property, allwinner,tcon-channel, to specify the 94 channel the endpoint is associated to. If that property is not 95 present, the endpoint number will be used as the channel number. 96 97On SoCs other than the A33 and V3s, there is one more clock required: 98 - 'tcon-ch1': The clock driving the TCON channel 1 99 100DRC 101--- 102 103The DRC (Dynamic Range Controller), found in the latest Allwinner SoCs 104(A31, A23, A33), allows to dynamically adjust pixel 105brightness/contrast based on histogram measurements for LCD content 106adaptive backlight control. 107 108 109Required properties: 110 - compatible: value must be one of: 111 * allwinner,sun6i-a31-drc 112 * allwinner,sun6i-a31s-drc 113 * allwinner,sun8i-a33-drc 114 - reg: base address and size of the memory-mapped region. 115 - interrupts: interrupt associated to this IP 116 - clocks: phandles to the clocks feeding the DRC 117 * ahb: the DRC interface clock 118 * mod: the DRC module clock 119 * ram: the DRC DRAM clock 120 - clock-names: the clock names mentioned above 121 - resets: phandles to the reset line driving the DRC 122 123- ports: A ports node with endpoint definitions as defined in 124 Documentation/devicetree/bindings/media/video-interfaces.txt. The 125 first port should be the input endpoints, the second one the outputs 126 127Display Engine Backend 128---------------------- 129 130The display engine backend exposes layers and sprites to the 131system. 132 133Required properties: 134 - compatible: value must be one of: 135 * allwinner,sun5i-a13-display-backend 136 * allwinner,sun6i-a31-display-backend 137 * allwinner,sun8i-a33-display-backend 138 - reg: base address and size of the memory-mapped region. 139 - interrupts: interrupt associated to this IP 140 - clocks: phandles to the clocks feeding the frontend and backend 141 * ahb: the backend interface clock 142 * mod: the backend module clock 143 * ram: the backend DRAM clock 144 - clock-names: the clock names mentioned above 145 - resets: phandles to the reset controllers driving the backend 146 147- ports: A ports node with endpoint definitions as defined in 148 Documentation/devicetree/bindings/media/video-interfaces.txt. The 149 first port should be the input endpoints, the second one the output 150 151On the A33, some additional properties are required: 152 - reg needs to have an additional region corresponding to the SAT 153 - reg-names need to be set, with "be" and "sat" 154 - clocks and clock-names need to have a phandle to the SAT bus 155 clocks, whose name will be "sat" 156 - resets and reset-names need to have a phandle to the SAT bus 157 resets, whose name will be "sat" 158 159Display Engine Frontend 160----------------------- 161 162The display engine frontend does formats conversion, scaling, 163deinterlacing and color space conversion. 164 165Required properties: 166 - compatible: value must be one of: 167 * allwinner,sun5i-a13-display-frontend 168 * allwinner,sun6i-a31-display-frontend 169 * allwinner,sun8i-a33-display-frontend 170 - reg: base address and size of the memory-mapped region. 171 - interrupts: interrupt associated to this IP 172 - clocks: phandles to the clocks feeding the frontend and backend 173 * ahb: the backend interface clock 174 * mod: the backend module clock 175 * ram: the backend DRAM clock 176 - clock-names: the clock names mentioned above 177 - resets: phandles to the reset controllers driving the backend 178 179- ports: A ports node with endpoint definitions as defined in 180 Documentation/devicetree/bindings/media/video-interfaces.txt. The 181 first port should be the input endpoints, the second one the outputs 182 183Display Engine 2.0 Mixer 184------------------------ 185 186The DE2 mixer have many functionalities, currently only layer blending is 187supported. 188 189Required properties: 190 - compatible: value must be one of: 191 * allwinner,sun8i-v3s-de2-mixer 192 - reg: base address and size of the memory-mapped region. 193 - clocks: phandles to the clocks feeding the mixer 194 * bus: the mixer interface clock 195 * mod: the mixer module clock 196 - clock-names: the clock names mentioned above 197 - resets: phandles to the reset controllers driving the mixer 198 199- ports: A ports node with endpoint definitions as defined in 200 Documentation/devicetree/bindings/media/video-interfaces.txt. The 201 first port should be the input endpoints, the second one the output 202 203 204Display Engine Pipeline 205----------------------- 206 207The display engine pipeline (and its entry point, since it can be 208either directly the backend or the frontend) is represented as an 209extra node. 210 211Required properties: 212 - compatible: value must be one of: 213 * allwinner,sun5i-a10s-display-engine 214 * allwinner,sun5i-a13-display-engine 215 * allwinner,sun6i-a31-display-engine 216 * allwinner,sun6i-a31s-display-engine 217 * allwinner,sun8i-a33-display-engine 218 * allwinner,sun8i-v3s-display-engine 219 220 - allwinner,pipelines: list of phandle to the display engine 221 frontends (DE 1.0) or mixers (DE 2.0) available. 222 223Example: 224 225panel: panel { 226 compatible = "olimex,lcd-olinuxino-43-ts"; 227 #address-cells = <1>; 228 #size-cells = <0>; 229 230 port { 231 #address-cells = <1>; 232 #size-cells = <0>; 233 234 panel_input: endpoint { 235 remote-endpoint = <&tcon0_out_panel>; 236 }; 237 }; 238}; 239 240connector { 241 compatible = "hdmi-connector"; 242 type = "a"; 243 244 port { 245 hdmi_con_in: endpoint { 246 remote-endpoint = <&hdmi_out_con>; 247 }; 248 }; 249}; 250 251hdmi: hdmi@01c16000 { 252 compatible = "allwinner,sun5i-a10s-hdmi"; 253 reg = <0x01c16000 0x1000>; 254 interrupts = <58>; 255 clocks = <&ccu CLK_AHB_HDMI>, <&ccu CLK_HDMI>, 256 <&ccu CLK_PLL_VIDEO0_2X>, 257 <&ccu CLK_PLL_VIDEO1_2X>; 258 clock-names = "ahb", "mod", "pll-0", "pll-1"; 259 dmas = <&dma SUN4I_DMA_NORMAL 16>, 260 <&dma SUN4I_DMA_NORMAL 16>, 261 <&dma SUN4I_DMA_DEDICATED 24>; 262 dma-names = "ddc-tx", "ddc-rx", "audio-tx"; 263 status = "disabled"; 264 265 ports { 266 #address-cells = <1>; 267 #size-cells = <0>; 268 269 port@0 { 270 #address-cells = <1>; 271 #size-cells = <0>; 272 reg = <0>; 273 274 hdmi_in_tcon0: endpoint { 275 remote-endpoint = <&tcon0_out_hdmi>; 276 }; 277 }; 278 279 port@1 { 280 #address-cells = <1>; 281 #size-cells = <0>; 282 reg = <1>; 283 284 hdmi_out_con: endpoint { 285 remote-endpoint = <&hdmi_con_in>; 286 }; 287 }; 288 }; 289}; 290 291tve0: tv-encoder@01c0a000 { 292 compatible = "allwinner,sun4i-a10-tv-encoder"; 293 reg = <0x01c0a000 0x1000>; 294 clocks = <&ahb_gates 34>; 295 resets = <&tcon_ch0_clk 0>; 296 297 port { 298 #address-cells = <1>; 299 #size-cells = <0>; 300 301 tve0_in_tcon0: endpoint@0 { 302 reg = <0>; 303 remote-endpoint = <&tcon0_out_tve0>; 304 }; 305 }; 306}; 307 308tcon0: lcd-controller@1c0c000 { 309 compatible = "allwinner,sun5i-a13-tcon"; 310 reg = <0x01c0c000 0x1000>; 311 interrupts = <44>; 312 resets = <&tcon_ch0_clk 1>; 313 reset-names = "lcd"; 314 clocks = <&ahb_gates 36>, 315 <&tcon_ch0_clk>, 316 <&tcon_ch1_clk>; 317 clock-names = "ahb", 318 "tcon-ch0", 319 "tcon-ch1"; 320 clock-output-names = "tcon-pixel-clock"; 321 322 ports { 323 #address-cells = <1>; 324 #size-cells = <0>; 325 326 tcon0_in: port@0 { 327 #address-cells = <1>; 328 #size-cells = <0>; 329 reg = <0>; 330 331 tcon0_in_be0: endpoint@0 { 332 reg = <0>; 333 remote-endpoint = <&be0_out_tcon0>; 334 }; 335 }; 336 337 tcon0_out: port@1 { 338 #address-cells = <1>; 339 #size-cells = <0>; 340 reg = <1>; 341 342 tcon0_out_panel: endpoint@0 { 343 reg = <0>; 344 remote-endpoint = <&panel_input>; 345 }; 346 347 tcon0_out_tve0: endpoint@1 { 348 reg = <1>; 349 remote-endpoint = <&tve0_in_tcon0>; 350 }; 351 }; 352 }; 353}; 354 355fe0: display-frontend@1e00000 { 356 compatible = "allwinner,sun5i-a13-display-frontend"; 357 reg = <0x01e00000 0x20000>; 358 interrupts = <47>; 359 clocks = <&ahb_gates 46>, <&de_fe_clk>, 360 <&dram_gates 25>; 361 clock-names = "ahb", "mod", 362 "ram"; 363 resets = <&de_fe_clk>; 364 365 ports { 366 #address-cells = <1>; 367 #size-cells = <0>; 368 369 fe0_out: port@1 { 370 #address-cells = <1>; 371 #size-cells = <0>; 372 reg = <1>; 373 374 fe0_out_be0: endpoint { 375 remote-endpoint = <&be0_in_fe0>; 376 }; 377 }; 378 }; 379}; 380 381be0: display-backend@1e60000 { 382 compatible = "allwinner,sun5i-a13-display-backend"; 383 reg = <0x01e60000 0x10000>; 384 interrupts = <47>; 385 clocks = <&ahb_gates 44>, <&de_be_clk>, 386 <&dram_gates 26>; 387 clock-names = "ahb", "mod", 388 "ram"; 389 resets = <&de_be_clk>; 390 391 ports { 392 #address-cells = <1>; 393 #size-cells = <0>; 394 395 be0_in: port@0 { 396 #address-cells = <1>; 397 #size-cells = <0>; 398 reg = <0>; 399 400 be0_in_fe0: endpoint@0 { 401 reg = <0>; 402 remote-endpoint = <&fe0_out_be0>; 403 }; 404 }; 405 406 be0_out: port@1 { 407 #address-cells = <1>; 408 #size-cells = <0>; 409 reg = <1>; 410 411 be0_out_tcon0: endpoint@0 { 412 reg = <0>; 413 remote-endpoint = <&tcon0_in_be0>; 414 }; 415 }; 416 }; 417}; 418 419display-engine { 420 compatible = "allwinner,sun5i-a13-display-engine"; 421 allwinner,pipelines = <&fe0>; 422};