1*833e5d42SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*833e5d42SEmmanuel Vadot%YAML 1.2 3*833e5d42SEmmanuel Vadot--- 4*833e5d42SEmmanuel Vadot$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc.yaml# 5*833e5d42SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*833e5d42SEmmanuel Vadot 7*833e5d42SEmmanuel Vadottitle: Freescale i.MX8qxp Display Controller 8*833e5d42SEmmanuel Vadot 9*833e5d42SEmmanuel Vadotdescription: | 10*833e5d42SEmmanuel Vadot The Freescale i.MX8qxp Display Controller(DC) is comprised of three main 11*833e5d42SEmmanuel Vadot components that include a blit engine for 2D graphics accelerations, display 12*833e5d42SEmmanuel Vadot controller for display output processing, as well as a command sequencer. 13*833e5d42SEmmanuel Vadot 14*833e5d42SEmmanuel Vadot Display buffers Source buffers 15*833e5d42SEmmanuel Vadot (AXI read master) (AXI read master) 16*833e5d42SEmmanuel Vadot | .......... | | | | 17*833e5d42SEmmanuel Vadot +---------------------------+------------+------------------+-+-+------+ 18*833e5d42SEmmanuel Vadot | Display Controller (DC) | .......... | | | | | 19*833e5d42SEmmanuel Vadot | | | | | | | 20*833e5d42SEmmanuel Vadot | @@@@@@@@@@@ +----------+------------+------------+ | | | | 21*833e5d42SEmmanuel Vadot A | | Command | | V V | | | | | 22*833e5d42SEmmanuel Vadot X <-+->| Sequencer | | @@@@@@@@@@@@@@@@@@@@@@@@@@@@ | V V V | 23*833e5d42SEmmanuel Vadot I | | (AXI CLK) | | | | | @@@@@@@@@@ | 24*833e5d42SEmmanuel Vadot | @@@@@@@@@@@ | | Pixel Engine | | | | | 25*833e5d42SEmmanuel Vadot | | | | (AXI CLK) | | | | | 26*833e5d42SEmmanuel Vadot | V | @@@@@@@@@@@@@@@@@@@@@@@@@@@@ | | | | 27*833e5d42SEmmanuel Vadot A | *********** | | | | | | | Blit | | 28*833e5d42SEmmanuel Vadot H <-+->| Configure | | V V V V | | Engine | | 29*833e5d42SEmmanuel Vadot B | | (CFG CLK) | | 00000000000 11111111111 | | (AXI CLK)| | 30*833e5d42SEmmanuel Vadot | *********** | | Display | | Display | | | | | 31*833e5d42SEmmanuel Vadot | | | Engine | | Engine | | | | | 32*833e5d42SEmmanuel Vadot | | | (Disp CLK)| | (Disp CLK)| | | | | 33*833e5d42SEmmanuel Vadot | @@@@@@@@@@@ | 00000000000 11111111111 | @@@@@@@@@@ | 34*833e5d42SEmmanuel Vadot I | | Common | | | | | | | 35*833e5d42SEmmanuel Vadot R <-+--| Control | | | Display | | | | 36*833e5d42SEmmanuel Vadot Q | | (AXI CLK) | | | Controller | | | | 37*833e5d42SEmmanuel Vadot | @@@@@@@@@@@ +------------------------------------+ | | 38*833e5d42SEmmanuel Vadot | | | ^ | | 39*833e5d42SEmmanuel Vadot +--------------------------+----------------+-------+---------+--------+ 40*833e5d42SEmmanuel Vadot ^ | | | | 41*833e5d42SEmmanuel Vadot | V V | V 42*833e5d42SEmmanuel Vadot Clocks & Resets Display Display Panic Destination 43*833e5d42SEmmanuel Vadot Output0 Output1 Control buffer 44*833e5d42SEmmanuel Vadot (AXI write master) 45*833e5d42SEmmanuel Vadot 46*833e5d42SEmmanuel Vadotmaintainers: 47*833e5d42SEmmanuel Vadot - Liu Ying <victor.liu@nxp.com> 48*833e5d42SEmmanuel Vadot 49*833e5d42SEmmanuel Vadotproperties: 50*833e5d42SEmmanuel Vadot compatible: 51*833e5d42SEmmanuel Vadot const: fsl,imx8qxp-dc 52*833e5d42SEmmanuel Vadot 53*833e5d42SEmmanuel Vadot reg: 54*833e5d42SEmmanuel Vadot maxItems: 1 55*833e5d42SEmmanuel Vadot 56*833e5d42SEmmanuel Vadot clocks: 57*833e5d42SEmmanuel Vadot maxItems: 1 58*833e5d42SEmmanuel Vadot 59*833e5d42SEmmanuel Vadot resets: 60*833e5d42SEmmanuel Vadot maxItems: 2 61*833e5d42SEmmanuel Vadot 62*833e5d42SEmmanuel Vadot reset-names: 63*833e5d42SEmmanuel Vadot items: 64*833e5d42SEmmanuel Vadot - const: axi 65*833e5d42SEmmanuel Vadot - const: cfg 66*833e5d42SEmmanuel Vadot 67*833e5d42SEmmanuel Vadot power-domains: 68*833e5d42SEmmanuel Vadot maxItems: 1 69*833e5d42SEmmanuel Vadot 70*833e5d42SEmmanuel Vadot "#address-cells": 71*833e5d42SEmmanuel Vadot const: 1 72*833e5d42SEmmanuel Vadot 73*833e5d42SEmmanuel Vadot "#size-cells": 74*833e5d42SEmmanuel Vadot const: 1 75*833e5d42SEmmanuel Vadot 76*833e5d42SEmmanuel Vadot ranges: true 77*833e5d42SEmmanuel Vadot 78*833e5d42SEmmanuel VadotpatternProperties: 79*833e5d42SEmmanuel Vadot "^command-sequencer@[0-9a-f]+$": 80*833e5d42SEmmanuel Vadot type: object 81*833e5d42SEmmanuel Vadot additionalProperties: true 82*833e5d42SEmmanuel Vadot 83*833e5d42SEmmanuel Vadot properties: 84*833e5d42SEmmanuel Vadot compatible: 85*833e5d42SEmmanuel Vadot const: fsl,imx8qxp-dc-command-sequencer 86*833e5d42SEmmanuel Vadot 87*833e5d42SEmmanuel Vadot "^display-engine@[0-9a-f]+$": 88*833e5d42SEmmanuel Vadot type: object 89*833e5d42SEmmanuel Vadot additionalProperties: true 90*833e5d42SEmmanuel Vadot 91*833e5d42SEmmanuel Vadot properties: 92*833e5d42SEmmanuel Vadot compatible: 93*833e5d42SEmmanuel Vadot const: fsl,imx8qxp-dc-display-engine 94*833e5d42SEmmanuel Vadot 95*833e5d42SEmmanuel Vadot "^interrupt-controller@[0-9a-f]+$": 96*833e5d42SEmmanuel Vadot type: object 97*833e5d42SEmmanuel Vadot additionalProperties: true 98*833e5d42SEmmanuel Vadot 99*833e5d42SEmmanuel Vadot properties: 100*833e5d42SEmmanuel Vadot compatible: 101*833e5d42SEmmanuel Vadot const: fsl,imx8qxp-dc-intc 102*833e5d42SEmmanuel Vadot 103*833e5d42SEmmanuel Vadot "^pixel-engine@[0-9a-f]+$": 104*833e5d42SEmmanuel Vadot type: object 105*833e5d42SEmmanuel Vadot additionalProperties: true 106*833e5d42SEmmanuel Vadot 107*833e5d42SEmmanuel Vadot properties: 108*833e5d42SEmmanuel Vadot compatible: 109*833e5d42SEmmanuel Vadot const: fsl,imx8qxp-dc-pixel-engine 110*833e5d42SEmmanuel Vadot 111*833e5d42SEmmanuel Vadot "^pmu@[0-9a-f]+$": 112*833e5d42SEmmanuel Vadot type: object 113*833e5d42SEmmanuel Vadot additionalProperties: true 114*833e5d42SEmmanuel Vadot 115*833e5d42SEmmanuel Vadot properties: 116*833e5d42SEmmanuel Vadot compatible: 117*833e5d42SEmmanuel Vadot const: fsl,imx8qxp-dc-axi-performance-counter 118*833e5d42SEmmanuel Vadot 119*833e5d42SEmmanuel Vadotrequired: 120*833e5d42SEmmanuel Vadot - compatible 121*833e5d42SEmmanuel Vadot - reg 122*833e5d42SEmmanuel Vadot - clocks 123*833e5d42SEmmanuel Vadot - power-domains 124*833e5d42SEmmanuel Vadot - "#address-cells" 125*833e5d42SEmmanuel Vadot - "#size-cells" 126*833e5d42SEmmanuel Vadot - ranges 127*833e5d42SEmmanuel Vadot 128*833e5d42SEmmanuel VadotadditionalProperties: false 129*833e5d42SEmmanuel Vadot 130*833e5d42SEmmanuel Vadotexamples: 131*833e5d42SEmmanuel Vadot - | 132*833e5d42SEmmanuel Vadot #include <dt-bindings/clock/imx8-lpcg.h> 133*833e5d42SEmmanuel Vadot #include <dt-bindings/firmware/imx/rsrc.h> 134*833e5d42SEmmanuel Vadot 135*833e5d42SEmmanuel Vadot display-controller@56180000 { 136*833e5d42SEmmanuel Vadot compatible = "fsl,imx8qxp-dc"; 137*833e5d42SEmmanuel Vadot reg = <0x56180000 0x40000>; 138*833e5d42SEmmanuel Vadot clocks = <&dc0_lpcg IMX_LPCG_CLK_4>; 139*833e5d42SEmmanuel Vadot power-domains = <&pd IMX_SC_R_DC_0>; 140*833e5d42SEmmanuel Vadot #address-cells = <1>; 141*833e5d42SEmmanuel Vadot #size-cells = <1>; 142*833e5d42SEmmanuel Vadot ranges; 143*833e5d42SEmmanuel Vadot 144*833e5d42SEmmanuel Vadot interrupt-controller@56180040 { 145*833e5d42SEmmanuel Vadot compatible = "fsl,imx8qxp-dc-intc"; 146*833e5d42SEmmanuel Vadot reg = <0x56180040 0x60>; 147*833e5d42SEmmanuel Vadot clocks = <&dc0_lpcg IMX_LPCG_CLK_5>; 148*833e5d42SEmmanuel Vadot interrupt-controller; 149*833e5d42SEmmanuel Vadot interrupt-parent = <&dc0_irqsteer>; 150*833e5d42SEmmanuel Vadot #interrupt-cells = <1>; 151*833e5d42SEmmanuel Vadot interrupts = <448>, <449>, <450>, <64>, 152*833e5d42SEmmanuel Vadot <65>, <66>, <67>, <68>, 153*833e5d42SEmmanuel Vadot <69>, <70>, <193>, <194>, 154*833e5d42SEmmanuel Vadot <195>, <196>, <197>, <72>, 155*833e5d42SEmmanuel Vadot <73>, <74>, <75>, <76>, 156*833e5d42SEmmanuel Vadot <77>, <78>, <79>, <80>, 157*833e5d42SEmmanuel Vadot <81>, <199>, <200>, <201>, 158*833e5d42SEmmanuel Vadot <202>, <203>, <204>, <205>, 159*833e5d42SEmmanuel Vadot <206>, <207>, <208>, <5>, 160*833e5d42SEmmanuel Vadot <0>, <1>, <2>, <3>, 161*833e5d42SEmmanuel Vadot <4>, <82>, <83>, <84>, 162*833e5d42SEmmanuel Vadot <85>, <209>, <210>, <211>, 163*833e5d42SEmmanuel Vadot <212>; 164*833e5d42SEmmanuel Vadot interrupt-names = "store9_shdload", 165*833e5d42SEmmanuel Vadot "store9_framecomplete", 166*833e5d42SEmmanuel Vadot "store9_seqcomplete", 167*833e5d42SEmmanuel Vadot "extdst0_shdload", 168*833e5d42SEmmanuel Vadot "extdst0_framecomplete", 169*833e5d42SEmmanuel Vadot "extdst0_seqcomplete", 170*833e5d42SEmmanuel Vadot "extdst4_shdload", 171*833e5d42SEmmanuel Vadot "extdst4_framecomplete", 172*833e5d42SEmmanuel Vadot "extdst4_seqcomplete", 173*833e5d42SEmmanuel Vadot "extdst1_shdload", 174*833e5d42SEmmanuel Vadot "extdst1_framecomplete", 175*833e5d42SEmmanuel Vadot "extdst1_seqcomplete", 176*833e5d42SEmmanuel Vadot "extdst5_shdload", 177*833e5d42SEmmanuel Vadot "extdst5_framecomplete", 178*833e5d42SEmmanuel Vadot "extdst5_seqcomplete", 179*833e5d42SEmmanuel Vadot "disengcfg_shdload0", 180*833e5d42SEmmanuel Vadot "disengcfg_framecomplete0", 181*833e5d42SEmmanuel Vadot "disengcfg_seqcomplete0", 182*833e5d42SEmmanuel Vadot "framegen0_int0", 183*833e5d42SEmmanuel Vadot "framegen0_int1", 184*833e5d42SEmmanuel Vadot "framegen0_int2", 185*833e5d42SEmmanuel Vadot "framegen0_int3", 186*833e5d42SEmmanuel Vadot "sig0_shdload", 187*833e5d42SEmmanuel Vadot "sig0_valid", 188*833e5d42SEmmanuel Vadot "sig0_error", 189*833e5d42SEmmanuel Vadot "disengcfg_shdload1", 190*833e5d42SEmmanuel Vadot "disengcfg_framecomplete1", 191*833e5d42SEmmanuel Vadot "disengcfg_seqcomplete1", 192*833e5d42SEmmanuel Vadot "framegen1_int0", 193*833e5d42SEmmanuel Vadot "framegen1_int1", 194*833e5d42SEmmanuel Vadot "framegen1_int2", 195*833e5d42SEmmanuel Vadot "framegen1_int3", 196*833e5d42SEmmanuel Vadot "sig1_shdload", 197*833e5d42SEmmanuel Vadot "sig1_valid", 198*833e5d42SEmmanuel Vadot "sig1_error", 199*833e5d42SEmmanuel Vadot "reserved", 200*833e5d42SEmmanuel Vadot "cmdseq_error", 201*833e5d42SEmmanuel Vadot "comctrl_sw0", 202*833e5d42SEmmanuel Vadot "comctrl_sw1", 203*833e5d42SEmmanuel Vadot "comctrl_sw2", 204*833e5d42SEmmanuel Vadot "comctrl_sw3", 205*833e5d42SEmmanuel Vadot "framegen0_primsync_on", 206*833e5d42SEmmanuel Vadot "framegen0_primsync_off", 207*833e5d42SEmmanuel Vadot "framegen0_secsync_on", 208*833e5d42SEmmanuel Vadot "framegen0_secsync_off", 209*833e5d42SEmmanuel Vadot "framegen1_primsync_on", 210*833e5d42SEmmanuel Vadot "framegen1_primsync_off", 211*833e5d42SEmmanuel Vadot "framegen1_secsync_on", 212*833e5d42SEmmanuel Vadot "framegen1_secsync_off"; 213*833e5d42SEmmanuel Vadot }; 214*833e5d42SEmmanuel Vadot 215*833e5d42SEmmanuel Vadot pixel-engine@56180800 { 216*833e5d42SEmmanuel Vadot compatible = "fsl,imx8qxp-dc-pixel-engine"; 217*833e5d42SEmmanuel Vadot reg = <0x56180800 0xac00>; 218*833e5d42SEmmanuel Vadot clocks = <&dc0_lpcg IMX_LPCG_CLK_5>; 219*833e5d42SEmmanuel Vadot #address-cells = <1>; 220*833e5d42SEmmanuel Vadot #size-cells = <1>; 221*833e5d42SEmmanuel Vadot ranges; 222*833e5d42SEmmanuel Vadot }; 223*833e5d42SEmmanuel Vadot 224*833e5d42SEmmanuel Vadot display-engine@5618b400 { 225*833e5d42SEmmanuel Vadot compatible = "fsl,imx8qxp-dc-display-engine"; 226*833e5d42SEmmanuel Vadot reg = <0x5618b400 0x14>, <0x5618b800 0x1c00>; 227*833e5d42SEmmanuel Vadot reg-names = "top", "cfg"; 228*833e5d42SEmmanuel Vadot interrupt-parent = <&dc0_intc>; 229*833e5d42SEmmanuel Vadot interrupts = <15>, <16>, <17>; 230*833e5d42SEmmanuel Vadot interrupt-names = "shdload", "framecomplete", "seqcomplete"; 231*833e5d42SEmmanuel Vadot power-domains = <&pd IMX_SC_R_DC_0_PLL_0>; 232*833e5d42SEmmanuel Vadot #address-cells = <1>; 233*833e5d42SEmmanuel Vadot #size-cells = <1>; 234*833e5d42SEmmanuel Vadot ranges; 235*833e5d42SEmmanuel Vadot }; 236*833e5d42SEmmanuel Vadot }; 237