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