summaryrefslogtreecommitdiff
authorsky zhou <sky.zhou@amlogic.com>2019-12-26 13:35:35 (GMT)
committer sky zhou <sky.zhou@amlogic.com>2020-05-21 11:35:19 (GMT)
commitccf55f1db74d98e4c2a4cbb16386e89952399a50 (patch)
tree66fe8d6c16aabbc3cab35a40f72c138e936e0bf3
parent0ab16d0b478cab423c10072a2efb6a027899012a (diff)
downloadhwcomposer-ccf55f1db74d98e4c2a4cbb16386e89952399a50.zip
hwcomposer-ccf55f1db74d98e4c2a4cbb16386e89952399a50.tar.gz
hwcomposer-ccf55f1db74d98e4c2a4cbb16386e89952399a50.tar.bz2
HWC: temp disable set displaymode in hwc [1/1]
PD#SWPL-17875 Problem: both hwc/systemcontrol set displaymode when hdmi plugout. Solution: temp disable set displaymode in hwc, later we will enable it and remove set displaymode in systemcontrol. Verify: verify on Newton. Change-Id: I8f56bcb2ab622c61d7f8bd00799753e95474723d Signed-off-by: sky zhou <sky.zhou@amlogic.com>
Diffstat
-rw-r--r--common/display/HwDisplayCrtc.cpp1
-rw-r--r--common/display/include/HwDisplayCrtc.h1
-rw-r--r--common/hwc/FixedDisplayPipe.cpp15
-rw-r--r--common/hwc/HwcDisplayPipe.cpp5
4 files changed, 15 insertions, 7 deletions
diff --git a/common/display/HwDisplayCrtc.cpp b/common/display/HwDisplayCrtc.cpp
index fe4fd50..06ccc4f 100644
--- a/common/display/HwDisplayCrtc.cpp
+++ b/common/display/HwDisplayCrtc.cpp
@@ -86,7 +86,6 @@ int32_t HwDisplayCrtc::unbind() {
mConnector->setCrtc(NULL);
mConnector.reset();
mPlanes.clear();
-
mBinded = false;
}
return 0;
diff --git a/common/display/include/HwDisplayCrtc.h b/common/display/include/HwDisplayCrtc.h
index db2efd7..e354944 100644
--- a/common/display/include/HwDisplayCrtc.h
+++ b/common/display/include/HwDisplayCrtc.h
@@ -74,6 +74,7 @@ protected:
bool mFirstPresent;
bool mConnected;
+ bool mBinded;
drm_mode_info_t mCurModeInfo;
display_zoom_info_t mScaleInfo;
diff --git a/common/hwc/FixedDisplayPipe.cpp b/common/hwc/FixedDisplayPipe.cpp
index 3302c88..018409e 100644
--- a/common/hwc/FixedDisplayPipe.cpp
+++ b/common/hwc/FixedDisplayPipe.cpp
@@ -25,10 +25,8 @@ int32_t FixedDisplayPipe::init(
}
void FixedDisplayPipe::handleEvent(drm_display_event event, int val) {
- HwcDisplayPipe::handleEvent(event, val);
-
- std::lock_guard<std::mutex> lock(mMutex);
if (event == DRM_EVENT_HDMITX_HOTPLUG) {
+ std::lock_guard<std::mutex> lock(mMutex);
bool connected = (val == 0) ? false : true;
std::shared_ptr<PipeStat> pipe;
drm_connector_type_t targetConnector = DRM_MODE_CONNECTOR_INVALID;
@@ -57,11 +55,16 @@ void FixedDisplayPipe::handleEvent(drm_display_event event, int val) {
/*update display mode, workaround now.*/
initDisplayMode(pipe);
}
- break;
- } else if (connectorType == HWC_HDMI_ONLY && connected) {
- initDisplayMode(pipe);
+ statIt.second->hwcDisplay->onHotplug(connected);
+ } else if (connectorType == HWC_HDMI_ONLY) {
+ if (connected) {
+ initDisplayMode(pipe);
+ }
+ statIt.second->hwcDisplay->onHotplug(connected);
}
}
+ }else {
+ HwcDisplayPipe::handleEvent(event, val);
}
}
diff --git a/common/hwc/HwcDisplayPipe.cpp b/common/hwc/HwcDisplayPipe.cpp
index ed1cf7f..783227d 100644
--- a/common/hwc/HwcDisplayPipe.cpp
+++ b/common/hwc/HwcDisplayPipe.cpp
@@ -213,6 +213,7 @@ int32_t HwcDisplayPipe::updatePipe(std::shared_ptr<PipeStat> & stat) {
if (resChanged) {
/*reset vout displaymode, it will be null.*/
+ MESON_LOGD("HwcDisplayPipe::updatePipe %d changed", stat->hwcId);
stat->hwcCrtc->unbind();
stat->hwcCrtc->bind(stat->hwcConnector, stat->hwcPlanes);
stat->hwcCrtc->loadProperities();
@@ -321,11 +322,15 @@ int32_t HwcDisplayPipe::initDisplayMode(std::shared_ptr<PipeStat> & stat) {
switch (stat->cfg.modeConnectorType) {
case DRM_MODE_CONNECTOR_CVBS:
{
+ #if 0
const char * cvbs_config_key = "ubootenv.var.cvbsmode";
std::string modeName;
if (0 == sc_read_bootenv(cvbs_config_key, modeName)) {
stat->modeCrtc->writeCurDisplayMode(modeName);
}
+ #else
+ /*TODO:*/
+ #endif
}
break;
case DRM_MODE_CONNECTOR_HDMI: