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