diff --git a/frameworks/services/systemcontrol/DisplayMode.cpp b/frameworks/services/systemcontrol/DisplayMode.cpp index 40943bd5..a03112ee 100755 --- a/frameworks/services/systemcontrol/DisplayMode.cpp +++ b/frameworks/services/systemcontrol/DisplayMode.cpp @@ -231,7 +231,7 @@ void DisplayMode::init() { char hpd_state[MODE_LEN] = {0}; pSysWrite->readSysfs("/sys/class/amhdmitx/amhdmitx0/hdmi_used", hdmi_state); pSysWrite->readSysfs(DISPLAY_HPD_STATE, hpd_state); - if (strstr(hdmi_state, "1") && strstr(hpd_state, "0")) { + if (/* strstr(hdmi_state, "1") && */strstr(hpd_state, "0")) { pSysWrite->writeSysfs(SYSFS_DISPLAY_MODE, "null"); return; } @@ -534,7 +534,14 @@ void DisplayMode::setSourceOutputMode(const char* outputmode, output_mode_state pSysWrite->writeSysfs(DISPLAY_HDMI_AUDIO_MUTE, "0"); usleep(20000); pSysWrite->writeSysfs(DISPLAY_HDMI_AVMUTE, "-1"); - pTxAuth->start(); + char hpd_state[MAX_STR_LEN] = {0}; + + pSysWrite->readSysfs(DISPLAY_HPD_STATE, hpd_state); + if (!strncmp(hpd_state, "1", 1)) { + pTxAuth->start(); + } else { + SYS_LOGI("HPD is low. There is nothing to do for HDCP"); + } return; } else if (!strcmp(outputmode, "displayoff")) { pSysWrite->writeSysfs(DISPLAY_HDMI_AVMUTE, "1");