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()
|
||||
: 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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue