diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-01-20 02:03:52 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-01-20 02:03:52 +0000 |
commit | a39b0e1690508dda81ac1d8094cb8678e232f28f (patch) | |
tree | ac84a3037e0241d097b4ddfc0b18d0e470593ec9 | |
parent | 72dd97eec612b2f5da79ab8da000151e089adbfe (diff) | |
parent | 35be7fdc1ff6d778ec0f8c8e5993c643d29c85b4 (diff) | |
download | gs101-a39b0e1690508dda81ac1d8094cb8678e232f28f.tar.gz |
Merge "libhwc2.1: atc sys node update"
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp | 53 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h | 54 |
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; |