| 
 
贡献174 
飞刀15 FD
注册时间2018-8-3
在线时间3 小时积分26 
 
 | 
 
 
 楼主|
发表于 2018-8-5 15:48:39
|
显示全部楼层 
| 刚刚已经找到原因! 
 OK4418 LVDS驱动支持的是8bit VESA制式 (16M色):
 0+/-:R0,R1,R2,R3,R4,R5,G0
 1+/-:G1,G2,G3,G4,G5,B0,B1
 2+/-:B2,B3,B4,B5,HS,VS,DE
 3+/-:R6,R7,G6,G7,B6,B7,0
 
 而我使用的LCD是6bit VESA (262K色)
 0+/-:R0,R1,R2,R3,R4,R5,G0
 1+/-:G1,G2,G3,G4,G5,B0,B1
 2+/-:B2,B3,B4,B5,HS,VS,DE
 
 所以最后的高位R6,R7,G6,G7,B6,B7,我的LCD并没有接收到,令颜色出错。
 
 现在我的做法是:
 修改arch/arm/mach-s5p4418/soc/display_lvds.c,将VESA设定改为USER自定义,
 设定输出时把Bit0 - Bit 1去掉,使LVDS输出Bit 2 - Bit 7
 成功把16M色转为262K色,输出如下:
 0+/-:R2,R3,R4,R5,R6,R7,G2
 1+/-:G3,G4,G5,G6,G7,B2,B3
 2+/-:B4,B5,B6,B7,HS,VS,DE
 
 不过由于我无法修改UBoot,所以在UBoot阶段颜色还是错的,等到载入Kernel后,颜色才会变回正常。
 希望Forlinx公司能帮忙解决UBoot无法设定LVDS色彩的问题。
 
 我把修改了的display_lvds.c上传了。
 
 
 
 | 
 |