| 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 | |
| - syncclk-active: with | |
| - active high = drive sync on rising edge/ | |
| sample sync on falling edge of pixel | |
| clock | |
| - active low = drive sync on falling edge/ | |
| sample sync on rising edge of pixel | |
| clock | |
| - omitted = same configuration as pixelclk-active | |
| - 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 | | | | |
| | | v | | | | |
| +----------#######################################----------+-------+ | |
| | # ^ # | | | |
| | # | # | | | |
| | hback # | # hfront | hsync | | |
| | porch # | hactive # porch | len | | |
| |<-------->#<-------+--------------------------->#<-------->|<----->| | |
| | # | # | | | |
| | # |vactive # | | | |
| | # | # | | | |
| | # v # | | | |
| +----------#######################################----------+-------+ | |
| | | ^ | | | | |
| | | |vfront_porch | | | | |
| | | v | | | | |
| +----------+-------------------------------------+----------+-------+ | |
| | | ^ | | | | |
| | | |vsync_len | | | | |
| | | v | | | | |
| +----------+-------------------------------------+----------+-------+ | |
| Note: In addition to being used as subnode(s) of display-timings, the timing | |
| subnode may also be used on its own. This is appropriate if only one mode | |
| need be conveyed. In this case, the node should be named 'panel-timing'. | |
| 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>; | |
| }; |