Lcd 屏驱动的名字(字符串),必须与屏驱动的名字对应。
Lcd 屏模型名字,非必须,可以用于同个屏驱动中进一步区分不同屏。
Lcd Interface,设置相应值的对应含义为:
0:HV RGB接口
1:CPU/I80接口
Lcd HV panel Interface, 这个参数只有在 lcd_if=0 时才有效。定义 RGB 同步屏下的几种接口类型,设置相应值的对应含义为:
0:Parallel RGB
8:Serial RGB
10:Dummy RGB
11:RGB Dummy
12:Serial YUV (CCIR656)
这个参数只有在 lcd_if=0 时才有效。定义 RGB 同步屏的 clock 与 data 之间的相位关系。总共有 4个相位可供调节,设置相应值的对应含义为:
0: 0 degree
1: 90 degree
2: 180 degree
3: 270 degree
这个参数只有在 lcd_if=0 时才有效。定义 RGB 同步屏的 hsync 和 vsync 的极性。设置相应值的对应含义为:
0:vsync active low,hsync active low
1:vsync active high,hsync active low
2:vsync active low,hsync active high
3:vsync active high,hsync active high
这个参数只有在 lcd_if=0 且 lcd_hv_if=8(Serial RGB)时才有效。定义奇数行 RGB 输出的顺序:
0: Odd lines R‑G‑B; Even line R‑G‑B
1: Odd lines B‑R‑G; Even line R‑G‑B
2: Odd lines G‑B‑R; Even line R‑G‑B
4: Odd lines R‑G‑B; Even line B‑R‑G
5: Odd lines B‑R‑G; Even line B‑R‑G
6: Odd lines G‑B‑R; Even line B‑R‑G
8: Odd lines R‑G‑B; Even line B‑R‑G
9: Odd lines B‑R‑G; Even line G‑B‑R
10: Odd lines G‑B‑R; Even line G‑B‑R
这个参数只有在 lcd_if=0 且 lcd_hv_if=12(Serial YUV)时才有效。定义 YUV 输出格式:
0:YUYV
1:YVYU
2:UYVY
3:VYU
这个参数只有在 lcd_if=0 且 lcd_hv_if=12(Serial YUV)时才有效。定义 CCIR656 编码时 F 相对有效行延迟的行数:
0:F toggle right after active video line
1:Delay 2 lines (CCIR PAL)
2:Delay 3 lines (CCIR NTSC)
这个参数只有在 lcd_if=1 时才有效, 具体时序可参照RGB 和 I8080 管脚配置示意图中 CPU 那几列。设置相应值的对应含义为:
0:18bit/1cycle (RGB666)
2: 16bit/3cycle (RGB666)
4:16bit/2cycle (RGB666)
6:16bit/2cycle (RGB666)
8:16bit/1cycle (RGB565)
10:9bit/1cycle (RGB666)
12:8bit/3cycle (RGB666)
14:8bit/2cycle (RGB565)
设置相应值的对应含义为,设置为 0 时,刷屏间隔时间为 lcd_ht × lcd_vt;设置为 1 或 2 时,刷屏间隔时间为两个 te 脉冲:
0:frame trigged automatically
1:frame trigged by te rising edge
2:frame trigged by te falling edge
设置相应值的对应含义为,设置为 0 时,刷屏间隔时间为 lcd_ht × lcd_vt;设置为 1 或 2 时,刷屏间隔时间为两个 te 脉冲:
0:中断自动根据时序,由场消隐信号内部触发
1:中断根据数据Block的counter触发或者由外部te触发。
下面几个参数对于调屏非常关键,决定了发送端(SoC)发送数据时序。由于涉及到发送端和接收端的调试,除了分辨率和尺寸之外,其它几个数值都不是绝对不变的,两款一样分辨率,同种接口的屏,它们的数值也有可能不一样。
获取途径如下:
由下面两条公式得知,我们不需要设置 lcd_hfp
和 lcd_vfp
参数,因为驱动会自动根据其它几个已知参数中算出 lcd_hfp
和 lcd_vfp
。
显示屏的水平像素数量,即屏分辨率中的宽
显示屏的垂直行数,即屏分辨率中的高。
指一行总的 dclk 的 cycle 个数。
指有效行间,行同步信号(hsync)开始,到有效数据开始之间的 dclk 的 cycle 个数,包括同步信号区。包含了 hspw 段,即lcd_hbp=实际的hbp+实际的hspw。
指行同步信号的宽度。单位为 1 个 dclk 的时间(即是 1 个 data cycle 的时间)。
指一场的总行数。
指场同步信号(vsync)开始,到有效数据行开始之间的行数,包括场同步信号区。包含了 vspw 段,即 lcd_vbp= 实际的 vbp+ 实际的 vspw。
指场同步信号的宽度。单位为行。
传输像素传送频率(单位为 MHz)。
fps = (lcd_dclk_freq * 1000 * 1000) / (ht * vt)
这个值根据以下公式计算
lcd_dclk_freq = lcd_ht * lcd_vt * fps
注意:
lcd_dclk_freq * cycles = lcd_ht * lcd_vt * fps
lcd_dclk_freq = lcd_ht * cycles * lcd_vt * fps
此参数描述 lcd 屏幕的物理宽度,单位是 mm,用于计算 dpi。
此参数描述 lcd 屏幕的物理高度,单位是 mm,用于计算 dpi。
目前用得比较广泛的就是 pwm 背光调节,原理是利用 pwm 脉冲开关产生的高频率闪烁效应,通过调节占空比,达到欺骗人眼,调节亮暗的目的。
是否使用 pwm,此参数标识用以背光亮度的控制
此参数标识使用的 Pwm 通道,这里是指使用 SoC 哪个 pwm 通道,通过查看原理图连接可知。
这个参数配置 PWM 信号的频率,单位为 Hz。
这个参数配置 PWM 信号的占空比的极性。设置相应值对应含义为:
0:active high
1:active low
Lcd backlight PWM 最高限制,以亮度值表示。
比如 150,则表示背光最高只能调到 150,0‑255 范围内的亮度值将会被线性映射到 0‑150 范围内。用于控制最高背光亮度,节省功耗
背光使能脚,非必须,看原理图是否有,用于使能或者禁止背光电路的电压。
示例:
lcd_bl_en = port:PD24<1><2><default><1>
含义:PD24 输出高电平时打开 LCD 背光;下拉,默认高电平。
需要在屏驱动调用相应的接口进行开、关的控制。
一般来说,高电平是使能,在这个前提下,建议将内阻电阻设置成下拉,防止硬件原因造成的上拉,导致背光提前亮。默认电平填写高电平,这是 uboot 显示过度到内核显示、平滑无闪烁的需要。
背光映射值,n 为 (0‑100)。
此功能是针对亮度非线性的 LCD 屏的,按照配置的亮度曲线方式来调整亮度变化,以使亮度变化更线性。
比如 lcd_bl_50_percent = 60,表明将 50% 的亮度值调整成 60%,即亮度比原来提高 10%。
修改此属性不当可能导致背光调节效果差。
背光默认值,0‑255。
此属性决定在 uboot 显示 logo 阶段的亮度,进入都内核时则是读取保存的配置来决定亮度。
显示 logo 阶段,一般来说需要比较亮的亮度,业内做法都是如此。
Lcd Frame Rate Modulator, FRM 是解决由于 PIN 减少导致的色深问题,有些 LCD 屏的像素格式是 18bit 色深(RGB666)或 16bit 色深(RGB565),建议打开 FRM 功能,通过 dither 的方式弥补色深,使显示达到 24bit 色深(RGB888)的效果。如下图所示,上图是色深为 RGB66 的 LCD 屏显示,下图是打开 dither 后的显示,打开 dither 后色彩渐变的地方过度平滑。
参数设置相应值对应含义为:
0:RGB888 ‑‑ RGB888 direct
1:RGB888 ‑‑ RGB666 dither
2:RGB888 ‑‑ RGB565 dither
Lcd Gamma Correction Enable,设置相应值的对应含义为:
0:LCD 的 Gamma 校正功能关闭
1:LCD 的 Gamma 校正功能开启
设置为 1 时,需要在屏驱动中对 lcd_gamma_tbl[256]
进行赋值。
Lcd Color Map Enable, 设置为 1 时,需要对 lcd_cmap_tbl [2][3][4]
进行赋值 Lcd Color Map Table
。
每个像素有 R、G、B 三个单元,每四个像素组成一个选择项,总共有 12 个可选。数组第一维表示奇偶行,第二维表示像素的 RGB,第三维表示第几个像素,数组的内容即表示该位置映射到的内容。
LCD CMAP 是对像素的映射输出功能,只有像素有特殊排布的 LCD 屏才需要配置。
LCD CMAP 定义每行的 4 个像素为一个总单元,每个像素分 R、G、B 3 个小单元,总共有 12 个小单元。通过 lcd_cmap_tbl 定义映射关系,输出的每个小单元可随意映射到 12 个小单元之一。
__u32 lcd_cmap_tbl[2][3][4] = {
{
{LCD_CMAP_G0,LCD_CMAP_B1,LCD_CMAP_G2,LCD_CMAP_B3},
{LCD_CMAP_B0,LCD_CMAP_R1,LCD_CMAP_B2,LCD_CMAP_R3},
{LCD_CMAP_R0,LCD_CMAP_G1,LCD_CMAP_R2,LCD_CMAP_G3},
},
{
{LCD_CMAP_B3,LCD_CMAP_G2,LCD_CMAP_B1,LCD_CMAP_G0},
{LCD_CMAP_R3,LCD_CMAP_B2,LCD_CMAP_R1,LCD_CMAP_B0},
{LCD_CMAP_G3,LCD_CMAP_R2,LCD_CMAP_G1,LCD_CMAP_R0},
},
};
如上,上三行代表奇数行的像素排布,下三行代表偶数行的像素排布;
每四个像素为一个单元,第一列代表每四个像素的第一个像素映射,第二列代表每四个像素的第二个像素映射,以此类推。
如上的定义,像素的输出格式如下图所示。
调换 TCON
模块 RGB
中的 R 分量和 B 分量。
0:不变
1:调换R分量和B分量
需要 gamma 校正,或色彩映射,在 sys_config.fex
中将相应模块的 enable
参数置 1,lcd_gamma_en
, lcd_cmap_en
,并且填充 3 个系数表,lcd_gamma_tbl
, lcd_cmap_tbl
,注意的是:gamma,模板提供了 18 段拐点值,然后再插值出所有的值(255 个)。可以往相应表格内添加子项以补充细节部分。cmap_tbl 的大小是固定的,不能减小或增加表的大小。最终生成的 gamma 表项是由 rgb 三个 gamma 值组成的,各占 8bit。目前提供的模板中,三个 gamma 值是相同的。
配置好之后,需要在屏驱动调用相应的接口进行开、关的控制。
注意:如果有多个电源需要打开,则定义 lcd_power1,lcd_power2 等。
用法 lcd_power一致,区别是用户设置之后,不需要在屏驱动中去操作,而是驱动框架自行在屏驱动之前使能,在屏驱动之后禁止。
注意:如果需要多组,则添加 lcd_pin_power1,lcd_pin_power2 等。除了 lcddx 之外,这里的电源还有可能是 pwm 所对应管脚的电源。
示例:
lcd_gpio_0 = port:PD25<0><0><default><0>
含义:lcd_gpio_0 引脚为 PD25。
注意:如果有多个 gpio 脚需要控制,则定义 lcd_gpio_0,lcd_gpio_1 等。
系统起来之后可以输入disp相关调试命令,来协助调试。
选项 | 参数 | 解释 | 举例 |
---|---|---|---|
空 | 空 | 打印出当前显示的信息 | disp |
-c | Screen_id,color 模式 | 显示 colorbar。共有 8 种模式,0 到 8 | disp ‑c 0 8 |
-b | Screen_id, 背光值 | 调整 lcd 背光,背光值范围时 0 到 255 | disp ‑b 0 255 |
-d | Screen_id, 文件路径 | 抓 DE 图层回写到文件 | disp ‑d 0 /sdmmc/xx.bmp |
-s | Screen_id,显示类型,显示分辨率 | 切换显示类型或分辨率 | disp ‑s 0 1 4 打开LCD 显示 |
输入disp命令,会有 Log 打印信息。以下信息是所有信息中最重要的。
disp
screen 0:
derate 297000000 hz, ref_fps:60
mgr0: 1280x800 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false]
lcd output backlight( 50) fps:60.9 1280x 800
err:0 skip:31 irq:1942 vsync:0 vsync_skip:0
BUF enable ch[1] lyr[0] z[0] prem[N] a[globl 255] fmt[ 8] fb[1280, 800;1280, 800;1280, 800] crop[ 0, 0,1280, 800] frame[
0, 0,1280, 800] addr[ 0, 0, 0] flags[0x 0] trd[0,0]
表示当前显示接口是 LCD 输出。
表示当前 LCD 的分辨率,与 sys_config.fex 中 lcd0 的设置一样。
是根据你在 sys_config.fex 的 lcd0 填的时序算出来的理论值。
后面的数值是实时统计的,正常来说应该是在 60(期望的 fps) 附近,如果差太多则不正常,重新检查屏时序,和在屏驱动的初始化序列是否有被调用到。
这是 vsync 中断的次数,每加 1 都代表刷新了一帧,正常来说是一秒 60(期望的 fps)次,重复 cat sys,如果无变化,则异常。
开头的表示图层信息,一行 BUF 表示一个图层,如果一个 BUF 都没有出现,那么将是黑屏,不过和屏驱动本身关系就不大了,应该查看应用层 & 框架层。
这个表示缺数,如果数字很大且一直变化,屏幕会花甚至全黑,全红等。
这个表示跳帧的数量,如果这个数值很大且一直变化,有可能卡顿,如果数字与 irq 后面的数字一样,说明每一帧都跳,会黑屏(有背光)
hal_ccmu
这个命令可以看哪个时钟是否使能,然后频率是多少。与显示相关的是 tcon,pll_video等。
显示是一整条链路,中间任何一个环节出错,最终的表现都是显示异常,图像显示异常几个可能原因:
有一个简单的方法可以初步判断,接口模块(tcon 和 dsi 等)可以自己输出内置的一些 patten,比如说彩条,灰阶图,棋盘图等。当接口输出这些内置 patten 的时候,如果这时候显示就异常,这说明了:
显示自带 patten 的方式:
disp ‑c 0 X
上面的操作是显示 colorbar,其中的 X 可以是 0 到 8
总结过往经验,绝大部分屏显异常都是由于上下电时序和 timing 不合理导致。
问题表现:完全黑屏,背光也没有
黑屏但是有背光,可能有多种原因导致,请依次按以下步骤检查
分为几种:
有些 LCD 屏的像素格式是 18bit 色深(RGB666)或 16bit 色深(RGB565),建议打开 FRM 功能,通过 dither 的方式弥补色深,使显示达到 24bit 色深(RGB888)的效果。
设置 [lcd0] 的 lcd_frm 属性可以改善这种现象。
重新配置背光参数
花屏的第一个原因是 fps 过高,超过屏的限制:
FPS 异常是一件非常严重的事情,关系到整个操作系统的稳定,如果 fps 过高会造成系统带宽增加,送显流程异常,fps 过高还会造成 LCD 屏花屏不稳定,容易造成 LCD 屏损坏,FPS 过低则造成用户体验过差。
lcd_dclk_freq * num_of_pixel_clk = lcd_ht * lcd_vt * fps / 1e9
其中,num_of_pixel_clk 通常为 1,表示发送一个像素所需要的时钟周期为 1 一个,低分辨率的MCU 和串行接口通常需要 2 到 3 个时钟周期才能发送完一个像素。
如果上面填写没有错,通过查看查看时钟信息可以确认下几个主要时钟的频率信息,把这些信息和 sys_config.fex 发给维护者进一步分析。
何谓液晶极化现象:实际上就是液晶电介质极化。就是在外界电场作用下,电介质内部沿电场方向产生感应偶极矩,在电解质表明出现极化电荷的现象叫做电介质的极化。
通俗的讲就是在液晶面板施加一定电压后,会聚集大量电荷,当电压消失的时候,这些聚集的电荷也要释放,但由于介电效应,这些聚集的电荷不会立刻释放消失,这些不会马上消失的惰性电荷造成了液晶的 DC 残留从而形成了极化现象。
几种常见的液晶极化现象
针对液晶屏出现极化和残影现象,有如下对策。
VCOM 是液晶分子偏转的参考电压,要求要稳定,对液晶显示有直接影响,具体的屏不同的话也是不同的。电压的具体值是根据输入的数据以及 Vcom 电压大小来确定的,用来显示各种不同灰阶,也就是实现彩色显示 GAMMA。Gamma 电压是用来控制显示器的灰阶的,一般情况下分为G0~G14,不同的 Gamma 电压与 Vcom 电压之间的压差造成液晶旋转角度不同从而形成亮度的差异,Vcom 电压最好的状况是位于 G0 和 G14 的中间值,这样液晶屏的闪烁状况会最好。调节 vcom 电压的方式,如果屏管脚有 vcom 管脚,直接调整相关电路,如果屏 driver IC 提供寄存器接口,可以通过寄存器接口来调整大小。
;--------------------------------------------------
;Parallel RGB LCD
;--------------------------------------------------
[lcd0]
lcd_used = 1
lcd_driver_name = "default_lcd"
lcd_backlight = 150
lcd_if = 0
lcd_x = 1024
lcd_y = 600
lcd_width = 150
lcd_height = 94
lcd_rb_swap = 0
lcd_dclk_freq = 48
lcd_pwm_used = 1
lcd_pwm_ch = 7
lcd_pwm_freq = 500000
lcd_pwm_pol = 1
lcd_hbp = 160
lcd_ht = 1344
lcd_hspw = 20
lcd_vbp = 20
lcd_vt = 635
lcd_vspw = 3
lcd_lvds_if = 0
lcd_lvds_colordepth = 1
lcd_lvds_mode = 0
lcd_frm = 0
lcd_io_phase = 0x0000
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
;reset
;lcd_gpio_0 = port:GPIO_EXP15<1><0><3><1>
;cs
;lcd_gpio_1 = port:GPIO_EXP03<1><0><3><0>
;sdi
;lcd_gpio_2 = port:GPIO_EXP06<1><0><3><0>
;scl
;lcd_gpio_3 = port:GPIO_EXP07<1><0><3><0>
;LCD_D2-LCD_D7
lcd_gpio_4 = port:PA00<8><0><3><0>
lcd_gpio_5 = port:PA01<8><0><3><0>
lcd_gpio_6 = port:PA02<8><0><3><0>
lcd_gpio_7 = port:PA03<8><0><3><0>
lcd_gpio_8 = port:PA04<8><0><3><0>
lcd_gpio_9 = port:PA05<8><0><3><0>
;LCD_D10-LCD_D15
lcd_gpio_10 = port:PA11<8><0><3><0>
lcd_gpio_11 = port:PA10<8><0><3><0>
lcd_gpio_12 = port:PA08<8><0><3><0>
lcd_gpio_13 = port:PA07<8><0><3><0>
lcd_gpio_14 = port:PA06<8><0><3><0>
lcd_gpio_15 = port:PA09<8><0><3><0>
;LCD_D18-LCD_D23
lcd_gpio_16 = port:PA12<8><0><3><0>
lcd_gpio_17 = port:PA13<8><0><3><0>
lcd_gpio_18 = port:PA14<8><0><3><0>
lcd_gpio_19 = port:PA15<8><0><3><0>
lcd_gpio_20 = port:PB03<8><0><3><0>
lcd_gpio_21 = port:PB02<8><0><3><0>
;LCD_VSYNC, LCD_HSYNC, LCD_DCLK, LCD_DE
lcd_gpio_0 = port:PA18<8><0><3><0>
lcd_gpio_1 = port:PA19<8><0><3><0>
lcd_gpio_2 = port:PA20<8><0><3><0>
lcd_gpio_3 = port:PA21<8><0><3><0>
;--------------------------------------------------
;MCU LCD
;--------------------------------------------------
[lcd0]
lcd_used = 1
lcd_driver_name = "cl40bc1019_cpu"
lcd_backlight = 150
lcd_if = 1
lcd_x = 320
lcd_y = 480
lcd_width = 150
lcd_height = 94
lcd_rb_swap = 0
lcd_pwm_used = 1
lcd_pwm_ch = 7
lcd_pwm_freq = 5000
lcd_pwm_pol = 1
lcd_cpu_mode = 0
lcd_cpu_te = 0
lcd_cpu_if = 12
lcd_dclk_freq = 32
lcd_hbp = 75
lcd_ht = 1060
lcd_hspw = 40
lcd_vbp = 6
lcd_vt = 490
lcd_vspw = 2
lcd_lvds_if = 0
lcd_lvds_colordepth = 1
lcd_lvds_mode = 0
lcd_frm = 0
lcd_io_phase = 0x0000
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
deu_mode = 0
lcdgamma4iep = 22
smart_color = 90
;reset pin
lcd_gpio_0 = port:PB03<1><0><3><0>
;CS
lcd_gpio_1 = port:PA12<1><0><3><0>
;LCD_D3-LCD_D7
lcd_gpio_2 = port:PA01<8><0><3><0>
lcd_gpio_3 = port:PA02<8><0><3><0>
lcd_gpio_4 = port:PA03<8><0><3><0>
lcd_gpio_5 = port:PA04<8><0><3><0>
lcd_gpio_6 = port:PA05<8><0><3><0>
;LCD_D10-LCD_D12
lcd_gpio_7 = port:PA11<8><0><3><0>
lcd_gpio_8 = port:PA10<8><0><3><0>
lcd_gpio_9 = port:PA08<8><0><3><0>
;WR
lcd_gpio_10 = port:PA06<7><0><3><0>
;RD
lcd_gpio_11 = port:PA07<7><0><3><0>
;RS
lcd_gpio_12 = port:PA09<7><0><3><0>
;--------------------------------------------------
;Parallel RGB LCD
;--------------------------------------------------
[lcd0]
lcd_used = 1
lcd_driver_name = "p0400060a"
lcd_backlight = 150
lcd_if = 0
lcd_x = 480
lcd_y = 480
lcd_width = 94
lcd_height = 94
lcd_rb_swap = 0
lcd_dclk_freq = 21
lcd_hv_clk_phase = 1
lcd_pwm_used = 1
lcd_pwm_ch = 6
lcd_pwm_freq = 5000
lcd_pwm_pol = 1
lcd_hbp = 80
lcd_ht = 648
lcd_hspw = 8
lcd_vbp = 10
lcd_vt = 522
lcd_vspw = 2
lcd_lvds_if = 0
lcd_lvds_colordepth = 1
lcd_lvds_mode = 0
lcd_frm = 1
lcd_io_phase = 0x0000
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
deu_mode = 0
lcdgamma4iep = 22
smart_color = 90
;reset
lcd_gpio_0 = port:PB01<1><0><3><1>
;cs
lcd_gpio_1 = port:PA27<1><0><3><0>
;sdi
lcd_gpio_2 = port:PA28<1><0><3><0>
;scl
lcd_gpio_3 = port:PB00<1><0><3><0>
;LCD_D2-LCD_D7
lcd_gpio_4 = port:PA00<8><0><3><0>
lcd_gpio_5 = port:PA01<8><0><3><0>
lcd_gpio_6 = port:PA02<8><0><3><0>
lcd_gpio_7 = port:PA03<8><0><3><0>
lcd_gpio_8 = port:PA04<8><0><3><0>
lcd_gpio_9 = port:PA05<8><0><3><0>
;LCD_D10-LCD_D15
lcd_gpio_10 = port:PA11<8><0><3><0>
lcd_gpio_11 = port:PA10<8><0><3><0>
lcd_gpio_12 = port:PA08<8><0><3><0>
lcd_gpio_13 = port:PA07<8><0><3><0>
lcd_gpio_14 = port:PA06<8><0><3><0>
lcd_gpio_15 = port:PA09<8><0><3><0>
;LCD_D18-LCD_D23
lcd_gpio_16 = port:PA12<8><0><3><0>
lcd_gpio_17 = port:PA13<8><0><3><0>
lcd_gpio_18 = port:PA14<8><0><3><0>
lcd_gpio_19 = port:PA15<8><0><3><0>
lcd_gpio_20 = port:PB03<8><0><3><0>
lcd_gpio_21 = port:PB02<8><0><3><0>
;LCD_VSYNC, LCD_HSYNC, LCD_DCLK, LCD_DE
lcd_gpio_22 = port:PA18<8><0><3><0>
lcd_gpio_23 = port:PA19<8><0><3><0>
lcd_gpio_24 = port:PA20<8><0><3><0>
lcd_gpio_25 = port:PA21<8><0><3><0>
[lcd0]
lcd_used = 1
lcd_driver_name = "d392t9390v0_cpu"
lcd_backlight = 200
lcd_if = 1
lcd_x = 320
lcd_y = 320
lcd_width = 78
lcd_height = 78
lcd_rb_swap = 1
lcd_pwm_used = 1
lcd_pwm_ch = 7
lcd_pwm_freq = 50000
lcd_pwm_pol = 1
lcd_cpu_mode = 0
lcd_cpu_te = 0
lcd_cpu_if = 12
lcd_dclk_freq = 32
lcd_hbp = 75
lcd_ht = 1060
lcd_hspw = 40
lcd_vbp = 6
lcd_vt = 490
lcd_vspw = 2
lcd_lvds_if = 0
lcd_lvds_colordepth = 1
lcd_lvds_mode = 0
lcd_frm = 0
lcd_io_phase = 0x0000
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
deu_mode = 0
lcdgamma4iep = 22
smart_color = 90
;reset pin
lcd_gpio_0 = port:PA12<1><0><3><0>
;LCD_D3-LCD_D7
lcd_gpio_2 = port:PA01<8><0><3><0>
lcd_gpio_3 = port:PA02<8><0><3><0>
lcd_gpio_4 = port:PA03<8><0><3><0>
lcd_gpio_5 = port:PA04<8><0><3><0>
lcd_gpio_6 = port:PA05<8><0><3><0>
;LCD_D10-LCD_D12
lcd_gpio_7 = port:PA11<8><0><3><0>
lcd_gpio_8 = port:PA10<8><0><3><0>
lcd_gpio_9 = port:PA08<8><0><3><0>
;WR
lcd_gpio_10 = port:PA06<7><0><3><0>
;RD
lcd_gpio_11 = port:PA07<7><0><3><0>
;RS
lcd_gpio_12 = port:PA09<7><0><3><0>
[lcd0]
lcd_used = 1
lcd_driver_name = "default_lcd"
lcd_backlight = 150
lcd_if = 0
lcd_x = 800
lcd_y = 480
lcd_width = 150
lcd_height = 94
lcd_rb_swap = 0
lcd_dclk_freq = 33
lcd_pwm_used = 1
lcd_pwm_ch = 6
lcd_pwm_freq = 5000
lcd_pwm_pol = 1
lcd_hbp = 46
lcd_ht = 1055
lcd_hspw = 0
lcd_vbp = 23
lcd_vt = 525
lcd_vspw = 0
lcd_lvds_if = 0
lcd_lvds_colordepth = 1
lcd_lvds_mode = 0
lcd_frm = 0
lcd_io_phase = 0x0000
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
deu_mode = 0
lcdgamma4iep = 22
smart_color = 90
;LCD_D2-LCD_D7
lcd_gpio_0 = port:PA00<8><0><3><0>
lcd_gpio_1 = port:PA01<8><0><3><0>
lcd_gpio_2 = port:PA02<8><0><3><0>
lcd_gpio_3 = port:PA03<8><0><3><0>
lcd_gpio_4 = port:PA04<8><0><3><0>
lcd_gpio_5 = port:PA05<8><0><3><0>
;LCD_D10-LCD_D15
lcd_gpio_6 = port:PA11<8><0><3><0>
lcd_gpio_7 = port:PA10<8><0><3><0>
lcd_gpio_8 = port:PA08<8><0><3><0>
lcd_gpio_9 = port:PA07<8><0><3><0>
lcd_gpio_10 = port:PA06<8><0><3><0>
lcd_gpio_11 = port:PA09<8><0><3><0>
;LCD_D18-LCD_D23
lcd_gpio_12 = port:PA12<8><0><3><0>
lcd_gpio_13 = port:PA13<8><0><3><0>
lcd_gpio_14 = port:PA14<8><0><3><0>
lcd_gpio_15 = port:PA15<8><0><3><0>
lcd_gpio_16 = port:PB03<8><0><3><0>
lcd_gpio_17 = port:PB02<8><0><3><0>
;LCD_VSYNC, LCD_HSYNC, LCD_DCLK, LCD_DE
lcd_gpio_18 = port:PA18<8><0><3><0>
lcd_gpio_19 = port:PA19<8><0><3><0>
lcd_gpio_20 = port:PA20<8><0><3><0>
lcd_gpio_21 = port:PA21<8><0><3><0>