LS1028适配单八路LVDS屏幕

查看屏体手册

1、屏体手册参数

该屏幕的时钟频率范围为50Mhz-80Mhz;屏幕分辨为1024x768

绿联dh2100如何支持docker 绿联10128_LVDS


2、数据格式该屏幕是支持单六路和单八路两种模式,当SEL68为low时为单六路模式,当SEL68位High时为单八路模式;该lvds屏幕的数据格式是VESA模式的;

OK1028A-C芯片原生DP信号由LT7211转为LVDS信号,目前的固件配置是单port,8位,VESA格式。

绿联dh2100如何支持docker 绿联10128_linux_02

硬件改动

绿联dh2100如何支持docker 绿联10128_LS1028_03


1028的背光引脚电平是1.8V的,而屏幕的pwm是3.3V的,电平不匹配,临时解决方案是硬件上将背光的pwm引脚直接上拉到3.3V,最优解决方案是需要做电平转换,将1.8V转换为3.3V。

绿联dh2100如何支持docker 绿联10128_LVDS_04


绿联dh2100如何支持docker 绿联10128_解决方案_05

软件修改

1、修改时序参数

时序参数需要修改:packages/linux/OK1028-linux-kernel/drivers/gpu/drm/bridge/cadence/cdns-dp-core.c

绿联dh2100如何支持docker 绿联10128_LS1028_06


参数值的含义,可以参考 DRM_MODE 的宏定义,在头文件include/drm/drm_modes.h:

绿联dh2100如何支持docker 绿联10128_绿联dh2100如何支持docker_07


各参数的具体含义:

.hdisplay:1280         [horizontal display size ]
.hysnc_start(hss): 1328    [horizontal sync start
.hsync_end(hse):1360    [horizontal sync end]
.htotal(ht):1440          [horizontal total size]
.hskew(hsk):0            [horizontal skew]    
.vdisplay(vd):800          [ vertical display size]
.vsync_start(vss):803       [vertical sync start]
.vsync_end(vse):809       [vertical sync end]
.vtotal(vt):823            [vertical total size]
.vscan(vs):0              [vertical scan?!]
.flags(f)=

绿联dh2100如何支持docker 绿联10128_LVDS_08


屏体手册参数

绿联dh2100如何支持docker 绿联10128_解决方案_09


参考手册获取相应的时序参数

.name(nm): 1024x768
.clock(c):64995
.hdisplay(hd): 1024
.hysnc_start(hss):1084
.hsync_end(hse):1184
.htotal(ht):1344
.hskew(hsk):0
.vdisplay(vd):768
.vsync_start(vss):778
.vsync_end(vse):787
.vtotal(vt):806

Pixel clock的实际计算方法:

Hsync_total x Vsync_total x vrefresh=1344x806x60=64995kHz

将如上信息填到驱动中,并注释掉原来屏幕的时序

绿联dh2100如何支持docker 绿联10128_LS1028_10

2、修改时序参数

修改dts里的Mode

设备树路径: packages/linux/OK1028-linux-kernel/arch/arm64/boot/dts/freescale/OK1028A-C.dts

绿联dh2100如何支持docker 绿联10128_解决方案_11

3、修改dtsi里面的DP时钟

dp时钟的计算方法:

绿联dh2100如何支持docker 绿联10128_LS1028_12


fpll_phi=fpll_VCO/PLLDV[RFDHI]

DP像素时钟=fpll_VCO=fpll_phi * PLLDV[RFDHI]

fpll_VCO 需要在设备数中指定,系统启动后无法修改,位于 650MHz-1300MHz 之间。PLLDV[RFDHI] 的范围为 1-64,只需要保证 VCO 可以整除 lvds 的像素时钟,且位于 1-64 之间即可。

例如飞凌默认的屏幕时钟为 71100khz,这里指定的 vco-frequency=1066500000hz,PLLDV[RFDHI]=15

设备树路径:OK1028-linux-fs/packages/linux/OK1028-linux-kernel/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi

绿联dh2100如何支持docker 绿联10128_解决方案_13


LVDS液晶屏像素时钟fpll_phi=64995khz,PLLDV[RFDHI]=15,fpll_VCO=fpll_phi x PLLDV[RFDHI] = 64995*15= 974925000hz。

绿联dh2100如何支持docker 绿联10128_LVDS_14

4、修改启动参数

路径:OK1028-linux-fs/configs/board/ls1028ardb/manifest

绿联dh2100如何支持docker 绿联10128_LS1028_15

5、全编译烧写验证

显示效果

绿联dh2100如何支持docker 绿联10128_解决方案_16

报错

第一次修改验证,并没有正常显示,查看打印信息发现有报错 pxlclk doesn’t support 125644000 Hz hwdev 71800000 HZ

像素时钟修改不正确

绿联dh2100如何支持docker 绿联10128_LS1028_17


第二次修改报错

屏体参数修改错误

绿联dh2100如何支持docker 绿联10128_linux_18