| 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 | | | |
| +----------+-------------------------------------+----------+-------+ |
| |
| 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>; |
| }; |