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

View file

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