sm6375-common: power-libperfmgr: Disable boosting when battery saver is on

* end all running boosts when battery saver is turned on,
   and block all boosts until its turned off

Change-Id: I6793d694747c27591e69594d9d46da3490673d63
Signed-off-by: Adithya R <gh0strider.2k18.reborn@gmail.com>
This commit is contained in:
Adithya R 2024-07-18 20:16:00 +05:30 committed by Anand S
parent ce80b10348
commit 52a7d65121
No known key found for this signature in database
GPG key ID: 3B2983FA448B3D61
2 changed files with 28 additions and 6 deletions

View file

@ -49,7 +49,8 @@ constexpr char kPowerHalRenderingProp[] = "vendor.powerhal.rendering";
Power::Power()
: mInteractionHandler(nullptr),
mSustainedPerfModeOn(false) {
mSustainedPerfModeOn(false),
mBatterySaverOn(false) {
mInteractionHandler = std::make_unique<InteractionHandler>();
mInteractionHandler->Init();
@ -75,6 +76,13 @@ Power::Power()
}
}
static void endAllHints() {
std::shared_ptr<HintManager> hm = HintManager::GetInstance();
for (auto hint : hm->GetHints()) {
hm->EndHint(hint);
}
}
ndk::ScopedAStatus Power::setMode(Mode type, bool enabled) {
LOG(DEBUG) << "Power setMode: " << toString(type) << " to: " << enabled;
if (HintManager::GetInstance()->GetAdpfProfile() &&
@ -93,6 +101,15 @@ ndk::ScopedAStatus Power::setMode(Mode type, bool enabled) {
}
mSustainedPerfModeOn = true;
break;
case Mode::LOW_POWER:
if (enabled) {
endAllHints();
HintManager::GetInstance()->DoHint("LOW_POWER");
} else {
HintManager::GetInstance()->EndHint("LOW_POWER");
}
mBatterySaverOn = enabled;
break;
case Mode::LAUNCH:
if (mSustainedPerfModeOn) {
break;
@ -115,6 +132,7 @@ ndk::ScopedAStatus Power::setMode(Mode type, bool enabled) {
case Mode::AUDIO_STREAMING_LOW_LATENCY:
[[fallthrough]];
default:
if (mBatterySaverOn) break;
if (enabled) {
HintManager::GetInstance()->DoHint(toString(type));
} else {
@ -127,7 +145,8 @@ ndk::ScopedAStatus Power::setMode(Mode type, bool enabled) {
}
ndk::ScopedAStatus Power::isModeSupported(Mode type, bool *_aidl_return) {
bool supported = HintManager::GetInstance()->IsHintSupported(toString(type));
bool supported = type == Mode::LOW_POWER
|| HintManager::GetInstance()->IsHintSupported(toString(type));
#ifdef TAP_TO_WAKE_NODE
if (type == Mode::DOUBLE_TAP_TO_WAKE) {
supported = true;
@ -146,7 +165,7 @@ ndk::ScopedAStatus Power::setBoost(Boost type, int32_t durationMs) {
}
switch (type) {
case Boost::INTERACTION:
if (mSustainedPerfModeOn) {
if (mSustainedPerfModeOn || mBatterySaverOn) {
break;
}
mInteractionHandler->Acquire(durationMs);
@ -158,7 +177,7 @@ ndk::ScopedAStatus Power::setBoost(Boost type, int32_t durationMs) {
case Boost::AUDIO_LAUNCH:
[[fallthrough]];
default:
if (mSustainedPerfModeOn) {
if (mSustainedPerfModeOn || mBatterySaverOn) {
break;
}
if (durationMs > 0) {
@ -189,9 +208,11 @@ constexpr const char *boolToString(bool b) {
binder_status_t Power::dump(int fd, const char **, uint32_t) {
std::string buf(::android::base::StringPrintf(
"HintManager Running: %s\n"
"SustainedPerformanceMode: %s\n",
"SustainedPerformanceMode: %s\n"
"BatterySaverMode: %s\n",
boolToString(HintManager::GetInstance()->IsRunning()),
boolToString(mSustainedPerfModeOn)));
boolToString(mSustainedPerfModeOn),
boolToString(mBatterySaverOn)));
// Dump nodes through libperfmgr
HintManager::GetInstance()->DumpToFd(fd);
PowerSessionManager::getInstance()->dumpToFd(fd);

View file

@ -52,6 +52,7 @@ class Power : public ::aidl::android::hardware::power::BnPower {
private:
std::unique_ptr<InteractionHandler> mInteractionHandler;
std::atomic<bool> mSustainedPerfModeOn;
std::atomic<bool> mBatterySaverOn;
};
} // namespace pixel