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:
parent
ce80b10348
commit
52a7d65121
2 changed files with 28 additions and 6 deletions
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue