summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2022-01-20 02:03:52 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-01-20 02:03:52 +0000
commita39b0e1690508dda81ac1d8094cb8678e232f28f (patch)
treeac84a3037e0241d097b4ddfc0b18d0e470593ec9
parent72dd97eec612b2f5da79ab8da000151e089adbfe (diff)
parent35be7fdc1ff6d778ec0f8c8e5993c643d29c85b4 (diff)
downloadgs101-a39b0e1690508dda81ac1d8094cb8678e232f28f.tar.gz
Merge "libhwc2.1: atc sys node update"
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp53
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h54
2 files changed, 59 insertions, 48 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index e9d8d4f..22b4adb 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -867,10 +867,17 @@ void ExynosPrimaryDisplayModule::initLbe() {
}
mAtcInit = true;
- mAtcAmbientLight.set_dirty();
- mAtcStrength.set_dirty();
- for (auto it = kAtcSubSetting.begin(); it != kAtcSubSetting.end(); it++)
- mAtcSubSetting[it->first.c_str()].set_dirty();
+ mAtcAmbientLight.node = String8::format(ATC_AMBIENT_LIGHT_FILE_NAME, mIndex);
+ mAtcAmbientLight.value.set_dirty();
+ mAtcStrength.node = String8::format(ATC_ST_FILE_NAME, mIndex);
+ mAtcStrength.value.set_dirty();
+ mAtcEnable.node = String8::format(ATC_ENABLE_FILE_NAME, mIndex);
+ mAtcEnable.value.set_dirty();
+
+ for (auto it = kAtcSubSetting.begin(); it != kAtcSubSetting.end(); it++) {
+ mAtcSubSetting[it->first.c_str()].node = String8::format(it->second.c_str(), mIndex);
+ mAtcSubSetting[it->first.c_str()].value.set_dirty();
+ }
}
uint32_t ExynosPrimaryDisplayModule::getAtcLuxMapIndex(std::vector<atc_lux_map> map, uint32_t lux) {
@@ -886,20 +893,20 @@ uint32_t ExynosPrimaryDisplayModule::getAtcLuxMapIndex(std::vector<atc_lux_map>
}
int32_t ExynosPrimaryDisplayModule::setAtcStrength(uint32_t strength) {
- mAtcStrength.store(strength);
- if (mAtcStrength.is_dirty()) {
- if (writeIntToFile(ATC_ST_FILE_NAME, mAtcStrength.get()) != NO_ERROR) return -EPERM;
- mAtcStrength.clear_dirty();
+ mAtcStrength.value.store(strength);
+ if (mAtcStrength.value.is_dirty()) {
+ if (writeIntToFile(mAtcStrength.node, mAtcStrength.value.get()) != NO_ERROR) return -EPERM;
+ mAtcStrength.value.clear_dirty();
}
return NO_ERROR;
}
int32_t ExynosPrimaryDisplayModule::setAtcAmbientLight(uint32_t ambient_light) {
- mAtcAmbientLight.store(ambient_light);
- if (mAtcAmbientLight.is_dirty()) {
- if (writeIntToFile(ATC_AMBIENT_LIGHT_FILE_NAME, mAtcAmbientLight.get()) != NO_ERROR)
+ mAtcAmbientLight.value.store(ambient_light);
+ if (mAtcAmbientLight.value.is_dirty()) {
+ if (writeIntToFile(mAtcAmbientLight.node, mAtcAmbientLight.value.get()) != NO_ERROR)
return -EPERM;
- mAtcAmbientLight.clear_dirty();
+ mAtcAmbientLight.value.clear_dirty();
}
return NO_ERROR;
@@ -914,12 +921,12 @@ int32_t ExynosPrimaryDisplayModule::setAtcMode(std::string mode_name) {
if (enable) {
atc_mode mode = mode_data->second;
for (auto it = kAtcSubSetting.begin(); it != kAtcSubSetting.end(); it++) {
- mAtcSubSetting[it->first.c_str()].store(mode.sub_setting[it->first.c_str()]);
- if (mAtcSubSetting[it->first.c_str()].is_dirty()) {
- if (writeIntToFile(it->second.c_str(), mAtcSubSetting[it->first.c_str()].get()) !=
- NO_ERROR)
+ mAtcSubSetting[it->first.c_str()].value.store(mode.sub_setting[it->first.c_str()]);
+ if (mAtcSubSetting[it->first.c_str()].value.is_dirty()) {
+ if (writeIntToFile(mAtcSubSetting[it->first.c_str()].node,
+ mAtcSubSetting[it->first.c_str()].value.get()) != NO_ERROR)
return -EPERM;
- mAtcSubSetting[it->first.c_str()].clear_dirty();
+ mAtcSubSetting[it->first.c_str()].value.clear_dirty();
}
}
mAtcStUpStep = mode.st_up_step;
@@ -1021,7 +1028,7 @@ LbeState ExynosPrimaryDisplayModule::getLbeState() {
int32_t ExynosPrimaryDisplayModule::setAtcStDimming(uint32_t value) {
Mutex::Autolock lock(mAtcStMutex);
- int32_t strength = mAtcStrength.get();
+ int32_t strength = mAtcStrength.value.get();
if (mAtcStTarget != value) {
mAtcStTarget = value;
uint32_t step = mAtcStTarget > strength ? mAtcStUpStep : mAtcStDownStep;
@@ -1032,7 +1039,7 @@ int32_t ExynosPrimaryDisplayModule::setAtcStDimming(uint32_t value) {
ALOGI("setup atc st dimming=%d, count=%d, step=%d", value, count, step);
}
- if (mAtcStStepCount == 0 && !mAtcStrength.is_dirty()) return NO_ERROR;
+ if (mAtcStStepCount == 0 && !mAtcStrength.value.is_dirty()) return NO_ERROR;
if ((strength + mAtcStUpStep) < mAtcStTarget) {
strength = strength + mAtcStUpStep;
@@ -1052,10 +1059,10 @@ int32_t ExynosPrimaryDisplayModule::setAtcStDimming(uint32_t value) {
}
int32_t ExynosPrimaryDisplayModule::setAtcEnable(bool enable) {
- mAtcEnable.store(enable);
- if (mAtcEnable.is_dirty()) {
- if (writeIntToFile(ATC_ENABLE_FILE_NAME, enable) != NO_ERROR) return -EPERM;
- mAtcEnable.clear_dirty();
+ mAtcEnable.value.store(enable);
+ if (mAtcEnable.value.is_dirty()) {
+ if (writeIntToFile(mAtcEnable.node, enable) != NO_ERROR) return -EPERM;
+ mAtcEnable.value.clear_dirty();
}
return NO_ERROR;
}
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
index d0a5943..9dc5010 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
@@ -49,27 +49,27 @@ constexpr char kAtcModeNormalStr[] = "normal";
constexpr char kAtcModeHbmStr[] = "hbm";
constexpr char kAtcModePowerSaveStr[] = "power_save";
-#define ATC_AMBIENT_LIGHT_FILE_NAME "/sys/class/dqe/atc/ambient_light"
-#define ATC_ST_FILE_NAME "/sys/class/dqe/atc/st"
-#define ATC_ENABLE_FILE_NAME "/sys/class/dqe/atc/en"
-#define ATC_LT_FILE_NAME "/sys/class/dqe/atc/lt"
-#define ATC_NS_FILE_NAME "/sys/class/dqe/atc/ns"
-#define ATC_DITHER_FILE_NAME "/sys/class/dqe/atc/dither"
-#define ATC_PL_W1_FILE_NAME "/sys/class/dqe/atc/pl_w1"
-#define ATC_PL_W2_FILE_NAME "/sys/class/dqe/atc/pl_w2"
-#define ATC_CTMODE_FILE_NAME "/sys/class/dqe/atc/ctmode"
-#define ATC_PP_EN_FILE_NAME "/sys/class/dqe/atc/pp_en"
-#define ATC_UPGRADE_ON_FILE_NAME "/sys/class/dqe/atc/upgrade_on"
-#define ATC_TDR_MAX_FILE_NAME "/sys/class/dqe/atc/tdr_max"
-#define ATC_TDR_MIN_FILE_NAME "/sys/class/dqe/atc/tdr_min"
-#define ATC_BACKLIGHT_FILE_NAME "/sys/class/dqe/atc/back_light"
-#define ATC_DSTEP_FILE_NAME "/sys/class/dqe/atc/dstep"
-#define ATC_SCALE_MODE_FILE_NAME "/sys/class/dqe/atc/scale_mode"
-#define ATC_THRESHOLD_1_FILE_NAME "/sys/class/dqe/atc/threshold_1"
-#define ATC_THRESHOLD_2_FILE_NAME "/sys/class/dqe/atc/threshold_2"
-#define ATC_THRESHOLD_3_FILE_NAME "/sys/class/dqe/atc/threshold_3"
-#define ATC_GAIN_LIMIT_FILE_NAME "/sys/class/dqe/atc/gain_limit"
-#define ATC_LT_CALC_AB_SHIFT_FILE_NAME "/sys/class/dqe/atc/lt_calc_ab_shift"
+#define ATC_AMBIENT_LIGHT_FILE_NAME "/sys/class/dqe%d/atc/ambient_light"
+#define ATC_ST_FILE_NAME "/sys/class/dqe%d/atc/st"
+#define ATC_ENABLE_FILE_NAME "/sys/class/dqe%d/atc/en"
+#define ATC_LT_FILE_NAME "/sys/class/dqe%d/atc/lt"
+#define ATC_NS_FILE_NAME "/sys/class/dqe%d/atc/ns"
+#define ATC_DITHER_FILE_NAME "/sys/class/dqe%d/atc/dither"
+#define ATC_PL_W1_FILE_NAME "/sys/class/dqe%d/atc/pl_w1"
+#define ATC_PL_W2_FILE_NAME "/sys/class/dqe%d/atc/pl_w2"
+#define ATC_CTMODE_FILE_NAME "/sys/class/dqe%d/atc/ctmode"
+#define ATC_PP_EN_FILE_NAME "/sys/class/dqe%d/atc/pp_en"
+#define ATC_UPGRADE_ON_FILE_NAME "/sys/class/dqe%d/atc/upgrade_on"
+#define ATC_TDR_MAX_FILE_NAME "/sys/class/dqe%d/atc/tdr_max"
+#define ATC_TDR_MIN_FILE_NAME "/sys/class/dqe%d/atc/tdr_min"
+#define ATC_BACKLIGHT_FILE_NAME "/sys/class/dqe%d/atc/back_light"
+#define ATC_DSTEP_FILE_NAME "/sys/class/dqe%d/atc/dstep"
+#define ATC_SCALE_MODE_FILE_NAME "/sys/class/dqe%d/atc/scale_mode"
+#define ATC_THRESHOLD_1_FILE_NAME "/sys/class/dqe%d/atc/threshold_1"
+#define ATC_THRESHOLD_2_FILE_NAME "/sys/class/dqe%d/atc/threshold_2"
+#define ATC_THRESHOLD_3_FILE_NAME "/sys/class/dqe%d/atc/threshold_3"
+#define ATC_GAIN_LIMIT_FILE_NAME "/sys/class/dqe%d/atc/gain_limit"
+#define ATC_LT_CALC_AB_SHIFT_FILE_NAME "/sys/class/dqe%d/atc/lt_calc_ab_shift"
const std::unordered_map<std::string, std::string> kAtcSubSetting =
{{"local_tone_gain", ATC_LT_FILE_NAME},
@@ -270,6 +270,10 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay {
uint32_t st_up_step;
uint32_t st_down_step;
};
+ struct atc_sysfs {
+ String8 node;
+ CtrlValue<int32_t> value;
+ };
bool parseAtcProfile();
int32_t setAtcMode(std::string mode_name);
@@ -306,10 +310,10 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay {
std::string mCurrentAtcModeName;
uint32_t mCurrentLux = 0;
uint32_t mAtcLuxMapIndex = 0;
- CtrlValue<uint32_t> mAtcAmbientLight;
- CtrlValue<uint32_t> mAtcStrength;
- CtrlValue<uint32_t> mAtcEnable;
- std::unordered_map<std::string, CtrlValue<int32_t>> mAtcSubSetting;
+ struct atc_sysfs mAtcAmbientLight;
+ struct atc_sysfs mAtcStrength;
+ struct atc_sysfs mAtcEnable;
+ std::unordered_map<std::string, struct atc_sysfs> mAtcSubSetting;
uint32_t mAtcStStepCount = 0;
uint32_t mAtcStTarget = 0;
uint32_t mAtcStUpStep;