replace common qcom sources with samsung ones

This commit is contained in:
SaschaNes
2025-08-12 22:13:00 +02:00
parent ba24dcded9
commit 6f7753de11
5682 changed files with 2450203 additions and 103634 deletions

View File

@@ -0,0 +1,5 @@
cc_library_headers {
name: "qti_powerhal_headers",
vendor_available: true,
export_include_dirs: ["."],
}

View File

@@ -0,0 +1,130 @@
LOCAL_PATH := $(call my-dir)
ifeq ($(call is-vendor-board-platform,QCOM),true)
# HAL module implemenation stored in
# hw/<POWERS_HARDWARE_MODULE_ID>.<ro.hardware>.so
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
# KEYSTONE(I1132378f14428bf511f3cea4f419e90a6e89f823,b/181709127)
LOCAL_SHARED_LIBRARIES := android.hardware.common-V2-ndk android.hardware.common.fmq-V1-ndk libfmq libutils liblog libcutils libdl libxml2 libbase libbinder_ndk android.hardware.power-V5-ndk
LOCAL_HEADER_LIBRARIES += libutils_headers
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_SRC_FILES := power-common.c metadata-parser.c utils.c list.c hint-data.c powerhintparser.c Power.cpp main.cpp PowerHintSession.cpp
LOCAL_C_INCLUDES := external/libxml2/include \
external/icu/icu4c/source/common
# Include target-specific files.
ifeq ($(call is-board-platform-in-list, msm8974), true)
LOCAL_SRC_FILES += power-8974.c
endif
ifeq ($(call is-board-platform-in-list, msm8226), true)
LOCAL_SRC_FILES += power-8226.c
endif
ifeq ($(call is-board-platform-in-list, msm8610), true)
LOCAL_SRC_FILES += power-8610.c
endif
ifeq ($(call is-board-platform-in-list, apq8084), true)
LOCAL_SRC_FILES += power-8084.c
endif
ifeq ($(call is-board-platform-in-list, msm8994), true)
LOCAL_SRC_FILES += power-8994.c
endif
ifeq ($(call is-board-platform-in-list, msm8996), true)
LOCAL_SRC_FILES += power-8996.c
endif
ifeq ($(call is-board-platform-in-list,msm8937), true)
LOCAL_SRC_FILES += power-8952.c
endif
ifeq ($(call is-board-platform-in-list,msm8952), true)
LOCAL_SRC_FILES += power-8952.c
endif
ifeq ($(call is-board-platform-in-list,msm8953), true)
LOCAL_SRC_FILES += power-8953.c
endif
ifeq ($(call is-board-platform-in-list,msm8998 apq8098_latv), true)
LOCAL_SRC_FILES += power-8998.c
endif
ifeq ($(call is-board-platform-in-list,sdm660), true)
LOCAL_SRC_FILES += power-660.c
endif
ifeq ($(call is-board-platform-in-list,sdm845), true)
LOCAL_SRC_FILES += power-845.c
endif
ifeq ($(call is-board-platform-in-list,sdm710), true)
LOCAL_SRC_FILES += power-710.c
endif
ifeq ($(call is-board-platform-in-list,qcs605), true)
LOCAL_SRC_FILES += power-710.c
endif
ifeq ($(call is-board-platform-in-list,trinket), true)
LOCAL_SHARED_LIBRARIES := liblog libcutils libdl libxml2
LOCAL_SRC_FILES := power.c metadata-parser.c utils.c list.c hint-data.c powerhintparser.c
LOCAL_SRC_FILES += power-6125.c
endif
ifeq ($(call is-board-platform-in-list,msmnile), true)
LOCAL_SRC_FILES += power-msmnile.c
endif
ifeq ($(TARGET_USES_INTERACTION_BOOST),true)
LOCAL_CFLAGS += -DINTERACTION_BOOST
endif
ifeq ($(call is-board-platform-in-list,trinket), true)
LOCAL_MODULE := power.qcom
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-variable
LOCAL_VENDOR_MODULE := true
include $(BUILD_SHARED_LIBRARY)
else
LOCAL_MODULE := android.hardware.power-service
LOCAL_INIT_RC := android.hardware.power-service.rc
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-variable
LOCAL_VENDOR_MODULE := true
LOCAL_VINTF_FRAGMENTS := power.xml
include $(BUILD_EXECUTABLE)
endif
ifeq ($(TARGET_BOARD_PLATFORM), sun)
include $(CLEAR_VARS)
LOCAL_SHARED_LIBRARIES := android.hardware.common-V2-ndk android.hardware.common.fmq-V1-ndk libfmq liblog libcutils libdl libxml2 libbase libutils libbinder_ndk android.hardware.power-V5-ndk libbinder libclang_rt.ubsan_standalone
LOCAL_HEADER_LIBRARIES += libutils_headers
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_SRC_FILES := power-common.c metadata-parser.c utils.c list.c hint-data.c powerhintparser.c Power.cpp fuzzer.cpp PowerHintSession.cpp
LOCAL_C_INCLUDES := external/libxml2/include \
external/icu/icu4c/source/common
ifeq ($(TARGET_USES_INTERACTION_BOOST),true)
LOCAL_CFLAGS += -DINTERACTION_BOOST
endif
LOCAL_MODULE := aidl_fuzzer_power_service
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-variable
LOCAL_VENDOR_MODULE := true
LOCAL_STATIC_LIBRARIES += libbinder_random_parcel
include $(BUILD_FUZZ_TEST)
endif
endif

View File

@@ -0,0 +1,32 @@
Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted (subject to the limitations in the
disclaimer below) provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of The Linux Foundation nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1,192 @@
/*
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#define LOG_TAG "QTI PowerHAL"
#include "Power.h"
#include "PowerHintSession.h"
#include <android-base/logging.h>
#include <fmq/AidlMessageQueue.h>
#include <fmq/EventFlag.h>
#include <thread>
#include <aidl/android/hardware/power/BnPower.h>
#include <android-base/logging.h>
#include <android/binder_manager.h>
#include <android/binder_process.h>
using ::aidl::android::hardware::power::BnPower;
using ::aidl::android::hardware::power::IPower;
using ::aidl::android::hardware::power::Mode;
using ::aidl::android::hardware::power::Boost;
using ::aidl::android::hardware::common::fmq::MQDescriptor;
using ::aidl::android::hardware::common::fmq::SynchronizedReadWrite;
using ::aidl::android::hardware::power::ChannelMessage;
using ::android::AidlMessageQueue;
using ::ndk::ScopedAStatus;
using ::ndk::SharedRefBase;
namespace aidl {
namespace android {
namespace hardware {
namespace power {
namespace impl {
void setInteractive(bool interactive) {
set_interactive(interactive ? 1:0);
}
ndk::ScopedAStatus Power::setMode(Mode type, bool enabled) {
LOG(INFO) << "Power setMode: " << static_cast<int32_t>(type) << " to: " << enabled;
switch(type){
case Mode::DOUBLE_TAP_TO_WAKE:
case Mode::LOW_POWER:
case Mode::LAUNCH:
case Mode::DEVICE_IDLE:
case Mode::DISPLAY_INACTIVE:
case Mode::AUDIO_STREAMING_LOW_LATENCY:
case Mode::CAMERA_STREAMING_SECURE:
case Mode::CAMERA_STREAMING_LOW:
case Mode::CAMERA_STREAMING_MID:
case Mode::CAMERA_STREAMING_HIGH:
case Mode::VR:
LOG(INFO) << "Mode " << static_cast<int32_t>(type) << "Not Supported";
break;
case Mode::EXPENSIVE_RENDERING:
set_expensive_rendering(enabled);
break;
case Mode::INTERACTIVE:
//setInteractive(enabled);
//power_hint(POWER_HINT_INTERACTION, NULL);
break;
case Mode::SUSTAINED_PERFORMANCE:
case Mode::FIXED_PERFORMANCE:
power_hint(POWER_HINT_SUSTAINED_PERFORMANCE, NULL);
break;
default:
LOG(INFO) << "Mode " << static_cast<int32_t>(type) << "Not Supported";
break;
}
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus Power::isModeSupported(Mode type, bool* _aidl_return) {
LOG(INFO) << "Power isModeSupported: " << static_cast<int32_t>(type);
switch(type){
case Mode::EXPENSIVE_RENDERING:
if (is_expensive_rendering_supported()) {
*_aidl_return = true;
} else {
*_aidl_return = false;
}
break;
case Mode::INTERACTIVE:
case Mode::SUSTAINED_PERFORMANCE:
case Mode::FIXED_PERFORMANCE:
*_aidl_return = true;
break;
default:
*_aidl_return = false;
break;
}
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus Power::setBoost(Boost type, int32_t durationMs) {
LOG(INFO) << "Power setBoost: " << static_cast<int32_t>(type)
<< ", duration: " << durationMs;
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus Power::isBoostSupported(Boost type, bool* _aidl_return) {
LOG(INFO) << "Power isBoostSupported: " << static_cast<int32_t>(type);
*_aidl_return = false;
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus Power::createHintSession(int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, int64_t durationNanos,
std::shared_ptr<IPowerHintSession>* _aidl_return) {
LOG(INFO) << "Power createHintSession";
if (threadIds.size() == 0) {
LOG(ERROR) << "Error: threadIds.size() shouldn't be " << threadIds.size();
*_aidl_return = nullptr;
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
}
*_aidl_return = setPowerHintSession(tgid, uid, threadIds);
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus Power::createHintSessionWithConfig(
int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, int64_t durationNanos,
SessionTag, SessionConfig* config, std::shared_ptr<IPowerHintSession>* _aidl_return)
{
auto out = createHintSession(tgid, uid, threadIds, durationNanos, _aidl_return);
static_cast<PowerHintSessionImpl*>(_aidl_return->get())->getSessionConfig(config);
return out;
}
ndk::ScopedAStatus Power::getSessionChannel(int32_t, int32_t, ChannelConfig* _aidl_return) {
static AidlMessageQueue<ChannelMessage, SynchronizedReadWrite> stubQueue{20, true};
static std::thread stubThread([&] {
ChannelMessage data;
// This loop will only run while there is data waiting
// to be processed, and blocks on a futex all other times
while (stubQueue.readBlocking(&data, 1, 0)) {
}
});
_aidl_return->channelDescriptor = stubQueue.dupeDesc();
_aidl_return->readFlagBitmask = 0x01;
_aidl_return->writeFlagBitmask = 0x02;
_aidl_return->eventFlagDescriptor = std::nullopt;
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus Power::closeSessionChannel(int32_t, int32_t) {
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus Power::getHintSessionPreferredRate(int64_t* outNanoseconds) {
LOG(INFO) << "Power getHintSessionPreferredRate";
*outNanoseconds = getSessionPreferredRate();
return ndk::ScopedAStatus::ok();
}
} // namespace impl
} // namespace power
} // namespace hardware
} // namespace android
} // namespace aidl

View File

@@ -0,0 +1,71 @@
/*
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef ANDROID_HARDWARE_POWER_POWER_H
#define ANDROID_HARDWARE_POWER_POWER_H
#include <aidl/android/hardware/power/BnPower.h>
#include "aidl/android/hardware/power/SessionTag.h"
#include "power-common.h"
namespace aidl {
namespace android {
namespace hardware {
namespace power {
namespace impl {
class Power : public BnPower {
public:
Power() : BnPower(){
power_init();
}
ndk::ScopedAStatus setMode(Mode type, bool enabled) override;
ndk::ScopedAStatus isModeSupported(Mode type, bool* _aidl_return) override;
ndk::ScopedAStatus setBoost(Boost type, int32_t durationMs) override;
ndk::ScopedAStatus isBoostSupported(Boost type, bool* _aidl_return) override;
ndk::ScopedAStatus createHintSession(int32_t tgid, int32_t uid,
const std::vector<int32_t>& threadIds,
int64_t durationNanos,
std::shared_ptr<IPowerHintSession>* _aidl_return) override;
ndk::ScopedAStatus createHintSessionWithConfig(
int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, int64_t durationNanos,
SessionTag tag, SessionConfig* config,
std::shared_ptr<IPowerHintSession>* _aidl_return) override;
ndk::ScopedAStatus getHintSessionPreferredRate(int64_t* outNanoseconds) override;
ndk::ScopedAStatus getSessionChannel(int32_t tgid, int32_t uid,
ChannelConfig* _aidl_return) override;
ndk::ScopedAStatus closeSessionChannel(int32_t tgid, int32_t uid) override;
};
} // namespace impl
} // namespace power
} // namespace hardware
} // namespace android
} // namespace aidl
#endif // ANDROID_HARDWARE_POWER_POWER_H

View File

@@ -0,0 +1,253 @@
/*
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#include "PowerHintSession.h"
#include "utils.h"
#include "hint-data.h"
#include "performance.h"
#define CPU_BOOST_HINT 0x0000104E
#define THREAD_LOW_LATENCY 0x40CD0000
#define MAX_THREADS 32
#define MAX_BOOST 200
#define MIN_BOOST -200
#include <android-base/logging.h>
#include "android/binder_auto_utils.h"
#define LOG_TAG "QTI PowerHAL"
std::unordered_map<PowerHintSessionImpl*, int32_t> mPowerHintSessions;
std::mutex mSessionLock;
static int validateBoost(int boostVal, int boostSum) {
boostSum += boostVal;
if(boostSum > MAX_BOOST)
return MAX_BOOST;
else if(boostSum < MIN_BOOST)
return MIN_BOOST;
return boostSum;
}
void PowerHintSessionImpl::resetBoost() {
if(mHandle > 0)
release_request(mHandle);
mHandle = -1;
mLastAction = LOAD_RESET;
}
static std::string printThreads(std::vector<int32_t>& threadIds) {
std::string str;
for(int num : threadIds)
str = str + std::to_string(num) + " ";
return str;
}
bool PowerHintSessionImpl::perfBoost(int boostVal, int hintType) {
int tBoostSum = mBoostSum;
int mHandlePerfHint = -1;
if(hintType == LOAD_RESET){
resetBoost();
return true;
}
if(hintType == LOAD_RESUME && mLastAction != LOAD_RESET) {
tBoostSum = 0;
}
tBoostSum = validateBoost(boostVal, tBoostSum);
if(tBoostSum != 0) {
mHandlePerfHint = perf_hint_enable(CPU_BOOST_HINT, tBoostSum);
if(mHandlePerfHint < 0) {
LOG(ERROR) << "Unable to acquire Perf hint for" << CPU_BOOST_HINT;
return false;
}
}
if(mHandle > 0)
release_request(mHandle);
mBoostSum = tBoostSum;
mHandle = mHandlePerfHint;
mLastAction = hintType;
return true;
}
bool isSessionAlive(PowerHintSessionImpl* session) {
if(mPowerHintSessions.find(session) != mPowerHintSessions.end())
return true;
return false;
}
bool isSessionActive(PowerHintSessionImpl* session) {
if(!isSessionAlive(session))
return false;
if(mPowerHintSessions[session] == 1)
return true;
return false;
}
std::shared_ptr<aidl::android::hardware::power::IPowerHintSession> setPowerHintSession(int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds){
LOG(INFO) << "setPowerHintSession ";
std::shared_ptr<aidl::android::hardware::power::IPowerHintSession> mPowerSession = ndk::SharedRefBase::make<PowerHintSessionImpl>(tgid, uid, threadIds);
if(mPowerSession == nullptr) {
return nullptr;
}
return mPowerSession;
}
int64_t getSessionPreferredRate(){
return 16666666L;
}
void setSessionActivity(PowerHintSessionImpl* session, bool flag) {
std::lock_guard<std::mutex> mLockGuard(mSessionLock);
if(flag)
mPowerHintSessions[session] = 1;
else
mPowerHintSessions[session] = 0;
}
PowerHintSessionImpl::PowerHintSessionImpl(int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds){
mUid = uid;
mTgid = tgid;
mBoostSum = 0;
mHandle = -1;
mLastAction = -1;
setSessionActivity(this, true);
mThreadIds = threadIds;
mThreadHandle = setThreadPipelining(mThreadIds);
}
PowerHintSessionImpl::~PowerHintSessionImpl(){
close();
}
int PowerHintSessionImpl::setThreadPipelining(std::vector<int32_t>& threadIds) {
int mHandleTid = -1;
int size = threadIds.size() * 2;
int args[MAX_THREADS];
if(size > MAX_THREADS)
return -1;
for(int i=0; i<size; i+=2) {
args[i] = THREAD_LOW_LATENCY;
args[i+1] = threadIds[i/2];
}
mHandleTid = interaction_with_handle(0, 0, size, args);
if(mHandleTid < 0) {
LOG(ERROR) << "Unable to put these threads into pipeline";
return -1;
}
LOG(INFO) << "Thread Low Latency Handle " << mHandleTid << " for threads " << printThreads(threadIds);
return mHandleTid;
}
void PowerHintSessionImpl::removePipelining() {
if(mThreadHandle > 0) {
release_request(mThreadHandle);
LOG(INFO) << "Handle " << mThreadHandle << " released";
}
mThreadHandle = -1;
}
void PowerHintSessionImpl::resumeThreadPipelining() {
mThreadHandle = setThreadPipelining(mThreadIds);
}
ndk::ScopedAStatus PowerHintSessionImpl::updateTargetWorkDuration(int64_t in_targetDurationNanos){
LOG(INFO) << "updateTargetWorkDuration " << in_targetDurationNanos;
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus PowerHintSessionImpl::reportActualWorkDuration(const std::vector<::aidl::android::hardware::power::WorkDuration>& in_durations){
LOG(INFO) << "reportActualWorkDuration ";
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus PowerHintSessionImpl::pause(){
LOG(INFO) << "PowerHintSessionImpl::pause ";
if(isSessionAlive(this)) {
setSessionActivity(this, false);
sendHint(aidl::android::hardware::power::SessionHint::CPU_LOAD_RESET);
removePipelining();
}
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus PowerHintSessionImpl::resume(){
LOG(INFO) << "PowerHintSessionImpl::resume ";
if(isSessionAlive(this)) {
sendHint(aidl::android::hardware::power::SessionHint::CPU_LOAD_RESUME);
resumeThreadPipelining();
setSessionActivity(this, true);
}
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus PowerHintSessionImpl::close(){
LOG(INFO) << "PowerHintSessionImpl::close ";
if(isSessionAlive(this)) {
sendHint(aidl::android::hardware::power::SessionHint::CPU_LOAD_RESET);
removePipelining();
mThreadIds.clear();
mSessionLock.lock();
mPowerHintSessions.erase(this);
mSessionLock.unlock();
}
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus PowerHintSessionImpl::sendHint(aidl::android::hardware::power::SessionHint hint){
LOG(INFO) << "PowerHintSessionImpl::sendHint ";
if(!isSessionActive(this))
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE);
switch(hint)
{
case aidl::android::hardware::power::SessionHint::CPU_LOAD_UP:
perfBoost(20, LOAD_UP);
break;
case aidl::android::hardware::power::SessionHint::CPU_LOAD_DOWN:
perfBoost(-20, LOAD_DOWN);
break;
case aidl::android::hardware::power::SessionHint::CPU_LOAD_RESET:
perfBoost(0, LOAD_RESET);
break;
case aidl::android::hardware::power::SessionHint::CPU_LOAD_RESUME:
perfBoost(0, LOAD_RESUME);
break;
case aidl::android::hardware::power::SessionHint::POWER_EFFICIENCY:
perfBoost(-20, LOAD_DOWN);
break;
}
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus PowerHintSessionImpl::setThreads(const std::vector<int32_t>& threadIds){
LOG(INFO) << "PowerHintSessionImpl::setThreads ";
if (threadIds.size() == 0) {
LOG(ERROR) << "Error: threadIds.size() shouldn't be " << threadIds.size();
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
}
if(mThreadHandle > 0) {
release_request(mThreadHandle);
mThreadIds.clear();
mThreadHandle = -1;
}
mThreadIds = threadIds;
mThreadHandle = setThreadPipelining(mThreadIds);
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus PowerHintSessionImpl::setMode(aidl::android::hardware::power::SessionMode mode, bool enabled) {
return ndk::ScopedAStatus::ok();
}
ndk::ScopedAStatus PowerHintSessionImpl::getSessionConfig(aidl::android::hardware::power::SessionConfig* _aidl_return) {
_aidl_return->id = 1;
return ndk::ScopedAStatus::ok();
}

View File

@@ -0,0 +1,55 @@
/*
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#ifndef __POWERHINTSESSION__
#define __POWERHINTSESSION__
#include <unordered_map>
#include <set>
#include <mutex>
#include <aidl/android/hardware/power/WorkDuration.h>
#include <aidl/android/hardware/power/SessionHint.h>
#include <aidl/android/hardware/power/SessionMode.h>
#include <aidl/android/hardware/power/BnPowerHintSession.h>
enum LOAD_TYPE {
LOAD_UP,
LOAD_DOWN,
LOAD_RESET,
LOAD_RESUME
};
std::shared_ptr<aidl::android::hardware::power::IPowerHintSession> setPowerHintSession(int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds);
int64_t getSessionPreferredRate();
class PowerHintSessionImpl : public aidl::android::hardware::power::BnPowerHintSession{
public:
explicit PowerHintSessionImpl(int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds);
~PowerHintSessionImpl();
ndk::ScopedAStatus updateTargetWorkDuration(int64_t targetDurationNanos) override;
ndk::ScopedAStatus reportActualWorkDuration(
const std::vector<aidl::android::hardware::power::WorkDuration>& durations) override;
ndk::ScopedAStatus pause() override;
ndk::ScopedAStatus resume() override;
ndk::ScopedAStatus close() override;
ndk::ScopedAStatus sendHint(aidl::android::hardware::power::SessionHint hint) override;
ndk::ScopedAStatus setThreads(const std::vector<int32_t>& threadIds) override;
ndk::ScopedAStatus setMode(aidl::android::hardware::power::SessionMode mode, bool enabled) override;
ndk::ScopedAStatus getSessionConfig(aidl::android::hardware::power::SessionConfig* _aidl_return) override;
bool perfBoost(int boostVal, int hintType);
int setThreadPipelining(std::vector<int32_t>& threadIds);
void removePipelining();
void resumeThreadPipelining();
void resetBoost();
private:
int32_t mUid;
int32_t mTgid;
int mHandle;
int mBoostSum;
int mLastAction;
int mThreadHandle;
std::vector<int32_t> mThreadIds;
};
#endif /* __POWERHINTSESSION__ */

View File

@@ -0,0 +1,4 @@
service vendor.power /vendor/bin/hw/android.hardware.power-service
class hal
user system
group system

View File

@@ -0,0 +1,283 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-->
<HintConfigs>
<Powerhint>
<!-- camera 30fps and camera preview -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1017Mhz -->
<!--L CPU - Set hispeed load 95 -->
<!--CPU-LLCC BWMON - Set polling interval 200 -->
<!--CPU-LLCC BWMON - use AB 0 -->
<!--LLCC-DDR BWMON - Set sample_ms 20 -->
<!--CPU-LLCC BWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<!--CPU-LLCC BWMON - io percent 100 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="atoll"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68140, 0xFFFFFFFA, 0x40C68150, 0xFFFFFFFA,
0x4143C100, 0x3F9, 0x41440100, 0x5F, 0x4181C000, 0xC8, 0x41830000, 0, 0x4300C000, 0x14, 0x4182C000, 0, 0x41000100, 6, 0x41808000, 100"/>
<!-- camera 60 FPS -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set polling interval 200 -->
<!--CPU-LLCC BWMON - use AB 0 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<!--CPU-LLCC BWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<!--CPU-LLCC BWMON - io percent 100 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="atoll"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68140, 0xFFFFFFFA, 0x40C68150, 0xFFFFFFFA,
0x4181C000, 0xC8, 0x41830000, 0, 0x4300C000, 0x14, 0x4182C000, 0, 0x41000100, 6, 0x41808000, 100"/>
<!-- camera HFR -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set polling interval 200 -->
<!--CPU-LLCC BWMON - use AB 0 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<!--CPU-LLCC BWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<!--CPU-LLCC BWMON - io percent 100 -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="atoll"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68140, 0xFFFFFFFA, 0x40C68150, 0xFFFFFFFA,
0x4181C000, 0xC8, 0x41830000, 0, 0x4300C000, 0x14, 0x4182C000, 0, 0x41000100, 6, 0x41808000, 100"/>
<!-- HFR 480fps -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set polling interval 200 -->
<!--CPU-LLCC BWMON - use AB 0 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<!--CPU CORE 0 Min freq to 1.2Ghz -->
<!--CPU-LLCC BWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<!--CPU-LLCC BWMON - io percent 100 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="atoll"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68140, 0xFFFFFFFA, 0x40C68150, 0xFFFFFFFA,
0x4181C000, 0xC8, 0x41830000, 0, 0x4300C000, 0x14, 0x40800100, 0x4B9, 0x4182C000, 0, 0x41000100, 6, 0x41808000, 100"/>
<!-- same settings for all the qvr power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.806 Ghz -->
<!-- B CPU - Cluster max freq ~.2.169 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.248 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="atoll" Timeout="0"
Resources="0x40800000, 0x326, 0x40804000, 0x879, 0x40800100, 0x240, 0x40804100, 0x4E0,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.806 Ghz -->
<!-- B CPU - Cluster max freq ~.2.169 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.248 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="atoll" Timeout="0"
Resources="0x40800000, 0x326, 0x40804000, 0x879, 0x40800100, 0x240, 0x40804100, 0x4E0,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.806 Ghz -->
<!-- B CPU - Cluster max freq ~.2.169 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.248 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="atoll" Timeout="0"
Resources="0x40800000, 0x326, 0x40804000, 0x879, 0x40800100, 0x240, 0x40804100, 0x4E0,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.806 Ghz -->
<!-- B CPU - Cluster max freq ~.2.169 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.248 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="atoll" Timeout="0"
Resources="0x40800000, 0x326, 0x40804000, 0x879, 0x40800100, 0x240, 0x40804100, 0x4E0,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.806 Ghz -->
<!-- B CPU - Cluster max freq ~.2.169 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.248 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="atoll" Timeout="0"
Resources="0x40800000, 0x326, 0x40804000, 0x879, 0x40800100, 0x240, 0x40804100, 0x4E0,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.806 Ghz -->
<!-- B CPU - Cluster max freq ~.2.169 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.248 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="atoll" Timeout="0"
Resources="0x40800000, 0x326, 0x40804000, 0x879, 0x40800100, 0x240, 0x40804100, 0x4E0,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.806 Ghz -->
<!-- B CPU - Cluster max freq ~.2.169 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.248 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="atoll" Timeout="0"
Resources="0x40800000, 0x326, 0x40804000, 0x879, 0x40800100, 0x240, 0x40804100, 0x4E0,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.806 Ghz -->
<!-- B CPU - Cluster max freq ~.2.169 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.248 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="atoll" Timeout="0"
Resources="0x40800000, 0x326, 0x40804000, 0x879, 0x40800100, 0x240, 0x40804100, 0x4E0,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.806 Ghz -->
<!-- B CPU - Cluster max freq ~2.169 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.248 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="atoll" Timeout="0"
Resources="0x40800000, 0x326, 0x40804000, 0x879, 0x40800100, 0x240, 0x40804100, 0x4E0,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- sustained performance -->
<!-- B CPU - Cluster min freq uncapped -->
<!-- L CPU - Cluster min freq uncapped -->
<!-- B CPU - Cluster max freq ~1.22 GHz -->
<!-- L CPU - Cluster max freq ~1.22 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW freq uncapped -->
<Config
Id="0x00001206" Enable="true" Timeout="0" Target="atoll"
Resources="0x40800000, 0x0, 0x40800100, 0x0, 0x40804000, 0x4CC, 0x40804100, 0x4CC,
0X4280C000, 0x113, 0X42810000, 0x190, 0x42814000, 0x0"/>
<!-- vr mode -->
<!-- B CPU - Cluster min freq ~1.22 Ghz -->
<!-- L CPU - Cluster min freq ~0.940 Ghz -->
<!-- B CPU - Cluster max freq ~1.90 Ghz -->
<!-- L CPU - Cluster max freq ~1.70 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 625Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001207" Enable="true" Timeout="0" Target="atoll"
Resources="0x40800000, 0x4CC, 0x40800100, 0x3AC, 0x40804000, 0x76C, 0x40804100, 0x6C0,
0X4280C000, 0x113, 0X4280C000, 0x271, 0x42814000, 0x0"/>
<!-- vr mode sustained performance -->
<!-- B CPU - Cluster min freq ~1.22 Ghz -->
<!-- L CPU - Cluster min freq ~1.22 Ghz -->
<!-- B CPU - Cluster max freq ~1.22 Ghz -->
<!-- L CPU - Cluster max freq ~1.22 Ghz -->
<!-- GPU - min freq 400Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001301" Enable="true" Timeout="0" Target="atoll"
Resources="0x40800000, 0x4CC, 0x40800100, 0x4CC, 0x40804000, 0x4CC, 0x40804100, 0x4CC,
0X4280C000, 0x190, 0X42810000, 0x190, 0x42814000, 0x0"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,617 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2016-2018, 2020 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-->
<HintConfigs>
<Powerhint>
<!-- camera preview -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1190Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 50 -->
<!--CPUBW HWMON - Set io_percent 100 -->
<!--CPUBW HWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="holi"
Resources="0x40C68100, -12, 0x40C68110, -12, 0x40C68120, -12,
0x40C68130, -12, 0x40C68000, -12, 0x40C68010, -12, 0x40C68020, -12, 0x40C68030, -12,
0x4143C100, 1190, 0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x32, 0x43020000, 0x64, 0x43014000, 0x0, 0x41000100, 6"/>
<!-- camera 30fps-->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1190Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 50 -->
<!--CPUBW HWMON - Set io_percent 100 -->
<!--CPUBW HWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="holi"
Resources="0x40C68100, -10, 0x40C68110, -10, 0x40C68120, -10,
0x40C68130, -10, 0x40C68000, -10, 0x40C68010, -10, 0x40C68020, -10, 0x40C68030, -10,
0x4143C100, 1190, 0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x32, 0x43020000, 0x64, 0x43014000, 0x0, 0x41000100, 6"/>
<!-- camera 60 FPS -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1190Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 20 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="holi"
Resources="0x40C68100, -10, 0x40C68110, -10, 0x40C68120, -10,
0x40C68130, -10, 0x40C68000, -10, 0x40C68010, -10, 0x40C68020, -10, 0x40C68030, -10,
0x4143C100, 1190, 0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x14, 0x41000100, 6"/>
<!-- camera HFR -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1190Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 20 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="holi"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68000, 0xFFFFFFFA, 0x40C68010, 0xFFFFFFFA, 0x40C68020, 0xFFFFFFFA, 0x40C68030, 0xFFFFFFFA,
0x4143C100, 1190, 0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x14, 0x41000100, 6"/>
<!-- HFR 480fps -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1190Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 20 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="holi"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68000, 0xFFFFFFFA, 0x40C68010, 0xFFFFFFFA, 0x40C68020, 0xFFFFFFFA, 0x40C68030, 0xFFFFFFFA,
0x4143C100, 1190, 0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x14, 0x41000100, 6"/>
<!-- same settings for all the qvr power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.035 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.478 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="holi" Timeout="0"
Resources="0x40800000, 0x300, 0x40804000, 0x7F3, 0x40800100, 0x240, 0x40804100, 0x5C6,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.035 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.478 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="holi" Timeout="0"
Resources="0x40800000, 0x300, 0x40804000, 0x7F3, 0x40800100, 0x240, 0x40804100, 0x5C6,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.035 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.478 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="holi" Timeout="0"
Resources="0x40800000, 0x300, 0x40804000, 0x7F3, 0x40800100, 0x240, 0x40804100, 0x5C6,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.035 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.478 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="holi" Timeout="0"
Resources="0x40800000, 0x300, 0x40804000, 0x7F3, 0x40800100, 0x240, 0x40804100, 0x5C6,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.035 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.478 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="holi" Timeout="0"
Resources="0x40800000, 0x300, 0x40804000, 0x7F3, 0x40800100, 0x240, 0x40804100, 0x5C6,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.035 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.478 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="holi" Timeout="0"
Resources="0x40800000, 0x300, 0x40804000, 0x7F3, 0x40800100, 0x240, 0x40804100, 0x5C6,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.035 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.478 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="holi" Timeout="0"
Resources="0x40800000, 0x300, 0x40804000, 0x7F3, 0x40800100, 0x240, 0x40804100, 0x5C6,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.035 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.478 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="holi" Timeout="0"
Resources="0x40800000, 0x300, 0x40804000, 0x7F3, 0x40800100, 0x240, 0x40804100, 0x5C6,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.035 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.478 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="holi" Timeout="0"
Resources="0x40800000, 0x300, 0x40804000, 0x7F3, 0x40800100, 0x240, 0x40804100, 0x5C6,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- sustained performance -->
<!-- B CPU - Cluster min freq uncapped -->
<!-- L CPU - Cluster min freq uncapped -->
<!-- B CPU - Cluster max freq ~1.22 GHz -->
<!-- L CPU - Cluster max freq ~1.22 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW freq uncapped -->
<Config
Id="0x00001206" Enable="true" Timeout="0" Target="holi"
Resources="0x40800000, 0x0, 0x40800100, 0x0, 0x40804000, 0x4CC, 0x40804100, 0x4CC,
0X4280C000, 0x113, 0X42810000, 0x190, 0x42814000, 0x0"/>
<!-- vr mode -->
<!-- B CPU - Cluster min freq ~1.22 Ghz -->
<!-- L CPU - Cluster min freq ~0.940 Ghz -->
<!-- B CPU - Cluster max freq ~1.90 Ghz -->
<!-- L CPU - Cluster max freq ~1.70 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 625Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001207" Enable="true" Timeout="0" Target="holi"
Resources="0x40800000, 0x4CC, 0x40800100, 0x3AC, 0x40804000, 0x76C, 0x40804100, 0x6C0,
0X4280C000, 0x113, 0X4280C000, 0x271, 0x42814000, 0x0"/>
<!-- vr mode sustained performance -->
<!-- B CPU - Cluster min freq ~1.22 Ghz -->
<!-- L CPU - Cluster min freq ~1.22 Ghz -->
<!-- B CPU - Cluster max freq ~1.22 Ghz -->
<!-- L CPU - Cluster max freq ~1.22 Ghz -->
<!-- GPU - min freq 400Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001301" Enable="true" Timeout="0" Target="holi"
Resources="0x40800000, 0x4CC, 0x40800100, 0x4CC, 0x40804000, 0x4CC, 0x40804100, 0x4CC,
0X4280C000, 0x190, 0X42810000, 0x190, 0x42814000, 0x0"/>
<!-- multi camera 30fps-->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU cluster min freq of 1190Mhz -->
<!--CPUBW HWMON - Set sample_ms 50 -->
<!--CPUBW HWMON - Set io_percent 100 -->
<!--CPUBW HWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001336" Enable="true" Timeout="0" Target="holi"
Resources="0x40C68100, -10, 0x40C68110, -10, 0x40C68120, -10,
0x40C68130, -10, 0x40C68000, -10, 0x40C68010, -10, 0x40C68020, -10, 0x40C68030, -10,
0x40800100, 1190, 0x43034000, 0x32, 0x43020000, 0x64, 0x43014000, 0x0, 0x41000100, 6"/>
<!-- camera preview -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1113Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 50 -->
<!--CPUBW HWMON - Set io_percent 100 -->
<!--CPUBW HWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="blair"
Resources="0x40C68100, -12, 0x40C68110, -12, 0x40C68120, -12,
0x40C68130, -12, 0x40C68000, -12, 0x40C68010, -12, 0x40C68020, -12, 0x40C68030, -12,
0x4143C100, 1113, 0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x32, 0x43020000, 0x64, 0x43014000, 0x0, 0x41000100, 6"/>
<!-- camera 30fps-->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 50 -->
<!--CPUBW HWMON - Set io_percent 100 -->
<!--CPUBW HWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<!--L CPU core Fmin 1.1 GHz -->
<!--Set uclamp latency sensitivity to 1 -->
<!--Enable sched prefer spread 1 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="blair"
Resources="0x40C68100, -10, 0x40C68110, -10, 0x40C68120, -10,
0x40C68130, -10, 0x40C68000, -10, 0x40C68010, -10, 0x40C68020, -10, 0x40C68030, -10,
0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x32, 0x43020000, 0x64, 0x43014000, 0x0, 0x41000100, 6,
0x40800100, 1113, 0x40CEC000, 0x1, 0x40CA8000, 0x1"/>
<!-- camera 60 FPS -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 20 -->
<!--L CPU core ctl min cpus 6 -->
<!--L CPU core Fmin 1.1 GHz -->
<!--Set uclamp latency sensitivity to 1 -->
<!--Enable sched prefer spread 1 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="blair"
Resources="0x40C68100, -10, 0x40C68110, -10, 0x40C68120, -10,
0x40C68130, -10, 0x40C68000, -10, 0x40C68010, -10, 0x40C68020, -10, 0x40C68030, -10,
0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x14, 0x41000100, 6,
0x40800100, 1113, 0x40CEC000, 0x1, 0x40CA8000, 0x1"/>
<!-- camera HFR -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1113Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 20 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="blair"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68000, 0xFFFFFFFA, 0x40C68010, 0xFFFFFFFA, 0x40C68020, 0xFFFFFFFA, 0x40C68030, 0xFFFFFFFA,
0x4143C100, 1113, 0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x14, 0x41000100, 6"/>
<!-- HFR 480fps -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1113Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 20 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="blair"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68000, 0xFFFFFFFA, 0x40C68010, 0xFFFFFFFA, 0x40C68020, 0xFFFFFFFA, 0x40C68030, 0xFFFFFFFA,
0x4143C100, 1113, 0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x14, 0x41000100, 6"/>
<!-- same settings for all the qvr power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="blair" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="blair" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="blair" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="blair" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="blair" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="blair" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="blair" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="blair" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="blair" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- sustained performance -->
<!-- B CPU - Cluster min freq uncapped -->
<!-- L CPU - Cluster min freq uncapped -->
<!-- B CPU - Cluster max freq ~1.22 GHz -->
<!-- L CPU - Cluster max freq ~1.22 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW freq uncapped -->
<Config
Id="0x00001206" Enable="true" Timeout="0" Target="blair"
Resources="0x40800000, 0x0, 0x40800100, 0x0, 0x40804000, 0x4CC, 0x40804100, 0x4CC,
0X4280C000, 0x113, 0X42810000, 0x190, 0x42814000, 0x0"/>
<!-- vr mode -->
<!-- B CPU - Cluster min freq ~1.22 Ghz -->
<!-- L CPU - Cluster min freq ~0.940 Ghz -->
<!-- B CPU - Cluster max freq ~1.90 Ghz -->
<!-- L CPU - Cluster max freq ~1.70 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 625Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001207" Enable="true" Timeout="0" Target="blair"
Resources="0x40800000, 0x4CC, 0x40800100, 0x3AC, 0x40804000, 0x76C, 0x40804100, 0x6C0,
0X4280C000, 0x113, 0X4280C000, 0x271, 0x42814000, 0x0"/>
<!-- vr mode sustained performance -->
<!-- B CPU - Cluster min freq ~1.22 Ghz -->
<!-- L CPU - Cluster min freq ~1.22 Ghz -->
<!-- B CPU - Cluster max freq ~1.22 Ghz -->
<!-- L CPU - Cluster max freq ~1.22 Ghz -->
<!-- GPU - min freq 400Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001301" Enable="true" Timeout="0" Target="blair"
Resources="0x40800000, 0x4CC, 0x40800100, 0x4CC, 0x40804000, 0x4CC, 0x40804100, 0x4CC,
0X4280C000, 0x190, 0X42810000, 0x190, 0x42814000, 0x0"/>
<!-- multi camera 30fps-->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU CORE 7 SCHED LOAD BOOST -->
<!--L CPU cluster min freq of 1113Mhz -->
<!--CPUBW HWMON - Set sample_ms 50 -->
<!--CPUBW HWMON - Set io_percent 100 -->
<!--CPUBW HWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<!--Set uclamp latency sensitivity to 1 -->
<!--Enable sched prefer spread 1 -->
<Config
Id="0x00001336" Enable="true" Timeout="0" Target="blair"
Resources="0x40C68100, -10, 0x40C68110, -10, 0x40C68120, -10,
0x40C68130, -10, 0x40C68000, -10, 0x40C68010, -10, 0x40C68020, -10, 0x40C68030, -10,
0x40800100, 1113, 0x43034000, 0x32, 0x43020000, 0x64, 0x43014000, 0x0, 0x41000100, 6,
0x40CEC000, 0x1, 0x40CA8000, 0x1"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,456 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/*Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Changes from Qualcomm Innovation Center are provided under the following
* license:
*Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification,are permitted (subject to the limitations in the disclaimer
* below) provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer inthe
* documentation and/or other materials provided with the distribution.
* * Neither the name of Qualcomm Innovation Center, Inc. nor the names
* of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY
* THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="kalama"
Resources="" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="kalama"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="kalama"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="kalama"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="kalama" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="kalama" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="kalama" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="kalama" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="kalama" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="kalama" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="kalama" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="kalama" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="kalama" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!--camera ZSLPreview-->
<!--CPU-LLC BWMON - Set sample_ms 33-->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--L CPU - max freq 729000 -->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="kalama"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x339, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--camera 30fps-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 547 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85 -->
<!--DOWNMIGRATE - 10 85 -->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 556800 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="kalama"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
<!--camera 60fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 556800 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="kalama"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
<!--camera HFR 120/240 fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="kalama"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--camera 8k30-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 40 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 556800 -->
<Config
Id="0x00001335" Enable="true" Timeout="0" Target="kalama"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0028000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
<!--video encode HFR 480 fps-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0x40C -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0x4CC -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<!-- MPCTLV3_CPUBW_HWMON_SAMPLE_MS , 0x0A -->
<!-- MPCTLV3_CPUBW_HWMON_IO_PERCENT, 0x50 -->
<!-- MPCTLV3_CPUBW_HWMON_HYST_OPT, 0 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="kalama"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14,
0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<!-- camera open tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1671000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1671000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
<Config
Id="0x00001337" Enable="true" Timeout="0" Target="kalama"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X687, 0x40800000, 0X687,
0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X8C6, 0x40804200, 0X8C6"/>
<!-- camera close tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1632000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1671000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 1671000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
<Config
Id="0x00001338" Enable="true" Timeout="0" Target="kalama"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X687, 0x40800000, 0X687,
0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X8C6, 0x40804200, 0X8C6"/>
<!-- camera snapshot tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- Silver cluster min freq to 1.132GHz -->
<!-- Gold cluster min freq to 1.363GHz -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<Config
Id="0x00001339" Enable="true" Timeout="0" Target="kalama"
Resources="0x40400000, 0x1, 0x40800100, 0x46C, 0x40800000, 0x553, 0x40C20000, 0X14,
0x40C1C000, 0X1E"/>
<!-- decode 240 fps tunings-->
<!--L CPU - max freq 700000 -->
<Config
Id="0X00001505" Enable="true" Timeout="0" Target="kalama"
Resources="0x40804100, 0x2BC"/>
<!-- video decode 30 fps non secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="kalama"
Resources="0x40800000, 0XA"/>
<!-- video decode 30 fps secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="kalama"
Resources="0x40800000, 0XA"/>
<!-- psm light mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x81" Enable="true" Timeout="0" Taget="kalama"
Resources="0x40800000, 0XA"/>
<!-- psm medium mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x82" Enable="true" Timeout="0" Taget="kalama"
Resources="0x40800000, 0XA"/>
<!-- psm deep mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x83" Enable="true" Timeout="0" Taget="kalama"
Resources="0x40800000, 0XA"/>
<!-- psm release mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x80" Enable="true" Timeout="0" Taget="kalama"
Resources="0x40800000, 0XA"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="kona"
Resources="" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="kona"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="kona"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="kona"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~.2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="kona" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240,
0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806, 0x42804000, 0x3,
0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!--camera general-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 80 -->
<!--CPU-LLC BWMON - Set hyst_length hyst_trigger hist memory 0 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="kona"
Resources="0x41820000, 0x10, 0x41808000, 0x50, 0x4180C000, 0"/>
<!--camera 60fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 80 -->
<!--CPU-LLC BWMON - Set hyst_length hyst_trigger hist memory 0 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="kona"
Resources="0x41820000, 0x10, 0x41808000, 0x50, 0x4180C000, 0"/>
<!--video encode HFR 480 fps-->
<!--MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1-->
<!--MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, CPU_SILVER_LEVEL_15 (1036800 kHz)-->
<!--MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, CPU_GOLD_LEVEL_12 (1228800 kHz)-->
<!--MPCTLV3_SCHED_DOWNMIGRATE, 0x14-->
<!--MPCTLV3_SCHED_UPMIGRATE, 0x1E-->
<!--CPU-LLC BWMON - Set sample_ms 10 -->
<!--CPU-LLC BWMON - Set io_percent 80 -->
<!--CPU-LLC BWMON - Set hyst_length hyst_trigger hist memory 0 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="kona"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14, 0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,876 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/*Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="lahaina"
Resources="" />
<!--video decode 240fps-->
<Config
Id="0x00001501" Enable="true" Target="lahaina" Timeout="0"
Resources="0x43010000, 59" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="lahaina"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="lahaina"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="lahaina"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="lahaina" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506, 0x40800200, 0x399, 0x40804200, 0x840,
0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="lahaina" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506, 0x40800200, 0x399, 0x40804200, 0x840,
0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="lahaina" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506, 0x40800200, 0x399, 0x40804200, 0x840,
0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="lahaina" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506, 0x40800200, 0x399, 0x40804200, 0x840,
0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="lahaina" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506, 0x40800200, 0x399, 0x40804200, 0x840,
0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="lahaina" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506, 0x40800200, 0x399, 0x40804200, 0x840,
0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="lahaina" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506, 0x40800200, 0x399, 0x40804200, 0x840,
0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="lahaina" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506, 0x40800200, 0x399, 0x40804200, 0x840,
0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="lahaina" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506, 0x40800200, 0x399, 0x40804200, 0x840,
0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!--camera ZSLPreview-->
<!--CPU-LLC BWMON - Set sample_ms 33-->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--CPU0-LLC MEM LAT - Set ratio_ceil 200 -->
<!--CPU0-LLC-DDR MEM LAT - Set ratio_ceil 200 - no resource id yet-->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="lahaina"
Resources="0x41820000, 0x21, 0x41808000, 0x64, 0x4180C000, 0, 0x4300C000, 0x21, 0x43004000, 0x64, 0x43008000, 0, 0x41444100, 0, 0x41440100, 0x63,0x43420000, 0xC8"/>
<!--camera 30fps-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU min freq 998400 -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--CPU0-LLC MEM LAT - Set ratio_ceil 200 -->
<!--CPU0-LLC-DDR MEM LAT - Set ratio_ceil 200 - no resource id yet-->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="lahaina"
Resources="0x41820000, 0x21, 0x41808000, 0x64, 0x4180C000, 0, 0x4300C000, 0x21, 0x43004000, 0x64, 0x43008000, 0, 0x40800100, 0x3E6, 0x41444100, 0, 0x41440100, 0x63,0x43420000, 0xC8"/>
<!--camera 60fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU min freq 1209600 -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--CPU0-LLC MEM LAT - Set ratio_ceil 200 -->
<!--CPU0-LLC-DDR MEM LAT - Set ratio_ceil 200 - no resource id yet-->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="lahaina"
Resources="0x41820000, 0x10, 0x41808000, 0x64, 0x4180C000, 0, 0x4300C000, 0x10, 0x43004000, 0x64, 0x43008000, 0, 0x40800100, 0x4B9, 0x41444100, 0, 0x41440100, 0x63, 0x43420000, 0xC8"/>
<!--camera 8k30-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU min freq 1209600 -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--CPU0-LLC MEM LAT - Set ratio_ceil 200 -->
<!--CPU0-LLC-DDR MEM LAT - Set ratio_ceil 200 - no resource id yet-->
<Config
Id="0x00001335" Enable="true" Timeout="0" Target="lahaina"
Resources="0x41820000, 0x21, 0x41808000, 0x64, 0x4180C000, 0, 0x4300C000, 0x21, 0x43004000, 0x64, 0x43008000, 0, 0x40800100, 0x4B9, 0x41444100, 0, 0x41440100, 0x63, 0x43420000, 0xC8"/>
<!--video encode HFR 480 fps-->
<!--MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1-->
<!--MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, CPU_SILVER_LEVEL_15 (1036800 kHz)-->
<!--MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, CPU_GOLD_LEVEL_12 (1228800 kHz)-->
<!--MPCTLV3_SCHED_DOWNMIGRATE, 0x14-->
<!--MPCTLV3_SCHED_UPMIGRATE, 0x1E-->
<!--CPU-LLC BWMON - Set sample_ms 10 -->
<!--CPU-LLC BWMON - Set io_percent 80 -->
<!--CPU-LLC BWMON - Set hyst_length hyst_trigger hist memory 0 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="lahaina"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14, 0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<!--camera preview -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 940Mhz -->
<!--L CPU - Set hispeed load 95 -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample_ms 20 -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="shima"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4143C100, 940, 0x41440100, 0x5F, 0x4183C000, 0x14, 0x43034000, 0x14"/>
<!-- camera 30fps encode -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 940Mhz -->
<!--L CPU - Set hispeed load 95 -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample_ms 20 -->
<!--L CPU Min Freq 940, Max Freq 1804 -->
<!--Sched downmigrate/group_downmigrate 40, Upmigrate/group_migrate 45 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="shima"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4143C100, 940, 0x41440100, 0x5F, 0x4183C000, 0x14, 0x43034000, 0x14,
0x40800100, 940, 0x40804100, 1804, 0x40C58000, 40, 0x40C54000, 45, 0x40C20000, 40, 0x40C1C000, 45"/>
<!-- camera 60 FPS -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="shima"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4183C000, 0x14, 0x43034000, 0x14"/>
<!-- camera HFR -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<!--CPU CORE 0 Min freq to 1.075Ghz -->
<!--CPU CORE 4 Min Freq 940Mhz -->
<!--Sched downmigrate/group_downmigrate 30, Upmigrate/group_migrate 35 -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="shima"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4183C000, 0x14, 0x43034000, 0x14, 0x40800100, 0x433, 0x40800000, 940, 0x40C58000, 30, 0x40C54000, 35, 0x40C20000, 30, 0x40C1C000, 35"/>
<!-- HFR 480fps -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<!--CPU CORE 0 Min freq to 1.075Ghz -->
<!--CPU CORE 4 Min Freq 940Mhz -->
<!--Sched downmigrate/group_downmigrate 30, Upmigrate/group_migrate 35 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="shima"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4183C000, 0x14, 0x43034000, 0x14, 0x40800100, 0x433, 0x40800000, 940, 0x40C58000, 30, 0x40C54000, 35, 0x40C20000, 30, 0x40C1C000, 35"/>
<!-- same settings for all the qvr power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="shima" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="shima" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="shima" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="shima" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="shima" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="shima" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="shima" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="shima" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="shima" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- sustained performance -->
<!-- Prime CPU - Cluster min freq uncapped -->
<!-- B CPU - Cluster min freq uncapped -->
<!-- L CPU - Cluster min freq uncapped -->
<!-- Prime CPU - Cluster max freq ~1.094 Ghz -->
<!-- B CPU - Cluster max freq ~1.152 GHz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW freq uncapped -->
<Config
Id="0x00001206" Enable="true" Timeout="0" Target="shima"
Resources="0x40800200, 0x0, 0x40800000, 0x0, 0x40800100, 0x0, 0x40804200, 0x446,
0x40804000, 0x480, 0x40804100, 0x433, 0X4280C000, 0x113, 0X42810000, 0x190,
0x42814000, 0x0"/>
<!-- vr mode -->
<!-- Prime CPU - Cluster min freq ~1.094 Ghz -->
<!-- B CPU - Cluster min freq ~1.152 Ghz -->
<!-- L CPU - Cluster min freq ~0.864 Ghz -->
<!-- Prime CPU - Cluster max freq ~2.188 Ghz -->
<!-- B CPU - Cluster max freq ~1.90 Ghz -->
<!-- L CPU - Cluster max freq ~1.651 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 625Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001207" Enable="true" Timeout="0" Target="shima"
Resources="0x40800200, 0x446, 0x40800000, 0x480, 0x40800100, 0x360, 0x40804200, 0x88C,
0x40804000, 0x76C, 0x40804100, 0x673, 0X4280C000, 0x113, 0X4280C000, 0x271,
0x42814000, 0x0"/>
<!-- vr mode sustained performance -->
<!-- Prime CPU - Cluster min freq ~1.094 Ghz -->
<!-- B CPU - Cluster min freq ~1.152 Ghz -->
<!-- L CPU - Cluster min freq ~1.075 Ghz -->
<!-- Prime CPU - Cluster max freq ~1.094 Ghz -->
<!-- B CPU - Cluster max freq ~1.152 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min freq 400Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001301" Enable="true" Timeout="0" Target="shima"
Resources="0x40800200, 0x446, 0x40800000, 0x480, 0x40800100, 0x433, 0x40804200, 0x446,
0x40804000, 0x480, 0x40804100, 0x433, 0X4280C000, 0x190, 0X42810000, 0x190,
0x42814000, 0x0"/>
<!--camera preview -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 940Mhz -->
<!--L CPU - Set hispeed load 95 -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample_ms 20 -->
<!--Sched downmigrate/group_downmigrate 40, Upmigrate/group_upmigrate 45 -->
<!--Set uclamp latency sensitivity to 1 -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="yupik"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4143C100, 940, 0x41440100, 0x5F, 0x4183C000, 0x14, 0x43034000,
0x14, 0x40C58000, 40, 0x40C54000, 45, 0x40C20000, 40, 0x40C1C000, 45, 0x40CEC000, 0x1"/>
<!-- camera 30fps encode -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 940Mhz -->
<!--L CPU - Set hispeed load 95 -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample_ms 20 -->
<!--L CPU Min Freq 940, Max Freq 1804 -->
<!--Sched downmigrate/group_downmigrate 40, Upmigrate/group_upmigrate 45 -->
<!--Set uclamp latency sensitivity to 1 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="yupik"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4143C100, 940, 0x41440100, 0x5F, 0x4183C000, 0x14, 0x43034000,
0x14, 0x40800100, 940, 0x40804100, 1804, 0x40C58000, 40, 0x40C54000, 45, 0x40C20000, 40,
0x40C1C000, 45, 0x40CEC000, 0x1"/>
<!-- camera 60 FPS -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<!--Sched downmigrate/group_downmigrate 30, Upmigrate/group_upmigrate 35 -->
<!--Set uclamp latency sensitivity to 1 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="yupik"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4183C000, 0x14, 0x43034000, 0x14, 0x40C58000, 30, 0x40C54000, 35,
0x40C20000, 30, 0x40C1C000, 35, 0x40CEC000, 0x1"/>
<!-- camera HFR -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<!--CPU CORE 0 Min freq to 1.152Ghz -->
<!--Sched downmigrate/group_downmigrate 30, Upmigrate/group_upmigrate 35 -->
<!--Set uclamp latency sensitivity to 1 -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="yupik"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4183C000, 0x14, 0x43034000, 0x14, 0x40800100, 0x480, 0x40C58000, 30,
0x40C54000, 35, 0x40C20000, 30, 0x40C1C000, 35, 0x40CEC000, 0x1"/>
<!-- HFR 480fps -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<!--CPU CORE 0 Min freq to 1.152Ghz -->
<!--Set uclamp latency sensitivity to 1 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="yupik"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4183C000, 0x14, 0x43034000, 0x14, 0x40800100, 0x480, 0x40CEC000, 0x1"/>
<!-- multi camera 30fps-->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 940Mhz -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample_ms 20 -->
<!--L CPU Min Freq 940, Max Freq 1804 -->
<!--Set uclamp latency sensitivity to 1 -->
<Config
Id="0x00001336" Enable="true" Timeout="0" Target="yupik"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x4143C100, 940, 0x4183C000, 0x14, 0x43034000, 0x14,
0x40800100, 940, 0x40804100, 1804, 0x40CEC000, 0x1"/>
<!-- same settings for all the qvr power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.3 Ghz -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~.2.131 Ghz -->
<!-- L CPU - Cluster min freq ~.691 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 900 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="yupik" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x94C, 0x40800000, 0x2B3,
0x40804000, 0x853, 0x40800100, 0x2B3, 0x40804100, 0x480,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.3 Ghz -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~.2.131 Ghz -->
<!-- L CPU - Cluster min freq ~.691 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 900 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="yupik" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x94C, 0x40800000, 0x2B3,
0x40804000, 0x853, 0x40800100, 0x2B3, 0x40804100, 0x480,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.3 Ghz -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.131 Ghz -->
<!-- L CPU - Cluster min freq ~.691 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 900 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="yupik" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x94C, 0x40800000, 0x2B3,
0x40804000, 0x853, 0x40800100, 0x2B3, 0x40804100, 0x480,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.3 Ghz -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~.2.131 Ghz -->
<!-- L CPU - Cluster min freq ~.691 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 900 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="yupik" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x94C, 0x40800000, 0x2B3,
0x40804000, 0x853, 0x40800100, 0x2B3, 0x40804100, 0x480,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.3 Ghz -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~.2.131 Ghz -->
<!-- L CPU - Cluster min freq ~.691 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 900 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="yupik" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x94C, 0x40800000, 0x2B3,
0x40804000, 0x853, 0x40800100, 0x2B3, 0x40804100, 0x480,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.3 Ghz -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~.2.131 Ghz -->
<!-- L CPU - Cluster min freq ~.691 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 900 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="yupik" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x94C, 0x40800000, 0x2B3,
0x40804000, 0x853, 0x40800100, 0x2B3, 0x40804100, 0x480,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.3 Ghz -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~.2.131 Ghz -->
<!-- L CPU - Cluster min freq ~.691 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 900 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="yupik" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x94C, 0x40800000, 0x2B3,
0x40804000, 0x853, 0x40800100, 0x2B3, 0x40804100, 0x480,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.3 Ghz -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~.2.131 Ghz -->
<!-- L CPU - Cluster min freq ~.691 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 900 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="yupik" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x94C, 0x40800000, 0x2B3,
0x40804000, 0x853, 0x40800100, 0x2B3, 0x40804100, 0x480,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.3 Ghz -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~.2.131 Ghz -->
<!-- L CPU - Cluster min freq ~.691 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 900 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="yupik" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x94C, 0x40800000, 0x2B3,
0x40804000, 0x853, 0x40800100, 0x2B3, 0x40804100, 0x480,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- sustained performance -->
<!-- Prime CPU - Cluster min freq uncapped -->
<!-- B CPU - Cluster min freq uncapped -->
<!-- L CPU - Cluster min freq uncapped -->
<!-- Prime CPU - Cluster max freq ~1.056 Ghz -->
<!-- B CPU - Cluster max freq ~1.324 GHz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min freq 315Mhz -->
<!-- GPU - max freq 450Mhz -->
<!-- GPUBW freq uncapped -->
<Config
Id="0x00001206" Enable="true" Timeout="0" Target="yupik"
Resources="0x40800200, 0x0, 0x40800000, 0x0, 0x40800100, 0x0, 0x40804200, 0x420,
0x40804000, 0x52C, 0x40804100, 0x433, 0X4280C000, 0x13B, 0X42810000, 0x1C2,
0x42814000, 0x0"/>
<!-- vr mode -->
<!-- Prime CPU - Cluster min freq ~1.056 Ghz -->
<!-- B CPU - Cluster min freq ~1.228 Ghz -->
<!-- L CPU - Cluster min freq ~0.940 Ghz -->
<!-- Prime CPU - Cluster max freq ~2.208 Ghz -->
<!-- B CPU - Cluster max freq ~1.90 Ghz -->
<!-- L CPU - Cluster max freq ~1.804 Ghz -->
<!-- GPU - min freq 315Mhz -->
<!-- GPU - max freq 700Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001207" Enable="true" Timeout="0" Target="yupik"
Resources="0x40800200, 0x420, 0x40800000, 0x4CC, 0x40800100, 0x3AC, 0x40804200, 0x8A0,
0x40804000, 0x76C, 0x40804100, 0x70C, 0X4280C000, 0x13B, 0X4280C000, 0x2BC,
0x42814000, 0x0"/>
<!-- vr mode sustained performance -->
<!-- Prime CPU - Cluster min freq ~1.056 Ghz -->
<!-- B CPU - Cluster min freq ~1.228 Ghz -->
<!-- L CPU - Cluster min freq ~1.152 Ghz -->
<!-- Prime CPU - Cluster max freq ~1.056 Ghz -->
<!-- B CPU - Cluster max freq ~1.228 Ghz -->
<!-- L CPU - Cluster max freq ~1.152 Ghz -->
<!-- GPU - min freq 450Mhz -->
<!-- GPU - max freq 450Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001301" Enable="true" Timeout="0" Target="yupik"
Resources="0x40800200, 0x420, 0x40800000, 0x4CC, 0x40800100, 0x480, 0x40804200, 0x420,
0x40804000, 0x4CC, 0x40804100, 0x480, 0X4280C000, 0x1C2, 0X42810000, 0x1C2,
0x42814000, 0x0"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,301 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
*
*Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-->
<HintConfigs>
<Powerhint>
<!-- camera 30fps and camera preview -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 864Mhz -->
<!--L CPU - Set hispeed load 95 -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample_ms 20 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="lito"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68140, 0xFFFFFFFA, 0x40C68150, 0xFFFFFFFA,
0x4143C100, 0x360, 0x41440100, 0x5F, 0x41820000, 0x14, 0x4300C000, 0x14"/>
<!-- camera 60 FPS -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="lito"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68140, 0xFFFFFFFA, 0x40C68150, 0xFFFFFFFA,
0x41820000, 0x14, 0x4300C000, 0x14"/>
<!-- camera HFR -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="lito"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68140, 0xFFFFFFFA, 0x40C68150, 0xFFFFFFFA,
0x41820000, 0x14, 0x4300C000, 0x14"/>
<!-- HFR 480fps -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU CORE 4 SCHED LOAD BOOST -->
<!--L CPU CORE 5 SCHED LOAD BOOST -->
<!--CPU-LLCC BWMON - Set sample_ms 20 -->
<!--LLCC-DDR BWMON - Set sample ms 20 -->
<!--CPU CORE 0 Min freq to 1.075Ghz -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="lito"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68110, 0xFFFFFFFA, 0x40C68120, 0xFFFFFFFA,
0x40C68130, 0xFFFFFFFA, 0x40C68140, 0xFFFFFFFA, 0x40C68150, 0xFFFFFFFA,
0x41820000, 0x14, 0x4300C000, 0x14, 0x40800100, 0x433"/>
<!-- same settings for all the qvr power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="lito" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="lito" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="lito" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="lito" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="lito" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="lito" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="lito" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="lito" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.806 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.400 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~2.092 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min pwrlevel 7 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="lito" Timeout="0"
Resources="0x40800200, 0x326, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x82C, 0x40800100, 0x266, 0x40804100, 0x433,
0x42804000, 0x7, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- sustained performance -->
<!-- Prime CPU - Cluster min freq uncapped -->
<!-- B CPU - Cluster min freq uncapped -->
<!-- L CPU - Cluster min freq uncapped -->
<!-- Prime CPU - Cluster max freq ~1.094 Ghz -->
<!-- B CPU - Cluster max freq ~1.152 GHz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW freq uncapped -->
<Config
Id="0x00001206" Enable="true" Timeout="0" Target="lito"
Resources="0x40800200, 0x0, 0x40800000, 0x0, 0x40800100, 0x0, 0x40804200, 0x446,
0x40804000, 0x480, 0x40804100, 0x433, 0X4280C000, 0x113, 0X42810000, 0x190,
0x42814000, 0x0"/>
<!-- vr mode -->
<!-- Prime CPU - Cluster min freq ~1.094 Ghz -->
<!-- B CPU - Cluster min freq ~1.152 Ghz -->
<!-- L CPU - Cluster min freq ~0.864 Ghz -->
<!-- Prime CPU - Cluster max freq ~2.188 Ghz -->
<!-- B CPU - Cluster max freq ~1.90 Ghz -->
<!-- L CPU - Cluster max freq ~1.651 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 625Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001207" Enable="true" Timeout="0" Target="lito"
Resources="0x40800200, 0x446, 0x40800000, 0x480, 0x40800100, 0x360, 0x40804200, 0x88C,
0x40804000, 0x76C, 0x40804100, 0x673, 0X4280C000, 0x113, 0X4280C000, 0x271,
0x42814000, 0x0"/>
<!-- vr mode sustained performance -->
<!-- Prime CPU - Cluster min freq ~1.094 Ghz -->
<!-- B CPU - Cluster min freq ~1.152 Ghz -->
<!-- L CPU - Cluster min freq ~1.075 Ghz -->
<!-- Prime CPU - Cluster max freq ~1.094 Ghz -->
<!-- B CPU - Cluster max freq ~1.152 Ghz -->
<!-- L CPU - Cluster max freq ~1.075 Ghz -->
<!-- GPU - min freq 400Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001301" Enable="true" Timeout="0" Target="lito"
Resources="0x40800200, 0x446, 0x40800000, 0x480, 0x40800100, 0x433, 0x40804200, 0x446,
0x40804000, 0x480, 0x40804100, 0x433, 0X4280C000, 0x190, 0X42810000, 0x190,
0x42814000, 0x0"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,274 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="msmnile" Timeout="0"
Resources="" />
<!--sustained performance-->
<!-- B CPU - Cluster min freq ~1.05GHz -->
<!-- L CPU - Cluster min freq ~1.03GHz -->
<!-- B CPU - Cluster max freq ~1.80GHz -->
<!-- GPU - min pwrlevel 2 -->
<!-- GPU - max pwrlevel 0 -->
<!-- Max Prime CPUs 0 -->
<Config
Id="0x00001206" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x420, 0x40800100, 0x40C, 0x40804000, 0x70C,
0X42804000, 0x2, 0X42808000, 0x0, 0x41004200, 0x0"/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="msmnile" Timeout="0"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="msmnile" Timeout="0"
Resources=""/>
<!-- same settings for all the VR power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~.2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240, 0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806,
0x42804000, 0x5, 0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~.2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240, 0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806,
0x42804000, 0x5, 0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~.2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240, 0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806,
0x42804000, 0x5, 0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~.2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240, 0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806,
0x42804000, 0x5, 0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~.2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240, 0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806,
0x42804000, 0x5, 0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~.2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240, 0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806,
0x42804000, 0x5, 0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~.2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240, 0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806,
0x42804000, 0x5, 0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~.2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240, 0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806,
0x42804000, 0x5, 0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.864 Ghz -->
<!-- B CPU - Cluster max freq ~2.016 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.267 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.941 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.054Ghz -->
<!-- GPU - min pwrlevel 5 (freq 215 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 600 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="msmnile" Timeout="0"
Resources="0x40800000, 0x360, 0x40804000, 0x7E0, 0x40800100, 0x240, 0x40804100, 0x4F3, 0x40800200, 0x3AD, 0x40804200, 0x806,
0x42804000, 0x5, 0x42808000, 0x0, 0x41000000, 0x3, 0x41000200, 0x1"/>
<!-- camera general -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--LLC-DDR BWMON - Set sample_ms 10 -->
<!--CPU-LLC BWMON - Set sample_ms 10 -->
<!--LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length 0 -->
<!--LLC-DDR BWMON - Set hyst_length 0 -->
<!--CPU0-LLC MEM LAT - Set ratio_ceil 100 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="msmnile"
Resources="0x40C68100, 0xFFFFFFF6, 0x40C68110, 0xFFFFFFF6, 0x40C68120, 0xFFFFFFF6,
0x40C68130, 0xFFFFFFF6,0x41444100, 0, 0x41440100, 0x63,
0x4300C000, 0xA ,0x41820000, 0xA, 0x43004000, 0x64 ,0x41808000, 0x64, 0x4180C000, 0, 0x43008000, 0, 0x43420000, 0x64"/>
<!-- camera 60fps -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 95 -->
<!--LLC-DDR BWMON - Set sample_ms 20 -->
<!--CPU-LLC BWMON - Set sample_ms 20 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="msmnile"
Resources="0x40C68100, 0xFFFFFFF6, 0x40C68110, 0xFFFFFFF6, 0x40C68120, 0xFFFFFFF6,
0x40C68130, 0xFFFFFFF6,0x41444100, 0, 0x41440100, 0x5F, 0x4300C000, 0x14 ,0x41820000, 0x14"/>
<!-- camera HFR -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--LLC-DDR BWMON - Set sample_ms 10 -->
<!--CPU-LLC BWMON - Set sample_ms 10 -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="msmnile"
Resources="0x40C68100, 0xFFFFFFF6, 0x40C68110, 0xFFFFFFF6, 0x40C68120, 0xFFFFFFF6,
0x40C68130, 0xFFFFFFF6, 0x4300C000, 0xA ,0x41820000, 0xA"/>
<!-- camera 480fps - HFR -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 1 SCHED LOAD BOOST -->
<!--L CPU CORE 2 SCHED LOAD BOOST -->
<!--L CPU CORE 3 SCHED LOAD BOOST -->
<!--LLC-DDR BWMON - Set sample_ms 10 -->
<!--CPU-LLC BWMON - Set sample_ms 10 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="msmnile"
Resources="0x40C68100, 0xFFFFFFF6, 0x40C68110, 0xFFFFFFF6, 0x40C68120, 0xFFFFFFF6,
0x40C68130, 0xFFFFFFF6, 0x4300C000, 0xA ,0x41820000, 0xA"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,456 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/*Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Changes from Qualcomm Innovation Center, Inc. are provided under the following
* license:
*Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification,are permitted (subject to the limitations in the disclaimer
* below) provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer inthe
* documentation and/or other materials provided with the distribution.
* * Neither the name of Qualcomm Innovation Center, Inc. nor the names
* of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY
* THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="niobe"
Resources="" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="niobe"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="niobe"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="niobe"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~1.9 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.691 Ghz-->
<!-- P CPU - PRIME CPU max freq ~1.9 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 681 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="niobe" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x780, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x2B3, 0x40804200, 0x780, 0x42804000, 0x9, 0x42808000, 0x0, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~1.9 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.691 Ghz-->
<!-- P CPU - PRIME CPU max freq ~1.9 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 681 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="niobe" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x780, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x2B3, 0x40804200, 0x780, 0x42804000, 0x9, 0x42808000, 0x0, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~1.9 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.691 Ghz-->
<!-- P CPU - PRIME CPU max freq ~1.9 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 681 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="niobe" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x780, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x2B3, 0x40804200, 0x780, 0x42804000, 0x9, 0x42808000, 0x0, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~1.9 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.691 Ghz-->
<!-- P CPU - PRIME CPU max freq ~1.9 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 681 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="niobe" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x780, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x2B3, 0x40804200, 0x780, 0x42804000, 0x9, 0x42808000, 0x0, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~1.9 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.691 Ghz-->
<!-- P CPU - PRIME CPU max freq ~1.9 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 681 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="niobe" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x780, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x2B3, 0x40804200, 0x780, 0x42804000, 0x9, 0x42808000, 0x0, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~1.9 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.691 Ghz-->
<!-- P CPU - PRIME CPU max freq ~1.9 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 681 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="niobe" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x780, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x2B3, 0x40804200, 0x780, 0x42804000, 0x9, 0x42808000, 0x0, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~1.9 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.691 Ghz-->
<!-- P CPU - PRIME CPU max freq ~1.9 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 681 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="niobe" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x780, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x2B3, 0x40804200, 0x780, 0x42804000, 0x9, 0x42808000, 0x0, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~1.9 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.691 Ghz-->
<!-- P CPU - PRIME CPU max freq ~1.9 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 681 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="niobe" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x780, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x2B3, 0x40804200, 0x780, 0x42804000, 0x9, 0x42808000, 0x0, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~1.9 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.691 Ghz-->
<!-- P CPU - PRIME CPU max freq ~1.9 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 681 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="niobe" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x780, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x2B3, 0x40804200, 0x780, 0x42804000, 0x9, 0x42808000, 0x0, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!--camera ZSLPreview-->
<!--CPU-LLC BWMON - Set sample_ms 33-->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--L CPU - max freq 729000 -->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="niobe"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x339, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--camera 30fps-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 547 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85 -->
<!--DOWNMIGRATE - 10 85 -->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 556800 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="niobe"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
<!--camera 60fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 556800 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="niobe"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
<!--camera HFR 120/240 fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="niobe"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--camera 8k30-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 40 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 556800 -->
<Config
Id="0x00001335" Enable="true" Timeout="0" Target="niobe"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0028000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
<!--video encode HFR 480 fps-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0x40C -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0x4CC -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<!-- MPCTLV3_CPUBW_HWMON_SAMPLE_MS , 0x0A -->
<!-- MPCTLV3_CPUBW_HWMON_IO_PERCENT, 0x50 -->
<!-- MPCTLV3_CPUBW_HWMON_HYST_OPT, 0 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="niobe"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14,
0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<!-- camera open tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1671000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1671000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
<Config
Id="0x00001337" Enable="true" Timeout="0" Target="niobe"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X687, 0x40800000, 0X687,
0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X8C6, 0x40804200, 0X8C6"/>
<!-- camera close tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1632000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1671000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 1671000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
<Config
Id="0x00001338" Enable="true" Timeout="0" Target="niobe"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X687, 0x40800000, 0X687,
0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X8C6, 0x40804200, 0X8C6"/>
<!-- camera snapshot tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- Silver cluster min freq to 1.132GHz -->
<!-- Gold cluster min freq to 1.363GHz -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<Config
Id="0x00001339" Enable="true" Timeout="0" Target="niobe"
Resources="0x40400000, 0x1, 0x40800100, 0x46C, 0x40800000, 0x553, 0x40C20000, 0X14,
0x40C1C000, 0X1E"/>
<!-- decode 240 fps tunings-->
<!--L CPU - max freq 700000 -->
<Config
Id="0X00001505" Enable="true" Timeout="0" Target="niobe"
Resources="0x40804100, 0x2BC"/>
<!-- video decode 30 fps non secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="niobe"
Resources="0x40800000, 0XA"/>
<!-- video decode 30 fps secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="niobe"
Resources="0x40800000, 0XA"/>
<!-- psm light mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x81" Enable="true" Timeout="0" Taget="niobe"
Resources="0x40800000, 0XA"/>
<!-- psm medium mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x82" Enable="true" Timeout="0" Taget="niobe"
Resources="0x40800000, 0XA"/>
<!-- psm deep mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x83" Enable="true" Timeout="0" Taget="niobe"
Resources="0x40800000, 0XA"/>
<!-- psm release mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x80" Enable="true" Timeout="0" Taget="niobe"
Resources="0x40800000, 0XA"/>
</Powerhint>
</HintConfigs>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,589 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="pineapple,cliffs"
Resources="" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="pineapple,cliffs"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="pineapple,cliffs"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="pineapple,cliffs"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="pineapple,cliffs" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="pineapple,cliffs" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="pineapple,cliffs" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="pineapple,cliffs" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="pineapple,cliffs" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="pineapple,cliffs" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="pineapple,cliffs" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="pineapple,cliffs" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="pineapple,cliffs" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!--camera ZSLPreview-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU max freq 1132800 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85 -->
<!--DOWNMIGRATE - 10 85 -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 787200 -->
<!--Min partial halt titanium core numbers 0-->
<!--Titanium core state2 offline timeout 20-->
<!-- MPCTLV3_SCHEDUTIL_RTG_BOOST_FREQ_CLUSTER_LITTLE 556800 -->
<!-- MPCTLV3_SCHEDUTIL_RTG_BOOST_FREQ_CLUSTER_BIG 0 -->
<!-- MPCTLV3_SCHEDUTIL_RTG_BOOST_FREQ_CLUSTER_TITANIUM 0 -->
<!-- MPCTLV3_GOLD_DYNPREFETCHER_OPCODE 1 -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="pineapple"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21, 0x43020000, 0x64,
0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x46C, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x43C0C000, 0, 0x4143C100, 0x313, 0x41010300, 1,
0x41014300, 0x14, 0x4144C100, 0x87F00, 0x4144C000, 0x0, 0x4144C300, 0x0, 0x42C40000, 1"/>
<!--camera 30fps-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 547 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85 -->
<!--DOWNMIGRATE - 10 85 -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 787200 -->
<!--Min partial halt titanium core numbers 1-->
<!--Titanium core state2 offline timeout 20-->
<!-- MPCTLV3_GOLD_DYNPREFETCHER_OPCODE 1 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="pineapple"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x313,
0x41010300, 1, 0x41014300, 0x14, 0x42C40000, 1"/>
<!--camera 60fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85-->
<!--DOWNMIGRATE - 10 85-->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 787200 -->
<!--Min partial halt titanium core numbers 1-->
<!--Titanium core state2 offline timeout 20-->
<!-- MPCTLV3_GOLD_DYNPREFETCHER_OPCODE 1 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="pineapple"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x313,
0x41010300, 1, 0x41014300, 0x14, 0x42C40000, 1"/>
<!--camera HFR 120/240 fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="pineapple"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--camera 8k30-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 40 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 787200 -->
<!--Min partial halt titanium core numbers 1-->
<!--Titanium core state2 offline timeout 20-->
<!-- MPCTLV3_GOLD_DYNPREFETCHER_OPCODE 1 -->
<Config
Id="0x00001335" Enable="true" Timeout="0" Target="pineapple"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0028000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x313,
0x41010300, 1, 0x41014300, 0x14, 0x42C40000, 1"/>
<!--video encode HFR 480 fps-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0x40C -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0x4CC -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<!-- MPCTLV3_CPUBW_HWMON_SAMPLE_MS , 0x0A -->
<!-- MPCTLV3_CPUBW_HWMON_IO_PERCENT, 0x50 -->
<!-- MPCTLV3_CPUBW_HWMON_HYST_OPT, 0 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="pineapple"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14,
0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<!-- camera open tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1344000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0,, 1344000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1612800 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_TITANIUM_CORE_0, 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_TITANIUM_CORE_0 , 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2150400 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2150400 -->
<Config
Id="0x00001337" Enable="true" Timeout="0" Target="pineapple"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804100, 0X540, 0x40800100, 0X540,
0x40804000, 0X64C, 0x40800000, 0X64C, 0x40804300, 0X64C, 0x40800300, 0X64C,
0x40800200, 0X866, 0x40804200, 0X866"/>
<!-- camera close tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1344000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 1344000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1612800 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_TITANIUM_CORE_0, 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_TITANIUM_CORE_0 , 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2150400 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2150400 -->
<Config
Id="0x00001338" Enable="true" Timeout="0" Target="pineapple"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804100, 0X540, 0x40800100, 0X540,
0x40804000, 0X64C, 0x40800000, 0X64C,0x40804300, 0X64C, 0x40800300, 0X64C,
0x40800200, 0X866, 0x40804200, 0X866"/>
<!-- camera snapshot tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- Silver cluster min freq to 1.132GHz -->
<!-- Gold cluster min freq to 1.363GHz -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<Config
Id="0x00001339" Enable="true" Timeout="0" Target="pineapple"
Resources="0x40400000, 0x1, 0x40800100, 0x46C, 0x40800000, 0x553, 0x40C20000, 0X14,
0x40C1C000, 0X1E"/>
<!-- decode 240 fps tunings-->
<!--L CPU - max freq 700000 -->
<Config
Id="0X00001505" Enable="true" Timeout="0" Target="pineapple,cliffs"
Resources="0x40804100, 0x2BC"/>
<!-- video decode 30 fps non secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="pineapple,cliffs"
Resources="0x40800000, 0XA"/>
<!-- video decode 30 fps secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="pineapple,cliffs"
Resources="0x40800000, 0XA"/>
<!-- video decode 60 fps content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001506" Enable="true" Timeout="0" Target="pineapple,cliffs"
Resources="0x40800000, 0XA"/>
<!-- psm light mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x81" Enable="true" Timeout="0" Taget="pineapple,cliffs"
Resources="0x40800000, 0XA"/>
<!-- psm medium mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x82" Enable="true" Timeout="0" Taget="pineapple,cliffs"
Resources="0x40800000, 0XA"/>
<!-- psm deep mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x83" Enable="true" Timeout="0" Taget="pineapple,cliffs"
Resources="0x40800000, 0XA"/>
<!-- psm release mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x80" Enable="true" Timeout="0" Taget="pineapple,cliffs"
Resources="0x40800000, 0XA"/>
<!--camera ZSLPreview-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--DDR BW min freq 547000 -->
<!--L CPU max freq 1132800 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85 -->
<!--DOWNMIGRATE - 10 85 -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 787200 -->
<!--MPCTLV3_SCHEDUTIL_RTG_BOOST_FREQ_CLUSTER_LITTLE 556800 -->
<!--MPCTLV3_SCHEDUTIL_RTG_BOOST_FREQ_CLUSTER_BIG 0 -->
<!--MPCTLV3_GOLD_DYNPREFETCHER_OPCODE 1 -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="cliffs"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x459, 0x41444100, 0,
0x41444000, 0, 0x41440000, 0x63, 0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055,
0x43C0C000, 0, 0x4143C100, 0x313, 0x4144C100, 0x91500, 0x4144C000, 0x0, 0x42C40000, 1"/>
<!--camera 30fps-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 547 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85 -->
<!--DOWNMIGRATE - 10 85 -->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 787200 -->
<!-- MPCTLV3_GOLD_DYNPREFETCHER_OPCODE 1 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="cliffs"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x459, 0x41444100, 0,
0x41444000, 0, 0x41440000, 0x63, 0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055,
0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x313,
0x42C40000, 1"/>
<!--camera 60fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<!--SCHED_IDLE_ENOUGH Set 0 -->
<!--L CPU - Set hispeed freq 787200 -->
<!-- MPCTLV3_GOLD_DYNPREFETCHER_OPCODE 1 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="cliffs"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0,
0x41444000, 0, 0x41440000, 0x63, 0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055,
0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x313,
0x42C40000, 1"/>
<!--camera HFR 120/240 fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="cliffs"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0,
0x41444000, 0, 0x41440000, 0x63, 0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055,
0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--video encode HFR 480 fps-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0x40C -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0x4CC -->
<!-- UPMIGRATE 50 85_ -->
<!-- DOWNMIGRATE 10 85 -->
<!-- MPCTLV3_CPUBW_HWMON_SAMPLE_MS , 0x0A -->
<!-- MPCTLV3_CPUBW_HWMON_IO_PERCENT, 0x50 -->
<!-- MPCTLV3_CPUBW_HWMON_HYST_OPT, 0 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="cliffs"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40CE0000, 0x0032000A,
0x40CE0200, 0x00550055, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<!-- camera open tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1344000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0,, 1344000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2150400 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2150400 -->
<Config
Id="0x00001337" Enable="true" Timeout="0" Target="cliffs"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804100, 0X540, 0x40800100, 0X540,
0x40804000, 0X64C, 0x40800000, 0X64C, 0x40800200, 0X866, 0x40804200, 0X866"/>
<!-- camera close tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1344000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 1344000 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1612800 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2150400 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2150400 -->
<Config
Id="0x00001338" Enable="true" Timeout="0" Target="cliffs"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804100, 0X540, 0x40800100, 0X540,
0x40804000, 0X64C, 0x40800000, 0X64C, 0x40800200, 0X866, 0x40804200, 0X866"/>
<!-- camera snapshot tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- Silver cluster min freq to 1.132GHz -->
<!-- Gold cluster min freq to 1.363GHz -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<Config
Id="0x00001339" Enable="true" Timeout="0" Target="cliffs"
Resources="0x40400000, 0x1, 0x40800100, 0x46C, 0x40800000, 0x553, 0x40C20000, 0X14,
0x40C1C000, 0X1E"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,294 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/*Copyright (c) 2024, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*
*/
-->
<HintConfigs>
<Powerhint>
<!-- camera preview -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1094Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 99 -->
<!--L CLUSTER_BIG - Set hispeed load 99 -->
<!--CPUBW HWMON - Set sample_ms 48 -->
<!--CPUBW HWMON - Set io_percent 100 -->
<!--CPUBW HWMON - Set up_scale 0 -->
<!-- AB scale 50 -->
<!--L CPU max freq 1286Mhz -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="pitti"
Resources="0x40C68100, -15, 0x40C68000, -15,
0x4143C100, 1094, 0x41440100, 0x63, 0x41440000, 0x63, 0x43034000, 0x30, 0x43020000,
0x64, 0x43014000, 0x0, 0x43048000, 0x32, 0x40804100, 1286"/>
<!-- camera 30fps-->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 48 -->
<!--CPUBW HWMON - Set io_percent 100 -->
<!--CPUBW HWMON - Set up_scale 0 -->
<!--Set uclamp latency sensitivity to 1 -->
<!-- AB scale 50-->
<!--L CPU max freq 1286Mhz -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="pitti"
Resources="0x40C68100, -10, 0x40C68000, -10,
0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x30, 0x43020000, 0x64, 0x43014000, 0x0,
0x40CEC000, 0x1, 0x43048000, 0x32, 0x40804100, 1286"/>
<!-- camera 60 FPS -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 20 -->
<!--Set uclamp latency sensitivity to 1 -->
<!-- AB scale 50-->
<!-- CPUBW HWMON - Set io_percent 100 -->
<!--L CPU max freq 1286Mhz -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="pitti"
Resources="0x40C68100, -10, 0x40C68000, -10,
0x41440100, 0x5F, 0x41440000, 0x5F, 0x43034000, 0x14, 0x40CEC000, 0x1, 0x43048000, 0x32,
0x43020000, 0x64, 0x40804100, 1286"/>
<!-- camera HFR -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1094Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 20 -->
<!-- AB scale 50-->
<!--L CPU max freq 1094Mhz -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="pitti"
Resources="0x40C68100, -10, 0x40C68000, -10, 0x4143C100, 1094, 0x41440100,
0x5F, 0x41440000, 0x5F, 0x43034000, 0x14, 0x43048000, 0x32, 0x40804100, 1094"/>
<!-- HFR 480fps -->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU Hispeed freq of 1094Mhz -->
<!--L CLUSTER_LITTLE - Set hispeed load 95 -->
<!--L CLUSTER_BIG - Set hispeed load 95 -->
<!--CPUBW HWMON - Set sample_ms 20 -->
<!--L CPU core ctl min cpus 6 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="pitti"
Resources="0x40C68100, 0xFFFFFFFA, 0x40C68000, 0xFFFFFFFA, 0x4143C100, 1094, 0x41440100,
0x5F, 0x41440000, 0x5F, 0x43034000, 0x14, 0x41000100, 6"/>
<!-- same settings for all the qvr power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="pitti" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="pitti" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="pitti" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="pitti" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="pitti" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="pitti" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.691 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="pitti" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="pitti" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.768 Ghz -->
<!-- B CPU - Cluster max freq ~2.2 Ghz -->
<!-- L CPU - Cluster min freq ~.576 Ghz -->
<!-- L CPU - Cluster max freq ~1.516 Ghz -->
<!-- GPU - min pwrlevel 6 (freq 180 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 825 Mhz) -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="pitti" Timeout="0"
Resources="0x40800000, 0x2B3, 0x40804000, 0x8A0, 0x40800100, 0x240, 0x40804100, 0x5EC,
0x42804000, 0x6, 0x42808000, 0x0"/>
<!-- sustained performance -->
<!-- B CPU - Cluster min freq uncapped -->
<!-- L CPU - Cluster min freq uncapped -->
<!-- B CPU - Cluster max freq ~1.22 GHz -->
<!-- L CPU - Cluster max freq ~1.22 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW freq uncapped -->
<Config
Id="0x00001206" Enable="true" Timeout="0" Target="pitti"
Resources="0x40800000, 0x0, 0x40800100, 0x0, 0x40804000, 0x4CC, 0x40804100, 0x4CC,
0X4280C000, 0x113, 0X42810000, 0x190, 0x42814000, 0x0"/>
<!-- vr mode -->
<!-- B CPU - Cluster min freq ~1.22 Ghz -->
<!-- L CPU - Cluster min freq ~0.940 Ghz -->
<!-- B CPU - Cluster max freq ~1.90 Ghz -->
<!-- L CPU - Cluster max freq ~1.70 Ghz -->
<!-- GPU - min freq 275Mhz -->
<!-- GPU - max freq 625Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001207" Enable="true" Timeout="0" Target="pitti"
Resources="0x40800000, 0x4CC, 0x40800100, 0x3AC, 0x40804000, 0x76C, 0x40804100, 0x6C0,
0X4280C000, 0x113, 0X4280C000, 0x271, 0x42814000, 0x0"/>
<!-- vr mode sustained performance -->
<!-- B CPU - Cluster min freq ~1.22 Ghz -->
<!-- L CPU - Cluster min freq ~1.22 Ghz -->
<!-- B CPU - Cluster max freq ~1.22 Ghz -->
<!-- L CPU - Cluster max freq ~1.22 Ghz -->
<!-- GPU - min freq 400Mhz -->
<!-- GPU - max freq 400Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001301" Enable="true" Timeout="0" Target="pitti"
Resources="0x40800000, 0x4CC, 0x40800100, 0x4CC, 0x40804000, 0x4CC, 0x40804100, 0x4CC,
0X4280C000, 0x190, 0X42810000, 0x190, 0x42814000, 0x0"/>
<!-- multi camera 30fps-->
<!--L CPU CORE 0 SCHED LOAD BOOST -->
<!--L CPU CORE 6 SCHED LOAD BOOST -->
<!--L CPU cluster min freq of 1094Mhz -->
<!--CPUBW HWMON - Set sample_ms 48 -->
<!--CPUBW HWMON - Set io_percent 100 -->
<!--CPUBW HWMON - Set up_scale 0 -->
<!--L CPU core ctl min cpus 6 -->
<!--Set uclamp latency sensitivity to 1 -->
<Config
Id="0x00001336" Enable="true" Timeout="0" Target="pitti"
Resources="0x40C68100, -10, 0x40C68000, -10,
0x40800100, 1094, 0x43034000, 0x30, 0x43020000, 0x64, 0x43014000, 0x0, 0x41000100, 6,
0x40CEC000, 0x1"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,398 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="sun"
Resources="" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="sun"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="sun"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="sun"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!--camera ZSLPreview-->
<!--CPU-LARGE-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LARGE-LLC BWMON - Set io_percent 120 -->
<!--CPU-LARGE-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-MEDIUM-LLC BWMON - Set sample_ms 33 -->
<!--CPU-MEDIUM-LLC BWMON - Set io_percent 120 -->
<!--CPU-MEDIUM-LLC BWMON - Set hyst_length hist memory 0 -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!-- MPCTLV3_SCHED_IDLE_ENOUGH 0 -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG 20 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_FREQ_CLUSTER_BIG 556MHz -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="sun"
Resources="0x4183C000, 0x21, 0x41834000, 0xB4, 0x41838000, 0, 0x4185C000, 0x21, 0x41854000, 0xB4, 0x41858000, 0,
0x41440000, 0x63, 0x43C0C000, 0, 0x41014000, 20, 0x4143C000, 0x22C"/>
<!--camera 30fps-->
<!--CPU-LARGE-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LARGE-LLC BWMON - Set io_percent 120 -->
<!--CPU-LARGE-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-MEDIUM-LLC BWMON - Set sample_ms 33 -->
<!--CPU-MEDIUM-LLC BWMON - Set io_percent 120 -->
<!--CPU-MEDIUM-LLC BWMON - Set hyst_length hist memory 0 -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!-- MPCTLV3_SCHED_IDLE_ENOUGH 0 -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG 20 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_FREQ_CLUSTER_BIG 556MHz -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG 3 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG 000111 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="sun"
Resources="0x4183C000, 0x21, 0x41834000, 0xB4, 0x41838000, 0, 0x4185C000, 0x21, 0x41854000, 0xB4, 0x41858000, 0,
0x41444000, 0, 0x41440000, 0x63, 0x43C0C000, 0, 0x41014000, 20, 0x4143C000, 0x22C, 0x41000000, 3, 0x4100C000, 0x7"/>
<!--camera 60fps-->
<!--CPU-LARGE-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LARGE-LLC BWMON - Set io_percent 120 -->
<!--CPU-LARGE-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-MEDIUM-LLC BWMON - Set sample_ms 16 -->
<!--CPU-MEDIUM-LLC BWMON - Set io_percent 120 -->
<!--CPU-MEDIUM-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!-- MPCTLV3_SCHED_IDLE_ENOUGH 0 -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG 0 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_FREQ_CLUSTER_BIG 556MHz -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="sun"
Resources="0x4183C000, 0x10, 0x41834000, 0xB4, 0x41838000, 0, 0x4185C000, 0x10, 0x41854000, 0xB4, 0x41858000, 0,
0x4303C000, 0x14A528, 0x41444000, 0, 0x41440000, 0x63, 0x43C0C000, 0, 0x41014000, 0, 0x4143C000, 0x22C"/>
<!--camera 60fps DMM -->
<!--CPU-LARGE-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LARGE-LLC BWMON - Set io_percent 120 -->
<!--CPU-LARGE-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-MEDIUM-LLC BWMON - Set sample_ms 16 -->
<!--CPU-MEDIUM-LLC BWMON - Set io_percent 120 -->
<!--CPU-MEDIUM-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!-- MPCTLV3_SCHED_IDLE_ENOUGH 0 -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG 0 -->
<!-- Medium cluster min freq to 960MHz -->
<Config
Id="0x00001340" Enable="true" Timeout="0" Target="sun"
Resources="0x4183C000, 0x10, 0x41834000, 0xB4, 0x41838000, 0, 0x4185C000, 0x10, 0x41854000, 0xB4, 0x41858000, 0,
0x4303C000, 0x14A528, 0x41444000, 0, 0x41440000, 0x63, 0x43C0C000, 0, 0x41014000, 0, 0x40800000, 0x480,
0x41000000, 6, 0x4100C000, 0x0"/>
<!--camera HFR 120/240 fps-->
<!--CPU-LARGE-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LARGE-LLC BWMON - Set io_percent 100 -->
<!--CPU-LARGE-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-MEDIUM-LLC BWMON - Set sample_ms 16 -->
<!--CPU-MEDIUM-LLC BWMON - Set io_percent 100 -->
<!--CPU-MEDIUM-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="sun"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x4185C000, 0x10, 0x41854000, 0x64, 0x41858000, 0,
0x43034000, 0x10, 0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x14A528, 0x41444000, 0, 0x41440000, 0x63"/>
<!--camera 8k30-->
<!--CPU-LARGE-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LARGE-LLC BWMON - Set io_percent 120 -->
<!--CPU-LARGE-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-MEDIUM-LLC BWMON - Set sample_ms 33 -->
<!--CPU-MEDIUM-LLC BWMON - Set io_percent 120 -->
<!--CPU-MEDIUM-LLC BWMON - Set hyst_length hist memory 0 -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!-- MPCTLV3_SCHED_IDLE_ENOUGH 0 -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG 0 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_FREQ_CLUSTER_BIG 556MHz -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG 3 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG 000111 -->
<Config
Id="0x00001335" Enable="true" Timeout="0" Target="sun"
Resources="0x4183C000, 0x21, 0x41834000, 0xB4, 0x41838000, 0, 0x4185C000, 0x21, 0x41854000, 0xB4, 0x41858000, 0,
0x41444000, 0, 0x41440000, 0x63, 0x43C0C000, 0, 0x41014000, 0, 0x4143C000, 0x22C, 0x41000000, 3, 0x4100C000, 0x7"/>
<!--video encode HFR 480 fps-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0x40C -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0x4CC -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<!-- MPCTLV3_CPUBW_HWMON_SAMPLE_MS , 0x0A -->
<!-- MPCTLV3_CPUBW_HWMON_IO_PERCENT, 0x50 -->
<!-- MPCTLV3_CPUBW_HWMON_HYST_OPT, 0 -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="sun"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14,
0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<!-- camera open tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x0 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG resource opcode, 1632000 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME resource opcode, 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG resource opcode, 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME resource opcode, 1747200 -->
<Config
Id="0x00001337" Enable="true" Timeout="1000" Target="sun"
Resources="0x40400000, 0x1, 0x40C00000, 0x0, 0x4080C000, 1747200, 0x4080C200, 2169600,
0x40808000, 1324800, 0x40808200, 1632000"/>
<!-- camera close tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x5 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG resource opcode, 1632000 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME resource opcode, 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG resource opcode, 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME resource opcode, 1747200 -->
<Config
Id="0x00001338" Enable="true" Timeout="1000" Target="sun"
Resources="0x40400000, 0x1, 0x40C00000, 0x5, 0x4080C000, 1747200, 0x4080C200, 2169600,
0x40808000, 1324800, 0x40808200, 1632000"/>
<!-- camera snapshot tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- Silver cluster min freq to 1.132GHz -->
<!-- Gold cluster min freq to 1.363GHz -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<Config
Id="0x00001339" Enable="true" Timeout="0" Target="sun"
Resources="0x40400000, 0x1, 0x40800000, 0x553, 0x40C20000, 0x14, 0x40C1C000, 0x1E"/>
<!-- decode 240 fps tunings-->
<!--L CPU - max freq 700000 -->
<Config
Id="0X00001505" Enable="true" Timeout="0" Target="sun"
Resources="0x40804100, 0x2BC"/>
<!-- video decode 30 fps non secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- video decode 30 fps secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- video decode 60 fps content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001506" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- psm light mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x81" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm medium mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x82" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm deep mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x83" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm release mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x80" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,798 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
* Product: PA1
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="sun"
Resources="" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="sun"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="sun"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="sun"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- POWER_HINT_ID_OPEN_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x00001330" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x1,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600,
0x40800000, 3532,
0x40800200, 3840"/>
<!-- POWER_HINT_ID_CLOSE_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x00001331" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x1,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600,
0x40800000, 3532,
0x40800200, 3840"/>
<!-- POWER_HINT_ID_ADAPTIVE_OPEN_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x0000137E" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x5,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600"/>
<!-- POWER_HINT_ID_ADAPTIVE_CLOSE_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x0000137F" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x5,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600"/>
<!-- POWER_HINT_ID_COMMON -->
<!-- MPCTLV3_CPU_LLCC_BW_SAMPLE_MS : 0x4183C000 : 0x10( 16) -->
<!-- MPCTLV3_CPU_LLCC_BW_IO_PERCENT : 0x41834000 : 0xB4(180) -->
<!-- MPCTLV3_CPU_LLCC_BW_HYST_OPT : 0x41838000 : 0 -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_SAMPLE_MS : 0x4185C000 : 0x10( 16) -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_IO_PERCENT : 0x41854000 : 0xB4(180) -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_HYST_OPT : 0x41858000 : 0 -->
<!-- MPCTLV3_SCHEDUTIL_PREDICTIVE_LOAD_CLUSTER_BIG : 0x41444000 : 0 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_LOAD_CLUSTER_BIG : 0x41440000 : 99 -->
<!-- MPCTLV3_SCHED_IDLE_ENOUGH : 0x43C0C000 : 0 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_FREQ_CLUSTER_BIG : 0x4143C000 : 556 MHz -->
<!-- CPU AB DDR VOTING : 0x41874000 : 70 -->
<Config
Id="0x00001332" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x10, 0x41834000, 0xB4, 0x41838000, 0,
0x4185C000, 0x10, 0x41854000, 0xB4, 0x41858000, 0,
0x41444000, 0, 0x41440000, 99,
0x43C0C000, 0, 0x4143C000, 0x22C,
0x43424000, 1, 0x43438000, 1"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS -->
<!-- MPCTLV3_CPU_LLCC_BW_SAMPLE_MS : 0x4183C000 : 0x21( 33) -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_SAMPLE_MS : 0x4185C000 : 0x21( 33) -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 20 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 3 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 000111 -->
<Config
Id="0x00001333" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x4186C000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS -->
<Config
Id="0x00001334" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 5, 0x4100C000, 0x1,
0x41454000, 4, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_8K_30FPS -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<Config
Id="0x00001335" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 50, 0x4186C000, 50, 0x41454000, 4, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<Config
Id="0x00001336" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 4, 0x4100C000, 0x3,
0x41874000, 70, 0x4186C000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<Config
Id="0x00001337" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x4186C000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_FRONT -->
<Config
Id="0x00001338" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_FRONT -->
<Config
Id="0x00001339" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_FRONT -->
<Config
Id="0x0000133A" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_FRONT -->
<Config
Id="0x0000133B" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_PRO -->
<Config
Id="0x0000133C" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_PRO -->
<Config
Id="0x0000133D" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_8K_30FPS_PRO -->
<Config
Id="0x0000133E" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 50, 0x4186C000, 50, 0x41454000, 4, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_PRO -->
<Config
Id="0x0000133F" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_PRO -->
<Config
Id="0x00001340" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_120FPS_PRO -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<Config
Id="0x00001341" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_PRO_FRONT -->
<Config
Id="0x00001342" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_PRO_FRONT -->
<Config
Id="0x00001343" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_PRO_FRONT -->
<Config
Id="0x00001344" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_PRO_FRONT -->
<Config
Id="0x00001345" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_HFR -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001346" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_HFR_480FPS -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001347" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_BEAUTY -->
<Config
Id="0x00001348" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_BEAUTY -->
<Config
Id="0x00001349" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_EISOFF -->
<Config
Id="0x0000134A" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_BEAUTY_FRONT -->
<Config
Id="0x0000134B" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_BEAUTY_FRONT -->
<Config
Id="0x0000134C" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_HDR10 -->
<Config
Id="0x0000134D" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_HDR10 -->
<Config
Id="0x0000134E" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_HDR10 -->
<Config
Id="0x0000134F" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_HDR10 -->
<Config
Id="0x00001350" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_HYPER_LAPSE -->
<Config
Id="0x00001351" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_SUPER_STEADY -->
<Config
Id="0x00001352" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_SUPER_STEADY -->
<Config
Id="0x00001353" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_TRACKING_ZOOM -->
<Config
Id="0x00001354" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_LIVE_FOCUS_VIDEO -->
<Config
Id="0x00001355" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10,
0x42804000, 14, 0x42808000, 13"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_LIVE_FOCUS_VIDEO_FRONT -->
<Config
Id="0x00001356" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10,
0x42804000, 13, 0x42808000, 12"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_DUAL_REC -->
<Config
Id="0x00001357" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x10, 0x4185C000, 0x10, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_AR_DOODLE -->
<Config
Id="0x00001358" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_PREVIEW -->
<Config
Id="0x00001359" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40800000, 960"/>
<!-- POWER_HINT_ID_PREVIEW_FRONT -->
<Config
Id="0x0000135A" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VT_CALL -->
<Config
Id="0x0000135B" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_STP -->
<Config
Id="0x0000135C" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_LIVE_FOCUS -->
<Config
Id="0x0000135D" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40800000, 960"/>
<!-- POWER_HINT_ID_LIVE_FOCUS_FRONT -->
<Config
Id="0x0000135E" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_CTS_ITS_GSI -->
<Config
Id="0x0000135F" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40800000, 1996"/>
<!-- POWER_HINT_ID_SNAPSHOT_CAPTURE-->
<Config
Id="0x00001360" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40804000, 2745, 0x40804200, 3072"/>
<!-- POWER_HINT_ID_SNAPSHOT_CAPTURE_SPECIAL-->
<Config
Id="0x00001361" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40804000, 3072, 0x40804200, 3283, 0x42808000, 0x3"/>
<!-- POWER_HINT_ID_BOOST_DDR_MIN_CAPTURE -->
<Config
Id="0x00001362" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_DDR_MIN_PREVIEW_FRONT -->
<Config
Id="0x00001363" Enable="true" Target="sun" Timeout="0"
Resources="0x4303C000, 0xBB800"/>
<!-- POWER_HINT_ID_BOOST_SUPER_NIGHT -->
<Config
Id="0x00001364" Enable="true" Target="sun" Timeout="0"
Resources="0x42804000, 0x8"/>
<!-- POWER_HINT_ID_BOOST_SUPER_NIGHT_BEAUTY -->
<Config
Id="0x00001365" Enable="true" Target="sun" Timeout="0"
Resources="0x42804000, 0x8"/>
<!-- POWER_HINT_ID_SCHED_BOOST_0 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x0 -->
<Config
Id="0x00001366" Enable="true" Target="sun" Timeout="0"
Resources="0x40C00000, 0"/>
<!-- POWER_HINT_ID_SCHED_BOOST_1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<Config
Id="0x00001367" Enable="true" Target="sun" Timeout="0"
Resources="0x40C00000, 1"/>
<!-- POWER_HINT_ID_BOOST_SILVER_0 -->
<Config
Id="0x00001368" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_SILVER_1 -->
<Config
Id="0x00001369" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_ZOOM_LENS_CHANGE -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 2227 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 2246 -->
<Config
Id="0x0000136A" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 2227, 0x40800200, 2246"/>
<!-- POWER_HINT_ID_BOOST_ZOOM_RATIO_CHANGE -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x0000136B" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_REC_START_0 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 2227 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 2246 -->
<Config
Id="0x0000136C" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 2227, 0x40800200, 2246"/>
<!-- POWER_HINT_ID_BOOST_REC_START_1 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x0000136D" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_REC_START_2 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1785 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1689 -->
<Config
Id="0x0000136E" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1785, 0x40800200, 1689"/>
<!-- POWER_HINT_ID_BOOST_DUAL_REC_START_BOOST -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0 : 0x40804000 : 1996 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PRIME_CORE_0 : 0x40804200 : 1958 -->
<Config
Id="0x0000136F" Enable="true" Target="sun" Timeout="0"
Resources="0x40804000, 1996, 0x40804200, 1958"/>
<!-- POWER_HINT_ID_BOOST_UHD_30FPS_START_BOOST -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001370" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_8K_30FPS_START_BOOST -->
<Config
Id="0x00001371" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_FHD_60FPS_START_BOOST -->
<Config
Id="0x00001372" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_UHD_60FPS_START_BOOST -->
<Config
Id="0x00001373" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_REC_STOP_0 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x00001374" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_PREVIEW_0 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x00001375" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_FHD_60FPS_TELE -->
<Config
Id="0x00001376" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_UHD_60FPS_TELE -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001377" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_SILVER_MAX_HIGH -->
<Config
Id="0x00001378" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_SILVER_MAX_MID -->
<Config
Id="0x00001379" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_SILVER_MAX_LOW -->
<Config
Id="0x0000137A" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_8K_30FPS_TELE -->
<Config
Id="0x0000137D" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152"/>
<!-- decode 240 fps tunings-->
<!--L CPU - max freq 700000 -->
<Config
Id="0X00001505" Enable="true" Timeout="0" Target="sun"
Resources="0x40804100, 0x2BC"/>
<!-- video decode 30 fps non secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- video decode 30 fps secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- video decode 60 fps content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001506" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- psm light mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x81" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm medium mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x82" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm deep mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x83" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm release mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x80" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,798 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
* Product: PA2
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="sun"
Resources="" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="sun"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="sun"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="sun"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- POWER_HINT_ID_OPEN_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x00001330" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x1,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600,
0x40800000, 3532,
0x40800200, 3840"/>
<!-- POWER_HINT_ID_CLOSE_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x00001331" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x1,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600,
0x40800000, 3532,
0x40800200, 3840"/>
<!-- POWER_HINT_ID_ADAPTIVE_OPEN_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x0000137E" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x5,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600"/>
<!-- POWER_HINT_ID_ADAPTIVE_CLOSE_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x0000137F" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x5,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600"/>
<!-- POWER_HINT_ID_COMMON -->
<!-- MPCTLV3_CPU_LLCC_BW_SAMPLE_MS : 0x4183C000 : 0x10( 16) -->
<!-- MPCTLV3_CPU_LLCC_BW_IO_PERCENT : 0x41834000 : 0xB4(180) -->
<!-- MPCTLV3_CPU_LLCC_BW_HYST_OPT : 0x41838000 : 0 -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_SAMPLE_MS : 0x4185C000 : 0x10( 16) -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_IO_PERCENT : 0x41854000 : 0xB4(180) -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_HYST_OPT : 0x41858000 : 0 -->
<!-- MPCTLV3_SCHEDUTIL_PREDICTIVE_LOAD_CLUSTER_BIG : 0x41444000 : 0 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_LOAD_CLUSTER_BIG : 0x41440000 : 99 -->
<!-- MPCTLV3_SCHED_IDLE_ENOUGH : 0x43C0C000 : 0 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_FREQ_CLUSTER_BIG : 0x4143C000 : 556 MHz -->
<!-- CPU AB DDR VOTING : 0x41874000 : 70 -->
<Config
Id="0x00001332" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x10, 0x41834000, 0xB4, 0x41838000, 0,
0x4185C000, 0x10, 0x41854000, 0xB4, 0x41858000, 0,
0x41444000, 0, 0x41440000, 99,
0x43C0C000, 0, 0x4143C000, 0x22C,
0x43424000, 1, 0x43438000, 1"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS -->
<!-- MPCTLV3_CPU_LLCC_BW_SAMPLE_MS : 0x4183C000 : 0x21( 33) -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_SAMPLE_MS : 0x4185C000 : 0x21( 33) -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 20 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 3 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 000111 -->
<Config
Id="0x00001333" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x4186C000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS -->
<Config
Id="0x00001334" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 5, 0x4100C000, 0x1,
0x41454000, 4, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_8K_30FPS -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<Config
Id="0x00001335" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 50, 0x4186C000, 50, 0x41454000, 4, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<Config
Id="0x00001336" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 4, 0x4100C000, 0x3,
0x41874000, 70, 0x4186C000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<Config
Id="0x00001337" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x4186C000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_FRONT -->
<Config
Id="0x00001338" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_FRONT -->
<Config
Id="0x00001339" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_FRONT -->
<Config
Id="0x0000133A" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_FRONT -->
<Config
Id="0x0000133B" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_PRO -->
<Config
Id="0x0000133C" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_PRO -->
<Config
Id="0x0000133D" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_8K_30FPS_PRO -->
<Config
Id="0x0000133E" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 50, 0x4186C000, 50, 0x41454000, 4, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_PRO -->
<Config
Id="0x0000133F" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_PRO -->
<Config
Id="0x00001340" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_120FPS_PRO -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<Config
Id="0x00001341" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_PRO_FRONT -->
<Config
Id="0x00001342" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_PRO_FRONT -->
<Config
Id="0x00001343" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_PRO_FRONT -->
<Config
Id="0x00001344" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_PRO_FRONT -->
<Config
Id="0x00001345" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_HFR -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001346" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_HFR_480FPS -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001347" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_BEAUTY -->
<Config
Id="0x00001348" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_BEAUTY -->
<Config
Id="0x00001349" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_EISOFF -->
<Config
Id="0x0000134A" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_BEAUTY_FRONT -->
<Config
Id="0x0000134B" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_BEAUTY_FRONT -->
<Config
Id="0x0000134C" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_HDR10 -->
<Config
Id="0x0000134D" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_HDR10 -->
<Config
Id="0x0000134E" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_HDR10 -->
<Config
Id="0x0000134F" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_HDR10 -->
<Config
Id="0x00001350" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_HYPER_LAPSE -->
<Config
Id="0x00001351" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_SUPER_STEADY -->
<Config
Id="0x00001352" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_SUPER_STEADY -->
<Config
Id="0x00001353" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_TRACKING_ZOOM -->
<Config
Id="0x00001354" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_LIVE_FOCUS_VIDEO -->
<Config
Id="0x00001355" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10,
0x42804000, 14, 0x42808000, 13"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_LIVE_FOCUS_VIDEO_FRONT -->
<Config
Id="0x00001356" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10,
0x42804000, 13, 0x42808000, 12"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_DUAL_REC -->
<Config
Id="0x00001357" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x10, 0x4185C000, 0x10, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_AR_DOODLE -->
<Config
Id="0x00001358" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_PREVIEW -->
<Config
Id="0x00001359" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40800000, 960"/>
<!-- POWER_HINT_ID_PREVIEW_FRONT -->
<Config
Id="0x0000135A" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VT_CALL -->
<Config
Id="0x0000135B" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_STP -->
<Config
Id="0x0000135C" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_LIVE_FOCUS -->
<Config
Id="0x0000135D" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40800000, 960"/>
<!-- POWER_HINT_ID_LIVE_FOCUS_FRONT -->
<Config
Id="0x0000135E" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_CTS_ITS_GSI -->
<Config
Id="0x0000135F" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40800000, 1996"/>
<!-- POWER_HINT_ID_SNAPSHOT_CAPTURE-->
<Config
Id="0x00001360" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40804000, 2745, 0x40804200, 3072"/>
<!-- POWER_HINT_ID_SNAPSHOT_CAPTURE_SPECIAL-->
<Config
Id="0x00001361" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40804000, 3072, 0x40804200, 3283, 0x42808000, 0x3"/>
<!-- POWER_HINT_ID_BOOST_DDR_MIN_CAPTURE -->
<Config
Id="0x00001362" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_DDR_MIN_PREVIEW_FRONT -->
<Config
Id="0x00001363" Enable="true" Target="sun" Timeout="0"
Resources="0x4303C000, 0xBB800"/>
<!-- POWER_HINT_ID_BOOST_SUPER_NIGHT -->
<Config
Id="0x00001364" Enable="true" Target="sun" Timeout="0"
Resources="0x42804000, 0x8"/>
<!-- POWER_HINT_ID_BOOST_SUPER_NIGHT_BEAUTY -->
<Config
Id="0x00001365" Enable="true" Target="sun" Timeout="0"
Resources="0x42804000, 0x8"/>
<!-- POWER_HINT_ID_SCHED_BOOST_0 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x0 -->
<Config
Id="0x00001366" Enable="true" Target="sun" Timeout="0"
Resources="0x40C00000, 0"/>
<!-- POWER_HINT_ID_SCHED_BOOST_1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<Config
Id="0x00001367" Enable="true" Target="sun" Timeout="0"
Resources="0x40C00000, 1"/>
<!-- POWER_HINT_ID_BOOST_SILVER_0 -->
<Config
Id="0x00001368" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_SILVER_1 -->
<Config
Id="0x00001369" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_ZOOM_LENS_CHANGE -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 2227 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 2246 -->
<Config
Id="0x0000136A" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 2227, 0x40800200, 2246"/>
<!-- POWER_HINT_ID_BOOST_ZOOM_RATIO_CHANGE -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x0000136B" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_REC_START_0 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 2227 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 2246 -->
<Config
Id="0x0000136C" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 2227, 0x40800200, 2246"/>
<!-- POWER_HINT_ID_BOOST_REC_START_1 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x0000136D" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_REC_START_2 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1785 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1689 -->
<Config
Id="0x0000136E" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1785, 0x40800200, 1689"/>
<!-- POWER_HINT_ID_BOOST_DUAL_REC_START_BOOST -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0 : 0x40804000 : 1996 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PRIME_CORE_0 : 0x40804200 : 1958 -->
<Config
Id="0x0000136F" Enable="true" Target="sun" Timeout="0"
Resources="0x40804000, 1996, 0x40804200, 1958"/>
<!-- POWER_HINT_ID_BOOST_UHD_30FPS_START_BOOST -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001370" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_8K_30FPS_START_BOOST -->
<Config
Id="0x00001371" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_FHD_60FPS_START_BOOST -->
<Config
Id="0x00001372" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_UHD_60FPS_START_BOOST -->
<Config
Id="0x00001373" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_REC_STOP_0 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x00001374" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_PREVIEW_0 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x00001375" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_FHD_60FPS_TELE -->
<Config
Id="0x00001376" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_UHD_60FPS_TELE -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001377" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_SILVER_MAX_HIGH -->
<Config
Id="0x00001378" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_SILVER_MAX_MID -->
<Config
Id="0x00001379" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_SILVER_MAX_LOW -->
<Config
Id="0x0000137A" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_8K_30FPS_TELE -->
<Config
Id="0x0000137D" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152"/>
<!-- decode 240 fps tunings-->
<!--L CPU - max freq 700000 -->
<Config
Id="0X00001505" Enable="true" Timeout="0" Target="sun"
Resources="0x40804100, 0x2BC"/>
<!-- video decode 30 fps non secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- video decode 30 fps secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- video decode 60 fps content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001506" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- psm light mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x81" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm medium mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x82" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm deep mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x83" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm release mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x80" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,796 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
* Product: PA3
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="sun"
Resources="" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="sun"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="sun"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="sun"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- POWER_HINT_ID_OPEN_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x00001330" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x1,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600,
0x40800000, 3532,
0x40800200, 3840"/>
<!-- POWER_HINT_ID_CLOSE_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 2169600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1324800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 1632000 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 0xFFF -->
<Config
Id="0x00001331" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x1,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600,
0x40800000, 3532,
0x40800200, 3840"/>
<!-- POWER_HINT_ID_ADAPTIVE_OPEN_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x5 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 3532800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 4281600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 2169600 -->
<Config
Id="0x0000137E" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x5,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600"/>
<!-- POWER_HINT_ID_ADAPTIVE_CLOSE_CAMERA -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x5 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_BIG : 0x4080C000 : 3532800 -->
<!-- MPCTLV3_WALT_ADAPTIVE_HIGH_FREQ_PRIME : 0x4080C200 : 4281600 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_BIG : 0x40808000 : 1747200 -->
<!-- MPCTLV3_WALT_ADAPTIVE_LOW_FREQ_PRIME : 0x40808200 : 2169600 -->
<Config
Id="0x0000137F" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x5,
0x4080C000, 3532800, 0x4080C200, 4281600, 0x40808000, 1747200, 0x40808200, 2169600"/>
<!-- POWER_HINT_ID_COMMON -->
<!-- MPCTLV3_CPU_LLCC_BW_SAMPLE_MS : 0x4183C000 : 0x10( 16) -->
<!-- MPCTLV3_CPU_LLCC_BW_IO_PERCENT : 0x41834000 : 0xB4(180) -->
<!-- MPCTLV3_CPU_LLCC_BW_HYST_OPT : 0x41838000 : 0 -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_SAMPLE_MS : 0x4185C000 : 0x10( 16) -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_IO_PERCENT : 0x41854000 : 0xB4(180) -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_HYST_OPT : 0x41858000 : 0 -->
<!-- MPCTLV3_SCHEDUTIL_PREDICTIVE_LOAD_CLUSTER_BIG : 0x41444000 : 0 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_LOAD_CLUSTER_BIG : 0x41440000 : 99 -->
<!-- MPCTLV3_SCHED_IDLE_ENOUGH : 0x43C0C000 : 0 -->
<!-- MPCTLV3_SCHEDUTIL_HISPEED_FREQ_CLUSTER_BIG : 0x4143C000 : 556 MHz -->
<!-- CPU AB DDR VOTING : 0x41874000 : 70 -->
<Config
Id="0x00001332" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x10, 0x41834000, 0xB4, 0x41838000, 0,
0x4185C000, 0x10, 0x41854000, 0xB4, 0x41858000, 0,
0x41444000, 0, 0x41440000, 99,
0x43C0C000, 0, 0x4143C000, 0x22C,
0x43424000, 1, 0x43438000, 1"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS -->
<!-- MPCTLV3_CPU_LLCC_BW_SAMPLE_MS : 0x4183C000 : 0x21( 33) -->
<!-- MPCTLV3_GOLD_CPU_LLCC_BW_SAMPLE_MS : 0x4185C000 : 0x21( 33) -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 20 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 3 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 000111 -->
<Config
Id="0x00001333" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x4186C000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS -->
<Config
Id="0x00001334" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 5, 0x4100C000, 0x1,
0x41454000, 4, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_8K_30FPS -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<Config
Id="0x00001335" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 50, 0x4186C000, 50, 0x41454000, 4, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<Config
Id="0x00001336" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 4, 0x4100C000, 0x3,
0x41874000, 70, 0x4186C000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<Config
Id="0x00001337" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x4186C000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_FRONT -->
<Config
Id="0x00001338" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_FRONT -->
<Config
Id="0x00001339" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_FRONT -->
<Config
Id="0x0000133A" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_FRONT -->
<Config
Id="0x0000133B" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_PRO -->
<Config
Id="0x0000133C" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_PRO -->
<Config
Id="0x0000133D" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_8K_30FPS_PRO -->
<Config
Id="0x0000133E" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 50, 0x4186C000, 50, 0x41454000, 4, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_PRO -->
<Config
Id="0x0000133F" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_PRO -->
<Config
Id="0x00001340" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_120FPS_PRO -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<Config
Id="0x00001341" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_PRO_FRONT -->
<Config
Id="0x00001342" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_PRO_FRONT -->
<Config
Id="0x00001343" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_PRO_FRONT -->
<Config
Id="0x00001344" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_PRO_FRONT -->
<Config
Id="0x00001345" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_HFR -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001346" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_HFR_480FPS -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_CORE_CTL_OFFLINE_DELAY_MS_BIG : 0x41014000 : 0 -->
<!-- MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG : 0x41000000 : 5 -->
<!-- MPCTLV3_CORE_CTL_CPU_NOT_PREFERRED_BIG : 0x4100C000 : 1 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001347" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_BEAUTY -->
<Config
Id="0x00001348" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_BEAUTY -->
<Config
Id="0x00001349" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_EISOFF -->
<Config
Id="0x0000134A" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_BEAUTY_FRONT -->
<Config
Id="0x0000134B" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_BEAUTY_FRONT -->
<Config
Id="0x0000134C" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_HDR10 -->
<Config
Id="0x0000134D" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_30FPS_HDR10 -->
<Config
Id="0x0000134E" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_HDR10 -->
<Config
Id="0x0000134F" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_UHD_60FPS_HDR10 -->
<Config
Id="0x00001350" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_HYPER_LAPSE -->
<Config
Id="0x00001351" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_30FPS_SUPER_STEADY -->
<Config
Id="0x00001352" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_FHD_60FPS_SUPER_STEADY -->
<Config
Id="0x00001353" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_TRACKING_ZOOM -->
<Config
Id="0x00001354" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_LIVE_FOCUS_VIDEO -->
<Config
Id="0x00001355" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10,
0x40CE0200, 0x003C0032, 0x40800000, 1152, 0x40800200, 921,
0x42804000, 14, 0x42808000, 11"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_LIVE_FOCUS_VIDEO_FRONT -->
<Config
Id="0x00001356" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10,
0x40CE0200, 0x003C0032, 0x40800000, 1152, 0x40800200, 921,
0x42804000, 13, 0x42808000, 12"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_DUAL_REC -->
<Config
Id="0x00001357" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x10, 0x4185C000, 0x10, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7"/>
<!-- POWER_HINT_ID_VIDEO_ENCODE_AR_DOODLE -->
<Config
Id="0x00001358" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_PREVIEW -->
<Config
Id="0x00001359" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40800000, 960"/>
<!-- POWER_HINT_ID_PREVIEW_FRONT -->
<Config
Id="0x0000135A" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_VT_CALL -->
<Config
Id="0x0000135B" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_STP -->
<Config
Id="0x0000135C" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_LIVE_FOCUS -->
<Config
Id="0x0000135D" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40800000, 960"/>
<!-- POWER_HINT_ID_LIVE_FOCUS_FRONT -->
<Config
Id="0x0000135E" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7,
0x41874000, 70, 0x41454000, 3, 0x41450000, 0, 0x40C68000, -10"/>
<!-- POWER_HINT_ID_CTS_ITS_GSI -->
<Config
Id="0x0000135F" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40800000, 1996"/>
<!-- POWER_HINT_ID_SNAPSHOT_CAPTURE-->
<Config
Id="0x00001360" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40804000, 2745, 0x40804200, 3072"/>
<!-- POWER_HINT_ID_SNAPSHOT_CAPTURE_SPECIAL-->
<Config
Id="0x00001361" Enable="true" Target="sun" Timeout="0"
Resources="0x4183C000, 0x21, 0x4185C000, 0x21, 0x41014000, 20, 0x41000000, 3, 0x4100C000, 0x7, 0x40804000, 3072, 0x40804200, 3283, 0x42808000, 0x3"/>
<!-- POWER_HINT_ID_BOOST_DDR_MIN_CAPTURE -->
<Config
Id="0x00001362" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_DDR_MIN_PREVIEW_FRONT -->
<Config
Id="0x00001363" Enable="true" Target="sun" Timeout="0"
Resources="0x4303C000, 0xBB800"/>
<!-- POWER_HINT_ID_BOOST_SUPER_NIGHT -->
<Config
Id="0x00001364" Enable="true" Target="sun" Timeout="0"
Resources="0x42804000, 0x8"/>
<!-- POWER_HINT_ID_BOOST_SUPER_NIGHT_BEAUTY -->
<Config
Id="0x00001365" Enable="true" Target="sun" Timeout="0"
Resources="0x42804000, 0x8"/>
<!-- POWER_HINT_ID_SCHED_BOOST_0 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x0 -->
<Config
Id="0x00001366" Enable="true" Target="sun" Timeout="0"
Resources="0x40C00000, 0"/>
<!-- POWER_HINT_ID_SCHED_BOOST_1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<Config
Id="0x00001367" Enable="true" Target="sun" Timeout="0"
Resources="0x40C00000, 1"/>
<!-- POWER_HINT_ID_BOOST_SILVER_0 -->
<Config
Id="0x00001368" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_SILVER_1 -->
<Config
Id="0x00001369" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_ZOOM_LENS_CHANGE -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 2227 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 2246 -->
<Config
Id="0x0000136A" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 2227, 0x40800200, 2246"/>
<!-- POWER_HINT_ID_BOOST_ZOOM_RATIO_CHANGE -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_BOOST : 0x40C00000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x0000136B" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1, 0x40C00000, 1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_REC_START_0 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 2227 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 2246 -->
<Config
Id="0x0000136C" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 2227, 0x40800200, 2246"/>
<!-- POWER_HINT_ID_BOOST_REC_START_1 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x0000136D" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_REC_START_2 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1785 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1689 -->
<Config
Id="0x0000136E" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1785, 0x40800200, 1689"/>
<!-- POWER_HINT_ID_BOOST_DUAL_REC_START_BOOST -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0 : 0x40804000 : 1996 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PRIME_CORE_0 : 0x40804200 : 1958 -->
<Config
Id="0x0000136F" Enable="true" Target="sun" Timeout="0"
Resources="0x40804000, 1996, 0x40804200, 1958"/>
<!-- POWER_HINT_ID_BOOST_UHD_30FPS_START_BOOST -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001370" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_8K_30FPS_START_BOOST -->
<Config
Id="0x00001371" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_FHD_60FPS_START_BOOST -->
<Config
Id="0x00001372" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_UHD_60FPS_START_BOOST -->
<Config
Id="0x00001373" Enable="true" Target="sun" Timeout="0"
Resources="0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_REC_STOP_0 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x00001374" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_PREVIEW_0 -->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS : 0x40400000 : 0x1 -->
<!-- MPCTLV3_SCHED_UP_DOWN_MIGRATE(Gold/GoldPlus) : 0x40CE0200 : 0x003C0032(60/50) -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1996 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0 : 0x40800200 : 1958 -->
<Config
Id="0x00001375" Enable="true" Target="sun" Timeout="0"
Resources="0x40400000, 0x1,
0x40CE0200, 0x003C0032, 0x40800000, 1996, 0x40800200, 1958"/>
<!-- POWER_HINT_ID_BOOST_FHD_60FPS_TELE -->
<Config
Id="0x00001376" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_UHD_60FPS_TELE -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0 : 0x40800000 : 1152 -->
<Config
Id="0x00001377" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152"/>
<!-- POWER_HINT_ID_BOOST_SILVER_MAX_HIGH -->
<Config
Id="0x00001378" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_SILVER_MAX_MID -->
<Config
Id="0x00001379" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_SILVER_MAX_LOW -->
<Config
Id="0x0000137A" Enable="true" Target="sun" Timeout="0"
Resources=""/>
<!-- POWER_HINT_ID_BOOST_8K_30FPS_TELE -->
<Config
Id="0x0000137D" Enable="true" Target="sun" Timeout="0"
Resources="0x41014000, 0, 0x41000000, 5, 0x4100C000, 0x1, 0x40800000, 1152"/>
<!-- decode 240 fps tunings-->
<!--L CPU - max freq 700000 -->
<Config
Id="0X00001505" Enable="true" Timeout="0" Target="sun"
Resources="0x40804100, 0x2BC"/>
<!-- video decode 30 fps non secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- video decode 30 fps secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- video decode 60 fps content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001506" Enable="true" Timeout="0" Target="sun"
Resources="0x40800000, 0XA"/>
<!-- psm light mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x81" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm medium mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x82" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm deep mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x83" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
<!-- psm release mode power hint-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0x000015E0" Type="0x80" Enable="true" Timeout="0" Taget="sun"
Resources="0x40800000, 0XA"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,849 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/*Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-->
<HintConfigs>
<Powerhint>
<!--video encode 30 fps-->
<Config
Id="0x00001203" Enable="true" Target="taro"
Resources="" />
<Config
Id="0x00001203" Enable="true" Target="cape"
Resources="" />
<!--sustained performance-->
<Config
Id="0x00001206" Enable="true" Target="taro"
Resources=""/>
<Config
Id="0x00001206" Enable="true" Target="cape"
Resources=""/>
<!--vr mode-->
<Config
Id="0x00001207" Enable="true" Target="taro"
Resources=""/>
<Config
Id="0x00001207" Enable="true" Target="cape"
Resources=""/>
<!--vr mode sustained performance-->
<Config
Id="0x00001301" Enable="true" Target="taro"
Resources=""/>
<Config
Id="0x00001301" Enable="true" Target="cape"
Resources=""/>
<!-- qvr level cpu1 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="taro" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<Config
Id="0x0000130A" Enable="true" Target="cape" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="taro" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<Config
Id="0x0000130B" Enable="true" Target="cape" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu1 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="taro" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<Config
Id="0x0000130C" Enable="true" Target="cape" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="taro" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<Config
Id="0x0000130D" Enable="true" Target="cape" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="taro" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<Config
Id="0x0000130E" Enable="true" Target="cape" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu2 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="taro" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<Config
Id="0x0000130F" Enable="true" Target="cape" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu1 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="taro" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<Config
Id="0x00001310" Enable="true" Target="cape" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu2 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="taro" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<Config
Id="0x00001311" Enable="true" Target="cape" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!-- qvr level cpu3 gpu3 -->
<!-- B CPU - Cluster min freq ~.902 Ghz -->
<!-- B CPU - Cluster max freq ~.2.092 Ghz -->
<!-- L CPU - Cluster min freq ~. 595 Ghz -->
<!-- L CPU - Cluster max freq ~1.286 Ghz -->
<!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
<!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
<!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
<!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
<!-- Min Big CPUs 3 -->
<!-- Min Prime CPUs 1 -->
<!-- Indefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="taro" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<Config
Id="0x00001312" Enable="true" Target="cape" Timeout="0"
Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
0x41000200, 0x1"/>
<!--camera ZSLPreview-->
<!--CPU-LLC BWMON - Set sample_ms 33-->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--L CPU - max freq 729000 -->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="taro"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x2D9, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--L CPU - max freq 691200 -->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="cape"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x2B3, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--camera 30fps-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 547 -->
<!--L CPU max freq 1075200 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85 -->
<!--DOWNMIGRATE - 10 85 -->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="taro"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x433, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--L CPU max freq 1056000 -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="cape"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x420, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--camera 60fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1075200 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 50 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="taro"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x433, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--L CPU max freq 1056000 -->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="cape"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x420, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--camera 8k30-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU max freq 1075200 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 40 85-->
<!--DOWNMIGRATE - 10 85-->
<!--B CPU - Disable Core Control -->
<!--L CPU - Disable Core Control -->
<!--P CPU - Disable Core Control -->
<Config
Id="0x00001335" Enable="true" Timeout="0" Target="taro"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x40804100, 0x433, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0028000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--L CPU max freq 1056000 -->
<Config
Id="0x00001335" Enable="true" Timeout="0" Target="cape"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x40804100, 0x420, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0028000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
<!--video encode HFR 480 fps-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="taro"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14,
0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="cape"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14,
0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<!-- camera open tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<Config
Id="0x00001337" Enable="true" Timeout="0" Target="taro"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0XFFF, 0x40800000, 0XFFF,
0x40804100, 0XFFF, 0x40800100, 0XFFF, 0x40800200, 0XFFF, 0x40804200, 0XFFF"/>
<Config
Id="0x00001337" Enable="true" Timeout="0" Target="cape"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0XFFF, 0x40800000, 0XFFF,
0x40804100, 0XFFF, 0x40800100, 0XFFF, 0x40800200, 0XFFF, 0x40804200, 0XFFF"/>
<!-- camera close tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<Config
Id="0x00001338" Enable="true" Timeout="0" Target="taro"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0XFFF, 0x40800000, 0XFFF,
0x40804100, 0XFFF, 0x40800100, 0XFFF, 0x40800200, 0XFFF, 0x40804200, 0XFFF"/>
<Config
Id="0x00001338" Enable="true" Timeout="0" Target="cape"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0XFFF, 0x40800000, 0XFFF,
0x40804100, 0XFFF, 0x40800100, 0XFFF, 0x40800200, 0XFFF, 0x40804200, 0XFFF"/>
<!-- camera snapshot tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- Silver cluster min freq to 1.132GHz -->
<!-- Gold cluster min freq to 1.363GHz -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<Config
Id="0x00001339" Enable="true" Timeout="0" Target="taro"
Resources="0x40400000, 0x1, 0x40800100, 0x46C, 0x40800000, 0x553, 0x40C20000, 0X14,
0x40C1C000, 0X1E"/>
<Config
Id="0x00001339" Enable="true" Timeout="0" Target="cape"
Resources="0x40400000, 0x1, 0x40800100, 0x46C, 0x40800000, 0x52C, 0x40C20000, 0X14,
0x40C1C000, 0X1E"/>
<!-- decode 240 fps tunings-->
<!--L CPU - max freq 700000 -->
<Config
Id="0X00001505" Enable="true" Timeout="0" Target="taro"
Resources="0x40804100, 0x2BC"/>
<!--L CPU - max freq 691200 -->
<Config
Id="0X00001505" Enable="true" Timeout="0" Target="cape"
Resources="0x40804100, 0x2B3"/>
<!-- video decode 30 fps non secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="taro"
Resources="0x40800000, 0XA"/>
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="cape"
Resources="0x40800000, 0XA"/>
<!-- video decode 30 fps secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="taro"
Resources="0x40800000, 0XA"/>
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="cape"
Resources="0x40800000, 0XA"/>
<!--camera ZSLPreview-->
<!--CPU-LLC BWMON - Set sample_ms 33-->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC BWMON - Set max freq 933mhz -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--L CPU - max freq 9020000 -->
<!--B CPU - Disable Core Control -->
<!--GROUP UPMIGRATE - 35 -->
<!--GROUP DOWNMIGRATE - 30 -->
<!--UPMIGRATE - 35 85-->
<!--DOWNMIGRATE - 30 80-->
<!--AB_SCALE - 50-->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="diwali"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x41848000, 0xE3C88, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x386, 0x41008000, 0, 0x40CF4000, 0x0023001E, 0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550050, 0x43048000, 0x32"/>
<!--camera 30fps-->
<!--CPU-LLC BWMON - Set sample_ms 33 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC BWMON - Set max freq 933mhz -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 547 -->
<!--L CPU max freq 9020000 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 45 85 -->
<!--DOWNMIGRATE - 40 85 -->
<!--B CPU - Disable Core Control -->
<!--AB_SCALE - 50-->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="diwali"
Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x41848000, 0xE3C88, 0x43034000, 0x21,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x386, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x002D0028, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x43048000, 0x32"/>
<!--camera 60fps-->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC BWMON - Set max freq 933mhz -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1094000 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 35 85-->
<!--DOWNMIGRATE - 30 85-->
<!--B CPU - Disable Core Control -->
<!--AB_SCALE - 50-->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="diwali"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x41848000, 0xE3C88, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x446, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x43048000, 0x32"/>
<!-- camera HFR -->
<!--CPU-LLC BWMON - Set sample_ms 16 -->
<!--CPU-LLC BWMON - Set io_percent 100 -->
<!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC BWMON - Set max freq 933mhz -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1094000 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 35 85-->
<!--DOWNMIGRATE - 30 85-->
<!--B CPU - Disable Core Control -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="diwali"
Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x41848000, 0xE3C88, 0x43034000, 0x10,
0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x446, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550055, 0x41008000, 0"/>
<!--video encode HFR 480 fps-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="diwali"
Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14,
0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<!-- same settings for all the qvr power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.768 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.208 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="diwali" Timeout="0"
Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x446,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.768 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.208 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="diwali" Timeout="0"
Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x446,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.768 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~2.208 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="diwali" Timeout="0"
Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x446,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.768 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.208 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="diwali" Timeout="0"
Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x446,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.768 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.208 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="diwali" Timeout="0"
Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x446,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.768 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.208 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="diwali" Timeout="0"
Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x446,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.768 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.208 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="diwali" Timeout="0"
Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x446,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.768 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.208 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="diwali" Timeout="0"
Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x446,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.768 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
<!-- B CPU - Cluster min freq ~.652 Ghz -->
<!-- B CPU - Cluster max freq ~.2.208 Ghz -->
<!-- L CPU - Cluster min freq ~.614 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="diwali" Timeout="0"
Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x446,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- sustained performance -->
<!-- Prime CPU - Cluster min freq uncapped -->
<!-- B CPU - Cluster min freq uncapped -->
<!-- L CPU - Cluster min freq uncapped -->
<!-- Prime CPU - Cluster max freq ~1.094 Ghz -->
<!-- B CPU - Cluster max freq ~1.382 GHz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min freq 285Mhz -->
<!-- GPU - max freq 443Mhz -->
<!-- GPUBW freq uncapped -->
<Config
Id="0x00001206" Enable="true" Timeout="0" Target="diwali"
Resources="0x40800200, 0x0, 0x40800000, 0x0, 0x40800100, 0x0, 0x40804200, 0x446,
0x40804000, 0x566, 0x40804100, 0x446, 0X4280C000, 0x11D, 0X42810000, 0x1BB,
0x42814000, 0x0"/>
<!-- vr mode -->
<!-- Prime CPU - Cluster min freq ~1.094 Ghz -->
<!-- B CPU - Cluster min freq ~1.132 Ghz -->
<!-- L CPU - Cluster min freq ~0.902 Ghz -->
<!-- Prime CPU - Cluster max freq ~2.169 Ghz -->
<!-- B CPU - Cluster max freq ~1.804 Ghz -->
<!-- L CPU - Cluster max freq ~1.651 Ghz -->
<!-- GPU - min freq 285Mhz -->
<!-- GPU - max freq 540Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001207" Enable="true" Timeout="0" Target="diwali"
Resources="0x40800200, 0x446, 0x40800000, 0x46C, 0x40800100, 0x386, 0x40804200, 0x879,
0x40804000, 0x70C, 0x40804100, 0x673, 0X4280C000, 0x11D, 0X4280C000, 0x21C,
0x42814000, 0x0"/>
<!-- vr mode sustained performance -->
<!-- Prime CPU - Cluster min freq ~1.094 Ghz -->
<!-- B CPU - Cluster min freq ~1.132 Ghz -->
<!-- L CPU - Cluster min freq ~1.094 Ghz -->
<!-- Prime CPU - Cluster max freq ~1.094 Ghz -->
<!-- B CPU - Cluster max freq ~1.132 Ghz -->
<!-- L CPU - Cluster max freq ~1.094 Ghz -->
<!-- GPU - min freq 443Mhz -->
<!-- GPU - max freq 443Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001301" Enable="true" Timeout="0" Target="diwali"
Resources="0x40800200, 0x446, 0x40800000, 0x46C, 0x40800100, 0x446, 0x40804200, 0x446,
0x40804000, 0x46C, 0x40804100, 0x446, 0X4280C000, 0x1BB, 0X42810000, 0x1BB,
0x42814000, 0x0"/>
<!-- camera open tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, ~1.804 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, ~1.804 Ghz -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, ~1.651 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, ~1.651 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, ~2.169 Ghz -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, ~2.169 Ghz-->
<!-- CPU-LLC BWMON - Set max freq 933mhz -->
<Config
Id="0x00001337" Enable="true" Timeout="0" Target="diwali"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X70C, 0x40800000, 0X70C,
0x40804100, 0X673, 0x40800100, 0X673, 0x40800200, 0X879, 0x40804200, 0X879,
0x41848000, 0xE3C88"/>
<!-- camera close tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, ~1.804 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, ~1.804 Ghz -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, ~1.651 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, ~1.651 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, ~2.169 Ghz -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, ~2.169 Ghz -->
<!-- CPU-LLC BWMON - Set max freq 933mhz -->
<Config
Id="0x00001338" Enable="true" Timeout="0" Target="diwali"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X70C, 0x40800000, 0X70C,
0x40804100, 0X673, 0x40800100, 0X673, 0x40800200, 0X879, 0x40804200, 0X879,
0x41848000, 0xE3C88"/>
<!-- camera snapshot tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- Silver cluster min freq to ~1.094 GHz -->
<!-- Gold cluster min freq to 1.132 GHz -->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<!-- CPU-LLC BWMON - Set max freq 933mhz -->
<Config
Id="0x00001339" Enable="true" Timeout="0" Target="diwali"
Resources="0x40400000, 0x1, 0x40800100, 0x446, 0x40800000, 0x46C, 0x40CE0000, 0x001E0014,
0x41848000, 0xE3C88"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,369 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
/*Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Changes from Qualcomm Innovation Center are provided under the following license
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
-->
<HintConfigs>
<Powerhint>
<!-- video decode 30 fps non secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001502" Enable="true" Timeout="0" Target="volcano"
Resources="0x40800000, 0XA"/>
<!-- video decode 30 fps secure content tunings-->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
<Config
Id="0X00001504" Enable="true" Timeout="0" Target="volcano"
Resources="0x40800000, 0XA"/>
<!--camera ZSLPreview-->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--L CPU - Disable schedutil PL -->
<!--L CPU - Set hispeed load 99 -->
<!--L CPU - max freq 9020000 -->
<!--B CPU - Disable Core Control -->
<!--GROUP UPMIGRATE - 35 -->
<!--GROUP DOWNMIGRATE - 30 -->
<!--UPMIGRATE - 35 85-->
<!--DOWNMIGRATE - 30 80-->
<Config
Id="0x00001330" Enable="true" Timeout="0" Target="volcano"
Resources="0x43034000, 0x21, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x386, 0x41008000, 0, 0x40CF4000, 0x0023001E, 0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550050"/>
<!--camera 30fps-->
<!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 547 -->
<!--L CPU max freq 9020000 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 35 85 -->
<!--DOWNMIGRATE - 30 85 -->
<!--B CPU - Disable Core Control -->
<Config
Id="0x00001331" Enable="true" Timeout="0" Target="volcano"
Resources="0x43034000, 0x21, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x386, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63, 0x40CE0000, 0x0023001E,
0x40CE0200, 0x00550055, 0x41008000, 0"/>
<!--camera 60fps-->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 35 85-->
<!--DOWNMIGRATE - 30 85-->
<!--B CPU - Disable Core Control -->
<!--AB_SCALE - 50-->
<Config
Id="0x00001332" Enable="true" Timeout="0" Target="volcano"
Resources="0x43034000, 0x10, 0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x43048000, 0x32"/>
<!-- camera HFR -->
<!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
<!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
<!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
<!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
<!--L CPU max freq 1113600 -->
<!--L CPU - Disable schedutil PL -->
<!--B CPU - Disable schedutil PL -->
<!--B CPU - Set hispeed load 99 -->
<!--UPMIGRATE - 35 85-->
<!--DOWNMIGRATE - 30 85-->
<!--B CPU - Disable Core Control -->
<Config
Id="0x00001333" Enable="true" Timeout="0" Target="volcano"
Resources="0x43034000, 0x10, 0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550055, 0x41008000, 0"/>
<!--video encode HFR 480 fps-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1286 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1113 -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
<Config
Id="0x00001334" Enable="true" Timeout="0" Target="volcano"
Resources="0x40400000, 0x1, 0x40800100, 0x459, 0x40800000, 0x506, 0x40C20000, 0x14,
0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
<!-- same settings for all the qvr power levels intentionally -->
<!-- qvr level cpu1 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.960 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.1 Ghz -->
<!-- B CPU - Cluster min freq ~.633 Ghz -->
<!-- B CPU - Cluster max freq ~.2.073 Ghz -->
<!-- L CPU - Cluster min freq ~.595 Ghz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130A" Enable="true" Target="volcano" Timeout="0"
Resources="0x40800200, 0x3C0, 0x40804200, 0x866, 0x40800000, 0x279,
0x40804000, 0x819, 0x40800100, 0x253, 0x40804100, 0x459,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.960 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.1Ghz -->
<!-- B CPU - Cluster min freq ~.633 Ghz -->
<!-- B CPU - Cluster max freq ~.2.073 Ghz -->
<!-- L CPU - Cluster min freq ~.595 Ghz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130B" Enable="true" Target="volcano" Timeout="0"
Resources="0x40800200, 0x3C0, 0x40804200, 0x866,0x40800000, 0x279,
0x40804000, 0x819, 0x40800100, 0x253, 0x40804100, 0x459,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu1 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.960 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.1 Ghz -->
<!-- B CPU - Cluster min freq ~.633 Ghz -->
<!-- B CPU - Cluster max freq ~2.073 Ghz -->
<!-- L CPU - Cluster min freq ~.595 Ghz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130C" Enable="true" Target="volcano" Timeout="0"
Resources="0x40800200, 0x3C0, 0x40804200, 0x866, 0x40800000, 0x279,
0x40804000, 0x819, 0x40800100, 0x253, 0x40804100, 0x459,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.960 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.1 Ghz -->
<!-- B CPU - Cluster min freq ~.633 Ghz -->
<!-- B CPU - Cluster max freq ~.2.073 Ghz -->
<!-- L CPU - Cluster min freq ~.595 Ghz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130D" Enable="true" Target="volcano" Timeout="0"
Resources="0x40800200, 0x3C0, 0x40804200, 0x866, 0x40800000, 0x279,
0x40804000, 0x819, 0x40800100, 0x253, 0x40804100, 0x459,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.960 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.1 Ghz -->
<!-- B CPU - Cluster min freq ~.633 Ghz -->
<!-- B CPU - Cluster max freq ~.2.073 Ghz -->
<!-- L CPU - Cluster min freq ~.595 Ghz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130E" Enable="true" Target="volcano" Timeout="0"
Resources="0x40800200, 0x3C0, 0x40804200, 0x866, 0x40800000, 0x279,
0x40804000, 0x819, 0x40800100, 0x253, 0x40804100, 0x459,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu2 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.960 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.1 Ghz -->
<!-- B CPU - Cluster min freq ~.633 Ghz -->
<!-- B CPU - Cluster max freq ~.2.073 Ghz -->
<!-- L CPU - Cluster min freq ~.595 Ghz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x0000130F" Enable="true" Target="volcano" Timeout="0"
Resources="0x40800200, 0x3C0, 0x40804200, 0x866, 0x40800000, 0x279,
0x40804000, 0x819, 0x40800100, 0x253, 0x40804100, 0x459,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu1 -->
<!-- Prime CPU - Cluster min freq ~.960 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.1 Ghz -->
<!-- B CPU - Cluster min freq ~.633 Ghz -->
<!-- B CPU - Cluster max freq ~.2.073 Ghz -->
<!-- L CPU - Cluster min freq ~.595 Ghz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001310" Enable="true" Target="volcano" Timeout="0"
Resources="0x40800200, 0x3C0, 0x40804200, 0x866, 0x40800000, 0x279,
0x40804000, 0x819, 0x40800100, 0x253, 0x40804100, 0x459,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu2 -->
<!-- Prime CPU - Cluster min freq ~.960 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.1 Ghz -->
<!-- B CPU - Cluster min freq ~.633 Ghz -->
<!-- B CPU - Cluster max freq ~.2.073 Ghz -->
<!-- L CPU - Cluster min freq ~.595 Ghz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001311" Enable="true" Target="volcano" Timeout="0"
Resources="0x40800200, 0x3C0, 0x40804200, 0x866, 0x40800000, 0x279,
0x40804000, 0x819, 0x40800100, 0x253, 0x40804100, 0x459,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- qvr level cpu3 gpu3 -->
<!-- Prime CPU - Cluster min freq ~.960 Ghz -->
<!-- Prime CPU - Cluster max freq ~.2.1 Ghz -->
<!-- B CPU - Cluster min freq ~.633GhZ-->
<!-- B CPU - Cluster max freq ~.2.073 Ghz -->
<!-- L CPU - Cluster min freq ~.595Ghz-->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
<!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
<!-- Min Big CPUs 2 -->
<!-- Idefinite Duration -->
<Config
Id="0x00001312" Enable="true" Target="volcano" Timeout="0"
Resources="0x40800200, 0x3C0, 0x40804200, 0x866, 0x40800000, 0x279,
0x40804000, 0x819, 0x40800100, 0x253, 0x40804100, 0x459,
0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
<!-- sustained performance -->
<!-- Prime CPU - Cluster min freq uncapped -->
<!-- B CPU - Cluster min freq uncapped -->
<!-- L CPU - Cluster min freq uncapped -->
<!-- Prime CPU - Cluster max freq ~960Mhz -->
<!-- B CPU - Cluster max freq ~1.401 GHz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min freq 285Mhz -->
<!-- GPU - max freq 443Mhz -->
<!-- GPUBW freq uncapped -->
<Config
Id="0x00001206" Enable="true" Timeout="0" Target="volcano"
Resources="0x40800200, 0x0, 0x40800000, 0x0, 0x40800100, 0x0, 0x40804200, 0x3C0,
0x40804000, 0x579, 0x40804100, 0x459, 0X4280C000, 0x11D, 0X42810000, 0x1BB,
0x42814000, 0x0"/>
<!-- vr mode -->
<!-- Prime CPU - Cluster min freq ~960 Mhz -->
<!-- B CPU - Cluster min freq ~1.286 Ghz -->
<!-- L CPU - Cluster min freq ~0.902 Ghz -->
<!-- Prime CPU - Cluster max freq ~2.150Ghz-->
<!-- B CPU - Cluster max freq ~1708.8 Ghz -->
<!-- L CPU - Cluster max freq ~1.593 Ghz -->
<!-- GPU - min freq 285Mhz -->
<!-- GPU - max freq 540Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001207" Enable="true" Timeout="0" Target="volcano"
Resources="0x40800200, 0x3C0, 0x40800000, 0x506, 0x40800100, 0x386, 0x40804200, 0x866,
0x40804000, 0x6AC, 0x40804100, 0x639, 0X4280C000, 0x11D, 0X4280C000, 0x21C,
0x42814000, 0x0"/>
<!-- vr mode sustained performance -->
<!-- Prime CPU - Cluster min freq ~960 Mhz -->
<!-- B CPU - Cluster min freq ~1.286 Ghz -->
<!-- L CPU - Cluster min freq ~1.113 Ghz -->
<!-- Prime CPU - Cluster max freq ~960 Mhz -->
<!-- B CPU - Cluster max freq ~1.286 Ghz -->
<!-- L CPU - Cluster max freq ~1.113 Ghz -->
<!-- GPU - min freq 443Mhz -->
<!-- GPU - max freq 443Mhz -->
<!-- GPUBW uncapped -->
<Config
Id="0x00001301" Enable="true" Timeout="0" Target="volcano"
Resources="0x40800200, 0x3C0, 0x40800000, 0x506, 0x40800100, 0x459, 0x40804200, 0x3C0,
0x40804000, 0x506, 0x40804100, 0x459, 0X4280C000, 0x1BB, 0X42810000, 0x1BB,
0x42814000, 0x0"/>
<!-- camera open tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_SCHED_BOOST, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, ~1708.8 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, ~1708.8 Ghz -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, ~1.593 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, ~1.593 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, ~2.150 Ghz -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, ~2.150 Ghz-->
<Config
Id="0x00001337" Enable="true" Timeout="0" Target="volcano"
Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0x6AC, 0x40800000, 0x6AC,
0x40804100, 0x639, 0x40800100, 0x639, 0x40800200, 0x866, 0x40804200, 0x866"/>
<!-- camera close tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, ~1708.8 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, ~1708.8 Ghz -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, ~1.593 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, ~1.593 Ghz -->
<!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, ~2.150 Ghz -->
<!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, ~2.150 Ghz -->
<Config
Id="0x00001338" Enable="true" Timeout="0" Target="volcano"
Resources="0x40400000, 0x1, 0x40804000, 0x6AC, 0x40800000, 0x6AC,
0x40804100, 0x639, 0x40800100, 0x639, 0x40800200, 0x866, 0x40804200, 0x866"/>
<!-- camera snapshot tunings-->
<!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
<!-- Silver cluster min freq to ~1.113 GHz -->
<!-- Gold cluster min freq to 1.190GHz-->
<!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
<!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
<Config
Id="0x00001339" Enable="true" Timeout="0" Target="volcano"
Resources="0x40400000, 0x1, 0x40800100, 0x459, 0x40800000, 0x4A6, 0x40CE0000, 0x001E0014"/>
</Powerhint>
</HintConfigs>

View File

@@ -0,0 +1,28 @@
/*
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#include "Power.h"
#include <fuzzbinder/libbinder_ndk_driver.h>
#include <fuzzer/FuzzedDataProvider.h>
#include <log/log.h>
using aidl::android::hardware::power::impl::Power;
std::shared_ptr<Power> service;
extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) {
service = ndk::SharedRefBase::make<Power>();
return 0;
}
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if( service == nullptr ) return 0;
FuzzedDataProvider provider(data, size);
android::fuzzService(service->asBinder().get(),std::move(provider));
return 0;
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright (c) 2012, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "hint-data.h"
int hint_compare(struct hint_data *first_hint,
struct hint_data *other_hint) {
if (first_hint == other_hint) {
return 0;
} else if ((first_hint && other_hint) &&
(first_hint->hint_id == other_hint->hint_id)) {
return 0;
} else {
return 1;
}
}
void hint_dump(struct hint_data *hint)
{
/*ALOGI("hint_id: %lu", hint->hint_id);*/
}

View File

@@ -0,0 +1,69 @@
/*
* Copyright (c) 2012, 2013, 2015, 2017-2018, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* Default use-case hint IDs */
#define DEFAULT_VIDEO_ENCODE_HINT_ID (0x0A00)
#define DEFAULT_VIDEO_DECODE_HINT_ID (0x0B00)
#define DISPLAY_STATE_HINT_ID (0x0C00)
#define DISPLAY_STATE_HINT_ID_2 (0x0D00)
#define CAM_PREVIEW_HINT_ID (0x0E00)
#define SUSTAINED_PERF_HINT_ID (0x0F00)
#define VR_MODE_HINT_ID (0x1000)
#define VR_MODE_SUSTAINED_PERF_HINT_ID (0x1001)
#define AOSP_DELTA (0x1200)
#define VSYNC_HINT AOSP_DELTA + POWER_HINT_VSYNC
#define INTERACTION_HINT AOSP_DELTA + POWER_HINT_INTERACTION
#define VIDEO_DECODE_HINT AOSP_DELTA + POWER_HINT_VIDEO_DECODE
#define VIDEO_ENCODE_HINT AOSP_DELTA + POWER_HINT_VIDEO_ENCODE
#define LOW_POWER_HINT AOSP_DELTA + POWER_HINT_LOW_POWER
#define SUSTAINED_PERF_HINT AOSP_DELTA + POWER_HINT_SUSTAINED_PERFORMANCE
#define VR_MODE_HINT AOSP_DELTA + POWER_HINT_VR_MODE
#define LAUNCH_HINT AOSP_DELTA + POWER_HINT_LAUNCH
#define DISABLE_TOUCH_HINT AOSP_DELTA + POWER_HINT_DISABLE_TOUCH
//update NUM_HINTS if hints are added to AOSP
#define NUM_HINTS (POWER_HINT_DISABLE_TOUCH +1)
#define VR_MODE_SUSTAINED_PERF_HINT (0x1301)
struct hint_handles{
int handle;
int ref_count;
};
struct hint_data {
unsigned long hint_id; /* This is our key. */
unsigned long perflock_handle;
};
int hint_compare(struct hint_data *first_hint,
struct hint_data *other_hint);
void hint_dump(struct hint_data *hint);

View File

@@ -0,0 +1,145 @@
/*
* Copyright (c) 2012, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "list.h"
#include <utils/Log.h>
int init_list_head(struct list_node *head)
{
if (head == NULL)
return -1;
memset(head, 0, sizeof(*head));
return 0;
}
struct list_node *add_list_node(struct list_node *head, void *data)
{
/* Create a new list_node. And put 'data' into it. */
struct list_node *new_node;
if (head == NULL) {
return NULL;
}
if (!(new_node = malloc(sizeof(struct list_node)))) {
return NULL;
}
new_node->data = data;
new_node->next = head->next;
new_node->compare = head->compare;
new_node->dump = head->dump;
head->next = new_node;
return new_node;
}
int is_list_empty(struct list_node *head)
{
return (head == NULL || head->next == NULL);
}
/*
* Delink and de-allocate 'node'.
*/
int remove_list_node(struct list_node *head, struct list_node *del_node)
{
struct list_node *current_node;
struct list_node *saved_node;
if (head == NULL || head->next == NULL) {
return -1;
}
current_node = head->next;
saved_node = head;
while (current_node && current_node != del_node) {
saved_node = current_node;
current_node = current_node->next;
}
if (saved_node) {
if (current_node) {
saved_node->next = current_node->next;
} else {
/* Node not found. */
return -1;
}
}
if (del_node) {
free(del_node);
}
return 0;
}
void dump_list(struct list_node *head)
{
struct list_node *current_node = head;
if (head == NULL)
return;
printf("List:\n");
while ((current_node = current_node->next)) {
if (current_node->dump) {
current_node->dump(current_node->data);
}
}
}
struct list_node *find_node(struct list_node *head, void *comparison_data)
{
struct list_node *current_node = head;
if (head == NULL)
return NULL;
while ((current_node = current_node->next)) {
if (current_node->compare) {
if (current_node->compare(current_node->data,
comparison_data) == 0) {
/* Match found. Return current_node. */
return current_node;
}
}
}
/* No match found. */
return NULL;
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright (c) 2012, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
struct list_node {
struct list_node *next;
void *data;
int (*compare)(void *data1, void *data2);
void (*dump)(void *data);
};
int init_list_head(struct list_node *head);
struct list_node * add_list_node(struct list_node *head, void *data);
int remove_list_node(struct list_node *head, struct list_node *del_node);
void dump_list(struct list_node *head);
struct list_node *find_node(struct list_node *head, void *comparison_data);

View File

@@ -0,0 +1,53 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "Power.h"
#include <android-base/logging.h>
#include <android/binder_manager.h>
#include <android/binder_process.h>
using aidl::android::hardware::power::impl::Power;
int main() {
ABinderProcess_setThreadPoolMaxThreadCount(0);
std::shared_ptr<Power> vib = ndk::SharedRefBase::make<Power>();
const std::string instance = std::string() + Power::descriptor + "/default";
LOG(INFO) << "Instance " << instance;
if(vib){
binder_status_t status = AServiceManager_addService(vib->asBinder().get(), instance.c_str());
LOG(INFO) << "Status " << status;
if(status != STATUS_OK){
LOG(ERROR) << "Could not register" << instance;
}
}
ABinderProcess_joinThreadPool();
return 1; // should not reach
}

View File

@@ -0,0 +1,54 @@
/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#define ATTRIBUTE_VALUE_DELIM ('=')
#define ATTRIBUTE_STRING_DELIM (";")
#define METADATA_PARSING_ERR (-1)
#define METADATA_PARSING_CONTINUE (0)
#define METADATA_PARSING_DONE (1)
#define MIN(x,y) (((x)>(y))?(y):(x))
struct video_encode_metadata_t {
int hint_id;
int state;
};
struct video_decode_metadata_t {
int hint_id;
int state;
};
int parse_metadata(char *metadata, char **metadata_saveptr,
char *attribute, int attribute_size, char *value, int value_size);
int parse_video_encode_metadata(char *metadata,
struct video_encode_metadata_t *video_encode_metadata);
int parse_video_decode_metadata(char *metadata,
struct video_decode_metadata_t *video_decode_metadata);

View File

@@ -0,0 +1,133 @@
/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "metadata-defs.h"
int parse_metadata(char *metadata, char **metadata_saveptr,
char *attribute, int attribute_size, char *value, int value_size)
{
char *attribute_string;
char *attribute_value_delim;
unsigned int bytes_to_copy;
attribute_string = strtok_r(metadata, ATTRIBUTE_STRING_DELIM,
metadata_saveptr);
if (attribute_string == NULL)
return METADATA_PARSING_DONE;
attribute[0] = value[0] = '\0';
if ((attribute_value_delim = strchr(attribute_string,
ATTRIBUTE_VALUE_DELIM)) != NULL) {
bytes_to_copy = MIN((attribute_value_delim - attribute_string),
attribute_size - 1);
/* Replace strncpy with strlcpy
* Add +1 to bytes_to_copy as strlcpy copies size-1 bytes */
strlcpy(attribute, attribute_string,
bytes_to_copy+1);
bytes_to_copy = MIN(strlen(attribute_string) - strlen(attribute) - 1,
value_size - 1);
/* Replace strncpy with strlcpy
* Add +1 to bytes_to_copy as strlcpy copies size-1 bytes */
strlcpy(value, attribute_value_delim + 1,
bytes_to_copy+1);
}
return METADATA_PARSING_CONTINUE;
}
int parse_video_encode_metadata(char *metadata,
struct video_encode_metadata_t *video_encode_metadata)
{
char attribute[1024], value[1024], *saveptr;
char *temp_metadata = metadata;
int parsing_status;
while ((parsing_status = parse_metadata(temp_metadata, &saveptr,
attribute, sizeof(attribute), value, sizeof(value))) == METADATA_PARSING_CONTINUE) {
if (strlen(attribute) == strlen("hint_id") &&
(strncmp(attribute, "hint_id", strlen("hint_id")) == 0)) {
if (strlen(value) > 0) {
video_encode_metadata->hint_id = atoi(value);
}
}
if (strlen(attribute) == strlen("state") &&
(strncmp(attribute, "state", strlen("state")) == 0)) {
if (strlen(value) > 0) {
video_encode_metadata->state = atoi(value);
}
}
temp_metadata = NULL;
}
if (parsing_status == METADATA_PARSING_ERR)
return -1;
return 0;
}
int parse_video_decode_metadata(char *metadata,
struct video_decode_metadata_t *video_decode_metadata)
{
char attribute[1024], value[1024], *saveptr;
char *temp_metadata = metadata;
int parsing_status;
while ((parsing_status = parse_metadata(temp_metadata, &saveptr,
attribute, sizeof(attribute), value, sizeof(value))) == METADATA_PARSING_CONTINUE) {
if (strlen(attribute) == strlen("hint_id") &&
(strncmp(attribute, "hint_id", strlen("hint_id")) == 0)) {
if (strlen(value) > 0) {
video_decode_metadata->hint_id = atoi(value);
}
}
if (strlen(attribute) == strlen("state") &&
(strncmp(attribute, "state", strlen("state")) == 0)) {
if (strlen(value) > 0) {
video_decode_metadata->state = atoi(value);
}
}
temp_metadata = NULL;
}
if (parsing_status == METADATA_PARSING_ERR)
return -1;
return 0;
}

View File

@@ -0,0 +1,265 @@
/* Copyright (c) 2012, 2014, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifdef __cplusplus
extern "C" {
#endif
#define FAILED -1
#define SUCCESS 0
#define INDEFINITE_DURATION 0
/* Hints sent to perf HAL from power HAL
* These have to be kept in sync with Perf HAL side definitions
*/
#define VENDOR_HINT_DISPLAY_OFF 0x00001040
#define VENDOR_HINT_DISPLAY_ON 0x00001041
enum SCREEN_DISPLAY_TYPE {
DISPLAY_OFF = 0x00FF,
};
enum PWR_CLSP_TYPE {
ALL_CPUS_PWR_CLPS_DIS = 0x101,
};
/* For CPUx min freq, the leftmost byte
* represents the CPU and the
* rightmost byte represents the frequency
* All intermediate frequencies on the
* device are supported. The hex value
* passed into PerfLock will be multiplied
* by 10^5. This frequency or the next
* highest frequency available will be set
*
* For example, if 1.4 Ghz is required on
* CPU0, use 0x20E
*
* If the highest available frequency
* on the device is required, use
* CPUx_MIN_FREQ_TURBO_MAX
* where x represents the CPU
*/
enum CPU0_MIN_FREQ_LVL {
CPU0_MIN_FREQ_NONTURBO_MAX = 0x20A,
CPU0_MIN_FREQ_TURBO_MAX = 0x2FE,
};
enum CPU1_MIN_FREQ_LVL {
CPU1_MIN_FREQ_NONTURBO_MAX = 0x30A,
CPU1_MIN_FREQ_TURBO_MAX = 0x3FE,
};
enum CPU2_MIN_FREQ_LVL {
CPU2_MIN_FREQ_NONTURBO_MAX = 0x40A,
CPU2_MIN_FREQ_TURBO_MAX = 0x4FE,
};
enum CPU3_MIN_FREQ_LVL {
CPU3_MIN_FREQ_NONTURBO_MAX = 0x50A,
CPU3_MIN_FREQ_TURBO_MAX = 0x5FE,
};
enum CPU0_MAX_FREQ_LVL {
CPU0_MAX_FREQ_NONTURBO_MAX = 0x150A,
};
enum CPU1_MAX_FREQ_LVL {
CPU1_MAX_FREQ_NONTURBO_MAX = 0x160A,
};
enum CPU2_MAX_FREQ_LVL {
CPU2_MAX_FREQ_NONTURBO_MAX = 0x170A,
};
enum CPU3_MAX_FREQ_LVL {
CPU3_MAX_FREQ_NONTURBO_MAX = 0x180A,
};
enum MIN_CPUS_ONLINE_LVL {
CPUS_ONLINE_MIN_2 = 0x702,
CPUS_ONLINE_MIN_3 = 0x703,
CPUS_ONLINE_MIN_4 = 0x704,
CPUS_ONLINE_MPD_OVERRIDE = 0x777,
CPUS_ONLINE_MAX = 0x7FF,
};
enum MAX_CPUS_ONLINE_LVL {
CPUS_ONLINE_MAX_LIMIT_1 = 0x8FE,
CPUS_ONLINE_MAX_LIMIT_2 = 0x8FD,
CPUS_ONLINE_MAX_LIMIT_3 = 0x8FC,
CPUS_ONLINE_MAX_LIMIT_4 = 0x8FB,
CPUS_ONLINE_MAX_LIMIT_MAX = 0x8FB,
};
enum SAMPLING_RATE_LVL {
MS_500 = 0xBCD,
MS_50 = 0xBFA,
MS_20 = 0xBFD,
};
enum ONDEMAND_IO_BUSY_LVL {
IO_BUSY_OFF = 0xC00,
IO_BUSY_ON = 0xC01,
};
enum ONDEMAND_SAMPLING_DOWN_FACTOR_LVL {
SAMPLING_DOWN_FACTOR_1 = 0xD01,
SAMPLING_DOWN_FACTOR_4 = 0xD04,
};
enum INTERACTIVE_TIMER_RATE_LVL {
TR_MS_500 = 0xECD,
TR_MS_100 = 0xEF5,
TR_MS_50 = 0xEFA,
TR_MS_30 = 0xEFC,
TR_MS_20 = 0xEFD,
};
/* This timer rate applicable to cpu0
across 8939 series chipset */
enum INTERACTIVE_TIMER_RATE_LVL_CPU0_8939 {
TR_MS_CPU0_500 = 0x30CD,
TR_MS_CPU0_100 = 0x30F5,
TR_MS_CPU0_50 = 0x30FA,
TR_MS_CPU0_30 = 0x30FC,
TR_MS_CPU0_20 = 0x30FD,
};
/* This timer rate applicable to cpu4
across 8939 series chipset */
enum INTERACTIVE_TIMER_RATE_LVL_CPU4_8939 {
TR_MS_CPU4_500 = 0x3BCD,
TR_MS_CPU4_100 = 0x3BF5,
TR_MS_CPU4_50 = 0x3BFA,
TR_MS_CPU4_30 = 0x3BFC,
TR_MS_CPU4_20 = 0x3BFD,
};
/* This timer rate applicable to big.little arch */
enum INTERACTIVE_TIMER_RATE_LVL_BIG_LITTLE {
BIG_LITTLE_TR_MS_100 = 0x64,
BIG_LITTLE_TR_MS_50 = 0x32,
BIG_LITTLE_TR_MS_40 = 0x28,
BIG_LITTLE_TR_MS_30 = 0x1E,
BIG_LITTLE_TR_MS_20 = 0x14,
};
/* INTERACTIVE opcodes */
enum INTERACTIVE_OPCODES {
INT_OP_CLUSTER0_TIMER_RATE = 0x41424000,
INT_OP_CLUSTER1_TIMER_RATE = 0x41424100,
INT_OP_CLUSTER0_USE_SCHED_LOAD = 0x41430000,
INT_OP_CLUSTER1_USE_SCHED_LOAD = 0x41430100,
INT_OP_CLUSTER0_USE_MIGRATION_NOTIF = 0x41434000,
INT_OP_CLUSTER1_USE_MIGRATION_NOTIF = 0x41434100,
INT_OP_NOTIFY_ON_MIGRATE = 0x4241C000
};
enum INTERACTIVE_HISPEED_FREQ_LVL {
HS_FREQ_1026 = 0xF0A,
};
enum INTERACTIVE_HISPEED_LOAD_LVL {
HISPEED_LOAD_90 = 0x105A,
};
enum SYNC_FREQ_LVL {
SYNC_FREQ_300 = 0x1103,
SYNC_FREQ_600 = 0X1106,
SYNC_FREQ_384 = 0x1103,
SYNC_FREQ_NONTURBO_MAX = 0x110A,
SYNC_FREQ_TURBO = 0x110F,
};
enum OPTIMAL_FREQ_LVL {
OPTIMAL_FREQ_300 = 0x1203,
OPTIMAL_FREQ_600 = 0x1206,
OPTIMAL_FREQ_384 = 0x1203,
OPTIMAL_FREQ_NONTURBO_MAX = 0x120A,
OPTIMAL_FREQ_TURBO = 0x120F,
};
enum SCREEN_PWR_CLPS_LVL {
PWR_CLPS_DIS = 0x1300,
PWR_CLPS_ENA = 0x1301,
};
enum THREAD_MIGRATION_LVL {
THREAD_MIGRATION_SYNC_OFF = 0x1400,
};
enum INTERACTIVE_IO_BUSY_LVL {
INTERACTIVE_IO_BUSY_OFF = 0x1B00,
INTERACTIVE_IO_BUSY_ON = 0x1B01,
};
enum SCHED_BOOST_LVL {
SCHED_BOOST_ON = 0x1E01,
};
enum CPU4_MIN_FREQ_LVL {
CPU4_MIN_FREQ_NONTURBO_MAX = 0x1F0A,
CPU4_MIN_FREQ_TURBO_MAX = 0x1FFE,
};
enum CPU5_MIN_FREQ_LVL {
CPU5_MIN_FREQ_NONTURBO_MAX = 0x200A,
CPU5_MIN_FREQ_TURBO_MAX = 0x20FE,
};
enum CPU6_MIN_FREQ_LVL {
CPU6_MIN_FREQ_NONTURBO_MAX = 0x210A,
CPU6_MIN_FREQ_TURBO_MAX = 0x21FE,
};
enum CPU7_MIN_FREQ_LVL {
CPU7_MIN_FREQ_NONTURBO_MAX = 0x220A,
CPU7_MIN_FREQ_TURBO_MAX = 0x22FE,
};
enum CPU4_MAX_FREQ_LVL {
CPU4_MAX_FREQ_NONTURBO_MAX = 0x230A,
};
enum CPU5_MAX_FREQ_LVL {
CPU5_MAX_FREQ_NONTURBO_MAX = 0x240A,
};
enum CPU6_MAX_FREQ_LVL {
CPU6_MAX_FREQ_NONTURBO_MAX = 0x250A,
};
enum CPU7_MAX_FREQ_LVL {
CPU7_MAX_FREQ_NONTURBO_MAX = 0x260A,
};
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,267 @@
/*
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
#define MIN_VAL(X,Y) ((X>Y)?(Y):(X))
static int video_encode_hint_sent;
pthread_mutex_t camera_hint_mutex = PTHREAD_MUTEX_INITIALIZER;
static int camera_hint_ref_count;
static void process_video_encode_hint(void *metadata);
static void process_video_encode_hfr_hint(void *metadata);
int power_hint_override(struct power_module *module, power_hint_t hint,
void *data)
{
switch(hint) {
case POWER_HINT_VSYNC:
{
break;
}
case POWER_HINT_VIDEO_ENCODE:
{
process_video_encode_hint(data);
return HINT_HANDLED;
}
/* Using VIDEO_DECODE hint for HR use cases */
case POWER_HINT_VIDEO_DECODE:
{
process_video_encode_hfr_hint(data);
return HINT_HANDLED;
}
}
return HINT_NONE;
}
int set_interactive_override(struct power_module *module, int on)
{
return HINT_HANDLED; /* to set hints for display on and off. Not in use now */
}
/* Video Encode Hint */
static void process_video_encode_hint(void *metadata)
{
char governor[80] = {0};
int resource_values[32] = {0};
int num_resources = 0;
struct video_encode_metadata_t video_encode_metadata;
ALOGI("Got process_video_encode_hint");
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU0) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU1) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU2) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU3) == -1) {
ALOGE("Can't obtain scaling governor.");
// return HINT_HANDLED;
}
}
}
}
/* Initialize encode metadata struct fields. */
memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t));
video_encode_metadata.state = -1;
video_encode_metadata.hint_id = DEFAULT_VIDEO_ENCODE_HINT_ID;
if (metadata) {
if (parse_video_encode_metadata((char *)metadata,
&video_encode_metadata) == -1) {
ALOGE("Error occurred while parsing metadata.");
return;
}
} else {
return;
}
if (video_encode_metadata.state == 1) {
if((strncmp(governor, SCHEDUTIL_GOVERNOR,
strlen(SCHEDUTIL_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(SCHEDUTIL_GOVERNOR))) {
/* sample_ms = 20mS
* hispeed load for both clusters = 95
* sched_load_boost on all cores = -15
* silver max freq = 1612 */
int res[] = {
0x41820000, 0x14,
0x41440100, 0x5f,
0x41440000, 0x5f,
0x40C68100, 0xFFFFFFF1,
0x40C68110, 0xFFFFFFF1,
0x40C68120, 0xFFFFFFF1,
0x40C68130, 0xFFFFFFF1,
0x40C68000, 0xFFFFFFF1,
0x40C68010, 0xFFFFFFF1,
0x40C68020, 0xFFFFFFF1,
0x40C68030, 0xFFFFFFF1,
0x40804100, 0x64C,
};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (camera_hint_ref_count == 1) {
if (!video_encode_hint_sent) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values, num_resources);
video_encode_hint_sent = 1;
}
}
pthread_mutex_unlock(&camera_hint_mutex);
}
} if (video_encode_metadata.state == 0) {
if (((strncmp(governor, INTERACTIVE_GOVERNOR,
strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) ||
((strncmp(governor, SCHEDUTIL_GOVERNOR,
strlen(SCHEDUTIL_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(SCHEDUTIL_GOVERNOR)))) {
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count--;
if (!camera_hint_ref_count) {
undo_hint_action(video_encode_metadata.hint_id);
video_encode_hint_sent = 0;
}
pthread_mutex_unlock(&camera_hint_mutex);
return ;
}
}
return;
}
/* Video Encode Hint for HFR use cases */
static void process_video_encode_hfr_hint(void *metadata)
{
char governor[80] = {0};
int resource_values[32] = {0};
int num_resources = 0;
struct video_encode_metadata_t video_encode_metadata;
ALOGI("Got process_video_encode_hint for HFR");
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU0) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU1) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU2) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU3) == -1) {
ALOGE("Can't obtain scaling governor.");
// return HINT_HANDLED;
}
}
}
}
/* Initialize encode metadata struct fields. */
memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t));
video_encode_metadata.state = -1;
video_encode_metadata.hint_id = DEFAULT_VIDEO_ENCODE_HINT_ID;
if (metadata) {
if (parse_video_encode_metadata((char *)metadata,
&video_encode_metadata) == -1) {
ALOGE("Error occurred while parsing metadata.");
return;
}
} else {
return;
}
if (video_encode_metadata.state == 1) {
if((strncmp(governor, SCHEDUTIL_GOVERNOR,
strlen(SCHEDUTIL_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(SCHEDUTIL_GOVERNOR))) {
/* sample_ms = 20mS
* hispeed load = 95
* hispeed freq = 1017 */
int res[] = {0x41820000, 0x14,
0x41440100, 0x5f,
0x4143c100, 0x3f9,
};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (camera_hint_ref_count == 1) {
if (!video_encode_hint_sent) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values, num_resources);
video_encode_hint_sent = 1;
}
}
pthread_mutex_unlock(&camera_hint_mutex);
}
} if (video_encode_metadata.state == 0) {
if (((strncmp(governor, INTERACTIVE_GOVERNOR,
strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) ||
((strncmp(governor, SCHEDUTIL_GOVERNOR,
strlen(SCHEDUTIL_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(SCHEDUTIL_GOVERNOR)))) {
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count--;
if (!camera_hint_ref_count) {
undo_hint_action(video_encode_metadata.hint_id);
video_encode_hint_sent = 0;
}
pthread_mutex_unlock(&camera_hint_mutex);
return ;
}
}
return;
}

View File

@@ -0,0 +1,294 @@
/*
* Copyright (c) 2017, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
#define MIN_VAL(X,Y) ((X>Y)?(Y):(X))
static int saved_interactive_mode = -1;
static int display_hint_sent;
static int video_encode_hint_sent;
static int cam_preview_hint_sent;
pthread_mutex_t camera_hint_mutex = PTHREAD_MUTEX_INITIALIZER;
static int camera_hint_ref_count;
static void process_video_encode_hint(void *metadata);
//static void process_cam_preview_hint(void *metadata);
/* Returns true is target is SDM630/SDM455 else false*/
static bool is_target_SDM630()
{
int fd;
bool is_target_SDM630=false;
char buf[10] = {0};
fd = open("/sys/devices/soc0/soc_id", O_RDONLY);
if (fd >= 0) {
if (read(fd, buf, sizeof(buf) - 1) == -1) {
ALOGW("Unable to read soc_id");
is_target_SDM630 = false;
} else {
int soc_id = atoi(buf);
if (soc_id == 318 || soc_id == 327 || soc_id == 385) {
is_target_SDM630 = true; /* Above SOCID for SDM630/SDM455 */
}
}
}
close(fd);
return is_target_SDM630;
}
int power_hint_override(struct power_module *module, power_hint_t hint,
void *data)
{
switch(hint) {
case POWER_HINT_VSYNC:
break;
case POWER_HINT_VIDEO_ENCODE:
{
process_video_encode_hint(data);
return HINT_HANDLED;
}
}
return HINT_NONE;
}
int set_interactive_override(struct power_module *module, int on)
{
char governor[80];
char tmp_str[NODE_MAX];
int resource_values[20];
int num_resources;
struct video_encode_metadata_t video_encode_metadata;
int rc;
ALOGI("Got set_interactive hint");
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU0) == -1) {
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU1) == -1) {
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU2) == -1) {
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU3) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_HANDLED;
}
}
}
}
if (!on) {
/* Display off. */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
/*
1. CPUfreq params
- hispeed freq for big - 1113Mhz
- go hispeed load for big - 95
- above_hispeed_delay for big - 40ms
2. BusDCVS V2 params
- Sample_ms of 10ms
*/
if(is_target_SDM630()){
int res[] = { 0x41414000, 0x459,
0x41410000, 0x5F,
0x41400000, 0x4,
0x41820000, 0xA };
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
}
/*
1. CPUfreq params
- hispeed freq for little - 902Mhz
- go hispeed load for little - 95
- above_hispeed_delay for little - 40ms
2. BusDCVS V2 params
- Sample_ms of 10ms
3. Sched group upmigrate - 500
*/
else{
int res[] = { 0x41414100, 0x386,
0x41410100, 0x5F,
0x41400100, 0x4,
0x41820000, 0xA,
0x40C54000, 0x1F4};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
}
if (!display_hint_sent) {
perform_hint_action(DISPLAY_STATE_HINT_ID,
resource_values, num_resources);
display_hint_sent = 1;
}
}
} else {
/* Display on. */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
display_hint_sent = 0;
}
}
saved_interactive_mode = !!on;
return HINT_HANDLED;
}
/* Video Encode Hint */
static void process_video_encode_hint(void *metadata)
{
char governor[80];
int resource_values[20];
int num_resources;
struct video_encode_metadata_t video_encode_metadata;
ALOGI("Got process_video_encode_hint");
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU0) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU1) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU2) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU3) == -1) {
ALOGE("Can't obtain scaling governor.");
// return HINT_HANDLED;
}
}
}
}
/* Initialize encode metadata struct fields. */
memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t));
video_encode_metadata.state = -1;
video_encode_metadata.hint_id = DEFAULT_VIDEO_ENCODE_HINT_ID;
if (metadata) {
if (parse_video_encode_metadata((char *)metadata,
&video_encode_metadata) == -1) {
ALOGE("Error occurred while parsing metadata.");
return;
}
} else {
return;
}
if (video_encode_metadata.state == 1) {
if ((strncmp(governor, INTERACTIVE_GOVERNOR,
strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
/*
1. CPUfreq params
- hispeed freq for big - 1113Mhz
- go hispeed load for big - 95
- above_hispeed_delay for big - 40ms
- target loads - 95
- nr_run - 5
2. BusDCVS V2 params
- Sample_ms of 10ms
*/
if(is_target_SDM630()){
int res[] = { 0x41414000, 0x459,
0x41410000, 0x5F,
0x41400000, 0x4,
0x41420000, 0x5F,
0x40C2C000, 0X5,
0x41820000, 0xA};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
}
/*
1. CPUfreq params
- hispeed freq for little - 902Mhz
- go hispeed load for little - 95
- above_hispeed_delay for little - 40ms
2. BusDCVS V2 params
- Sample_ms of 10ms
*/
else{
int res[] = { 0x41414100, 0x386,
0x41410100, 0x5F,
0x41400100, 0x4,
0x41820000, 0xA};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
}
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (camera_hint_ref_count == 1) {
if (!video_encode_hint_sent) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values, num_resources);
video_encode_hint_sent = 1;
}
}
pthread_mutex_unlock(&camera_hint_mutex);
}
} else if (video_encode_metadata.state == 0) {
if ((strncmp(governor, INTERACTIVE_GOVERNOR,
strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count--;
if (!camera_hint_ref_count) {
undo_hint_action(video_encode_metadata.hint_id);
video_encode_hint_sent = 0;
}
pthread_mutex_unlock(&camera_hint_mutex);
return ;
}
}
return;
}

View File

@@ -0,0 +1,99 @@
/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
static int display_fd;
#define SYS_DISPLAY_PWR "/sys/kernel/hbtp/display_pwr"
int set_interactive_override(struct power_module *module, int on)
{
static const char *display_on = "1";
static const char *display_off = "0";
char err_buf[80];
static int init_interactive_hint = 0;
static int set_i_count = 0;
int rc = 0;
set_i_count ++;
ALOGI("Got set_interactive hint on= %d, count= %d\n", on, set_i_count);
if (init_interactive_hint == 0)
{
//First time the display is turned off
display_fd = TEMP_FAILURE_RETRY(open(SYS_DISPLAY_PWR, O_RDWR));
if (display_fd < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error opening %s: %s\n", SYS_DISPLAY_PWR, err_buf);
}
else
init_interactive_hint = 1;
}
else
if (!on ) {
/* Display off. */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_off, strlen(display_off)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_off, SYS_DISPLAY_PWR, err_buf);
}
}
else {
/* Display on */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_on, strlen(display_on)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_on, SYS_DISPLAY_PWR, err_buf);
}
}
return HINT_HANDLED; /* Don't excecute this code path, not in use */
}

View File

@@ -0,0 +1,114 @@
/*
* Copyright (c) 2014, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
static int display_hint_sent;
static int display_hint2_sent;
static int first_display_off_hint;
extern int display_boost;
int set_interactive_override(struct power_module *module, int on)
{
char governor[80];
if (get_scaling_governor(governor, sizeof(governor)) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_NONE;
}
if (!on) {
/* Display off. */
/*
* We need to be able to identify the first display off hint
* and release the current lock holder
*/
if (display_boost) {
if (!first_display_off_hint) {
undo_initial_hint_action();
first_display_off_hint = 1;
}
/* used for all subsequent toggles to the display */
if (!display_hint2_sent) {
undo_hint_action(DISPLAY_STATE_HINT_ID_2);
display_hint2_sent = 1;
}
}
if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(ONDEMAND_GOVERNOR))) {
int resource_values[] = {MS_500, SYNC_FREQ_600, OPTIMAL_FREQ_600, THREAD_MIGRATION_SYNC_OFF};
if (!display_hint_sent) {
perform_hint_action(DISPLAY_STATE_HINT_ID,
resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
display_hint_sent = 1;
}
return HINT_HANDLED;
}
} else {
/* Display on */
if (display_boost && display_hint2_sent) {
int resource_values2[] = {CPUS_ONLINE_MIN_2};
perform_hint_action(DISPLAY_STATE_HINT_ID_2,
resource_values2, sizeof(resource_values2)/sizeof(resource_values2[0]));
display_hint2_sent = 0;
}
if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(ONDEMAND_GOVERNOR))) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
display_hint_sent = 0;
return HINT_HANDLED;
}
}
return HINT_NONE;
}

View File

@@ -0,0 +1,65 @@
/*
* Copyright (c) 2013, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
static int display_hint_sent;
int power_hint_override(struct power_module *module, power_hint_t hint, void *data)
{
switch(hint) {
case POWER_HINT_INTERACTION:
{
int resources[] = {0x702, 0x20B, 0x30B};
int duration = 3000;
interaction(duration, sizeof(resources)/sizeof(resources[0]), resources);
return HINT_HANDLED;
}
}
return HINT_NONE;
}

View File

@@ -0,0 +1,274 @@
/*
* Copyright (c) 2017, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
static int display_fd;
#define SYS_DISPLAY_PWR "/sys/kernel/hbtp/display_pwr"
#define CHECK_HANDLE(x) ((x)>0)
#define NUM_PERF_MODES 3
typedef enum {
NORMAL_MODE = 0,
SUSTAINED_MODE = 1,
VR_MODE = 2,
VR_SUSTAINED_MODE = (SUSTAINED_MODE|VR_MODE),
INVALID_MODE = 0xFF
}perf_mode_type_t;
typedef struct perf_mode {
perf_mode_type_t type;
int perf_hint_id;
}perf_mode_t;
perf_mode_t perf_modes[NUM_PERF_MODES] = { { SUSTAINED_MODE, SUSTAINED_PERF_HINT },
{ VR_MODE, VR_MODE_HINT },
{ VR_SUSTAINED_MODE, VR_MODE_SUSTAINED_PERF_HINT } };
static pthread_mutex_t perf_mode_switch_lock = PTHREAD_MUTEX_INITIALIZER;
static int current_mode = NORMAL_MODE;
static inline int get_perfd_hint_id(perf_mode_type_t type) {
int i;
for(i=0; i<NUM_PERF_MODES; i++) {
if (perf_modes[i].type == type) {
ALOGD("Hint id is 0x%x for mode 0x%x", perf_modes[i].perf_hint_id, type);
return perf_modes[i].perf_hint_id;
}
}
ALOGD("Couldn't find the hint for mode 0x%x", type);
return 0;
}
static int switch_mode(perf_mode_type_t mode) {
int hint_id = 0;
static int perfd_mode_handle = -1;
// release existing mode if any
if (CHECK_HANDLE(perfd_mode_handle)) {
ALOGD("Releasing handle 0x%x", perfd_mode_handle);
release_request(perfd_mode_handle);
perfd_mode_handle = -1;
}
// switch to a perf mode
hint_id = get_perfd_hint_id(mode);
if(hint_id != 0) {
perfd_mode_handle = perf_hint_enable(hint_id, 0);
if (!CHECK_HANDLE(perfd_mode_handle)) {
ALOGE("Failed perf_hint_interaction for mode: 0x%x", mode);
return -1;
}
ALOGD("Acquired handle 0x%x", perfd_mode_handle);
}
return 0;
}
static int process_perf_hint(void *data, perf_mode_type_t mode) {
pthread_mutex_lock(&perf_mode_switch_lock);
// enable
if (data){
ALOGI("Enable request for mode: 0x%x", mode);
// check if mode is current mode
if ( current_mode & mode ) {
pthread_mutex_unlock(&perf_mode_switch_lock);
ALOGD("Mode 0x%x already enabled", mode);
return HINT_HANDLED;
}
// enable requested mode
if ( 0 != switch_mode(current_mode | mode)) {
pthread_mutex_unlock(&perf_mode_switch_lock);
ALOGE("Couldn't enable mode 0x%x", mode);
return HINT_NONE;
}
current_mode |= mode;
ALOGI("Current mode is 0x%x", current_mode);
// disable
} else {
ALOGI("Disable request for mode: 0x%x", mode);
// check if mode is enabled
if ( !(current_mode & mode) ) {
pthread_mutex_unlock(&perf_mode_switch_lock);
ALOGD("Mode 0x%x already disabled", mode);
return HINT_HANDLED;
}
//disable requested mode
if ( 0 != switch_mode(current_mode & ~mode)) {
pthread_mutex_unlock(&perf_mode_switch_lock);
ALOGE("Couldn't disable mode 0x%x", mode);
return HINT_NONE;
}
current_mode &= ~mode;
ALOGI("Current mode is 0x%x", current_mode);
}
pthread_mutex_unlock(&perf_mode_switch_lock);
return HINT_HANDLED;
}
static int process_video_encode_hint(void *metadata)
{
char governor[80];
struct video_encode_metadata_t video_encode_metadata;
static int video_encode_handle = 0;
if(!metadata)
return HINT_NONE;
if (get_scaling_governor(governor, sizeof(governor)) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_NONE;
}
/* Initialize encode metadata struct fields */
memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t));
video_encode_metadata.state = -1;
if (parse_video_encode_metadata((char *)metadata, &video_encode_metadata) ==
-1) {
ALOGE("Error occurred while parsing metadata.");
return HINT_NONE;
}
if (video_encode_metadata.state == 1) {
if (is_interactive_governor(governor)) {
video_encode_handle = perf_hint_enable(
VIDEO_ENCODE_HINT, 0);
ALOGI("Video encode hint start");
return HINT_HANDLED;
}
} else if (video_encode_metadata.state == 0) {
if (is_interactive_governor(governor)) {
release_request(video_encode_handle);
ALOGI("Video Encode hint stop");
return HINT_HANDLED;
}
}
return HINT_NONE;
}
/* Declare function before use */
void interaction(int duration, int num_args, int opt_list[]);
int power_hint_override(struct power_module *module, power_hint_t hint, void *data)
{
int ret_val = HINT_NONE;
switch(hint) {
case POWER_HINT_VIDEO_ENCODE:
ret_val = process_video_encode_hint(data);
break;
case POWER_HINT_SUSTAINED_PERFORMANCE:
ret_val = process_perf_hint(data, SUSTAINED_MODE);
break;
case POWER_HINT_VR_MODE:
ret_val = process_perf_hint(data, VR_MODE);
break;
case POWER_HINT_INTERACTION:
{
int resources[] = {0x40800100, 0x514};
int duration = 100;
interaction(duration, sizeof(resources)/sizeof(resources[0]), resources);
ret_val = HINT_HANDLED;
}
break;
default:
break;
}
return ret_val;
}
int set_interactive_override(struct power_module *module, int on)
{
static const char *display_on = "1";
static const char *display_off = "0";
char err_buf[80];
static int init_interactive_hint = 0;
static int set_i_count = 0;
int rc = 0;
set_i_count ++;
ALOGI("Got set_interactive hint on= %d, count= %d\n", on, set_i_count);
if (init_interactive_hint == 0)
{
//First time the display is turned off
display_fd = TEMP_FAILURE_RETRY(open(SYS_DISPLAY_PWR, O_RDWR));
if (display_fd < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error opening %s: %s\n", SYS_DISPLAY_PWR, err_buf);
}
else
init_interactive_hint = 1;
}
else
if (!on ) {
/* Display off. */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_off, strlen(display_off)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_off, SYS_DISPLAY_PWR, err_buf);
}
}
else {
/* Display on */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_on, strlen(display_on)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_on, SYS_DISPLAY_PWR, err_buf);
}
}
return HINT_HANDLED; /* Don't excecute this code path, not in use */
}

View File

@@ -0,0 +1,65 @@
/*
* Copyright (c) 2013, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
static int display_hint_sent;
int power_hint_override(struct power_module *module, power_hint_t hint, void *data)
{
switch(hint) {
case POWER_HINT_INTERACTION:
{
int resources[] = {0x702, 0x20B, 0x30B};
int duration = 3000;
interaction(duration, sizeof(resources)/sizeof(resources[0]), resources);
return HINT_HANDLED;
}
}
return HINT_NONE;
}

View File

@@ -0,0 +1,327 @@
/*
* Copyright (c) 2015,2018 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
#define MIN_VAL(X,Y) ((X>Y)?(Y):(X))
static int saved_interactive_mode = -1;
static int display_hint_sent;
static int video_encode_hint_sent;
pthread_mutex_t camera_hint_mutex = PTHREAD_MUTEX_INITIALIZER;
static int camera_hint_ref_count;
static void process_video_encode_hint(void *metadata);
static int display_fd;
#define SYS_DISPLAY_PWR "/sys/kernel/hbtp/display_pwr"
static bool is_target_SDM439() /* Returns value=1 if target is Hathi else value 0 */
{
int fd;
bool is_target_SDM439 = false;
char buf[10] = {0};
fd = open("/sys/devices/soc0/soc_id", O_RDONLY);
if (fd >= 0) {
if (read(fd, buf, sizeof(buf) - 1) == -1) {
ALOGW("Unable to read soc_id");
is_target_SDM439 = false;
} else {
int soc_id = atoi(buf);
if (soc_id == 353 || soc_id == 363 || soc_id == 354 || soc_id == 364) {
is_target_SDM439 = true; /* Above SOCID for SDM439/429 */
}
}
}
close(fd);
return is_target_SDM439;
}
int power_hint_override(struct power_module *module, power_hint_t hint,
void *data)
{
switch(hint) {
case POWER_HINT_VSYNC:
break;
case POWER_HINT_VIDEO_ENCODE:
{
process_video_encode_hint(data);
return HINT_HANDLED;
}
}
return HINT_NONE;
}
int set_interactive_override(struct power_module *module, int on)
{
char governor[80];
char tmp_str[NODE_MAX];
struct video_encode_metadata_t video_encode_metadata;
int rc = 0;
static const char *display_on = "1";
static const char *display_off = "0";
char err_buf[80];
static int init_interactive_hint = 0;
static int set_i_count = 0;
ALOGI("Got set_interactive hint");
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU0) == -1) {
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU1) == -1) {
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU2) == -1) {
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU3) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_HANDLED;
}
}
}
}
if (!on) {
/* Display off. */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
int resource_values[] = {INT_OP_CLUSTER0_TIMER_RATE, BIG_LITTLE_TR_MS_50,
INT_OP_CLUSTER1_TIMER_RATE, BIG_LITTLE_TR_MS_50,
INT_OP_NOTIFY_ON_MIGRATE, 0x00};
if (!display_hint_sent) {
perform_hint_action(DISPLAY_STATE_HINT_ID,
resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
display_hint_sent = 1;
}
} /* Perf time rate set for CORE0,CORE4 8952 target*/
} else {
/* Display on. */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
display_hint_sent = 0;
}
}
saved_interactive_mode = !!on;
set_i_count ++;
ALOGI("Got set_interactive hint on= %d, count= %d\n", on, set_i_count);
if (init_interactive_hint == 0)
{
//First time the display is turned off
display_fd = TEMP_FAILURE_RETRY(open(SYS_DISPLAY_PWR, O_RDWR));
if (display_fd < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error opening %s: %s\n", SYS_DISPLAY_PWR, err_buf);
return HINT_HANDLED;
}
else
init_interactive_hint = 1;
}
else
if (!on ) {
/* Display off. */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_off, strlen(display_off)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_off, SYS_DISPLAY_PWR, err_buf);
}
}
else {
/* Display on */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_on, strlen(display_on)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_on, SYS_DISPLAY_PWR, err_buf);
}
}
return HINT_HANDLED;
}
/* Video Encode Hint */
static void process_video_encode_hint(void *metadata)
{
char governor[80] = {0};
int resource_values[20] = {0};
int num_resources = 0;
struct video_encode_metadata_t video_encode_metadata;
ALOGI("Got process_video_encode_hint");
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU0) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU1) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU2) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU3) == -1) {
ALOGE("Can't obtain scaling governor.");
return;
}
}
}
}
/* Initialize encode metadata struct fields. */
memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t));
video_encode_metadata.state = -1;
video_encode_metadata.hint_id = DEFAULT_VIDEO_ENCODE_HINT_ID;
if (metadata) {
if (parse_video_encode_metadata((char *)metadata,
&video_encode_metadata) == -1) {
ALOGE("Error occurred while parsing metadata.");
return;
}
} else {
return;
}
if (video_encode_metadata.state == 1) {
if((strncmp(governor, SCHEDUTIL_GOVERNOR,
strlen(SCHEDUTIL_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(SCHEDUTIL_GOVERNOR))) {
if(is_target_SDM439()) {
/* sample_ms = 10mS
* SLB for Core0 = -6
* SLB for Core1 = -6
* SLB for Core2 = -6
* SLB for Core3 = -6
* hispeed load = 95
* hispeed freq = 998Mhz */
int res[] = {0x41820000, 0xa,
0x40c68100, 0xfffffffa,
0x40c68110, 0xfffffffa,
0x40c68120, 0xfffffffa,
0x40c68130, 0xfffffffa,
0x41440100, 0x5f,
0x4143c100, 0x3e6,
};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (camera_hint_ref_count == 1) {
if (!video_encode_hint_sent) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values, num_resources);
video_encode_hint_sent = 1;
}
}
pthread_mutex_unlock(&camera_hint_mutex);
}
else {
/* sample_ms = 10mS */
int res[] = {0x41820000, 0xa,
};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (camera_hint_ref_count == 1) {
if (!video_encode_hint_sent) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values, num_resources);
video_encode_hint_sent = 1;
}
}
pthread_mutex_unlock(&camera_hint_mutex);
}
}
else if ((strncmp(governor, INTERACTIVE_GOVERNOR,
strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
/* Sched_load and migration_notif*/
int res[] = {INT_OP_CLUSTER0_USE_SCHED_LOAD,
0x1,
INT_OP_CLUSTER1_USE_SCHED_LOAD,
0x1,
INT_OP_CLUSTER0_USE_MIGRATION_NOTIF,
0x1,
INT_OP_CLUSTER1_USE_MIGRATION_NOTIF,
0x1,
INT_OP_CLUSTER0_TIMER_RATE,
BIG_LITTLE_TR_MS_40,
INT_OP_CLUSTER1_TIMER_RATE,
BIG_LITTLE_TR_MS_40
};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (!video_encode_hint_sent) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values,num_resources);
video_encode_hint_sent = 1;
}
pthread_mutex_unlock(&camera_hint_mutex);
}
} else if (video_encode_metadata.state == 0) {
if (((strncmp(governor, INTERACTIVE_GOVERNOR,
strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) ||
((strncmp(governor, SCHEDUTIL_GOVERNOR,
strlen(SCHEDUTIL_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(SCHEDUTIL_GOVERNOR)))) {
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count--;
if (!camera_hint_ref_count) {
undo_hint_action(video_encode_metadata.hint_id);
video_encode_hint_sent = 0;
}
pthread_mutex_unlock(&camera_hint_mutex);
return ;
}
}
return;
}

View File

@@ -0,0 +1,326 @@
/*
* Copyright (c) 2016, 2018, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
#define MIN_VAL(X,Y) ((X>Y)?(Y):(X))
static int saved_interactive_mode = -1;
static int display_hint_sent;
static int video_encode_hint_sent;
static int cam_preview_hint_sent;
pthread_mutex_t camera_hint_mutex = PTHREAD_MUTEX_INITIALIZER;
static int camera_hint_ref_count;
static void process_video_encode_hint(void *metadata);
//static void process_cam_preview_hint(void *metadata);
static int display_fd;
#define SYS_DISPLAY_PWR "/sys/kernel/hbtp/display_pwr"
static bool is_target_SDM632() /* Returns value=632 if target is SDM632 else value 0 */
{
int fd;
bool is_target_SDM632 = false;
char buf[10] = {0};
fd = open("/sys/devices/soc0/soc_id", O_RDONLY);
if (fd >= 0) {
if (read(fd, buf, sizeof(buf) - 1) == -1) {
ALOGW("Unable to read soc_id");
is_target_SDM632 = false;
} else {
int soc_id = atoi(buf);
if (soc_id == 349 || soc_id == 350) {
is_target_SDM632 = true; /* Above SOCID for SDM632 */
}
}
}
close(fd);
return is_target_SDM632;
}
int power_hint_override(struct power_module *module, power_hint_t hint,
void *data)
{
switch(hint) {
case POWER_HINT_VSYNC:
break;
case POWER_HINT_VIDEO_ENCODE:
{
process_video_encode_hint(data);
return HINT_HANDLED;
}
}
return HINT_NONE;
}
int set_interactive_override(struct power_module *module, int on)
{
char governor[80];
char tmp_str[NODE_MAX];
struct video_encode_metadata_t video_encode_metadata;
int rc = 0;
static const char *display_on = "1";
static const char *display_off = "0";
char err_buf[80];
static int init_interactive_hint = 0;
static int set_i_count = 0;
ALOGI("Got set_interactive hint");
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU0) == -1) {
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU1) == -1) {
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU2) == -1) {
if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU3) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_HANDLED;
}
}
}
}
if (!on) {
/* Display off. */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
/* timer rate - 40mS*/
int resource_values[] = {0x41424000, 0x28,
};
if (!display_hint_sent) {
perform_hint_action(DISPLAY_STATE_HINT_ID,
resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
display_hint_sent = 1;
}
} /* Perf time rate set for CORE0,CORE4 8952 target*/
} else {
/* Display on. */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
display_hint_sent = 0;
}
}
saved_interactive_mode = !!on;
set_i_count ++;
ALOGI("Got set_interactive hint on= %d, count= %d\n", on, set_i_count);
if (init_interactive_hint == 0)
{
//First time the display is turned off
display_fd = TEMP_FAILURE_RETRY(open(SYS_DISPLAY_PWR, O_RDWR));
if (display_fd < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error opening %s: %s\n", SYS_DISPLAY_PWR, err_buf);
return HINT_HANDLED;
}
else
init_interactive_hint = 1;
}
else
if (!on ) {
/* Display off. */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_off, strlen(display_off)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_off, SYS_DISPLAY_PWR, err_buf);
}
}
else {
/* Display on */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_on, strlen(display_on)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_on, SYS_DISPLAY_PWR, err_buf);
}
}
return HINT_HANDLED;
}
/* Video Encode Hint */
static void process_video_encode_hint(void *metadata)
{
char governor[80] = {0};
int resource_values[20] = {0};
int num_resources = 0;
struct video_encode_metadata_t video_encode_metadata;
ALOGI("Got process_video_encode_hint");
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU0) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU1) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU2) == -1) {
if (get_scaling_governor_check_cores(governor,
sizeof(governor),CPU3) == -1) {
ALOGE("Can't obtain scaling governor.");
// return HINT_HANDLED;
}
}
}
}
/* Initialize encode metadata struct fields. */
memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t));
video_encode_metadata.state = -1;
video_encode_metadata.hint_id = DEFAULT_VIDEO_ENCODE_HINT_ID;
if (metadata) {
if (parse_video_encode_metadata((char *)metadata,
&video_encode_metadata) == -1) {
ALOGE("Error occurred while parsing metadata.");
return;
}
} else {
return;
}
if (video_encode_metadata.state == 1) {
if((strncmp(governor, SCHEDUTIL_GOVERNOR,
strlen(SCHEDUTIL_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(SCHEDUTIL_GOVERNOR))) {
if(is_target_SDM632()) {
/* sample_ms = 10mS
* SLB for Core0 = -6
* SLB for Core1 = -6
* SLB for Core2 = -6
* SLB for Core3 = -6
* hispeed load = 95
* hispeed freq = 1036 */
int res[] = {0x41820000, 0xa,
0x40c68100, 0xfffffffa,
0x40c68110, 0xfffffffa,
0x40c68120, 0xfffffffa,
0x40c68130, 0xfffffffa,
0x41440100, 0x5f,
0x4143c100, 0x40c,
};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (camera_hint_ref_count == 1) {
if (!video_encode_hint_sent) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values, num_resources);
video_encode_hint_sent = 1;
}
}
pthread_mutex_unlock(&camera_hint_mutex);
}
else {
/* sample_ms = 10mS */
int res[] = {0x41820000, 0xa,
};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (camera_hint_ref_count == 1) {
if (!video_encode_hint_sent) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values, num_resources);
video_encode_hint_sent = 1;
}
}
pthread_mutex_unlock(&camera_hint_mutex);
}
}
else if ((strncmp(governor, INTERACTIVE_GOVERNOR,
strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
/* Sched_load and migration_notification disable
* timer rate - 40mS*/
int res[] = {0x41430000, 0x1,
0x41434000, 0x1,
0x41424000, 0x28,
};
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res)/sizeof(res[0]);
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (camera_hint_ref_count == 1) {
if (!video_encode_hint_sent) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values, num_resources);
video_encode_hint_sent = 1;
}
}
pthread_mutex_unlock(&camera_hint_mutex);
}
} else if (video_encode_metadata.state == 0) {
if (((strncmp(governor, INTERACTIVE_GOVERNOR,
strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) ||
((strncmp(governor, SCHEDUTIL_GOVERNOR,
strlen(SCHEDUTIL_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(SCHEDUTIL_GOVERNOR)))) {
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count--;
if (!camera_hint_ref_count) {
undo_hint_action(video_encode_metadata.hint_id);
video_encode_hint_sent = 0;
}
pthread_mutex_unlock(&camera_hint_mutex);
return ;
}
}
return;
}

View File

@@ -0,0 +1,114 @@
/*
* Copyright (c) 2013, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
static int display_hint_sent;
static int display_hint2_sent;
static int first_display_off_hint;
extern int display_boost;
int set_interactive_override(struct power_module *module, int on)
{
char governor[80];
if (get_scaling_governor(governor, sizeof(governor)) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_NONE;
}
if (!on) {
/* Display off. */
/*
* We need to be able to identify the first display off hint
* and release the current lock holder
*/
if (display_boost) {
if (!first_display_off_hint) {
undo_initial_hint_action();
first_display_off_hint = 1;
}
/* used for all subsequent toggles to the display */
if (!display_hint2_sent) {
undo_hint_action(DISPLAY_STATE_HINT_ID_2);
display_hint2_sent = 1;
}
}
if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(ONDEMAND_GOVERNOR))) {
int resource_values[] = {MS_500, SYNC_FREQ_600, OPTIMAL_FREQ_600, THREAD_MIGRATION_SYNC_OFF};
if (!display_hint_sent) {
perform_hint_action(DISPLAY_STATE_HINT_ID,
resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
display_hint_sent = 1;
}
return HINT_HANDLED;
}
} else {
/* Display on */
if (display_boost && display_hint2_sent) {
int resource_values2[] = {CPUS_ONLINE_MIN_2};
perform_hint_action(DISPLAY_STATE_HINT_ID_2,
resource_values2, sizeof(resource_values2)/sizeof(resource_values2[0]));
display_hint2_sent = 0;
}
if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(ONDEMAND_GOVERNOR))) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
display_hint_sent = 0;
return HINT_HANDLED;
}
}
return HINT_NONE;
}

View File

@@ -0,0 +1,149 @@
/*
* Copyright (c) 2014, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
static int display_hint_sent;
static int process_video_encode_hint(void *metadata)
{
char governor[80];
struct video_encode_metadata_t video_encode_metadata;
if (get_scaling_governor(governor, sizeof(governor)) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_NONE;
}
/* Initialize encode metadata struct fields */
memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t));
video_encode_metadata.state = -1;
video_encode_metadata.hint_id = DEFAULT_VIDEO_ENCODE_HINT_ID;
if (metadata) {
if (parse_video_encode_metadata((char *)metadata, &video_encode_metadata) ==
-1) {
ALOGE("Error occurred while parsing metadata.");
return HINT_NONE;
}
} else {
return HINT_NONE;
}
if (video_encode_metadata.state == 1) {
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
/* sched and cpufreq params
* hispeed freq - 768 MHz
* target load - 90
* above_hispeed_delay - 40ms
* sched_small_tsk - 50
*/
int resource_values[] = {0x2C07, 0x2F5A, 0x2704, 0x4032};
perform_hint_action(video_encode_metadata.hint_id,
resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
return HINT_HANDLED;
}
} else if (video_encode_metadata.state == 0) {
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
undo_hint_action(video_encode_metadata.hint_id);
return HINT_HANDLED;
}
}
return HINT_NONE;
}
int power_hint_override(struct power_module *module, power_hint_t hint, void *data)
{
int ret_val = HINT_NONE;
switch(hint) {
case POWER_HINT_VIDEO_ENCODE:
ret_val = process_video_encode_hint(data);
break;
default:
break;
}
return ret_val;
}
int set_interactive_override(struct power_module *module, int on)
{
return HINT_NONE; /* Don't excecute this code path, not in use */
char governor[80];
if (get_scaling_governor(governor, sizeof(governor)) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_NONE;
}
if (!on) {
/* Display off */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
int resource_values[] = {}; /* dummy node */
if (!display_hint_sent) {
perform_hint_action(DISPLAY_STATE_HINT_ID,
resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
display_hint_sent = 1;
return HINT_HANDLED;
}
}
} else {
/* Display on */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
display_hint_sent = 0;
return HINT_HANDLED;
}
}
return HINT_NONE;
}

View File

@@ -0,0 +1,179 @@
/*
* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
pthread_mutex_t camera_hint_mutex = PTHREAD_MUTEX_INITIALIZER;
static int display_hint_sent;
static int camera_hint_ref_count;
static int process_video_encode_hint(void *metadata)
{
char governor[80];
struct video_encode_metadata_t video_encode_metadata;
if (get_scaling_governor(governor, sizeof(governor)) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_NONE;
}
/* Initialize encode metadata struct fields */
memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t));
video_encode_metadata.state = -1;
video_encode_metadata.hint_id = DEFAULT_VIDEO_ENCODE_HINT_ID;
if (metadata) {
if (parse_video_encode_metadata((char *)metadata, &video_encode_metadata) ==
-1) {
ALOGE("Error occurred while parsing metadata.");
return HINT_NONE;
}
} else {
return HINT_NONE;
}
if (video_encode_metadata.state == 1) {
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
/* 1. cpufreq params
* -above_hispeed_delay for LVT - 40ms
* -go hispeed load for LVT - 95
* -hispeed freq for LVT - 556 MHz
* -target load for LVT - 90
* -above hispeed delay for sLVT - 40ms
* -go hispeed load for sLVT - 95
* -hispeed freq for sLVT - 806 MHz
* -target load for sLVT - 90
* 2. bus DCVS set to V2 config:
* -low power ceil mpbs - 2500
* -low power io percent - 50
* 3. hysteresis optimization
* -bus dcvs hysteresis tuning
* -sample_ms of 10 ms
* -sLVT hispeed freq to 806MHz
*/
int resource_values[] = {0x41400000, 0x4, 0x41410000, 0x5F, 0x41414000, 0x326,
0x41420000, 0x5A, 0x41400100, 0x4, 0x41410100, 0x5F, 0x41414100, 0x22C, 0x41420100, 0x5A,
0x41810000, 0x9C4, 0x41814000, 0x32, 0x4180C000, 0x0, 0x41820000, 0xA};
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count++;
if (camera_hint_ref_count == 1) {
perform_hint_action(video_encode_metadata.hint_id,
resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
}
pthread_mutex_unlock(&camera_hint_mutex);
ALOGI("Video Encode hint start");
return HINT_HANDLED;
}
} else if (video_encode_metadata.state == 0) {
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
pthread_mutex_lock(&camera_hint_mutex);
camera_hint_ref_count--;
if (!camera_hint_ref_count) {
undo_hint_action(video_encode_metadata.hint_id);
}
pthread_mutex_unlock(&camera_hint_mutex);
ALOGI("Video Encode hint stop");
return HINT_HANDLED;
}
}
return HINT_NONE;
}
int power_hint_override(struct power_module *module, power_hint_t hint, void *data)
{
int ret_val = HINT_NONE;
switch(hint) {
case POWER_HINT_VIDEO_ENCODE:
ret_val = process_video_encode_hint(data);
break;
default:
break;
}
return ret_val;
}
int set_interactive_override(struct power_module *module, int on)
{
return HINT_HANDLED; /* Don't excecute this code path, not in use */
char governor[80];
if (get_scaling_governor(governor, sizeof(governor)) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_NONE;
}
if (!on) {
/* Display off */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
int resource_values[] = {}; /* dummy node */
if (!display_hint_sent) {
perform_hint_action(DISPLAY_STATE_HINT_ID,
resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
display_hint_sent = 1;
ALOGI("Display Off hint start");
return HINT_HANDLED;
}
}
} else {
/* Display on */
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
display_hint_sent = 0;
ALOGI("Display Off hint stop");
return HINT_HANDLED;
}
}
return HINT_NONE;
}

View File

@@ -0,0 +1,226 @@
/*
* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "metadata-defs.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
#include "powerhintparser.h"
#define CHECK_HANDLE(x) ((x)>0)
#define NUM_PERF_MODES 3
typedef enum {
NORMAL_MODE = 0,
SUSTAINED_MODE = 1,
VR_MODE = 2,
VR_SUSTAINED_MODE = (SUSTAINED_MODE|VR_MODE),
INVALID_MODE = 0xFF
}perf_mode_type_t;
typedef struct perf_mode {
perf_mode_type_t type;
int perf_hint_id;
}perf_mode_t;
perf_mode_t perf_modes[NUM_PERF_MODES] = { { SUSTAINED_MODE, SUSTAINED_PERF_HINT },
{ VR_MODE, VR_MODE_HINT },
{ VR_SUSTAINED_MODE, VR_MODE_SUSTAINED_PERF_HINT } };
static pthread_mutex_t perf_mode_switch_lock = PTHREAD_MUTEX_INITIALIZER;
static int current_mode = NORMAL_MODE;
static inline int get_perfd_hint_id(perf_mode_type_t type) {
int i;
for(i=0; i<NUM_PERF_MODES; i++) {
if (perf_modes[i].type == type) {
ALOGD("Hint id is 0x%x for mode 0x%x", perf_modes[i].perf_hint_id, type);
return perf_modes[i].perf_hint_id;
}
}
ALOGD("Couldn't find the hint for mode 0x%x", type);
return 0;
}
static int switch_mode(perf_mode_type_t mode) {
int hint_id = 0;
static int perfd_mode_handle = -1;
// release existing mode if any
if (CHECK_HANDLE(perfd_mode_handle)) {
ALOGD("Releasing handle 0x%x", perfd_mode_handle);
release_request(perfd_mode_handle);
perfd_mode_handle = -1;
}
// switch to a perf mode
hint_id = get_perfd_hint_id(mode);
if(hint_id != 0) {
perfd_mode_handle = perf_hint_enable(hint_id, 0);
if (!CHECK_HANDLE(perfd_mode_handle)) {
ALOGE("Failed perf_hint_interaction for mode: 0x%x", mode);
return -1;
}
ALOGD("Acquired handle 0x%x", perfd_mode_handle);
}
return 0;
}
static int process_perf_hint(void *data, perf_mode_type_t mode) {
pthread_mutex_lock(&perf_mode_switch_lock);
// enable
if (data){
ALOGI("Enable request for mode: 0x%x", mode);
// check if mode is current mode
if ( current_mode & mode ) {
pthread_mutex_unlock(&perf_mode_switch_lock);
ALOGD("Mode 0x%x already enabled", mode);
return HINT_HANDLED;
}
// enable requested mode
if ( 0 != switch_mode(current_mode | mode)) {
pthread_mutex_unlock(&perf_mode_switch_lock);
ALOGE("Couldn't enable mode 0x%x", mode);
return HINT_NONE;
}
current_mode |= mode;
ALOGI("Current mode is 0x%x", current_mode);
// disable
} else {
ALOGI("Disable request for mode: 0x%x", mode);
// check if mode is enabled
if ( !(current_mode & mode) ) {
pthread_mutex_unlock(&perf_mode_switch_lock);
ALOGD("Mode 0x%x already disabled", mode);
return HINT_HANDLED;
}
//disable requested mode
if ( 0 != switch_mode(current_mode & ~mode)) {
pthread_mutex_unlock(&perf_mode_switch_lock);
ALOGE("Couldn't disable mode 0x%x", mode);
return HINT_NONE;
}
current_mode &= ~mode;
ALOGI("Current mode is 0x%x", current_mode);
}
pthread_mutex_unlock(&perf_mode_switch_lock);
return HINT_HANDLED;
}
static int process_video_encode_hint(void *metadata)
{
char governor[80];
struct video_encode_metadata_t video_encode_metadata;
static int video_encode_handle = 0;
if(!metadata)
return HINT_NONE;
if (get_scaling_governor(governor, sizeof(governor)) == -1) {
ALOGE("Can't obtain scaling governor.");
return HINT_NONE;
}
/* Initialize encode metadata struct fields */
memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t));
video_encode_metadata.state = -1;
if (parse_video_encode_metadata((char *)metadata, &video_encode_metadata) ==
-1) {
ALOGE("Error occurred while parsing metadata.");
return HINT_NONE;
}
if (video_encode_metadata.state == 1) {
if (is_interactive_governor(governor)) {
video_encode_handle = perf_hint_enable(
VIDEO_ENCODE_HINT, 0);
return HINT_HANDLED;
}
} else if (video_encode_metadata.state == 0) {
if (is_interactive_governor(governor)) {
release_request(video_encode_handle);
ALOGI("Video Encode hint stop");
return HINT_HANDLED;
}
}
return HINT_NONE;
}
int power_hint_override(struct power_module *module, power_hint_t hint, void *data)
{
int ret_val = HINT_NONE;
switch(hint) {
case POWER_HINT_VIDEO_ENCODE:
ret_val = process_video_encode_hint(data);
break;
case POWER_HINT_SUSTAINED_PERFORMANCE:
ret_val = process_perf_hint(data, SUSTAINED_MODE);
break;
case POWER_HINT_VR_MODE:
ret_val = process_perf_hint(data, VR_MODE);
break;
case POWER_HINT_INTERACTION:
pthread_mutex_lock(&perf_mode_switch_lock);
if (current_mode != NORMAL_MODE) {
ret_val = HINT_HANDLED;
}
pthread_mutex_unlock(&perf_mode_switch_lock);
break;
default:
break;
}
return ret_val;
}
int set_interactive_override(struct power_module *module, int on)
{
return HINT_HANDLED; /* Don't excecute this code path, not in use */
}

View File

@@ -0,0 +1,50 @@
/*
* Copyright (c) 2013, 2018 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define NODE_MAX (64)
#define SCALING_GOVERNOR_PATH "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
#define DCVS_CPU0_SLACK_MAX_NODE "/sys/module/msm_dcvs/cores/cpu0/slack_time_max_us"
#define DCVS_CPU0_SLACK_MIN_NODE "/sys/module/msm_dcvs/cores/cpu0/slack_time_min_us"
#define MPDECISION_SLACK_MAX_NODE "/sys/module/msm_mpdecision/slack_time_max_us"
#define MPDECISION_SLACK_MIN_NODE "/sys/module/msm_mpdecision/slack_time_min_us"
#define SCALING_MIN_FREQ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"
#define ONDEMAND_GOVERNOR "ondemand"
#define INTERACTIVE_GOVERNOR "interactive"
#define MSMDCVS_GOVERNOR "msm-dcvs"
#define SCHEDUTIL_GOVERNOR "schedutil"
#define HINT_HANDLED (0)
#define HINT_NONE (-1)
enum CPU_GOV_CHECK {
CPU0 = 0,
CPU1 = 1,
CPU2 = 2,
CPU3 = 3
};

View File

@@ -0,0 +1,155 @@
/*
* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <unistd.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common.h"
static struct hint_handles handles[NUM_HINTS];
static int handleER = 0;
void power_init()
{
ALOGI("Initing");
for (int i=0; i<NUM_HINTS; i++) {
handles[i].handle = 0;
handles[i].ref_count = 0;
}
}
int __attribute__ ((weak)) power_hint_override(power_hint_t hint,
void *data)
{
return HINT_NONE;
}
/* Declare function before use */
void interaction(int duration, int num_args, int opt_list[]);
void power_hint(power_hint_t hint, void *data)
{
/* Check if this hint has been overridden. */
if (power_hint_override(hint, data) == HINT_HANDLED) {
/* The power_hint has been handled. We can skip the rest. */
return;
}
switch(hint) {
case POWER_HINT_VSYNC:
break;
case POWER_HINT_VR_MODE:
ALOGI("VR mode power hint not handled in power_hint_override");
break;
case POWER_HINT_INTERACTION:
{
int resources[] = {0x702, 0x20F, 0x30F};
int duration = 3000;
interaction(duration, sizeof(resources)/sizeof(resources[0]), resources);
}
break;
//fall through below, hints will fail if not defined in powerhint.xml
case POWER_HINT_SUSTAINED_PERFORMANCE:
case POWER_HINT_VIDEO_ENCODE:
if (data) {
if (handles[hint].ref_count == 0)
handles[hint].handle = perf_hint_enable((AOSP_DELTA + hint), 0);
if (handles[hint].handle > 0)
handles[hint].ref_count++;
}
else
if (handles[hint].handle > 0) {
if (--handles[hint].ref_count == 0) {
release_request(handles[hint].handle);
handles[hint].handle = 0;
}
}
else
ALOGE("Lock for hint: %X was not acquired, cannot be released", hint);
break;
default:
break;
}
}
bool is_expensive_rendering_supported() {
char property[PROPERTY_VALUE_MAX];
strlcpy(property, perf_get_property("vendor.perf.expensive_rendering", "0").value,
PROPERTY_VALUE_MAX);
return atoi(property) == 1 ? true : false;
}
void set_expensive_rendering(bool enabled)
{
if (enabled) {
handleER = perf_hint_enable(PERF_HINT_EXPENSIVE_RENDERING, 0);
} else if (handleER > 0) {
release_request(handleER);
}
}
int __attribute__ ((weak)) set_interactive_override(int on)
{
return HINT_NONE;
}
void set_interactive(int on)
{
if (!on) {
/* Send Display OFF hint to perf HAL */
perf_hint_enable(VENDOR_HINT_DISPLAY_OFF, 0);
} else {
/* Send Display ON hint to perf HAL */
perf_hint_enable(VENDOR_HINT_DISPLAY_ON, 0);
}
if (set_interactive_override(on) == HINT_HANDLED) {
return;
}
ALOGI("Got set_interactive hint");
}

View File

@@ -0,0 +1,73 @@
/*
* Copyright (c) 2013, 2018-2019 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __POWER_COMMON_H__
#define __POWER_COMMON_H__
#ifdef __cplusplus
extern "C" {
#endif
#define NODE_MAX (64)
#define SCALING_GOVERNOR_PATH "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
#define DCVS_CPU0_SLACK_MAX_NODE "/sys/module/msm_dcvs/cores/cpu0/slack_time_max_us"
#define DCVS_CPU0_SLACK_MIN_NODE "/sys/module/msm_dcvs/cores/cpu0/slack_time_min_us"
#define MPDECISION_SLACK_MAX_NODE "/sys/module/msm_mpdecision/slack_time_max_us"
#define MPDECISION_SLACK_MIN_NODE "/sys/module/msm_mpdecision/slack_time_min_us"
#define SCALING_MIN_FREQ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"
#define ONDEMAND_GOVERNOR "ondemand"
#define INTERACTIVE_GOVERNOR "interactive"
#define MSMDCVS_GOVERNOR "msm-dcvs"
#define SCHEDUTIL_GOVERNOR "schedutil"
#define HINT_HANDLED (0)
#define HINT_NONE (-1)
#define PERF_HINT_EXPENSIVE_RENDERING 0x000010A5
#include <hardware/power.h>
enum CPU_GOV_CHECK {
CPU0 = 0,
CPU1 = 1,
CPU2 = 2,
CPU3 = 3
};
void power_init(void);
void power_hint(power_hint_t hint, void *data);
bool is_expensive_rendering_supported();
void set_expensive_rendering(bool enabled);
void set_interactive(int on);
#ifdef __cplusplus
}
#endif
#endif //__POWER_COMMON_H___

View File

@@ -0,0 +1,112 @@
/*
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <dlfcn.h>
#include <string.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "power-common.h"
static int display_fd;
#define SYS_DISPLAY_PWR "/sys/kernel/hbtp/display_pwr"
int set_interactive_override(int on)
{
static const char *display_on = "1";
static const char *display_off = "0";
char err_buf[80];
static int init_interactive_hint = 0;
static int set_i_count = 0;
int rc = 0;
set_i_count ++;
ALOGI("Got set_interactive hint on= %d, count= %d\n", on, set_i_count);
if (init_interactive_hint == 0)
{
//First time the display is turned off
display_fd = TEMP_FAILURE_RETRY(open(SYS_DISPLAY_PWR, O_RDWR));
if (display_fd < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error opening %s: %s\n", SYS_DISPLAY_PWR, err_buf);
}
else
init_interactive_hint = 1;
}
else
if (!on ) {
/* Display off. */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_off, strlen(display_off)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_off, SYS_DISPLAY_PWR, err_buf);
}
}
else {
/* Display on */
rc = TEMP_FAILURE_RETRY(write(display_fd, display_on, strlen(display_on)));
if (rc < 0) {
strerror_r(errno,err_buf,sizeof(err_buf));
ALOGE("Error writing %s to %s: %s\n", display_on, SYS_DISPLAY_PWR, err_buf);
}
}
return HINT_HANDLED;
}
void interaction(int duration, int num_args, int opt_list[]);
int power_hint_override(power_hint_t hint, void *data)
{
int ret_val = HINT_NONE;
switch(hint) {
case POWER_HINT_INTERACTION:
{
int resources[] = {0x40800100, 0x514};
int duration = 100;
interaction(duration, sizeof(resources)/sizeof(resources[0]), resources);
ret_val = HINT_HANDLED;
}
default:
break;
}
return ret_val;
}

View File

@@ -0,0 +1,5 @@
ifeq ($(TARGET_BOARD_PLATFORM),trinket)
TARGET_USES_NON_LEGACY_POWERHAL := false
else
TARGET_USES_NON_LEGACY_POWERHAL := true
endif

View File

@@ -0,0 +1,44 @@
#Power product definitions
# PRODUCT_PACKAGES += android.hardware.power-service
# PRODUCT_PACKAGES += android.hardware.power-impl
#Powerhint File
ifeq ($(TARGET_BOARD_PLATFORM),msmnile)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/msmnile/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),kona)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/kona/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),lito)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/lito/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),atoll)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/atoll/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),lahaina)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/lahaina/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),holi)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/holi/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),taro)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/taro/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),kalama)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/kalama/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),pineapple)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/pineapple/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),sun)
ifneq ($(filter pa1q%, $(TARGET_PRODUCT)),)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/sun/powerhint_PA1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifneq ($(filter pa2q%, $(TARGET_PRODUCT)),)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/sun/powerhint_PA2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifneq ($(filter pa3q%, $(TARGET_PRODUCT)),)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/sun/powerhint_PA3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/sun/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
endif
else ifeq ($(TARGET_BOARD_PLATFORM),blair)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/holi/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),pitti)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/pitti/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),volcano)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/volcano/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),niobe)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/niobe/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
else ifeq ($(TARGET_BOARD_PLATFORM),parrot)
PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/parrot/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
endif

View File

@@ -0,0 +1,197 @@
/*
* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <unistd.h>
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/power.h>
#include "utils.h"
#include "hint-data.h"
#include "performance.h"
#include "power-common-old.h"
static struct hint_handles handles[NUM_HINTS];
static int power_device_open(const hw_module_t* module, const char* name,
hw_device_t** device);
static struct hw_module_methods_t power_module_methods = {
.open = power_device_open,
};
static void power_init(struct power_module *module)
{
ALOGI("Initing");
for (int i=0; i<NUM_HINTS; i++) {
handles[i].handle = 0;
handles[i].ref_count = 0;
}
}
int __attribute__ ((weak)) power_hint_override(struct power_module *module, power_hint_t hint,
void *data)
{
return HINT_NONE;
}
/* Declare function before use */
void interaction(int duration, int num_args, int opt_list[]);
static void power_hint(struct power_module *module, power_hint_t hint,
void *data)
{
/* Check if this hint has been overridden. */
if (power_hint_override(module, hint, data) == HINT_HANDLED) {
/* The power_hint has been handled. We can skip the rest. */
return;
}
switch(hint) {
case POWER_HINT_VSYNC:
break;
case POWER_HINT_VR_MODE:
ALOGI("VR mode power hint not handled in power_hint_override");
break;
case POWER_HINT_INTERACTION:
{
int resources[] = {0x702, 0x20F, 0x30F};
int duration = 3000;
interaction(duration, sizeof(resources)/sizeof(resources[0]), resources);
}
break;
//fall through below, hints will fail if not defined in powerhint.xml
case POWER_HINT_SUSTAINED_PERFORMANCE:
case POWER_HINT_VIDEO_ENCODE:
if (data) {
if (handles[hint].ref_count == 0)
handles[hint].handle = perf_hint_enable((AOSP_DELTA + hint), 0);
if (handles[hint].handle > 0)
handles[hint].ref_count++;
}
else
if (handles[hint].handle > 0)
if (--handles[hint].ref_count == 0) {
release_request(handles[hint].handle);
handles[hint].handle = 0;
}
else
ALOGE("Lock for hint: %X was not acquired, cannot be released", hint);
break;
}
}
int __attribute__ ((weak)) set_interactive_override(struct power_module *module, int on)
{
return HINT_NONE;
}
void set_interactive(struct power_module *module, int on)
{
if (!on) {
/* Send Display OFF hint to perf HAL */
perf_hint_enable(VENDOR_HINT_DISPLAY_OFF, 0);
} else {
/* Send Display ON hint to perf HAL */
perf_hint_enable(VENDOR_HINT_DISPLAY_ON, 0);
}
if (set_interactive_override(module, on) == HINT_HANDLED) {
return;
}
ALOGI("Got set_interactive hint");
}
static int power_device_open(const hw_module_t* module, const char* name,
hw_device_t** device)
{
int status = -EINVAL;
if (module && name && device) {
if (!strcmp(name, POWER_HARDWARE_MODULE_ID)) {
power_module_t *dev = (power_module_t *)malloc(sizeof(*dev));
if(dev) {
memset(dev, 0, sizeof(*dev));
if(dev) {
/* initialize the fields */
dev->common.module_api_version = POWER_MODULE_API_VERSION_0_2;
dev->common.tag = HARDWARE_DEVICE_TAG;
dev->init = power_init;
dev->powerHint = power_hint;
dev->setInteractive = set_interactive;
/* At the moment we support 0.2 APIs */
dev->setFeature = NULL,
dev->get_number_of_platform_modes = NULL,
dev->get_platform_low_power_stats = NULL,
dev->get_voter_list = NULL,
*device = (hw_device_t*)dev;
status = 0;
} else {
status = -ENOMEM;
}
}
else {
status = -ENOMEM;
}
}
}
return status;
}
struct power_module HAL_MODULE_INFO_SYM = {
.common = {
.tag = HARDWARE_MODULE_TAG,
.module_api_version = POWER_MODULE_API_VERSION_0_2,
.hal_api_version = HARDWARE_HAL_API_VERSION,
.id = POWER_HARDWARE_MODULE_ID,
.name = "QTI Power HAL",
.author = "QTI",
.methods = &power_module_methods,
},
.init = power_init,
.powerHint = power_hint,
.setInteractive = set_interactive,
};

View File

@@ -0,0 +1,38 @@
<!-- Copyright (c) 2020 The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of The Linux Foundation nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Changes from Qualcomm Innovation Center are provided under the following license:
Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
SPDX-License-Identifier: BSD-3-Clause-Clear
-->
<manifest version="1.0" type="device">
<hal format="aidl">
<name>android.hardware.power</name>
<version>5</version>
<fqname>IPower/default</fqname>
</hal>
</manifest>

View File

@@ -0,0 +1,182 @@
/* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include <cutils/log.h>
#include <fcntl.h>
#include <string.h>
#include <cutils/properties.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <unistd.h>
#include <stdlib.h>
#include "powerhintparser.h"
#ifndef LOG_TAG
#define LOG_TAG "QTI PowerHAL"
#endif
int parsePowerhintXML() {
xmlDocPtr doc;
xmlNodePtr currNode;
const char *opcode_str, *value_str, *type_str;
int opcode = 0, value = 0, type = 0;
int numParams = 0;
static int hintCount;
if(access(POWERHINT_XML, F_OK) < 0) {
return -1;
}
doc = xmlReadFile(POWERHINT_XML, "UTF-8", XML_PARSE_RECOVER);
if(!doc) {
ALOGE("Document not parsed successfully");
return -1;
}
currNode = xmlDocGetRootElement(doc);
if(!currNode) {
ALOGE("Empty document");
xmlFreeDoc(doc);
xmlCleanupParser();
return -1;
}
// Confirm the root-element of the tree
if(xmlStrcmp(currNode->name, BAD_CAST "Powerhint")) {
ALOGE("document of the wrong type, root node != root");
xmlFreeDoc(doc);
xmlCleanupParser();
return -1;
}
currNode = currNode->xmlChildrenNode;
for(; currNode != NULL; currNode=currNode->next) {
if(currNode->type != XML_ELEMENT_NODE)
continue;
xmlNodePtr node = currNode;
if(hintCount == MAX_HINT) {
ALOGE("Number of hints exceeded the max count of %d\n",MAX_HINT);
break;
}
if(!xmlStrcmp(node->name, BAD_CAST "Hint")) {
if(xmlHasProp(node, BAD_CAST "type")) {
type_str = (const char*)xmlGetProp(node, BAD_CAST "type");
if (type_str == NULL)
{
ALOGE("xmlGetProp failed on type");
xmlFreeDoc(doc);
xmlCleanupParser();
return -1;
}
type = strtol(type_str, NULL, 16);
}
node = node->children;
while(node != NULL) {
if(!xmlStrcmp(node->name, BAD_CAST "Resource")) {
if(xmlHasProp(node, BAD_CAST "opcode")) {
opcode_str = (const char*)xmlGetProp(node, BAD_CAST "opcode");
if (opcode_str == NULL)
{
ALOGE("xmlGetProp failed on opcode");
xmlFreeDoc(doc);
xmlCleanupParser();
return -1;
}
opcode = strtol(opcode_str, NULL, 16);
}
if(xmlHasProp(node, BAD_CAST "value")) {
value_str = (const char*)xmlGetProp(node, BAD_CAST "value");
if (value_str == NULL)
{
ALOGE("xmlGetProp failed on value");
xmlFreeDoc(doc);
xmlCleanupParser();
return -1;
}
value = strtol(value_str, NULL, 16);
}
if(opcode > 0) {
if(numParams < (MAX_PARAM-1)) {
powerhint[hintCount].paramList[numParams++] = opcode;
powerhint[hintCount].paramList[numParams++] = value;
} else {
ALOGE("Maximum parameters exceeded for Hint ID %x\n",type);
opcode = value = 0;
break;
}
}
opcode = value = 0;
}
node = node->next;
}
powerhint[hintCount].type = type;
powerhint[hintCount].numParams = numParams;
numParams = 0;
}
hintCount++;
}
xmlFreeDoc(doc);
xmlCleanupParser();
return 0;
}
int* getPowerhint(int hint_id, int *params) {
int *result = NULL;
if(!hint_id)
return result;
ALOGI("Powerhal hint received=%x\n",hint_id);
if(!powerhint[0].numParams) {
parsePowerhintXML();
}
for(int i = 0; i < MAX_HINT; i++) {
if(hint_id == powerhint[i].type) {
*params = powerhint[i].numParams;
result = powerhint[i].paramList;
break;
}
}
/*for (int j = 0; j < *params; j++)
ALOGI("Powerhal resource again%x = \n", result[j]);*/
return result;
}

View File

@@ -0,0 +1,48 @@
/* Copyright (c) 2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __POWERHINTPARSER__
#define __POWERHINTPARSER__
#define POWERHINT_XML "/vendor/etc/powerhint.xml"
#define MAX_HINT 6
#define MAX_PARAM 30
typedef struct perflock_param_t {
int type;
int numParams;
int paramList[MAX_PARAM];//static limit on number of hints - 15
}perflock_param_t;
static perflock_param_t powerhint[MAX_HINT];
int parsePowerhintXML();
int *getPowerhint(int, int*);
#endif /* __POWERHINTPARSER__ */

View File

@@ -0,0 +1,379 @@
/*
* Copyright (c) 2012-2013,2015-2018, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_NIDEBUG 0
#include <dlfcn.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "utils.h"
#include "list.h"
#include "hint-data.h"
#include "power-common.h"
#define LOG_TAG "QTI PowerHAL"
#include <utils/Log.h>
char scaling_gov_path[4][80] ={
"sys/devices/system/cpu/cpu0/cpufreq/scaling_governor",
"sys/devices/system/cpu/cpu1/cpufreq/scaling_governor",
"sys/devices/system/cpu/cpu2/cpufreq/scaling_governor",
"sys/devices/system/cpu/cpu3/cpufreq/scaling_governor"
};
#define PERF_HAL_PATH "libqti-perfd-client.so"
static void *qcopt_handle;
static int (*perf_lock_acq)(int handle, int duration,
int list[], int numArgs);
static int (*perf_lock_rel)(int handle);
static int (*perf_hint)(int, const char *, int, int);
static PropVal (*perf_get_prop)(const char *prop , const char *def_val);
static struct list_node active_hint_list_head;
const char *pkg = "QTI PowerHAL";
static void *get_qcopt_handle()
{
void *handle = NULL;
dlerror();
handle = dlopen(PERF_HAL_PATH, RTLD_NOW);
if (!handle) {
ALOGE("Unable to open %s: %s\n", PERF_HAL_PATH,
dlerror());
}
return handle;
}
static void __attribute__ ((constructor)) initialize(void)
{
qcopt_handle = get_qcopt_handle();
if (!qcopt_handle) {
ALOGE("Failed to get qcopt handle.\n");
} else {
/*
* qc-opt handle obtained. Get the perflock acquire/release
* function pointers.
*/
perf_lock_acq = dlsym(qcopt_handle, "perf_lock_acq");
if (!perf_lock_acq) {
ALOGE("Unable to get perf_lock_acq function handle.\n");
}
perf_lock_rel = dlsym(qcopt_handle, "perf_lock_rel");
if (!perf_lock_rel) {
ALOGE("Unable to get perf_lock_rel function handle.\n");
}
perf_hint = dlsym(qcopt_handle, "perf_hint");
if (!perf_hint) {
ALOGE("Unable to get perf_hint function handle.\n");
}
perf_get_prop = dlsym(qcopt_handle, "perf_get_prop");
if (!perf_get_prop) {
ALOGE("Unable to get perf_get_prop function handle.\n");
}
}
}
static void __attribute__ ((destructor)) cleanup(void)
{
if (qcopt_handle) {
if (dlclose(qcopt_handle))
ALOGE("Error occurred while closing qc-opt library.");
}
}
int sysfs_read(char *path, char *s, int num_bytes)
{
char buf[80];
int count;
int ret = 0;
int fd = open(path, O_RDONLY);
if (fd < 0) {
strerror_r(errno, buf, sizeof(buf));
ALOGE("Error opening %s: %s\n", path, buf);
return -1;
}
if ((count = read(fd, s, num_bytes - 1)) < 0) {
strerror_r(errno, buf, sizeof(buf));
ALOGE("Error writing to %s: %s\n", path, buf);
ret = -1;
} else {
s[count] = '\0';
}
close(fd);
return ret;
}
int sysfs_write(char *path, char *s)
{
char buf[80];
int len;
int ret = 0;
int fd = open(path, O_WRONLY);
if (fd < 0) {
strerror_r(errno, buf, sizeof(buf));
ALOGE("Error opening %s: %s\n", path, buf);
return -1 ;
}
len = write(fd, s, strlen(s));
if (len < 0) {
strerror_r(errno, buf, sizeof(buf));
ALOGE("Error writing to %s: %s\n", path, buf);
ret = -1;
}
close(fd);
return ret;
}
int get_scaling_governor(char governor[], int size)
{
if (sysfs_read(SCALING_GOVERNOR_PATH, governor,
size) == -1) {
// Can't obtain the scaling governor. Return.
return -1;
} else {
// Strip newline at the end.
int len = strlen(governor);
len--;
while (len >= 0 && (governor[len] == '\n' || governor[len] == '\r'))
governor[len--] = '\0';
}
return 0;
}
int get_scaling_governor_check_cores(char governor[], int size,int core_num)
{
if (sysfs_read(scaling_gov_path[core_num], governor,
size) == -1) {
// Can't obtain the scaling governor. Return.
return -1;
}
// Strip newline at the end.
int len = strlen(governor);
len--;
while (len >= 0 && (governor[len] == '\n' || governor[len] == '\r'))
governor[len--] = '\0';
return 0;
}
int is_interactive_governor(char* governor) {
if (strncmp(governor, INTERACTIVE_GOVERNOR, (strlen(INTERACTIVE_GOVERNOR)+1)) == 0)
return 1;
return 0;
}
PropVal perf_get_property(const char *prop , const char *def_val) {
PropVal retVal;
if (qcopt_handle && perf_get_prop) {
retVal = perf_get_prop(prop, def_val);
} else {
strlcpy(retVal.value, def_val, PROPERTY_VALUE_MAX);
}
return retVal;
}
void interaction(int duration, int num_args, int opt_list[])
{
#ifdef INTERACTION_BOOST
static int lock_handle = 0;
if (duration < 0 || num_args < 1 || opt_list[0] == NULL)
return;
if (qcopt_handle) {
if (perf_lock_acq) {
lock_handle = perf_lock_acq(lock_handle, duration, opt_list, num_args);
if (lock_handle == -1)
ALOGE("Failed to acquire lock.");
}
}
#endif
}
int interaction_with_handle(int lock_handle, int duration, int num_args, int opt_list[])
{
if (duration < 0 || num_args < 1 || opt_list == NULL)
return 0;
if (qcopt_handle) {
if (perf_lock_acq) {
lock_handle = perf_lock_acq(lock_handle, duration, opt_list, num_args);
if (lock_handle == -1)
ALOGE("Failed to acquire lock.");
}
}
return lock_handle;
}
//this is interaction_with_handle using perf_hint instead of
//perf_lock_acq
int perf_hint_enable(int hint_id , int duration)
{
int lock_handle = 0;
if (duration < 0)
return 0;
if (qcopt_handle) {
if (perf_hint) {
lock_handle = perf_hint(hint_id, pkg, duration, -1);
if (lock_handle == -1)
ALOGE("Failed to acquire lock for hint_id: %X.", hint_id);
}
}
return lock_handle;
}
void release_request(int lock_handle) {
if (qcopt_handle && perf_lock_rel)
perf_lock_rel(lock_handle);
}
void perform_hint_action(int hint_id, int resource_values[], int num_resources)
{
if (qcopt_handle) {
if (perf_lock_acq) {
/* Acquire an indefinite lock for the requested resources. */
int lock_handle = perf_lock_acq(0, 0, resource_values,
num_resources);
if (lock_handle == -1) {
ALOGE("Failed to acquire lock.");
} else {
/* Add this handle to our internal hint-list. */
struct hint_data *new_hint =
(struct hint_data *)malloc(sizeof(struct hint_data));
if (new_hint) {
if (!active_hint_list_head.compare) {
active_hint_list_head.compare =
(int (*)(void *, void *))hint_compare;
active_hint_list_head.dump = (void (*)(void *))hint_dump;
}
new_hint->hint_id = hint_id;
new_hint->perflock_handle = lock_handle;
if (add_list_node(&active_hint_list_head, new_hint) == NULL) {
free(new_hint);
/* Can't keep track of this lock. Release it. */
if (perf_lock_rel)
perf_lock_rel(lock_handle);
ALOGE("Failed to process hint.");
}
} else {
/* Can't keep track of this lock. Release it. */
if (perf_lock_rel)
perf_lock_rel(lock_handle);
ALOGE("Failed to process hint.");
}
}
}
}
}
void undo_hint_action(int hint_id)
{
if (qcopt_handle) {
if (perf_lock_rel) {
/* Get hint-data associated with this hint-id */
struct list_node *found_node;
struct hint_data temp_hint_data = {
.hint_id = hint_id
};
found_node = find_node(&active_hint_list_head,
&temp_hint_data);
if (found_node) {
/* Release this lock. */
struct hint_data *found_hint_data =
(struct hint_data *)(found_node->data);
if (found_hint_data) {
if (perf_lock_rel(found_hint_data->perflock_handle) == -1)
ALOGE("Perflock release failed.");
}
if (found_node->data) {
/* We can free the hint-data for this node. */
free(found_node->data);
}
remove_list_node(&active_hint_list_head, found_node);
} else {
ALOGE("Invalid hint ID.");
}
}
}
}
/*
* Used to release initial lock holding
* two cores online when the display is on
*/
void undo_initial_hint_action()
{
if (qcopt_handle) {
if (perf_lock_rel) {
perf_lock_rel(1);
}
}
}

View File

@@ -0,0 +1,65 @@
/*
* Copyright (c) 2012-2013,2015-2017, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __UTILS_H__
#define __UTILS_H__
#ifdef __cplusplus
extern "C" {
#endif
#include <cutils/properties.h>
typedef struct {
char value[PROP_VALUE_MAX];
} PropVal;
int sysfs_read(char *path, char *s, int num_bytes);
int sysfs_write(char *path, char *s);
int get_scaling_governor(char governor[], int size);
int get_scaling_governor_check_cores(char governor[], int size,int core_num);
int is_interactive_governor(char*);
void vote_ondemand_io_busy_off();
void unvote_ondemand_io_busy_off();
void vote_ondemand_sdf_low();
void unvote_ondemand_sdf_low();
void perform_hint_action(int hint_id, int resource_values[],
int num_resources);
void undo_hint_action(int hint_id);
void release_request(int lock_handle);
int interaction_with_handle(int lock_handle, int duration, int num_args, int opt_list[]);
int perf_hint_enable(int hint_id, int duration);
PropVal perf_get_property(const char *prop , const char *def_val);
#ifdef __cplusplus
}
#endif
#endif //__UTILS_H__