diff options
author | Long Ling <longling@google.com> | 2021-12-13 20:42:31 -0800 |
---|---|---|
committer | Long Ling <longling@google.com> | 2021-12-21 15:44:15 -0800 |
commit | 6445807e32bc1c6a3b430d3883002bb2f801fb75 (patch) | |
tree | e250f11671782f1b49138b0bf06de3e8fd184601 | |
parent | b03dbda0a756df73ca5b38bb8185e2004a2de6c7 (diff) | |
download | gs101-6445807e32bc1c6a3b430d3883002bb2f801fb75.tar.gz |
libhwc2.1: pass panel name and serial to displaycolor
Bug: 172619016
Change-Id: I7f8d9b7de1aa20db8b6158e2d712b3fc813cd4fe
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; |