avionic design with actual uboot and tooling

submodule of avionic design uboot bootloader and with included tools to
get you started , read readme.md and readme-tk1-loader.md
This commit is contained in:
2026-03-03 21:46:32 +02:00
parent fe3ba02c96
commit 68d74d3181
11967 changed files with 2221897 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
ps8622-bridge bindings
Required properties:
- compatible: "parade,ps8622" or "parade,ps8625"
- reg: first i2c address of the bridge
- sleep-gpios: OF device-tree gpio specification for PD_ pin.
- reset-gpios: OF device-tree gpio specification for RST_ pin.
- parade,regs: List of 3-byte registers tuples to write:
<I2C chip address offset> <register> <value>
Optional properties:
- lane-count: number of DP lanes to use
- use-external-pwm: backlight will be controlled by an external PWM
- video interfaces: Device node can contain video interface port
nodes for panel according to [1].
[1]: Documentation/devicetree/bindings/media/video-interfaces.txt
Example:
lvds-bridge@48 {
compatible = "parade,ps8622";
reg = <0x48>;
sleep-gpios = <&gpc3 6 1 0 0>;
reset-gpios = <&gpc3 1 1 0 0>;
lane-count = <1>;
ports {
port@0 {
bridge_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};

View File

@@ -0,0 +1,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>;
};

View File

@@ -0,0 +1,42 @@
videomode bindings
==================
(from http://lists.freedesktop.org/archives/dri-devel/2012-July/024875.html)
Required properties:
- xres, yres: Display resolution
- left-margin, right-margin, hsync-len: Horizontal Display timing
parameters in pixels
- upper-margin, lower-margin, vsync-len: Vertical display timing
parameters in lines
- clock: display clock in Hz
Optional properties:
- width-mm, height-mm: Display dimensions in mm
- hsync-active-high (bool): Hsync pulse is active high
- vsync-active-high (bool): Vsync pulse is active high
- interlaced (bool): This is an interlaced mode
- doublescan (bool): This is a doublescan mode
There are different ways of describing a display mode. The devicetree
representation corresponds to the one used by the Linux Framebuffer
framework described here in Documentation/fb/framebuffer.txt. This
representation has been chosen because it's the only format which does
not allow for inconsistent parameters. Unlike the Framebuffer framework
the devicetree has the clock in Hz instead of ps.
Example:
display@0 {
/* 1920x1080p24 */
clock = <52000000>;
xres = <1920>;
yres = <1080>;
left-margin = <25>;
right-margin = <25>;
hsync-len = <25>;
lower-margin = <2>;
upper-margin = <2>;
vsync-len = <2>;
hsync-active-high;
};

View File

@@ -0,0 +1,69 @@
Exynos Display port controller
==============================
Required properties:
SOC specific:
compatible: should be "samsung,exynos5-dp"
reg: Base address of DP IP
Optional properties:
samsung,h-res: X resolution of the panel
samsung,h-sync-width: hsync value
samsung,h-back-porch: left margin
samsung,h-front-porch right margin
samsung,v-res: Y resolution of the panel
samsung,v-sync-width: vsync value
samsung,v-back-porch: upper margin
samsung,v-front-porch: lower margin
samsung,v-sync-rate: refresh rate
samsung,lt-status: Link training status
0(DP_LT_NONE), 1(DP_LT_START), 2(DP_LT_CR), 3(DP_LT_ET),
4(DP_LT_FINISHED), 5(DP_LT_FAIL)
samsung,master-mode: 1 if you want to run DP as master, else 0
samsung,bist-mode: 1 to enable video bist mode, else 0
samsung,bist-pattern: bist mode pattern type
0(NO_PATTERN), 1(COLOR_RAMP), 2(BALCK_WHITE_V_LINES),
3(COLOR_SQUARE), 4(INVALID_PATTERN), 5(COLORBAR_32),
6(COLORBAR_64),7(WHITE_GRAY_BALCKBAR_32),
8(WHITE_GRAY_BALCKBAR_64),9(MOBILE_WHITEBAR_32),
10(MOBILE_WHITEBAR_64)
samsung,h-sync-polarity: Horizontal Sync polarity
CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
samsung,v-sync-polarity: Vertical Sync polarity
CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
samsung,interlaced: Progressive if 0, else Interlaced
samsung,color-space: input video data format
COLOR_RGB = 0, COLOR_YCBCR422 = 1, COLOR_YCBCR444 = 2
samsung,dynamic-range: dynamic range for input video data
VESA = 0, CEA = 1
samsung,ycbcr-coeff: YCbCr co-efficients for input video
COLOR_YCBCR601 = 0, COLOR_YCBCR709 = 1
samsung,color-depth: number of bits per colour component
COLOR_6 = 0, COLOR_8 = 1, COLOR_10 = 2, COLOR_12 = 3
Example:
SOC specific part:
dp@145b0000 {
compatible = "samsung,exynos5-dp";
reg = <0x145b0000 0x1000>;
#address-cells = <1>;
#size-cells = <1>;
};
Board(panel) specific part:
dp@145b0000 {
samsung,lt-status = <0>;
samsung,master-mode = <0>;
samsung,bist-mode = <0>;
samsung,bist-pattern = <0>;
samsung,h-sync-polarity = <0>;
samsung,v-sync-polarity = <0>;
samsung,interlaced = <0>;
samsung,color-space = <0>;
samsung,dynamic-range = <0>;
samsung,ycbcr-coeff = <0>;
samsung,color-depth = <1>;
};

View File

@@ -0,0 +1,100 @@
Exynos Display Controller
=========================
Required properties:
SOC specific:
compatible: should be "samsung,exynos-fimd"
reg: Base address of FIMD IP.
Board(panel specific):
samsung,vl-col: X resolution of the panel
samsung,vl-row: Y resolution of the panel
samsung,vl-freq: Refresh rate
samsung,vl-bpix: Bits per pixel
samsung,vl-hspw: Hsync value
samsung,vl-hfpd: Right margin
samsung,vl-hbpd: Left margin
samsung,vl-vspw: Vsync value
samsung,vl-vfpd: Lower margin
samsung,vl-vbpd: Upper margin
Optional properties:
Board(panel specific):
samsung,vl-width: width of display area in mm
samsung,vl-height: Height of display area in mm
samsung,vl-clkp: Clock polarity
CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
samsung,vl-oep: Output Enable polarity
CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
samsung,vl-hsp: Horizontal Sync polarity
CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
samsung,vl-vsp: Vertical Sync polarity
CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
samsung,vl-dp: Data polarity
CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
samsung,vl-cmd-allow-len: Wait end of frame
samsung,winid: Window number on which data is to be displayed
samsung,init-delay: Delay before LCD initialization starts
samsung,power-on-delay: Delay after LCD is powered on
samsung,reset-delay: Delay after LCD is reset
samsung,interface-mode: 1(FIMD_RGB_INTERFACE), 2(FIMD_CPU_INTERFACE)
samsung,mipi-enabled: 1 if you want to use MIPI, else 0
samsung,dp-enabled: 1is you want to use DP, else 0
samsung,cs-setup: cs_setup value in FIMD_CPU_INTERFACE mode.
samsung,wr-setup: wr_setup value in FIMD_CPU_INTERFACE mode.
samsung,wr-act: wr_act value in FIMD_CPU_INTERFACE mode.
samsung,wr-hold: wr_hold value in FIMD_CPU_INTERFACE mode.
samsung,logo-on: 1 if you want to use custom logo.
0 if you want LCD console.
samsung,logo-width: pixel width of logo image. Valid if logo_on = 1
samsung,logo-height: pixel height of logo image. Valid if logo_on = 1
samsung,logo-addr: Address of logo image. Valid if logo_on = 1
samsung,rgb-mode: 0(MODE_RGB_P), 1(MODE_BGR_P),
2(MODE_RGB_S), 3(MODE_BGR_S)
samsung,pclk-name: parent clock identifier: 1(MPLL), 2(EPLL), 3(VPLL)
samsung,sclk-div: parent_clock/source_clock ratio
samsung,dual-lcd-enabled: 1 if you support two LCD, else 0
samsung,disable-sysmmu: Define this if you want to disable FIMD sysmmu.
(needed for Exynos5420 and newer versions)
Add the required FIMD sysmmu nodes to be
disabled with compatible string
"samsung,sysmmu-v3.3", with a "reg" property
holding the register address of FIMD sysmmu.
samsung,pwm-out-gpio: PWM output GPIO.
samsung,bl-en-gpio: backlight enable GPIO.
Example:
SOC specific part:
fimd@14400000 {
compatible = "samsung,exynos-fimd";
reg = <0x14400000 0x10000>;
#address-cells = <1>;
#size-cells = <1>;
};
Board specific part:
fimd@14400000 {
samsung,vl-freq = <60>;
samsung,vl-col = <2560>;
samsung,vl-row = <1600>;
samsung,vl-width = <2560>;
samsung,vl-height = <1600>;
samsung,vl-clkp;
samsung,vl-dp;
samsung,vl-bpix = <4>;
samsung,vl-hspw = <32>;
samsung,vl-hbpd = <80>;
samsung,vl-hfpd = <48>;
samsung,vl-vspw = <6>;
samsung,vl-vbpd = <37>;
samsung,vl-vfpd = <3>;
samsung,vl-cmd-allow-len = <0xf>;
samsung,winid = <3>;
samsung,interface-mode = <1>;
samsung,dp-enabled = <1>;
samsung,dual-lcd-enabled = <0>;
};

View File

@@ -0,0 +1,82 @@
Exynos MIPI-DSIM Controller
=========================
Required properties:
SOC specific:
compatible: should be "samsung,exynos-mipi-dsi"
reg: Base address of MIPI-DSIM IP.
Board specific:
samsung,dsim-config-e-interface: interface to be used (RGB interface
for main display or CPU interface for main or sub display).
samsung,dsim-config-e-virtual-ch: virtual channel number that main
or sub display uses.
samsung,dsim-config-e-pixel-format: pixel stream format for main
or sub display.
samsung,dsim-config-e-burst-mode: selects Burst mode in Video mode.
in Non-burst mode, RGB data area is filled with RGB data and
NULL packets, according to input bandwidth of RGB interface.
samsung,dsim-config-e-no-data-lane: data lane count used by Master.
samsung,dsim-config-e-byte-clk: select byte clock source.
It must be DSIM_PLL_OUT_DIV8.
DSIM_EXT_CLK_DIV8 and DSIM_EXT_CLK_BYPASSS are not supported.
samsung,dsim-config-hfp: HFP disable mode.
If set, DSI master ignores HFP area in VIDEO mode.
In command mode, this variable is ignored.
samsung,dsim-config-p: P value for PMS setting.
samsung,dsim-config-m: M value for PMS setting.
samsung,dsim-config-s: S value for PMS setting.
samsung,dsim-config-pll-stable-time: the PLL Timer for stability
of the ganerated clock.
samsung,dsim-config-esc-clk: escape clock frequency for getting
the escape clock prescaler value.
samsung,dsim-config-stop-holding-cnt: the interval value between
transmitting read packet (or write "set_tear_on" command)
and BTA request. After transmitting read packet or write
"set_tear_on" command, BTA requests to D-PHY automatically.
This counter value specifies the interval between them.
samsung,dsim-config-bta-timeout: the timer for BTA. This register
specifies time out from BTA request to change the direction
with respect to Tx escape clock.
samsung,dsim-config-rx-timeout: the timer for LP Rx mode timeout.
this register specifies time out on how long RxValid deasserts,
after RxLpdt asserts with respect to Tx escape clock.
- RxValid specifies Rx data valid indicator.
- RxLpdt specifies an indicator that D-PHY is under RxLpdt mode
- RxValid and RxLpdt specifies signal from D-PHY.
samsung,dsim-device-name: name of the device.
samsung,dsim-device-id: unique device id.
samsung,dsim-device-bus_id: bus id for identifing connected bus
and this bus id should be same as id of mipi_dsim_device.
Optional properties:
samsung,dsim-device-reverse-panel: reverse panel.
Example:
mipidsi@11c80000 {
compatible = "samsung,exynos-mipi-dsi";
reg = <0x11c80000 0x5c>;
samsung,dsim-config-e-interface = <1>;
samsung,dsim-config-e-virtual-ch = <0>;
samsung,dsim-config-e-pixel-format = <7>;
samsung,dsim-config-e-burst-mode = <1>;
samsung,dsim-config-e-no-data-lane = <3>;
samsung,dsim-config-e-byte-clk = <0>;
samsung,dsim-config-hfp = <1>;
samsung,dsim-config-p = <3>;
samsung,dsim-config-m = <120>;
samsung,dsim-config-s = <1>;
samsung,dsim-config-pll-stable-time = <500>;
samsung,dsim-config-esc-clk = <20000000>;
samsung,dsim-config-stop-holding-cnt = <0x7ff>;
samsung,dsim-config-bta-timeout = <0xff>;
samsung,dsim-config-rx-timeout = <0xffff>;
samsung,dsim-device-id = <0xffffffff>;
samsung,dsim-device-bus-id = <0>;
samsung,dsim-device-reverse-panel = <1>;
};

View File

@@ -0,0 +1,40 @@
Intel GMA Bindings
==================
This is the Intel Graphics Media Accelerator. This binding supports selection
of display parameters only.
Required properties:
- compatible : "intel,gma";
Optional properties:
- intel,dp-hotplug : values for digital port hotplug, one cell per value for
ports B, C and D
- intel,panel-port-select : output port to use: 0=LVDS 1=DP_B 2=DP_C 3=DP_D
- intel,panel-power-cycle-delay : T4 time sequence (6 = 500ms)
The following delays are in units of 0.1ms:
- intel,panel-power-up-delay : T1+T2 time sequence
- intel,panel-power-down-delay : T3 time sequence
- intel,panel-power-backlight-on-delay : T5 time sequence
- intel,panel-power-backlight-off-delay : Tx time sequence
- intel,cpu-backlight : Value for CPU Backlight PWM
- intel,pch-backlight : Value for PCH Backlight PWM
Example
-------
gma {
compatible = "intel,gma";
intel,dp_hotplug = <0 0 0x06>;
intel,panel-port-select = <1>;
intel,panel-power-cycle-delay = <6>;
intel,panel-power-up-delay = <2000>;
intel,panel-power-down-delay = <500>;
intel,panel-power-backlight-on-delay = <2000>;
intel,panel-power-backlight-off-delay = <2000>;
intel,cpu-backlight = <0x00000200>;
intel,pch-backlight = <0x04000000>;
};

View File

@@ -0,0 +1,77 @@
Rockchip LVDS interface
------------------
Required properties:
- compatible: "rockchip,rk3288-lvds";
- reg: physical base address of the controller and length
of memory mapped region.
- clocks: must include clock specifiers corresponding to entries in the
clock-names property.
- clock-names: must contain "pclk_lvds"
- rockchip,grf: phandle to the general register files syscon
- rockchip,data-mapping: should be <LVDS_FORMAT_VESA> or <LVDS_FORMAT_JEIDA>,
This describes how the color bits are laid out in the
serialized LVDS signal.
- rockchip,data-width : should be <18> or <24>;
- rockchip,output: should be <LVDS_OUTPUT_RGB>, <LVDS_OUTPUT_SINGLE> or
<LVDS_OUTPUT_DUAL>, This describes the output face.
- display-timings : described by
doc/devicetree/device-tree-bindings/video/display-timing.txt.
Example:
lvds: lvds@ff96c000 {
compatible = "rockchip,rk3288-lvds";
reg = <0xff96c000 0x4000>;
clocks = <&cru PCLK_LVDS_PHY>;
clock-names = "pclk_lvds";
pinctrl-names = "default";
pinctrl-0 = <&lcdc0_ctl>;
rockchip,grf = <&grf>;
status = "disabled";
ports {
#address-cells = <1>;
#size-cells = <0>;
lvds_in: port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
lvds_in_vopb: endpoint@0 {
reg = <0>;
remote-endpoint = <&vopb_out_lvds>;
};
lvds_in_vopl: endpoint@1 {
reg = <1>;
remote-endpoint = <&vopl_out_lvds>;
};
};
};
};
&lvds {
rockchip,data-mapping = <LVDS_FORMAT_VESA>;
rockchip,data-width = <24>;
rockchip,output = <LVDS_OUTPUT_DUAL>;
rockchip,panel = <&panel>;
status = "okay";
display-timings {
timing@0 {
clock-frequency = <40000000>;
hactive = <1920>;
vactive = <1080>;
hsync-len = <44>;
hfront-porch = <88>;
hback-porch = <148>;
vfront-porch = <4>;
vback-porch = <36>;
vsync-len = <5>;
};
};
};

View File

@@ -0,0 +1,13 @@
Sandbox LCD
===========
This uses the displaymode.txt binding except that only xres and yres are
required properties.
Example:
lcd {
compatible = "sandbox,lcd-sdl";
xres = <800>;
yres = <600>;
};

View File

@@ -0,0 +1,25 @@
Simple Framebuffer
A simple frame-buffer describes a raw memory region that may be rendered to,
with the assumption that the display hardware has already been set up to scan
out from that buffer.
Required properties:
- compatible: "simple-framebuffer"
- reg: Should contain the location and size of the framebuffer memory.
- width: The width of the framebuffer in pixels.
- height: The height of the framebuffer in pixels.
- stride: The number of bytes in each line of the framebuffer.
- format: The format of the framebuffer surface. Valid values are:
- r5g6b5 (16-bit pixels, d[15:11]=r, d[10:5]=g, d[4:0]=b).
Example:
framebuffer {
compatible = "simple-framebuffer";
reg = <0x1d385000 (1600 * 1200 * 2)>;
width = <1600>;
height = <1200>;
stride = <(1600 * 2)>;
format = "r5g6b5";
};

View File

@@ -0,0 +1,85 @@
Display Controller
------------------
(there isn't yet a generic binding in Linux, so this describes what is in
U-Boot, and may change based on Linux activity)
The device node for a display device is as described in the document
"Open Firmware Recommended Practice : Universal Serial Bus" with the
following modifications and additions :
Required properties :
- compatible : Should be "nvidia,tegra20-dc"
Required subnode 'rgb' is as follows:
Required properties (rgb) :
- nvidia,panel : phandle of LCD panel information
The panel node describes the panel itself. This has the properties listed in
displaymode.txt as well as:
Required properties (panel) :
- nvidia,bits-per-pixel: number of bits per pixel (depth)
- nvidia,pwm : pwm to use to set display contrast (see tegra20-pwm.txt)
- nvidia,panel-timings: 4 cells containing required timings in ms:
* delay before asserting panel_vdd
* delay between panel_vdd-rise and data-rise
* delay between data-rise and backlight_vdd-rise
* delay between backlight_vdd and pwm-rise
* delay between pwm-rise and backlight_en-rise
Optional GPIO properies all have (phandle, GPIO number, flags):
- nvidia,backlight-enable-gpios: backlight enable GPIO
- nvidia,lvds-shutdown-gpios: LVDS power shutdown GPIO
- nvidia,backlight-vdd-gpios: backlight power GPIO
- nvidia,panel-vdd-gpios: panel power GPIO
Example:
host1x {
compatible = "nvidia,tegra20-host1x", "simple-bus";
reg = <0x50000000 0x00024000>;
interrupts = <0 65 0x04 /* mpcore syncpt */
0 67 0x04>; /* mpcore general */
#address-cells = <1>;
#size-cells = <1>;
status = "okay";
ranges = <0x54000000 0x54000000 0x04000000>;
dc@54200000 {
compatible = "nvidia,tegra20-dc";
reg = <0x54200000 0x00040000>;
interrupts = <0 73 0x04>;
status = "okay";
rgb {
status = "okay";
nvidia,panel = <&lcd_panel>;
};
};
};
lcd_panel: panel {
/* Seaboard has 1366x768 */
clock = <70600000>;
xres = <1366>;
yres = <768>;
left-margin = <58>;
right-margin = <58>;
hsync-len = <58>;
lower-margin = <4>;
upper-margin = <4>;
vsync-len = <4>;
hsync-active-high;
nvidia,bits-per-pixel = <16>;
nvidia,pwm = <&pwm 2 0>;
nvidia,backlight-enable-gpios = <&gpio 28 0>; /* PD4 */
nvidia,lvds-shutdown-gpios = <&gpio 10 0>; /* PB2 */
nvidia,backlight-vdd-gpios = <&gpio 176 0>; /* PW0 */
nvidia,panel-vdd-gpios = <&gpio 22 0>; /* PC6 */
nvidia,panel-timings = <400 4 203 17 15>;
};