summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2021-12-13 20:42:31 -0800
committerLong Ling <longling@google.com>2021-12-21 15:44:15 -0800
commit6445807e32bc1c6a3b430d3883002bb2f801fb75 (patch)
treee250f11671782f1b49138b0bf06de3e8fd184601
parentb03dbda0a756df73ca5b38bb8185e2004a2de6c7 (diff)
downloadgs101-6445807e32bc1c6a3b430d3883002bb2f801fb75.tar.gz
libhwc2.1: pass panel name and serial to displaycolor
Bug: 172619016 Change-Id: I7f8d9b7de1aa20db8b6158e2d712b3fc813cd4fe
-rw-r--r--libhwc2.1/libdevice/ExynosDeviceModule.cpp4
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp22
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h5
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h3
4 files changed, 33 insertions, 1 deletions
diff --git a/libhwc2.1/libdevice/ExynosDeviceModule.cpp b/libhwc2.1/libdevice/ExynosDeviceModule.cpp
index b8d31da..678c474 100644
--- a/libhwc2.1/libdevice/ExynosDeviceModule.cpp
+++ b/libhwc2.1/libdevice/ExynosDeviceModule.cpp
@@ -31,7 +31,9 @@ ExynosDeviceModule::ExynosDeviceModule() : ExynosDevice(), mDisplayColorLoader(D
ExynosDisplayDrmInterfaceModule* moduleDisplayInterface =
(ExynosDisplayDrmInterfaceModule*)(display->mDisplayInterface.get());
- moduleDisplayInterface->getDisplayInfo(display_info);
+ if (display->mType == HWC_DISPLAY_PRIMARY) {
+ moduleDisplayInterface->getDisplayInfo(display_info);
+ }
}
initDisplayColor(display_info);
}
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
index 832d748..df71cfb 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
@@ -761,9 +761,31 @@ void ExynosDisplayDrmInterfaceModule::getDisplayInfo(
tb.hbm_dbv_min = brightnessTable[toUnderlying(BrightnessRange::HBM)].mBklStart;
tb.hbm_dbv_max = brightnessTable[toUnderlying(BrightnessRange::HBM)].mBklEnd;
+ primary_display.panel_name = GetPanelName();
+ primary_display.panel_serial = GetPanelSerial();
+
display_info.push_back(primary_display);
}
+const std::string ExynosDisplayDrmInterfaceModule::GetPanelInfo(const std::string &sysfs_rel,
+ char delim) {
+ ExynosPrimaryDisplayModule* display = (ExynosPrimaryDisplayModule*)mExynosDisplay;
+ const DisplayType type = display->getBuiltInDisplayType();
+ const std::string &sysfs = display->getPanelSysfsPath(type);
+
+ if (sysfs.empty()) {
+ return "";
+ }
+
+ std::string info;
+ if (readLineFromFile(sysfs + "/" + sysfs_rel, info, delim) != OK) {
+ ALOGE("failed reading %s/%s", sysfs.c_str(), sysfs_rel.c_str());
+ return "";
+ }
+
+ return info;
+}
+
//////////////////////////////////////////////////// ExynosPrimaryDisplayDrmInterfaceModule //////////////////////////////////////////////////////////////////
ExynosPrimaryDisplayDrmInterfaceModule::ExynosPrimaryDisplayDrmInterfaceModule(ExynosDisplay *exynosDisplay)
: ExynosDisplayDrmInterfaceModule(exynosDisplay)
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
index 86a50d3..17c47e3 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
@@ -146,6 +146,11 @@ class ExynosDisplayDrmInterfaceModule : public ExynosDisplayDrmInterface {
BPC_10,
};
DrmEnumParser::MapHal2DrmEnum mBpcEnums;
+
+ private:
+ const std::string GetPanelInfo(const std::string &sysfs_rel, char delim);
+ const std::string GetPanelSerial() { return GetPanelInfo("serial_number", '\n'); }
+ const std::string GetPanelName() { return GetPanelInfo("panel_name", '\n'); }
};
class ExynosPrimaryDisplayDrmInterfaceModule : public ExynosDisplayDrmInterfaceModule {
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
index 0339526..d0a5943 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
@@ -251,6 +251,9 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay {
return displayColorInterface->GetPipelineData(display)->Dqe();
};
+ // primary or secondary
+ DisplayType getBuiltInDisplayType() { return getDisplayTypeFromIndex(mIndex); }
+
private:
int32_t setLayersColorData();
DisplaySceneInfo mDisplaySceneInfo;