summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp47
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h7
2 files changed, 20 insertions, 34 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index 6917f16..36d3f93 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -55,35 +55,23 @@ int32_t ExynosPrimaryDisplayModule::validateWinConfigData()
return ExynosDisplay::validateWinConfigData();
}
-int32_t ExynosPrimaryDisplayModule::OperationRateManager::getOperationRate() {
- std::string op_rate_str;
-
- ATRACE_CALL();
+int32_t ExynosPrimaryDisplayModule::OperationRateManager::getTargetOperationRate() {
if (mDisplayPowerMode == HWC2_POWER_MODE_DOZE ||
mDisplayPowerMode == HWC2_POWER_MODE_DOZE_SUSPEND) {
return LP_OP_RATE;
+ } else {
+ return mDisplayTargetOperationRate;
}
-
- if (readLineFromFile(mSysfsPath, op_rate_str, '\n') != OK) {
- OP_MANAGER_LOGE("failed to read %s", mSysfsPath.c_str());
- return 0;
- }
- return !op_rate_str.empty() ? std::atoi(op_rate_str.c_str()) : 0;
}
-int32_t ExynosPrimaryDisplayModule::OperationRateManager::setOperationRate(const int32_t rate) {
- if (!mDisplayActiveOperationRate || mDisplayActiveOperationRate == rate) return NO_ERROR;
+int32_t ExynosPrimaryDisplayModule::OperationRateManager::setTargetOperationRate(
+ const int32_t rate) {
+ if (mDisplayTargetOperationRate == rate) return NO_ERROR;
- ATRACE_CALL();
- int32_t ret = writeIntToFile(mSysfsPath.c_str(), rate);
- if (ret == NO_ERROR) {
- mDisplayActiveOperationRate = rate;
- OP_MANAGER_LOGI("succeed to write operation rate %d", rate);
- } else {
- OP_MANAGER_LOGE("failed to write operation rate %d", rate);
- }
+ OP_MANAGER_LOGI("set target operation rate %d", rate);
+ mDisplayTargetOperationRate = rate;
- return ret;
+ return NO_ERROR;
}
ExynosPrimaryDisplayModule::OperationRateManager::OperationRateManager(
@@ -99,8 +87,7 @@ ExynosPrimaryDisplayModule::OperationRateManager::OperationRateManager(
mDisplayPowerMode(HWC2_POWER_MODE_ON),
mDisplayLowBatteryModeEnabled(false) {
mDisplayNsMinDbv = property_get_int32("vendor.primarydisplay.op.ns_min_dbv", 0);
- mDisplayActiveOperationRate = mDisplayHsOperationRate;
- mSysfsPath = mDisplay->getPanelSysfsPath(DisplayType::DISPLAY_PRIMARY) + "op_hz";
+ mDisplayTargetOperationRate = mDisplayHsOperationRate;
OP_MANAGER_LOGI("Op Rate: NS=%d HS=%d NsMinDbv=%d", mDisplayNsOperationRate,
mDisplayHsOperationRate, mDisplayNsMinDbv);
}
@@ -182,8 +169,8 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::updateOperationRateLoc
if (mDisplayPowerMode == HWC2_POWER_MODE_DOZE ||
mDisplayPowerMode == HWC2_POWER_MODE_DOZE_SUSPEND) {
- mDisplayActiveOperationRate = LP_OP_RATE;
- desiredOpRate = mDisplayActiveOperationRate;
+ mDisplayTargetOperationRate = LP_OP_RATE;
+ desiredOpRate = mDisplayTargetOperationRate;
effectiveOpRate = desiredOpRate;
} else if (mDisplayPowerMode != HWC2_POWER_MODE_ON) {
return ret;
@@ -196,7 +183,7 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::updateOperationRateLoc
effectiveOpRate = mDisplayHsOperationRate;
} else if (cond == DispOpCondition::PANEL_SET_POWER) {
if (mDisplayPowerMode == HWC2_POWER_MODE_ON) {
- mDisplayActiveOperationRate = getOperationRate();
+ mDisplayTargetOperationRate = getTargetOperationRate();
}
effectiveOpRate = desiredOpRate;
} else if (cond == DispOpCondition::SET_DBV) {
@@ -206,7 +193,7 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::updateOperationRateLoc
effectiveOpRate = desiredOpRate;
}
mDisplayLastDbv = dbv;
- if (effectiveOpRate > LP_OP_RATE && (effectiveOpRate != mDisplayActiveOperationRate)) {
+ if (effectiveOpRate > LP_OP_RATE && (effectiveOpRate != mDisplayTargetOperationRate)) {
OP_MANAGER_LOGD("brightness delta=%d", delta);
} else {
return ret;
@@ -217,11 +204,11 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::updateOperationRateLoc
OP_MANAGER_LOGI("rate switching is disabled, skip NS op rate update");
return ret;
} else if (effectiveOpRate > LP_OP_RATE) {
- ret = setOperationRate(effectiveOpRate);
+ ret = setTargetOperationRate(effectiveOpRate);
}
- OP_MANAGER_LOGI("Op@%d(desired:%d) | Refresh@%d(peak:%d), Battery:%s, DBV:%d(NsMin:%d)",
- mDisplayActiveOperationRate, desiredOpRate, curRefreshRate,
+ OP_MANAGER_LOGI("Target@%d(desired:%d) | Refresh@%d(peak:%d), Battery:%s, DBV:%d(NsMin:%d)",
+ mDisplayTargetOperationRate, desiredOpRate, curRefreshRate,
mDisplayPeakRefreshRate, mDisplayLowBatteryModeEnabled ? "Low" : "OK",
mDisplayLastDbv, mDisplayNsMinDbv);
return ret;
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
index b084b6c..9dc0673 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
@@ -43,7 +43,7 @@ class ExynosPrimaryDisplayModule : public gs201::ExynosPrimaryDisplayModule {
int32_t onConfig(hwc2_config_t cfg) override;
int32_t onBrightness(uint32_t dbv) override;
int32_t onPowerMode(int32_t mode) override;
- int32_t getOperationRate() override;
+ int32_t getTargetOperationRate() override;
private:
enum class DispOpCondition : uint32_t {
@@ -54,12 +54,12 @@ class ExynosPrimaryDisplayModule : public gs201::ExynosPrimaryDisplayModule {
};
int32_t updateOperationRateLocked(const DispOpCondition cond);
- int32_t setOperationRate(const int32_t rate);
+ int32_t setTargetOperationRate(const int32_t rate);
ExynosPrimaryDisplay* mDisplay;
int32_t mDisplayHsOperationRate;
int32_t mDisplayNsOperationRate;
- int32_t mDisplayActiveOperationRate;
+ int32_t mDisplayTargetOperationRate;
int32_t mDisplayNsMinDbv;
int32_t mDisplayPeakRefreshRate;
int32_t mDisplayRefreshRate;
@@ -68,7 +68,6 @@ class ExynosPrimaryDisplayModule : public gs201::ExynosPrimaryDisplayModule {
std::optional<hwc2_power_mode_t> mDisplayPowerMode;
bool mDisplayLowBatteryModeEnabled;
Mutex mLock;
- std::string mSysfsPath;
static constexpr uint32_t BRIGHTNESS_DELTA_THRESHOLD = 10;
static constexpr uint32_t LP_OP_RATE = 30;