2021-03-17 RK3288 接PHILIPS 4K显示器HDMI开机概率性不显示的问题

news/2025/2/5 6:53:12/

 RK3288 接PHILIPS 4K显示器HDMI开机概率性不显示的问题

 

一、测试发现在philips显示器休眠的情况下,rk3288 开机后hmdi无法唤醒显示器。 

        cat /d/dw-hdmi/status
        PHY: disabled

       分析后发现是无法打开kernel\drivers\gpu\drm\bridge\synopsys\dw-hdmi.c dw_hdmi_bridge_enable

二、解决方案,检测到无法显示就:

          echo off      >/sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/status 关闭

然后  echo detect >/sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/status 打开

 

三、具体代码。

diff --git a/device/rockchip/rk3288/init.rk3288.rc b/device/rockchip/rk3288/init.rk3288.rc
index c624b15..a4ba933 100755
--- a/device/rockchip/rk3288/init.rk3288.rc
+++ b/device/rockchip/rk3288/init.rk3288.rc
@@ -47,6 +47,7 @@ on initchown root system /dev/cec0chmod 0664 /dev/cec0
+    chmod 0664 /d/dw-hdmi/statuson verity-loggingexec u:r:slideshow:s0 -- /sbin/slideshow warning/verity_red_1 warning/verity_red_2diff --git a/hardware/rockchip/hwcomposer/hwcomposer.cpp b/hardware/rockchip/hwcomposer/hwcomposer.cpp
index 5dc0ea2..5d0402a 100755
--- a/hardware/rockchip/hwcomposer/hwcomposer.cpp
+++ b/hardware/rockchip/hwcomposer/hwcomposer.cpp
@@ -4258,6 +4258,97 @@ void  *invalidate_refresh(void *arg)}#endif
+#define DW_HDMI_STATUS_PATH  "/d/dw-hdmi/status"
+
+static bool read_hdmi_status_from_node(const char *path, char *read_buf,unsigned char length)
+{
+	int ret, fd;
+	char statebuf[200];
+	//ALOGI("%s", __FUNCTION__);
+	memset(statebuf, 0, sizeof(statebuf));
+	fd = open(path, O_RDONLY);
+	if (fd < 0)
+		return -ENOENT;
+	ret = read(fd, statebuf, length);
+	close(fd);
+	if (ret < 0) {
+		ALOGE("read hdmi state err\n");
+		return -EINVAL;
+	}
+    memcpy(read_buf,statebuf,length);
+    return 0;
+}
+
+static bool set_hdmi_status(bool hdmi_enable)
+{
+  char acStatus[10];
+  int fd,ret = 0;
+
+  if(hdmi_enable == true)
+      strcpy(acStatus,"detect");
+  else
+      strcpy(acStatus,"off");
+
+  fd = open(HDMI_STATUS_PATH, O_RDWR, 0);
+  if(fd < 0)
+  {
+         ALOGE("Open hdmi_status_fd fail in %s",__FUNCTION__);
+         return 1;
+  }
+  ret = write(fd,acStatus,strlen(acStatus)+1);
+  if(ret < 0)
+  {
+      ALOGE("set hdmi status to %s falied, ret = %d", acStatus, ret);
+  }
+  close(fd);
+  return 0;
+}
+
+void  *giada_fix_rk3288_hdmi_display(void *arg)
+{
+    int  ret,boot_completed_number=0;
+	char hdmi_status[20],dw_hdmi_status[200];
+	char boot_completed_value[PROPERTY_VALUE_MAX];
+
+    while(true) 
+	{
+	  property_get( "sys.boot_completed", boot_completed_value, "0");
+	  if (!strcmp(boot_completed_value, "1")) 
+	  {
+		  ++boot_completed_number;
+		  memset(hdmi_status,0,sizeof(hdmi_status));
+		  ret=read_hdmi_status_from_node(HDMI_STATUS_PATH,hdmi_status,sizeof(hdmi_status));
+		  if (ret < 0) {
+			ALOGE("read hdmi status\n");
+		  }
+		  memset(dw_hdmi_status,0,sizeof(dw_hdmi_status));
+	      ret=read_hdmi_status_from_node(DW_HDMI_STATUS_PATH,dw_hdmi_status,sizeof(dw_hdmi_status));
+		  if (ret < 0) {
+			ALOGE("read dw_hdmi status\n");
+		  }
+		  ALOGI("**********[%s]**********boot_completed_number=%d boot_completed_value=%s \r\nhdmi status\r\n%s\r\ndw_hdmi_status\r\n%s",__FUNCTION__,boot_completed_number,boot_completed_value,hdmi_status,dw_hdmi_status); 
+          if ((!strcmp(hdmi_status, "connected\n"))&&(!strcmp(dw_hdmi_status, "PHY: disabled\n"))&&(boot_completed_number>=10))
+          {
+   			system("echo HDMIDISPALYERROR >>/data/hdmi_information_error.txt");
+   			ALOGE("########### ERROR:RK3288 HDMI DISPALY IS NOT NORMAL,TRY TO REOPEN IT!###########");  
+   			set_hdmi_status(false);
+   	        usleep(1000000);
+   			set_hdmi_status(true);
+          }else if ((!strcmp(hdmi_status, "connected\n"))&&(strcmp(dw_hdmi_status, "PHY: disabled\n")))
+          {
+            break;
+          }
+        
+	  } else
+	      ALOGE("********Android System Booting...........!********");
+		 
+      usleep(1000000);
+    }
+	ALOGI("RK3288 HDMI DISPLAY IS OK NOW!");
+    pthread_exit(NULL);
+    return NULL;
+}
+#if 0
void* hwc_control_3dmode_thread(void *arg){
@@ -4401,6 +4492,13 @@ static int hwc_device_open(const struct hw_module_t *module, const char *name,signal(SIGALRM, hwc_static_screen_opt_handler);#endif+    pthread_t detect_rk3288_dispaly;
+    if (pthread_create(&detect_rk3288_dispaly, NULL, giada_fix_rk3288_hdmi_display, ctx.get()))
+    {
+        ALOGE("Create detect_rk3288_dispaly thread error .");
+    }
+	else
+		ALOGI("Created detect_rk3288_dispaly pthread  ");#if 0init_thread_pamaters(&ctx->mControlStereo);ctx->fd_3d = open("/sys/class/display/HDMI/3dmode", O_RDWR, 0);

 


http://www.ppmy.cn/news/130992.html

相关文章

CCG EXPO 2021圆满收官,飞利浦显示器带玩家征战精彩游戏视界

7月15日-18日&#xff0c;第十七届中国国际动漫游戏博览会&#xff08;简称“CCG EXPO 2021”&#xff09;在上海世博展览馆隆重举行。作为国家文旅部和上海市人民政府大力支持的动漫游戏类盛会&#xff0c;本届CCG EXPO展览面积近4万平方米&#xff0c;分动画、漫画、游戏、文…

PHILIPS屏幕中间有条白线

PHILIPS屏幕中间有条白线 PHIILIPS显示器屏幕中间有一条白色线左右滚动怎么解决 PHIILIPS显示器屏幕中间有一条白色线左右滚动怎么解决 长按下放最左侧按钮10秒钟&#xff0c;即可消失

网络计算机显示器接口,电脑显示器常见的4种接口:VGA、DVI、HDMI、DP接口

如今是新的“视”界,生活中总与各种屏幕打交道,难免会遇到选择视频接线的问题,要想搞清楚这点,我们只要通过了解现今常用的几种视频接线就会有个大致的认识。 经常会有一些朋友困扰,电脑显示器用什么接口最好,我的显示器用的数据线是不是最好的,支不支持高清等等。其实数…

macbook 外接显示器 模糊问题解决

链接&#xff1a;https://www.zhihu.com/question/19682094/answer/63245377 MacBook外接第三方显示器会被识别成电视&#xff0c;导致字体模糊&#xff0c;和字体渲染方式以及线材没有关系。所以要转换为强制RGB模式。 1.首先必须要关闭rootless。重启MacBook&#xff0c;按…

显示器接口_显示器带全能TypeC接口用起来有多爽?

如今&#xff0c;越来越多的手机、笔记本、平板电脑等设备都选择搭载USB Type-C接口&#xff0c;显示器同样如此。显示器所搭载的全能Type-C接口支持的标准非常多&#xff0c;兼具便捷性和实用性&#xff0c;让扩展更加方便。今天&#xff0c;我们来聊一聊显示器上的全能Type-C…

html5残影,液晶显示器出现残影的原因及解决办法

一、液晶显示器残影的概念 当我们在使用液晶显示器的时候&#xff0c;如果发现画面切换之时&#xff0c;前一个画面不会立刻消失&#xff0c;而是慢慢不见的现象&#xff0c;我们称这种现象叫做液晶显示器“残影”现象。 说得简单点&#xff0c;就是第一个画面本应该消失而轮到…

显示器选三星还是飞利浦_如何设置飞利浦色相运动传感器

显示器选三星还是飞利浦 The latest accessory to join the Philips Hue line is a motion sensor that can not only turn on your lights when you walk into a room, but can also activate certain scenes depending on the time of day. Here’s how to set it up and hav…

显示器点距 测试软件,大既是正义!最佳文本显示点距~AOC LV323HQPX显示器开箱

大既是正义!最佳文本显示点距~AOC LV323HQPX显示器开箱 2017-03-24 18:48:57 69点赞 190收藏 85评论 购买理由 点距0.276mm,同24寸1080p,100%DPI 无需字体缩放,跟27寸4K摆在一起对比看,眼睛直观感受非常舒服。2560x1440分辨率,终于跳出1920x1080的桎梏,脱亚入欧! 高能…