瑞芯微Rockchip开发者社区
直播中

罗星

8年用户 1566经验值
擅长:模拟技术
私信 关注
[问答]

RK3288 Android 9.0 eDP界面显示异常怎么解决呢

RK3288 Android 9.0 eDP界面显示异常是怎么回事?
RK3288 Android 9.0 eDP界面显示异常怎么解决呢?

回帖(1)

李鸾

2022-3-9 11:15:24
问题现象: 我们测试BOE N46, N20 等eDP屏幕时,冷启动起来播放附件Gradient Test.png图片(如下图1)正常,但Sleep/Wakeup后播放附件Gradient Test.png图片,会出现eDP issue after wakeup.jpg的棱线(如下图2);



                                                                                                                                图1,Gradient Test.png图片





                                                                                                                              图2 Sleep/Wakeup后 出现棱线

影响范围: RK3288, RK3399 Android v8.1, v9.0, v10.0 使用DRM 驱动的eDP 屏幕project.

问题原因: 虽然BOE N46, N20 LCD datasheet内说明LCD为6bit, 但实际搭配RK3288, RK3399使用时, eDP必须设定为8bit(bpc=<8>); 在uboot加载eDP panel时, uboot 会强制设定color depth为8bit, 但在Sleep/Wakeup后, 调用kernel 下eDP driver initial时, color depth读取了LCD的EDID的数据设置为了6bit, 造成了颜色显示异常。

解决对策: kernel 下eDP driver initial时, 重设color depth为8bit; (建议可根据dts配置来修改,或者参考下方对策1: “强制设置color_depth为8bit.zip ”固定设为8bit)

对策1: 强制设置color_depth为8bit

文件: kernel/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c

static int rockchip_dp_get_modes(struct analogix_dp_plat_data *plat_data,
                                 struct drm_connector *connector)
{
        struct drm_display_info *di = &connector->display_info;

        if (di->color_formats & DRM_COLOR_FORMAT_YCRCB444 ||
            di->color_formats & DRM_COLOR_FORMAT_YCRCB422) {
                di->color_formats &= ~(DRM_COLOR_FORMAT_YCRCB422 |
                                       DRM_COLOR_FORMAT_YCRCB444);
                di->color_formats |= DRM_COLOR_FORMAT_RGB444;
                di->bpc = 8;
        }
      
+        di->bpc = 8;
+        //printk("===>hgc: %s: bpc: %dn", __func__, di->bpc);
        return 0;
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分