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

王兰

13年用户 841经验值
擅长:基础元器件
私信 关注
[问答]

怎么去解决RK3399 HDMI接部分4K显示器不停重启的问题呢

为什么RK3399 HDMI接部分4K显示器会不停重启呢?
怎么去解决RK3399 HDMI接部分4K显示器不停重启的问题呢?

回帖(1)

周悠悠

2022-3-7 10:01:41
  《 》
  思路:跟据显示器设置1080P60(目前显示到1080P60),如果显示信息最大的解决P08只进行大小,则按edididI2Cnct
  @nct-admin:/mnt/tsdc2/RK3399System/RK3399-JD4 -Android7.1/kernel/drivers$ git diff 。
  diff --git a/RK3399-JD4-Android7.1/kernel/drivers/gpu/drm/bridge/dw-hdmi.cb/RK3399-JD4-Android7.1/kernel/drivers/gpu/drm/bridge/dw- hdmi.c
  索引 835e78cca6..6f998cf7ea 100644
  --- a/RK3399-JD4-Android7.1/kernel/drivers/gpu/drm/bridge/dw-hdmi.c
  +++ b/RK3399-JD4-Android7.1/ kernel/drivers/gpu/drm/bridge/dw-hdmi.c
  @@ -2442,21 +2442,46 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
  static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
  {
  + bool isVertical =假;
  + 整数最小值 = 0;
  + 整数最大值 = 0;
  结构 dw_hdmi *hdmi = container_of(连接器,结构 dw_hdmi,
  连接器);
  结构 edid *edid;
  结构 drm_display_mode *mode;
  - const u8 def_modes[6] = {4, 16, 31, 19, 17, 2};
  + //const u8 def_modes[6] = {4, 16, 31, 19, 17, 2};
  + 常量 u8 def_modes[6] = {16, 4, 31, 19, 17, 2};
  结构 hdr_static_metadata *metedata =
  &connector-》display_info.hdmi.hdr_panel_metadata;
  int i, ret = 0;
  如果 (!hdmi-》ddc)
  返回 0;
  - //@howard 20210604
  - //edid = drm_get_edid(connector, hdmi-》ddc);
  - edid = NULL;
  - printk(“霍华德###hdmi, %sn”, __FUNCTION__);
  +
  + printk(“霍华德###hdmi, %s:n”, __FUNCTION__);
  +
  + edid = drm_get_edid(连接器,hdmi-》ddc);
  +
  + /**
  + * 由霍华德添加
  + */
  + if(edid) {
  + printk(“Howard###hdmi, %s: %dX%dn”, __FUNCTION__, edid-》width_cm, edid-》高度_厘米);
  + }
  +
  + if(edid-》width_cm 《 edid-》height_cm ){
  + isVertical = true;
  + min = edid-》width_cm;
  + 最大 = edid-》height_cm;
  + }else{
  + max = edid-》
  + min = edid-》height_cm;
  + }
  + //48X27
  + if(min 》 27 && max 》 48){
  + edid = NULL;
  + }
  +
  if (edid) {
  dev_dbg(hdmi-》dev, “得到 edid: width[%d] x height[%d]n”,
  edid-》width_cm, edid-》height_cm);
  diff --git a/RK3399-JD4-Android7.1/kernel/drivers/video/rockchip/hdmi/rockchip-hdmi.hb/RK3399-JD4-Android7.1/kernel/drivers/video/rockchip/hdmi/rockchip- hdmi.h
  index 08e1f9b47e..06f097f7a2 100644
  --- a/RK3399-JD4-Android7.1/kernel/drivers/video/rockchip/hdmi/rockchip-hdmi.h
  +++ b/RK3399-JD4-Android7.1/内核/驱动程序/视频/rockchip/hdmi/rockchip-hdmi.h
  @@ -566,8 +566,9 @@结构HDMI {
  的#define HDMI_AUTO_CONFIG假
  / *默认HDMI参见模式* /
  - #定义HDMI_VIDEO_DEFAULT_MODE HDMI_1280X720P_60HZ
  - / * * HDMI_1920X1080P_60HZ /
  + //#限定HDMI_VIDEO_DEFAULT_MODE HDMI_1280X720P_60HZ
  +#限定HDMI_VIDEO_DEFAULT_MODE HDMI_1920X1080P_60HZ
  +
  #define HDMI_VIDEO_DEFAULT_COLORMODE HDMI_COLOR_AUTO
  #define HDMI_VIDEO_DEFAULT_COLORDEPTH 8
  (END)
  diff --git a/RK3399-JD4-Android7.1/kernel/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.cb/RK3399-JD4-Android7.1/内核/驱动程序/gpu/drm/rockchip/dw_hdmi-rockchip.c
  index e1f50de45c..7a3cb8fde5 100644
  --- a/RK3399-JD4-Android7.1/kernel/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
  +++ b/RK3399-JD4-Android7.1/kernel/drivers /gpu/drm/rockchip/dw_hdmi-rockchip.c
  @@ -484,11 +484,14 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector,
  * 如果 sink max TMDS clock 《 340MHz, 我们应该检查 mode pixel
  * clock 》 340MHz是否为 YCbCr420
  */
  +//@howard 20210604 disable
  + printk(“Howard###hdmi, %sn”, __FUNCTION__);
  +#if 0
  if (mode-》clock 》 340000 &&
  connector-》display_info .max_tmds_clock 《 340000 &&
  !drm_mode_is_420(&connector-》display_info, mode))
  返回 MODE_BAD;
  -
  +#endif
举报

更多回帖

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