From c223de4f9513d2e9e13a8b1ecd2d60260040d199 Mon Sep 17 00:00:00 2001 From: shuze.ma Date: Wed, 07 Feb 2018 06:50:05 +0000 Subject: HWC2: fix r311 no display [1/1] PD# 160352 Default close the requirement that hdcp auth fail blank display. Change-Id: Ib802e7ef639b9bab8ca7683cd8539fbaed8e5908 --- diff --git a/hwc2/common/devices/PhysicalDevice.cpp b/hwc2/common/devices/PhysicalDevice.cpp index cb9510e..76db7f1 100644 --- a/hwc2/common/devices/PhysicalDevice.cpp +++ b/hwc2/common/devices/PhysicalDevice.cpp @@ -31,6 +31,7 @@ #include #define FB_IOC_MAGIC 'O' +//#define HWC_SUPPORT_SECURE_DISPLAY 1 #define FBIOPUT_OSD_CURSOR _IOWR(FB_IOC_MAGIC, 0x0, struct fb_cursor) namespace android { @@ -132,9 +133,16 @@ bool PhysicalDevice::initialize() { char hdcpTxKey[MODE_LEN] = {0}; if (Utils::getSysfsStr(DISPLAY_HDMI_HDCP_KEY, hdcpTxKey) == 0) { - //no need hdcp auth, if box have no key - if ((strlen(hdcpTxKey) == 0) || !(strcmp(hdcpTxKey, "00"))) + //no need hdcp auth, if box have no key or hdmi unplug + char hdmi_state[MODE_LEN] = {0}; + Utils::getSysfsStr(DISPLAY_HDMI_PLUG, hdmi_state); + if ((strlen(hdmi_state) == 0) || strstr(hdmi_state, "0")) mHDCPRegister = false; + else if ((strlen(hdcpTxKey) == 0) || !(strcmp(hdcpTxKey, "00"))) + mHDCPRegister = false; + } else { + //for tv, dont need hdcp auth + mHDCPRegister = false; } mDisplayHdmi = new DisplayHdmi(); @@ -702,10 +710,7 @@ int32_t PhysicalDevice::postFramebuffer(int32_t* outRetireFence, bool hasVideoOv #endif mFbSyncRequest.type = mRenderMode; -#ifdef HWC_SUPPORT_SECURE_LAYER - if (!mSecure && !mHwcSecureLayers.isEmpty()) - mClientTargetHnd = NULL; -#else +#ifdef HWC_SUPPORT_SECURE_DISPLAY if (mHDCPRegister && !mSecure) mClientTargetHnd = NULL; #endif @@ -713,12 +718,16 @@ int32_t PhysicalDevice::postFramebuffer(int32_t* outRetireFence, bool hasVideoOv if (!mClientTargetHnd || private_handle_t::validate(mClientTargetHnd) < 0 || mPowerMode == HWC2_POWER_MODE_OFF) { DTRACE("Post blank to screen, mClientTargetHnd(%p, %d), mTargetAcquireFence(%d)", mClientTargetHnd, private_handle_t::validate(mClientTargetHnd), mTargetAcquireFence); + +#ifdef HWC_SUPPORT_SECURE_DISPLAY if (mHDCPRegister && !mSecure && mStartBootanim) { //blank osd1, uboot logo show in osd1 mStartBootanim = false; setOSD1Blank(false); bootanimDetect(); } +#endif + *outRetireFence = HwcFenceControl::merge(String8("ScreenBlank"), mPriorFrameRetireFence, mPriorFrameRetireFence); HwcFenceControl::closeFd(mTargetAcquireFence); mTargetAcquireFence = -1; @@ -1829,6 +1838,7 @@ void PhysicalDevice::dump(Dump& d) { mReverseScaleX, mReverseScaleY); d.append("isSecure : %s\n", mSecure ? "TRUE" : "FALSE"); + d.append("HDCPRegister : %s\n", mHDCPRegister ? "TRUE" : "FALSE"); mDisplayHdmi->dump(d); diff --git a/hwc2/include/PhysicalDevice.h b/hwc2/include/PhysicalDevice.h index 38aa8ed..99eac88 100644 --- a/hwc2/include/PhysicalDevice.h +++ b/hwc2/include/PhysicalDevice.h @@ -40,6 +40,7 @@ #define DISPLAY_FB0_FREESCALE_AXIS "/sys/class/graphics/fb0/free_scale_axis" #define DISPLAY_HDMI_HDCP_KEY "/sys/class/amhdmitx/amhdmitx0/hdcp_lstore"//TX have 22 or 14 or none key +#define DISPLAY_HDMI_PLUG "/sys/class/amhdmitx/amhdmitx0/hpd_state"//HDMI PLUG:1 UNPLUG:0 namespace android { namespace amlogic { -- cgit