1*12e67114SSimon Glassdisplay-timing bindings 2*12e67114SSimon Glass======================= 3*12e67114SSimon Glass 4*12e67114SSimon Glassdisplay-timings node 5*12e67114SSimon Glass-------------------- 6*12e67114SSimon Glass 7*12e67114SSimon Glassrequired properties: 8*12e67114SSimon Glass - none 9*12e67114SSimon Glass 10*12e67114SSimon Glassoptional properties: 11*12e67114SSimon Glass - native-mode: The native mode for the display, in case multiple modes are 12*12e67114SSimon Glass provided. When omitted, assume the first node is the native. 13*12e67114SSimon Glass 14*12e67114SSimon Glasstiming subnode 15*12e67114SSimon Glass-------------- 16*12e67114SSimon Glass 17*12e67114SSimon Glassrequired properties: 18*12e67114SSimon Glass - hactive, vactive: display resolution 19*12e67114SSimon Glass - hfront-porch, hback-porch, hsync-len: horizontal display timing parameters 20*12e67114SSimon Glass in pixels 21*12e67114SSimon Glass vfront-porch, vback-porch, vsync-len: vertical display timing parameters in 22*12e67114SSimon Glass lines 23*12e67114SSimon Glass - clock-frequency: display clock in Hz 24*12e67114SSimon Glass 25*12e67114SSimon Glassoptional properties: 26*12e67114SSimon Glass - hsync-active: hsync pulse is active low/high/ignored 27*12e67114SSimon Glass - vsync-active: vsync pulse is active low/high/ignored 28*12e67114SSimon Glass - de-active: data-enable pulse is active low/high/ignored 29*12e67114SSimon Glass - pixelclk-active: with 30*12e67114SSimon Glass - active high = drive pixel data on rising edge/ 31*12e67114SSimon Glass sample data on falling edge 32*12e67114SSimon Glass - active low = drive pixel data on falling edge/ 33*12e67114SSimon Glass sample data on rising edge 34*12e67114SSimon Glass - ignored = ignored 35*12e67114SSimon Glass - interlaced (bool): boolean to enable interlaced mode 36*12e67114SSimon Glass - doublescan (bool): boolean to enable doublescan mode 37*12e67114SSimon Glass - doubleclk (bool): boolean to enable doubleclock mode 38*12e67114SSimon Glass 39*12e67114SSimon GlassAll the optional properties that are not bool follow the following logic: 40*12e67114SSimon Glass <1>: high active 41*12e67114SSimon Glass <0>: low active 42*12e67114SSimon Glass omitted: not used on hardware 43*12e67114SSimon Glass 44*12e67114SSimon GlassThere are different ways of describing the capabilities of a display. The 45*12e67114SSimon Glassdevicetree representation corresponds to the one commonly found in datasheets 46*12e67114SSimon Glassfor displays. If a display supports multiple signal timings, the native-mode 47*12e67114SSimon Glasscan be specified. 48*12e67114SSimon Glass 49*12e67114SSimon GlassThe parameters are defined as: 50*12e67114SSimon Glass 51*12e67114SSimon Glass +----------+-------------------------------------+----------+-------+ 52*12e67114SSimon Glass | | ↑ | | | 53*12e67114SSimon Glass | | |vback_porch | | | 54*12e67114SSimon Glass | | ↓ | | | 55*12e67114SSimon Glass +----------#######################################----------+-------+ 56*12e67114SSimon Glass | # ↑ # | | 57*12e67114SSimon Glass | # | # | | 58*12e67114SSimon Glass | hback # | # hfront | hsync | 59*12e67114SSimon Glass | porch # | hactive # porch | len | 60*12e67114SSimon Glass |<-------->#<-------+--------------------------->#<-------->|<----->| 61*12e67114SSimon Glass | # | # | | 62*12e67114SSimon Glass | # |vactive # | | 63*12e67114SSimon Glass | # | # | | 64*12e67114SSimon Glass | # ↓ # | | 65*12e67114SSimon Glass +----------#######################################----------+-------+ 66*12e67114SSimon Glass | | ↑ | | | 67*12e67114SSimon Glass | | |vfront_porch | | | 68*12e67114SSimon Glass | | ↓ | | | 69*12e67114SSimon Glass +----------+-------------------------------------+----------+-------+ 70*12e67114SSimon Glass | | ↑ | | | 71*12e67114SSimon Glass | | |vsync_len | | | 72*12e67114SSimon Glass | | ↓ | | | 73*12e67114SSimon Glass +----------+-------------------------------------+----------+-------+ 74*12e67114SSimon Glass 75*12e67114SSimon GlassExample: 76*12e67114SSimon Glass 77*12e67114SSimon Glass display-timings { 78*12e67114SSimon Glass native-mode = <&timing0>; 79*12e67114SSimon Glass timing0: 1080p24 { 80*12e67114SSimon Glass /* 1920x1080p24 */ 81*12e67114SSimon Glass clock-frequency = <52000000>; 82*12e67114SSimon Glass hactive = <1920>; 83*12e67114SSimon Glass vactive = <1080>; 84*12e67114SSimon Glass hfront-porch = <25>; 85*12e67114SSimon Glass hback-porch = <25>; 86*12e67114SSimon Glass hsync-len = <25>; 87*12e67114SSimon Glass vback-porch = <2>; 88*12e67114SSimon Glass vfront-porch = <2>; 89*12e67114SSimon Glass vsync-len = <2>; 90*12e67114SSimon Glass hsync-active = <1>; 91*12e67114SSimon Glass }; 92*12e67114SSimon Glass }; 93*12e67114SSimon Glass 94*12e67114SSimon GlassEvery required property also supports the use of ranges, so the commonly used 95*12e67114SSimon Glassdatasheet description with minimum, typical and maximum values can be used. 96*12e67114SSimon Glass 97*12e67114SSimon GlassExample: 98*12e67114SSimon Glass 99*12e67114SSimon Glass timing1: timing { 100*12e67114SSimon Glass /* 1920x1080p24 */ 101*12e67114SSimon Glass clock-frequency = <148500000>; 102*12e67114SSimon Glass hactive = <1920>; 103*12e67114SSimon Glass vactive = <1080>; 104*12e67114SSimon Glass hsync-len = <0 44 60>; 105*12e67114SSimon Glass hfront-porch = <80 88 95>; 106*12e67114SSimon Glass hback-porch = <100 148 160>; 107*12e67114SSimon Glass vfront-porch = <0 4 6>; 108*12e67114SSimon Glass vback-porch = <0 36 50>; 109*12e67114SSimon Glass vsync-len = <0 5 6>; 110*12e67114SSimon Glass }; 111