mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-02 09:30:10 +00:00
12e671142d
This is useful for display parameters. Add a simple decode function to read from this device tree node. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Warren <twarren@nvidia.com>
110 lines
4 KiB
Text
110 lines
4 KiB
Text
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>;
|
|
};
|