问题背景:μ A
am5728+lt8718+μ A (MIPI DPI)显示屏
linux版本:4.9.69
当前三基色,红、绿、蓝测试显示屏颜色正确。
应用程序使用QT UI调用系统接口,设置颜色是添加了透明度参数,显示屏的颜色与实际的颜色不匹配。
问题描述:μ A
当前做了一下linux驱动修改,但是还是不正确。请教,ARGB透明度参数驱动中怎么修改?
修改驱动测试:μ A
将drivers vedio/vedio/fbdev/omapfb/omapfb-main.h c中的 fb_mode_to_dss_mode (函数)μ s
情形32:
dsmode = OMAP_DSS_COLOR_RGB24U;
中断;
改为:
情形32:
dsmode = OMAP_DSS_COLOR_ARGB32;
中断;
将drivers vedio/vedio/fbdev/omapfb/omapfb-main.h _setcolreg (c中的)函数
case OMAPFB_COLOR_RGB24U:
if (r != 0)
break;
printk("%s regno:%d\n", __func__, regno);
if (regno < 16) {
u32 pal;
pal = ((red >> (16 - var->red.length)) <<
var->red.offset) |
((green >> (16 - var->green.length)) <<
var->green.offset) |
(blue >> (16 - var->blue.length));
((u32 *)(fbi->pseudo_palette))[regno] = pal;
}
break;
改为:
case OMAPFB_COLOR_RGB24U:
case OMAPFB_COLOR_ARGB32:
if (r != 0)
break;
printk("%s regno:%d\n", __func__, regno);
if (regno < 16) {
u32 pal;
pal = ((transp >> (16 - var->transp.length)) <<
var->transp.offset) |
((red >> (16 - var->red.length)) <<
var->red.offset) |
((green >> (16 - var->green.length)) <<
var->green.offset) |
(blue >> (16 - var->blue.length));
((u32 *)(fbi->pseudo_palette))[regno] = pal;
}
break;
